Long short-term memory
Long short-term memory (LSTM, deutsch: langes Kurzzeitgedächtnis) ist in der Informatik eine Technik, die zur Verbesserung der Entwicklung von künstlicher Intelligenz wesentlich beigetragen hat.
Beim Trainieren von künstlichen neuronalen Netzen werden Verfahren des Fehlersignalabstiegs genutzt, die man sich wie die Suche eines Bergsteigers nach dem tiefsten Tal vorstellen kann. Beim Deep Learning kann dies zu kurz greifen, so wie ein vergesslicher Bergsteiger beim Abstieg im ersten besten Tal landet und sein Dorf in einem tieferen Tal nicht finden kann. Das LSTM-Verfahren löst dieses Problem, indem es für eine LSTM-Zelle zur besseren Erinnerung drei Torsorten verwendet: Ein Eingangstor (Input Gate), ein Merk- und Vergesstor (Forget Gate) und ein Ausgangstor (Output Gate). LSTM ermöglicht auf diese Weise im Gegensatz zu herkömmlichen rekurrenten neuronalen Netzen eine Art Erinnerung an frühere Erfahrungen: Ein Kurzzeitgedächtnis, das lange anhält (weil das prinzipielle Verhalten des Netzes in den Gewichten kodiert ist).
1997 wurden LSTM-Netze von Sepp Hochreiter und Jürgen Schmidhuber in einer Veröffentlichung vorgestellt[1] und 1999 von Felix Gers, Schmidhuber, und Fred Cummins verbessert.[2] Seit etwa 2016 feiert LSTM bedeutende Erfolge, da seitdem große Datenmengen zum Training genutzt werden können, weitere Verbesserungen der LSTM-Technik durchgeführt wurden, hinreichend leistungsfähige Rechner zur Verfügung stehen und Grafikprozessor-Programmierung angewendet wird.
Neuronale Netze mit vielen Schichten sind extrem lernfähig. LSTM sorgt dafür, dass genau solche mehrschichtigen Netze gut funktionieren können. Dies hat einen Durchbruch bei der künstlichen Intelligenz ermöglicht.
Verschwindender oder explodierender Gradient
![](http://upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Backprogation_neural_networks.png/250px-Backprogation_neural_networks.png)
Eine Möglichkeit, künstliche neuronale Netze zu trainieren, ist die Fehlerrückführung. In der frühen Trainingsphase macht ein Netz beispielsweise bei der Mustererkennung manches falsch: Auf einem Bild mit Katze soll eine Katze erkannt werden und kein Hund. Zur Korrektur des Fehlers werden die Auslöser der Abweichungen (Fehler) zwischen erzeugter Zuordnung (Hund) und Lösungszuordnung (Katze) zurückverfolgt und wiederholt steuernde Faktoren (Gewichte) in den Schichten des Netzes jeweils so verändert, dass die Zuordnungsfehler kleiner und kleiner werden. Im sogenannten Gradientenverfahren wird dieser Fehler minimiert: Die Zahlen in den steuernden Gewichten werden neu justiert. Neuronale Netze bestehen aus hintereinandergeschalteten Modulen, die klassischerweise jeweils nur eine einzige Aktivierungsfunktion besitzen, die dafür sorgt, dass die Ausgabe zwischen 0 und 1 liegt. Bei jeder Fehlerkorrektur wird das Fehlersignal durch die Ableitung der Aktivierungsfunktion bestimmt. Durch diese Ableitung wird die Abstiegssteigung und die Richtung bestimmt, mit der das Fehlertal ermittelt wird. Sepp Hochreiter erkannte 1991, dass dieses bis dahin übliche Verfahren bei mehrschichtigen Netzen ungeeignet ist.[3] Je weiter nämlich der Fehler im Prozess (von hinten nach vorne gesehen) berechnet wird, desto öfter wird der Skalierungsfaktor mit dem Fehlerterm multipliziert. Wenn der Faktor (hier der Spektralradius einer Gewichtsmatrix) stets kleiner als 1 ist, verschwindet der Fehler und führt zu ineffektiven Gewichtsaktualisierungen: Denn wenn Zahlen zwischen 0 und 1 miteinander multipliziert werden, so ist das Produkt kleiner als der kleinere der beiden Faktoren. Ein ursprünglich hoher Wert verschwindet also auf lange Sicht. Wenn die Faktoren andererseits größer als 1 wären, würde der Fehlerwert auf die Dauer explodieren.
Die Module in der Mitte des Netzes, sogenannte Hidden Layer, die der Eingabeschicht näher sind als der Ausgabeschicht, werden also bei der (rückwärts berechneten) Fehlerjustierung zu wenig berücksichtigt. Das führt dazu, dass sie kaum trainiert werden, so als wenn beim Fußball nur die Stürmer dazulernen, wenn es um das Toreschießen geht, nicht jedoch die Mittelfeldspieler oder Verteidiger.
Drei Gates und eine innere Zelle
Um dieses Problem zu lösen, wurde ein LSTM-Modul entworfen, das einen relativ konstanten und anwendbaren Fehlerfluss ermöglicht.[1] Man schaut sich genau an, welche Informationen in die innere Zelle hineinlaufen und hinauslaufen sollen. Das LSTM hat die Fähigkeit, Informationen zum Zellzustand zu entfernen oder hinzuzufügen, sorgfältig reguliert durch Strukturen, die Tore oder Gates genannt werden. LSTM-Module sind zwar ebenso wie herkömmliche Module kettenartig hintereinandergeschaltet, aber sie haben intern eine andere Struktur: Die zusätzlichen Gates sind eine Möglichkeit, Informationen optional durchzulassen.
Statt einer einzigen neuronalen Funktion im LSTM-Modul gibt es vier, die auf eine ganz besondere Art und Weise miteinander interagieren. Ein LSTM-Modul enthält die genannten drei Gates und eine innere Zelle. Kurz gesagt steuert
- das Input Gate das Ausmaß, in dem ein neuer Wert in die Zelle fließt,
- das Forget Gate das Ausmaß, in dem ein Wert in der Zelle verbleibt bzw. vergessen wird,[2][4] und
- das Output Gate das Ausmaß, in dem der Wert in der Zelle zur Berechnung für das nächste Modul der Kette verwendet wird.
Diese Netzelemente werden mit sigmoiden neuronalen Funktionen und diversen Vektor- und Matrixoperationen verbunden und ineinander überführt.
Aufbau eines LSTM
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/d5/Long_Short_Term_Memory.png/400px-Long_Short_Term_Memory.png)
Es gibt verschiedene Arten von LSTM-Architekturen. Üblich ist besonders bei der Bildverarbeitung das convolutionale LSTM-Netz, das hier skizziert wird.[5] Es unterscheidet sich vom bloßen Peephole LSTM, das die Matrixmultiplikation verwendet, dadurch, dass die Aktivität jedes Neurons über eine diskrete Faltung (daher der Zusatz convolutional) berechnet wird. Intuitiv wird dabei schrittweise eine vergleichsweise kleine Faltungsmatrix (Filterkernel) über das Inputbild bewegt. Guckloch (Peephole) heißen diese Netze, weil die Gates den Zellstatus sehen können, also auch die Informationen aus der Zelle verarbeiten. Index t ist jeweils der aktuelle Durchlauf, t-1 bezeichnet den vorherigen Durchlauf. d und e sind jeweils die Anzahlen der Spalten und Zeilen von Vektoren und Matrizen.
Der Datenfluss zwischen den verschiedenen Gates und ihrer inneren Zelle ist durch Vektor- und Matrizenoperationen bestimmt. Zunächst wird hier die mathematische Struktur des Forget Gates beschrieben. ist der dazugehörende e-stellige Aktivierungsvektor:
- .
ist der d-stellige Inputvektor. In der Kette aufeinander folgender Neuronen ist er (zusammen mit dem e-stelligen Outputvektor des vorigen Durchlaufs) die Schnittstelle zum vorher in der Kette agierenden Neuron. Die drei Gewichtsmatrizen (weight matrices) bilden den wertvollen Teil jedes Netzes, weil sie das Trainingswissen enthalten. ist dabei eine ed-Matrix, ist eine quadratische ee-Matrix und ist ein e-stelliger Vektor. Zuletzt ist der e-stellige Bias-Vektor. Wenn kein starker Input von anderen Einheiten erfolgt, dann stellt das Bias sicher, dass die Einheit bei starkem Gewicht aktiv bleibt und bei schwachem inaktiv. stellt eine Sigmoidfunktion der Gates dar, die nichtlinear Werte zwischen 0 und 1 aus dem Ganzen bildet.
Es gibt hier drei verschiedene Arten von Matrizenoperatoren:
- +: Matrizenaddition
- : Hadamard-Produkt (für die Gucklochinformationen des vorigen Durchlaufs)
- : Matrizenmultiplikation.
Diese formelhaften Darstellungen erscheinen zwar kompliziert, aber das tatsächliche Rechnen übernehmen die jeweiligen Programmbibliotheken der Anbieter für KI.
Die Aktivierungsvektoren des Input Gates und des Output Gates entsprechen beide dem Aufbau des Forget Gate Vektors :
Der Zellzustand ist so etwas wie ein Förderband. Die Information verläuft geradlinig über die gesamte Kette, mit nur geringen linearen Wechselwirkungen. Die innere Zelle mit dem Zellstatusvektor hat folgenden Aufbau:
- .
Für die Sigmoidfunktionen und wird üblicherweise der hyperbolische Tangens (auch: tanh) verwendet. ist der Outputvektor (des vorigen Durchlaufs, nicht im groben Schaubild zu sehen):
Die Anfangswerte für und werden jeweils mit Nullvektoren initialisiert. Der Outputvektor berechnet sich folgendermaßen:
oder konkret mit dem Tangens hyperbolicus:
Varianten und Alternativen
Bevor LSTMs sich allgemein durchsetzten, wurden verzögerte Netze, sogenannte Time Delay Neural Networks, verwendet, später Hidden Markov Models.
Seit ihren Anfängen kamen immer mehr Varianten des LSTM hinzu. Wie oben beschrieben wurde zusätzlich das Forget Gate und die Peepholetechnik entwickelt sowie die Faltungstechnik. LSTM-Netze werden insbesondere in der Spracherkennung für die Klassifikation von Phonemen eingesetzt. Die erste Arbeit, die sich mit der Klassifikation von Phonemen mittels LSTM befasst, wurde 2005 von Alex Graves und seinem Betreuer Schmidhuber veröffentlicht[6]. Seit 2007 wurde LSTM für die Analyse und Erkennung kontinuierlicher Sprache eingesetzt[7][8]. Forscher wie Haşim Sak[9] und Wojciech Zaremba[10] arbeiteten LSTM-Techniken für die akustische Modellierung und die Spracherkennung weiter aus.
Rupesh Kumar Srivastava, Klaus Greff und ihr Betreuer Schmidhuber schufen unter Verwendung der LSTM Prinzipien[1] das „Highway network“, ein künstliches neuronales Netz mit Hunderten von Schichten, das somit viel tiefer war als frühere vorwärtsgerichtete Netzwerke.[11][12] Sieben Monate später gewannen Kaiming He, Xiangyu Zhang, Shaoqing Ren und Jian Sun den ImageNet 2015 Wettbewerb mit einer Highway Network Variante namens Residual Network (ResNet).[13] Letzteres wurde zum meistzitierten neuronalen Netz des 21. Jahrhunderts.[14]
Eine beliebte LSTM-Variante, die von Gers und Schmidhuber eingeführt wurde, ist das Hinzufügen von „peephole connections“. Das bedeutet, dass die Schichten den Zustand betrachten und verarbeiten:
Eine weitere Variante besteht darin, gekoppelte Forget Gates und Input Gates zu verwenden. Anstatt getrennt zu entscheiden, was vergessen und was mit neuen Werten ergänzt werden soll, wird diese Entscheidung gleichzeitig getroffen. Es werden genau dann neue Werte ergänzt, wenn ältere Werte vergessen werden:
Als Alternative zu LSTM wurden 2014 von Kyunghyun Cho und seinem Team Gated Recurrent Units entwickelt.[15] Diese werden besonders bei der Musikmodellierung eingesetzt. Sie kombinieren das Forget Gate und das Input Gate zu einem einzigen Update Gate. Das resultierende Modell ist einfacher als herkömmliche LSTM-Modelle, und die Gates werden auf eine andere Art angeordnet. Die Vektor- und Matrixoperationen können folgendermaßen geschrieben werden:
Erfolge
In den Jahren nach 2010 verbesserte sich die technische Situation für LSTM außerordentlich: Die Einführung von Big Data stellte riesige Mengen von Daten zum Trainieren der Netze zur Verfügung. Der Boom von grafisch aufwendigeren Computerspielen führte zu immer besseren und günstigeren Grafikkarten. Auf diesen Grafikkarten können für die Grafikberechnungen sehr viele Matrixmultiplikationen gleichzeitig durchgeführt werden. Genau das braucht man für KI und LSTM. Schnelle GPU-Implementierungen dieser Kombination wurden 2011 durch Dan Ciresan und Kollegen in Schmidhubers Gruppe eingeführt.[16] Sie gewannen seither zahlreiche Wettbewerbe, u. a. die „ISBI 2012 Segmentation of Neuronal Structures in Electron Microscopy Stacks Challenge“[17] und den „ICPR 2012 Contest on Mitosis Detection in Breast Cancer Histological Images“.[18] Google entwickelte alternativ zum Grafikprozessor Tensor Processing Units, um Anwendungen im Rahmen von maschinellem Lernen zu beschleunigen. Sie werden unter anderem angewendet, um effektiv LSTMs zu verarbeiten.
Seit etwa 2016 setzen große Technologieunternehmen wie Google, Apple und Microsoft LSTM als grundlegende Komponente für neue Produkte ein. So verwendete Google beispielsweise LSTM für die Spracherkennung auf dem Smartphone[19], für den Smart Assistant Allo[20] und für Google Translate. Apple verwendet LSTM für die „Quicktype“-Funktion auf dem iPhone und für Siri[21]. Amazon verwendet LSTM für Amazon Alexa.[22]
LSTM wird heutzutage auch in der Landwirtschaft eingesetzt, z. B. um die Auswirkungen von Düngung vorherzusagen und Düngungsempfehlungen abzugeben[23][24].
Es gibt unzählige weitere LSTM-Anwendungen. Laut Google Scholar wurde LSTM allein im Jahre 2021 über 16000 mal zitiert. Dies spiegelt u. a. zahlreiche Anwendungen in der Medizin und im Gesundheitswesen wider.[25]
Literatur
- Ramon Wartala: Praxiseinstieg Deep Learning: Mit Python, Caffe, TensorFlow und Spark eigene Deep-Learning-Anwendungen erstellen. Heidelberg 2018, ISBN 978-3-96009-054-0.
Weblinks
- Blog von Christopher Olah über LSTM
- Recurrent Neural Networks mit über 30 LSTM Beiträgen von Jürgen Schmidhubers Team am IDSIA
- Olusola Adeniyi Abidogun: Fraud detection paper... mit zwei Kapiteln, die speziell LSTM behandeln.
- Lernhilfe, wie man LSTM in Python mit Theano einrichtet
Einzelnachweise
- ↑ a b c Sepp Hochreiter, Jürgen Schmidhuber: Long Short-Term Memory. In: Neural Computation. 9. Jahrgang, Nr. 8, 1. November 1997, ISSN 0899-7667, S. 1735–1780, doi:10.1162/neco.1997.9.8.1735, PMID 9377276 (englisch).
- ↑ a b Felix Gers, Jürgen Schmidhuber, Fred Cummins: 9th International Conference on Artificial Neural Networks: ICANN '99. Band 1999, 1999, ISBN 0-85296-721-7, Learning to forget: Continual prediction with LSTM, S. 850–855, doi:10.1049/cp:19991218 (englisch).
- ↑ Sepp Hochreiter: Untersuchungen zu dynamischen neuronalen Netzen Diplomarbeit PDF, Technische Universität München, 1991. Betreuer: J. Schmidhuber
- ↑ Felix Gers Dissertation über LSTM-Netze mit Forget Gate.
- ↑ Xingjian Shi, Zhourong Chen, Hao Wang, Dit-Yan Yeung, Wai-kin Wong, Wang-chun Woo: Convolutional LSTM Network: A Machine Learning Approach for Precipitation Nowcasting In: Proceedings of the 28th International Conference on Neural Information Processing Systems, online, S. 802–810, 2015
- ↑ Alex Graves, Jürgen Schmidhuber: Framewise Phoneme Classification with Bidirectional LSTM Networks In: Proc. of IJCNN 2005, Montreal, Canada, pp. 2047-2052, 2005 online
- ↑ Santiago Fernández, Alex Graves, Jürgen Schmidhuber: An Application of Recurrent Neural Networks to Discriminative Keyword Spotting. In: Proceedings of the 17th International Conference on Artificial Neural Networks (= ICANN'07). Springer-Verlag, Berlin, Heidelberg 2007, ISBN 978-3-540-74693-5, S. 220–229 (Online).
- ↑ Martin Wöllmer, Florian Eyben, Björn Schuller, Gerhard Rigoll: Recognition of Spontaneous Conversational Speech using Long Short-Term Memory Phoneme Predictions In: Proc. of Interspeech 2010, ISCA, pp. 1946-1949, Makuhari, Japan, 2010 online (Memento vom 17. März 2018 im Internet Archive)
- ↑ Haşim Sak, Andrew Senior, Françoise Beaufays: Long Short-Term Memory Based Recurrent Neural Network Architectures for Large Vocabulary Speech Recognition arxiv 2014
- ↑ Wojciech Zaremba, Ilya Sutskever, Oriol Vinyals: Recurrent Neural Network Regularization arxiv 2014/2015
- ↑ Rupesh Kumar Srivastava, Klaus Greff, Jürgen Schmidhuber: Highway Networks (arXiv TR 1505.00387). In: arXiv. 2. Mai 2015, arxiv:1505.00387.
- ↑ Rupesh K Srivastava, Klaus Greff, Juergen Schmidhuber: Training Very Deep Networks. In: Advances in Neural Information Processing Systems 28. Band 28. Curran Associates, Inc., 2015, S. 2377–2385 (Online).
- ↑ Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun: 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). IEEE, Las Vegas, NV, USA 2016, ISBN 978-1-4673-8851-1, Deep Residual Learning for Image Recognition, S. 770–778, doi:10.1109/CVPR.2016.90, arxiv:1512.03385 (ieee.org).
- ↑ Jürgen Schmidhuber: The most cited neural networks all build on work done in my labs. In: AI Blog. 2021, abgerufen am 15. August 2022 (englisch).
- ↑ Cho, Kyunghyun; van Merrienboer, Bart; Gulcehre, Caglar; Bahdanau, Dzmitry; Bougares, Fethi; Schwenk, Holger; Bengio, Yoshua: Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation arxiv 2014.
- ↑ Dan C. Ciresan, U. Meier, J. Masci, L. M. Gambardella, J. Schmidhuber: Flexible, High Performance Convolutional Neural Networks for Image Classification. International Joint Conference on Artificial Intelligence (IJCAI-2011, Barcelona), 2011.
- ↑ Dan Ciresan, A. Giusti, L. Gambardella, J. Schmidhuber: Deep Neural Networks Segment Neuronal Membranes in Electron Microscopy Images. In: Advances in Neural Information Processing Systems (NIPS 2012), Lake Tahoe, 2012.
- ↑ Dan Ciresan, A. Giusti, L. Gambardella, J. Schmidhuber: Mitosis Detection in Breast Cancer Histology Images using Deep Neural Networks. MICCAI 2013.
- ↑ Françoise Beaufays: The neural networks behind Google Voice transcription. In: Research Blog. 11. August 2015, abgerufen am 27. Juni 2017 (amerikanisches Englisch).
- ↑ Pranav Khaitan: Chat Smarter with Allo. In: Research Blog. 18. Mai 2016, abgerufen am 27. Juni 2017 (amerikanisches Englisch).
- ↑ Amir Efrati: Apple’s Machines Can Learn Too. In: The Information. 13. Juni 2016, abgerufen am 27. Juni 2017 (englisch).
- ↑ Werner Vogels: Bringing the Magic of Amazon AI and Alexa to Apps on AWS. - All Things Distributed. In: www.allthingsdistributed.com. 30. November 2016, abgerufen am 27. Juni 2017 (englisch).
- ↑ Nie, J., Wang, N., Li, J., Wang, K., & Wang, H. (2021). Meta-learning prediction of physical and chemical properties of magnetized water and fertilizer based on LSTM. Plant Methods, 17(1), 1-13.
- ↑ Baek, S. S., Pyo, J., & Chun, J. A. (2020). Prediction of water level and water quality using a CNN-LSTM combined deep learning approach. Water, 12(12), 3399.
- ↑ Jürgen Schmidhuber: The 2010s: Our Decade of Deep Learning / Outlook on the 2020s. In: AI Blog. 2021, abgerufen am 30. April 2022.