Cosa sono le reti neurali ricorrenti?
Scopri in che modo le reti neurali ricorrenti utilizzano i dati sequenziali per risolvere i problemi temporali comuni osservati nella traduzione linguistica e nel riconoscimento vocale
Sfondo nero e blu
Cosa sono le reti neurali ricorrenti?

Una rete neurale ricorrente (RNN - recurrent neural network) è un tipo di rete neurale artificiale che utilizza dati sequenziali o dati di serie temporali. Questi algoritmi di deep learning sono comunemente usati per problemi di tipo ordinale o temporale, come la traduzione linguistica, NLP (Natural Language Processing), il riconoscimento vocale e la sottotitolazione delle immagini; sono integrati in applicazioni popolari come Siri, la ricerca vocale e Google Translate. Come le reti neurali feedforward e convoluzionali (CNN - convolutional neural network), le reti neurali ricorrenti utilizzano dati di addestramento per imparare. Si distinguono per la loro "memoria" in quanto prelevano informazioni dagli input precedenti per influenzare l'input e l'output attuali. Mentre le reti neurali profonde tradizionali presuppongono che input e output siano indipendenti l'uno dall'altro, l'output delle reti neurali ricorrenti dipende dagli elementi precedenti all'interno della sequenza. Anche se gli eventi futuri sarebbero utili per determinare l'output di una data sequenza, le reti neurali ricorrenti unidirezionali non possono tenere conto di questi eventi nelle loro previsioni.

Prendiamo un modo di dire, come "sentirsi così così", che è comunemente usato quando qualcuno è malato, per aiutarci nella spiegazione delle RNN. Affinché l'idioma abbia senso, deve essere espresso in quell'ordine specifico. Di conseguenza, le reti ricorrenti devono tenere conto della posizione di ogni parola nell'idioma e usano questa informazione per prevedere la parola successiva nella sequenza.

Un'altra caratteristica distintiva delle reti ricorrenti è che condividono i parametri attraverso ogni livello della rete. Mentre le reti feedforward hanno pesi diversi per ogni nodo, le reti neurali ricorrenti condividono lo stesso parametro di peso all'interno di ogni livello della rete. Tuttavia, questi pesi sono ancora regolati nei processi di retropropagazione e di discesa del gradiente per facilitare l'apprendimento di rinforzo.

Le reti neurali ricorrenti sfruttano l'algoritmo di retropropagazione nel tempo (backpropagation through time, BPTT) per determinare i gradienti, che è leggermente diverso dalla retropropagazione tradizionale in quanto è specifico per i dati di sequenza. I principi della BPTT sono gli stessi della retropropagazione tradizionale, dove il modello si addestra valutando gli errori dal suo livello di output al suo livello di input. Questi calcoli ci consentono di regolare e adattare i parametri del modello in modo appropriato. BPTT differisce dall'approccio tradizionale in quanto BPTT somma gli errori ad ogni passo temporale, mentre le reti feedforward non hanno bisogno di sommare gli errori poiché non condividono i parametri in ogni livello.

Durante questo processo, le RNN tendono a riscontrare due problemi, noti come gradienti che esplodono e gradienti che svaniscono. Questi problemi sono determinati dalla dimensione del gradiente, che è la pendenza della funzione di perdita lungo la curva di errore. Quando il gradiente è troppo piccolo, continua a diventare più piccolo, aggiornando i parametri di peso finché non diventano insignificanti, ossia 0. Quando questo accade, l'algoritmo non impara più. Il fenomeno dei gradienti che esplodono si verifica invece quando il gradiente è troppo grande, creando un modello instabile. In questo caso, i pesi del modello diverranno troppo grandi fino ad essere rappresentati come NaN (Not a Number). Una soluzione a questi problemi è ridurre il numero di livelli nascosti all'interno della rete neurale, eliminando parte della complessità del modello RNN.

Prodotti in evidenza

Watson Studio

Watson Machine Learning Accelerator

Tipi di reti neurali ricorrenti

Le reti feedforward mappano un input a un output, e anche se abbiamo rappresentato le reti neurali ricorrenti in questo modo nei diagrammi precedenti, in realtà esse non hanno questo vincolo. Al contrario, i loro input e output possono variare in lunghezza, e diversi tipi di RNN sono utilizzati per diversi casi di utilizzo, come la generazione di musica, la classificazione del sentiment e la traduzione automatica.

Funzioni di attivazione comuni

Come discusso nell'articolo sulle reti neurali, una funzione di attivazione determina se un neurone deve essere attivato. Le funzioni non lineari tipicamente convertono l'output di uno specifico neurone in un valore compreso tra 0 e 1 o tra -1 e 1. 

Varianti delle architetture RNN

Reti neurali ricorrenti bidirezionali (BRNN - bidirectional recurrent neural network): si tratta di una variante dell'architettura di rete delle RNN. Mentre le RNN unidirezionali possono attingere solo dagli input precedenti per fare previsioni sullo stato attuale, le RNN bidirezionali coinvolgono dati futuri per migliorare la loro accuratezza. Riprendendo l'esempio di "sentirsi così così", il modello può prevedere meglio che la seconda parola della frase sia "così" se sa che l'ultima parola della sequenza è "così".

Lunga memoria a breve termine (LSTM - long short-term memory): si tratta di un'architettura RNN popolare, introdotta da Sepp Hochreiter e Juergen Schmidhuber come soluzione al problema del gradiente di fuga. Nel loro articolo (PDF,  388 KB, link esterno a IBM), affrontano il problema delle dipendenze a lungo termine. Ovvero, se lo stato precedente che sta influenzando la previsione attuale non è nel passato recente, il modello RNN potrebbe non essere in grado di prevedere accuratamente lo stato attuale. Come esempio, diciamo che vogliamo predire le parole che seguono: "Alice è allergica alle noci. Lei non può mangiare burro di arachidi". Il contesto di un'allergia alle noci può aiutarci a prevedere che l'alimento che non può essere mangiato contiene frutta secca. Tuttavia, se quel contesto fosse qualche frase prima, allora sarebbe difficile, o addirittura impossibile, per la RNN collegare le informazioni. Per rimediare a questo, le LSTM hanno delle "celle" nei livelli nascosti della rete neurale, che hanno tre porte (gate): una porta di input (input gate), una porta di output (output gate) e una porta di dimenticanza (forget gate). Queste porte controllano il flusso di informazioni necessario per prevedere l'output nella rete.  Per esempio, se un pronome, ad esempio "lei", è stato ripetuto più volte nelle frasi precedenti, può essere escluso dallo stato della cella.

Unità ricorrenti recintate (gated recurrent unit, GRU): questa variante delle RNN è simile alle LSTM in quanto funziona anche per affrontare il problema della memoria a breve termine dei modelli RNN. Invece di usare uno "stato di cella" per regolamentare le informazioni, usa stati nascosti, e invece di tre porte, ne ha due: una porta di reimpostazione (reset gate) e una porta di aggiornamento (update gate). In modo simile alle porte delle LSTM, le porte di reimpostazione e di aggiornamento controllano quante e quali informazioni conservare.

Reti neurali ricorrenti e IBM Cloud

Da decenni a questa parte, IBM ha avuto un ruolo pionieristico nello sviluppo di tecnologie AI e reti neurali, che trova il suo culmine nello sviluppo e nell'evoluzione di IBM Watson. Watson è ora una soluzione affidabile per le aziende che intendono applicare tecniche di NLP (Natural Language Processing) e deep learning avanzate ai loro sistemi utilizzando un collaudato approccio a livelli di adozione e implementazione dell'AI.

Prodotti IBM come IBM Watson Machine Learning supportano anche librerie Python popolari, come TensorFlow, Keras e PyTorch, che sono comunemente usate nelle reti neurali ricorrenti. Utilizzando strumenti come IBM Watson Studio e Watson Machine Learning, la tua azienda può portare i tuoi progetti AI open-source in produzione senza soluzione di continuità, implementando ed eseguendo i tuoi modelli su qualsiasi cloud.

Per ulteriori informazioni su come iniziare a utilizzare la tecnologia di AI, esplora IBM Watson Studio.

Registrati per un IBMid e crea il tuo account IBM Cloud
Soluzioni correlate
Watson Studio

Sviluppa ed esegui la scalabilità di un'AI affidabile su qualsiasi cloud. Automatizza il ciclo di vita dell'AI per ModelOps.

Esplora IBM Watson Studio
Cloud Pak

Software cloud ibrido basato sull'AI.

Esplora gli IBM Cloud Pak
Soluzioni IBM Cloud

Ibride. Aperte. Resilienti. La tua piattaforma e il tuo partner per la trasformazione digitale.

Esplora le soluzioni cloud
Risorse Watson Studio

Sviluppa ed esegui la scalabilità di un'AI affidabile su qualsiasi cloud. Automatizza il ciclo di vita dell'AI per ModelOps.

Watson Machine Learning Accelerator

Accelera il tuo carico di lavoro di deep learning. Velocizza il time-to-value con l'addestramento e l'inferenza del modello AI.

Passa alla fase successiva

Scopri in che modo IBM Watson è ora una soluzione affidabile per le aziende che desiderano applicare tecniche avanzate di NLP (Natural Language Processing) e deep learning ai propri sistemi.

Metti una marcia in più