LSTM Sammelsurium

Verschiedene Einstiegsseiten

Chritopher Ohla über LSTM gibt einen kurzen Einblick in den inneren Aufbau einer LSTM-Zelle. Es werden verschiedene Varianten wie das Gated Recurrent Unit (GRU) mit Links zu den initialen Veröffentlichungen in arxiv beleuchtet.

Die Bildchen kann man fast direkt in Code umsetzen. In groben Zügen sieht ein Plain-Vanilla Recurrent Network-Unit in etwa wie folgt aus:

class RNN:
    def step(self, x):
        self.h = np.tanh(np.dot(self.W_hh, self.h) + np.dot(self.W_xh, x))
        y = np.dot(self.W_hy, self.h)
    return y
layer1 = RNN()
layer2 = RNN()
b = layer1.schritt(a)
d = layer2.schritt(b)

Der entscheidende Unterschied in den Varianten liegt in dem Teil self.h = …
Hier entscheidet sich, ob es eine der LSTM-Varianten oder ein GRU oder eine sonstige Variante ist. Sofern man die Backpropagation in den Griff bekommt sind der Phantasie keine Grenzen gesetzt.

AppMonitor LSTM-Networks zeigt LSTMs aus Entwicklersicht mit kurzen und vollständigen Beispielen.

LSTM is Dead Long Live Transformers spricht kurz die Schwäche von LSTM-Netzen an und zeigt am Code wie heute (2020) damit umgegangen wird.

The unreasonable Effectiveness of Recurrent Neural Networks/ enthält nicht wirklich Fakten dafür aber einige schöne Beispiel-Ergebnisse.

Series Navigation<< Keras TokenizerOptimizer >>