Una rete a lunga memoria a breve termine (Long Short-Term Memory o LSTM) è un tipo di rete neurale ricorrente (RNN). Le LSTM sono prevalentemente usate per apprendere, elaborare e classificare dati sequenziali in quanto sono in grado di apprendere le dipendenze a lungo termine tra fasi temporali di dati.
Modalità di funzionamento delle LSTM
LSTM e RNN
Le reti LSTM sono una forma specializzata dell’architettura RNN. Le RNN usano le informazioni passate per migliorare le prestazioni di una rete neurale su input attuali e futuri. Contengono uno stato nascosto e loop, che consentono alla rete di memorizzare le informazioni passate nello stato nascosto e di operare su sequenze. Le RNN hanno due pesi: uno per il vettore dello stato nascosto e uno per gli input. Durante l’addestramento, la rete apprende i pesi sia per gli input che per lo stato nascosto. Dopo l’implementazione, l’output è basato sull’input attuale, così come sullo stato nascosto, che è basato sugli input precedenti.
Nella pratica, le RNN semplici sono limitate nella loro capacità di apprendere le dipendenze a più lungo termine. Le RNN vengono comunemente addestrate mediante retropropagazione, in cui possono riscontrare problemi di scomparsa ed esplosione del gradiente. Questi problemi fanno sì che i pesi della rete diventino molto piccoli oppure molto grandi, limitando l’efficacia nelle applicazioni che richiedono che la rete apprenda relazioni a lungo termine.
Architettura a strati LSTM
Gli strati LSTM usano porte aggiuntive per controllare quali informazioni nello stato nascosto vengono esportate come output e nel successivo stato nascosto. Queste porte aggiuntive superano il problema comune delle RNN di apprendere le dipendenze a lungo termine. Oltre allo stato nascosto nelle RNN tradizionali, l’architettura per un blocco LSTM comprende in genere una cella di memoria, una porta di input, una porta di output e una porta di dimenticanza. Le porte aggiuntive consentono alla rete di apprendere le relazioni a lungo termine nei dati in modo più efficace. Una minore sensibilità al gap temporale rende le reti LSTM migliori delle RNN semplici per l’analisi di dati sequenziali. Nella figura seguente, è possibile vedere l’architettura LSTM e il flusso di dati alla fase temporale t.
I pesi e i bias alla porta di input controllano fino a che punto un nuovo valore confluisce nella unità LSTM. Analogamente, i pesi e i bias alla porta di dimenticanza e alla porta di output controllano, rispettivamente, fino a che punto un valore rimane nell’unità e fino a che punto il valore nell’unità viene usato per calcolare l’attivazione dell’output del blocco LSTM.
Il seguente diagramma illustra il flusso di dati attraverso uno strato LSTM con più fasi temporali. Il numero di canali nell’output corrisponde al numero di unità nascoste nello strato LSTM.
Architettura di rete LSTM
Le LSTM funzionano bene con dati di sequenze e di serie storiche per attività di classificazione e regressione, come anche sui video, che sono sostanzialmente una sequenza di immagini. Analogamente all’utilizzo coi segnali, è utile eseguire un’estrazione delle feature prima dell’alimentazione delle sequenza di immagini nello strato LSTM. Sfrutta le reti neurali convoluzionali (CNN) (ad es. GoogLeNet) per estrarre le feature su ciascun frame. La figura seguente mostra come progettare una rete LSTM per diverse attività.
LSTM bidirezionali
Una LSTM bidirezionale (BiLSTM) apprende le dipendenze bidirezionali tra fasi temporali di dati di sequenze o di serie storiche. Queste dipendenze possono essere utili quando si vuole che la rete impari dalle serie storiche complete in ogni fase temporale. Le reti BiLSTM consentono un addestramento aggiuntivo in quanto i dati di input vengono fatti passare due volte attraverso lo strato LSTM, il che può aumentare le prestazioni della tua rete.
Una BiLSTM è costituita da due componenti LSTM: LSTM in avanti e LSTM all’indietro. L’LSTM in avanti funziona dalla prima fase temporale all’ultima. L’LSTM all’indietro funziona dall’ultima fase temporale alla prima. Dopo aver fatto passare i dati attraverso i due componenti dell’LSTM, l’operazione concatena gli output lungo la dimensione del canale.
Come iniziare con gli esempi LSTM in MATLAB
Applicazioni di LSTM
Le LSTM sono particolarmente efficaci nei lavori con dati sequenziali, che possono variare in lunghezza, e nell’apprendimento delle dipendenze a lungo termine tra fasi temporali di tali dati. Le applicazioni più comuni di LSTM includono sentiment analysis, modellazione del linguaggio, riconoscimento vocale e analisi di video.
Ampie applicazioni di LSTM
Le RNN rappresentano una tecnologia chiave in applicazioni come:
- Elaborazione di segnali. I segnali sono dati naturalmente sequenziali, spesso raccolti da sensori nel tempo. La classificazione e la regressione automatiche su grandi set di dati di segnali consentono una previsione in tempo reale. I dati grezzi dei segnali possono essere inseriti in reti profonde o pre-elaborati per concentrarsi su feature specifiche, quali le componenti di frequenza. L’estrazione delle feature può migliorare notevolmente le prestazioni della rete.
- Elaborazione del linguaggio naturale (NLP). Il linguaggio è naturalmente sequenziale e le parti di testo hanno lunghezza variabile. Le LSTM sono un ottimo strumento per attività di elaborazione del linguaggio naturale, quali classificazione del testo, generazione di testo, traduzione automatica e sentiment analysis, perché possono imparare a contestualizzare le parole in una frase.
Prova i seguenti esempi per iniziare ad applicare le LSTM all’elaborazione di segnali e all’elaborazione del linguaggio naturale.
Applicazioni verticali di LSTM
Poiché le applicazioni del Deep Learning continuano ad aumentare, le LSTM sono usate in applicazioni verticali quali:
Utilizzo di reti LSTM per la stima delle emissioni di NOx
Gli ingegneri di Renault hanno usato le LSTM nello sviluppo di tecnologie di prossima generazione per i veicoli a zero emissioni (ZEV).
Hanno ottenuto i dati di addestramento tramite test realizzati su un motore reale. Durante tali test, il motore è stato sottoposto a cicli di guida comuni. I dati acquisiti, che includevano coppia e velocità del motore, temperatura del refrigerante ed emissioni delle marce inserite, sono stati utilizzati come input per la rete LSTM. Dopo più iterazioni sulla progettazione dell’architettura LSTM, la versione finale della LSTM ha raggiunto una precisione dell’85-90% nella previsione dei livelli di NOX.
LSTM con MATLAB
Utilizzando MATLAB® con Deep Learning Toolbox™ è possibile progettare, addestrare e distribuire LSTM. Con Text Analytics Toolbox™ o Signal Processing Toolbox™ è possibile applicare LSTM all’analisi di testo o di segnali.
Progettazione e addestramento delle reti
È possibile progettare e addestrare LSTM in modo programmatico con sole poche righe di codice. Utilizza strati LSTM, strati LSTM bidirezionali e strati LSTM di proiezione per costruire LSTM. È inoltre possibile progettare, analizzare e modificare le LSTM in modo interattivo utilizzando l’app Deep Network Designer.
Importazione ed esportazione di reti
Distribuzione reti
Distribuisci le tue reti LSTM addestrate su sistemi embedded, sistemi enterprise o sul Cloud.
- Genera automaticamente codice CUDA e codice C/C++ ottimizzato per la distribuzione su CPU e GPU.
- Genera codice Verilog® e VHDL® sintetizzabile per la distribuzione su FPGA e SoC.
Risorse
Développez vos connaissances grâce à la documentation, aux exemples, aux vidéos et plus encore.
Argomenti correlati
Scopri argomenti simili comunemente utilizzati con i prodotti MATLAB e Simulink.
30 giorni di prova gratuita
Per iniziareSeleziona un sito web
Seleziona un sito web per visualizzare contenuto tradotto dove disponibile e vedere eventi e offerte locali. In base alla tua area geografica, ti consigliamo di selezionare: .
Puoi anche selezionare un sito web dal seguente elenco:
Come ottenere le migliori prestazioni del sito
Per ottenere le migliori prestazioni del sito, seleziona il sito cinese (in cinese o in inglese). I siti MathWorks per gli altri paesi non sono ottimizzati per essere visitati dalla tua area geografica.
Americhe
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia-Pacifico
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)