Le reti neurali Long-term Memory 1 – Introduzione

Autore: Daniele D’armiento

Le abilità cognitive come il riconoscimento, la previsione, la scelta di risposte e azioni, implicano tutte il recupero di informazioni memorizzate precedentemente.
La sfida nello sviluppo di un’intelligenza artificiale consiste nel realizzare un modello in grado di memorizzare tante informazioni e in modo che siano velocemente recuperabili.
Ma non è una novità che i computer già siano in grado di memorizzare grandi quantità di dati (si stima che tutti i dati ad oggi memorizzati superino di molto il ZettaByte, ovvero 1021 byte), e non c’è alcuna sorpresa neanche nel fatto che questi dati siano indicizzati in database di vario tipo, disponibili e recuperabili con potenti linguaggi come SQL.

Peraltro il cervello umano ha una memoria che non è stabile come quella di silicio, ma in questa “lacuna” giace la potenzialità di processare i dati in modo come intuitivamente sappiamo, e di vincere la cosiddetta maledizione della dimensionalità.

Nessuna ricerca ha mai completamente svelato questi segreti del cervello umano, eppur non comprendendo appieno il funzionamento della nostra intelligenza, lo sviluppo di questi ultimi anni dovuto al Deep Learning (che ha comunque origini radicate nella biologia delle reti  neuronali) ci permette di avvicinarci a questo modello di intelligenza, che impara a riconoscere segnali codificati nelle immagini e nei suoni, classificarli, costruire rappresentazioni interne per organizzare queste moli di dati, recuperare velocemente le informazioni che sono immagazzinate in modo distribuito su tutti i nodi della rete (quindi in ogni neurone, e non in precisi indirizzi di memoria), il tutto in automatico, senza istruzioni algoritmiche sequenziali.

 

Negli anni precedenti all’avvento del Deep Learning la velocità di calcolo era molto limitata, e va da sé che, se i processi
sono lenti, ci vuole molto tempo per processare e memorizzare. Ovvio ma non banale, perché nessuno avrebbe tentato di sperimentare un modello di rete che per essere addestrata avrebbe richiesto anni, eppure la chiave per scoprire questo mondo c’era già. Poiché il modello di apprendimento ancora oggi usato è la Backpropagation, insieme al Gradient Descent per il raggiungimento del minimo di errore, sono richiesti molti step di aggiornamento dei pesi della rete, e molti dati di esempio da cui imparare. Tutto ciò rende il processo di apprendimento molto denso di calcoli.

Esempio di ipersuperficie dell’errore della rete nello spazio dei parametri di addestramento: lo SGD ricerca i valori dei parametri che minimizzano l’errore.

Di conseguenza i vecchi modelli dovevano essere leggeri, e non sfruttavano le enormi moli di dati necessarie, ci si limitava ad architetture “shallow”, cioè non profonde, con meno paramentri di addestramento, uno o due livelli di neuroni feed-forward. Ma per astrarre una rappresentazione valida della realtà osservata, cioè per memorizzare i dati in strutture complesse in grado di preservare il maggior numero di caratteristiche osservate, e al tempo stesso generalizzare, cioè riconoscere quelle caratteristiche anche in oggetti nuovi mai osservati prima, serve un modello più complesso. Serve memorizzare più dati quindi, memorizzare ma non “come una macchina”, (dicono tutti coloro nati prima dell’avvento della singolarità, (se mai avverrà…ma la realtà supera ogni science fiction!)), cioè non come quando impariamo una poesia a memoria, ma invece come quando si accende una lampadina e comprendiamo una struttura delle cose che unifica varie sfaccettature di una sola entità che prima sembravano non connesse da alcun legame.

A sinistra: modello di rete “Shallow”: con un livello di neuroni nascosto. A destra: un modello “Deep”, con più livelli nascosti.

Quando un modello di Deep Learning ci sorprende con la sua capacità di riconoscere oggetti nelle immagini, o di capire le parole che stiamo pronunciando, o di rispondere in modo quasi sensato a una domanda scritta, vuol dire che quel modello ha catturato le informazioni necessarie per risolvere quel particolare problema, a partire dai dati a cui è stato sottoposto. Non ha memorizzato tutti i dati in un classico database, ma li ha filtrati, sintetizzando un “concetto”, in un modo che si avvicina al nostro modo di pensare ai concetti.

Qusto è possibile grazie alla struttura “Deep” dei modelli attuali, che permette, in un modo non ancora compreso appieno, di memorizzare nella rete più informazioni e concetti, rispetto ai modelli precedenti.

Per quanto riguarda i modelli linguistici per le traduzioni, quelli conversazionali, e tutte le applicazioni all’ NLP e NLU, è avvenuto un netto incremento delle performance grazie al Deep Learning.

GoogLeNet: modello di rete neurale usata da Google per il riconoscimento di immagini.

Queste performance si possono misurare statisticamente ma è anche intuitivo capire quanto un certo modello riesca a realizzare un chatbot decente o una buona traduzione. Se ce la fa, vuol dire che la rete neurale ha una memoria capace di fare dei collegamenti semantici più complessi di una semplice tabella di riferimento. Ciò richiede appunto una memoria di lungo termine, per poter collegare parole o frasi o riferimenti semantici a distanza l’uno dall’altro, e generare così una rappresentazione interna di un contesto, piuttosto che realizzare una semplice statistica di parole a n-grammi come avveniva anni fa.

Modello di rete con memoria episodica: Dynamic Memory Network (DMN)

 

Nella successiva analisi vedremo un modello promettente, le reti DMN (Dynamic Memory Network), che sono addestrate su elementi composti da frasi di input, domande, e risposte, la cui potenzialità sta nella cosiddetta memoria Episodica, capace di effettuare una elaborazione a più passaggi delle frasi di input, dalle quali elabora un contesto e cerca di estrarre l’informazione richiesta.

 

Bibliografia

https://blogs.cisco.com/gov/internet-traffic-continues-to-explode-no-end-in-sight

https://thoughtsahead.com/2017/01/27/machine-learning-series-introduction-to-machine-learning-linear-regression-and-gradient-descent/

https://www.quora.com/What-is-the-difference-between-deep-and-shallow-neural-networks

https://research.googleblog.com/2017/05/using-machine-learning-to-explore.html

https://yerevann.github.io/2016/02/05/implementing-dynamic-memory-networks/

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *