Un lanț lung de elemente de memorie pe termen scurt ( ing. Long short-term memory ; LSTM ) este un tip de arhitectură de rețea neuronală recurentă propusă în 1997 de Sepp Hochreiter și Jurgen Schmidhuber [2] . La fel ca majoritatea rețelelor neuronale recurente, o rețea LSTM este versatilă în sensul că, având în vedere un număr suficient de elemente de rețea, poate efectua orice calcul de care este capabil un computer convențional, ceea ce necesită o matrice adecvată.greutăți, care pot fi considerate ca un program. Spre deosebire de rețelele neuronale recurente tradiționale, rețeaua LSTM este bine adaptată la învățarea sarcinilor de clasificare , procesare și predicție a seriilor temporale în cazurile în care evenimentele importante sunt separate prin decalaje de timp cu durată și limite nedefinite. Imunitatea relativă la durata intervalelor de timp oferă LSTM un avantaj față de rețelele neuronale recurente alternative, modelele Markov ascunse și alte metode de antrenament pentru secvențe în diferite aplicații. Dintre numeroasele realizări ale rețelelor LSTM, se pot evidenția cele mai bune rezultate în recunoașterea scrisului de mână continuu nesegmentat [3] , și victoria din 2009 în competiția de recunoaștere a scrisului de mână ( ICDAR ). Rețelele LSTM sunt folosite și în sarcinile de recunoaștere a vorbirii , de exemplu, rețeaua LSTM a fost componenta principală a rețelei, care în 2013 a atins un prag de eroare record de 17,7% în sarcina de recunoaștere a fonemelor pe corpus clasic de vorbire naturală TIMIT [4] . Începând cu 2016, companiile de top în tehnologie, inclusiv Google , Apple , Microsoft și Baidu , folosesc rețelele LSTM ca o componentă fundamentală a noilor produse [5] [6] .
O rețea LSTM este o rețea neuronală artificială care conține module LSTM în locul sau în plus față de alte module de rețea. Un modul LSTM este un modul de rețea recurent capabil să stocheze valori atât pe perioade scurte, cât și pe perioade lungi de timp. Cheia acestei capacități este că modulul LSTM nu utilizează o funcție de activare în cadrul componentelor sale recurente. Astfel, valoarea stocată nu este neclară în timp, iar gradientul sau penalitatea nu dispare atunci când se folosește metoda backpropagation through time când se antrenează o rețea neuronală artificială .
LSTM-urile sunt adesea grupate în „blocuri” care conțin diverse LSTM-uri. Un astfel de dispozitiv este tipic pentru rețelele neuronale multistrat „profunde” și contribuie la implementarea calculului paralel folosind echipamente adecvate. În formulele de mai jos, fiecare variabilă, scrisă cu litere italice mici, denotă un vector de dimensiuni egal cu numărul de module LSTM din bloc.
Blocurile LSTM conțin trei sau patru „porți” care sunt folosite pentru a controla fluxul de informații la intrările și ieșirile din memoria acestor blocuri. Aceste porți sunt implementate ca o funcție logistică pentru a calcula o valoare în intervalul [0; unu]. Înmulțirea cu această valoare este utilizată pentru a permite sau a interzice parțial fluxul de informații în și în afara memoriei. De exemplu, "poarta de intrare" controlează măsura în care o nouă valoare intră în memorie, iar "poarta uitată" controlează măsura în care o valoare este reținută în memorie. „Poarta de ieșire” controlează măsura în care valoarea din memorie este utilizată la calcularea funcției de activare a ieșirii pentru bloc. (În unele implementări, poarta de intrare și poarta uitare sunt implementate ca o singură poartă. Ideea este că vechea valoare ar trebui uitată atunci când există o nouă valoare care merită reținută).
Greutățile din blocul LSTM ( și ) sunt folosite pentru a seta direcția de funcționare a porților. Aceste greutăți sunt definite pentru valorile introduse în bloc (inclusiv ieșirea din pasul de timp anterior ) pentru fiecare dintre porți. Astfel, blocul LSTM determină cum să-și gestioneze memoria în funcție de aceste valori, iar antrenamentul cu greutăți permite blocului LSTM să învețe o funcție care minimizează pierderea. Blocurile LSTM sunt de obicei antrenate folosind retropropagarea în timp.
LSTM tradițional cu porți uitare [2] [7] și ( înseamnă produs Hadamard ):
Variabile:
Eye LSTM cu porți uitați [8] [9] nu este utilizat, folosit ca înlocuitor în majoritatea locurilor:
LSTM convoluțional [10] ( înseamnă operator de convoluție ):
Pentru a minimiza eroarea generală a LSTM pe întregul set de secvențe de antrenament, coborârea gradientului iterativ, cum ar fi propagarea inversă derulată în timp, poate fi utilizată pentru a schimba fiecare dintre greutăți proporțional cu derivata sa, în funcție de magnitudinea erorii. Principala problemă cu coborârea gradientului pentru rețelele neuronale recurente standard este aceea că gradienții de eroare scad la o rată exponențială pe măsură ce întârzierea de timp dintre evenimentele importante crește, ceea ce a fost identificat în 1991 [11] [12] . Cu blocurile LSTM, totuși, atunci când valorile de eroare se propagă înapoi din stratul de ieșire, eroarea este blocată în memoria blocului. Acesta se numește „carusel de erori”, care „alimentează” în mod continuu o eroare înapoi la fiecare dintre porți până când sunt antrenați să renunțe la o valoare. Astfel, retropropagarea obișnuită a erorilor este eficientă pentru antrenarea unui bloc LSTM pentru a reține valori pentru perioade de timp foarte lungi.
LSTM poate fi, de asemenea, antrenat utilizând o combinație a unui algoritm evolutiv pentru greutățile din straturile ascunse și matricele pseudoinverse sau o mașină de suport vector pentru greutățile din stratul de ieșire. [13] În învățarea prin întărire, LSTM-urile pot fi antrenate prin căutarea directă în spațiu pentru strategii, strategii evolutive sau algoritmi genetici .
Sunt descrise exemple de aplicare a LSTM: în robotică [14] , pentru analiza seriilor temporale [15] , pentru recunoașterea vorbirii [4] [16] [17] , în învățarea ritmică [9] , pentru generarea de compoziții muzicale [18] , în învățarea gramaticală ( învățare artificială a gramaticii engleze ) [8] [19] [20] , în sarcini de recunoaștere a scrisului de mână [21] [22] , pentru recunoașterea activității umane [23] , în sarcina identificării proteinelor omoloage [24] .
![]() |
---|
Tipuri de rețele neuronale artificiale | |
---|---|
|
Învățare automată și extragerea datelor | |
---|---|
Sarcini | |
Învățarea cu un profesor | |
analiza grupului | |
Reducerea dimensionalității | |
Prognoza structurală | |
Detectarea anomaliilor | |
Modele grafice probabilistice | |
Rețele neuronale | |
Consolidarea învățării |
|
Teorie | |
Reviste și conferințe |
|