Zrozumienie jednostek LSTM vs. komórek


32

Przez jakiś czas studiowałem LSTM. Rozumiem na wysokim poziomie, jak wszystko działa. Jednak zamierzając je zaimplementować za pomocą Tensorflow, zauważyłem, że BasicLSTMCell wymaga szeregunum_units parametrów (tj. ) Parametrów.

Z tego bardzo dokładnego wyjaśnienia LSTM wynika, że ​​jedna jednostka LSTM jest jedną z poniższych

Jednostka LSTM

który w rzeczywistości jest jednostką GRU.

Zakładam, że parametr num_unitsz BasicLSTMCellodnosi się do tego, jak wiele z nich chcemy podłączyć się do siebie w warstwie.

Pozostaje pytanie - czym jest „komórka” w tym kontekście? Czy „komórka” jest równoważna warstwie w normalnej sieci neuronowej ze sprzężeniem zwrotnym?


Nadal jestem zdezorientowany, czytałem colah.github.io/posts/2015-08-Understanding-LSTMs i dobrze to rozumiem. Jak stosuje się termin komórka w odniesieniu do tego artykułu? Wygląda na to, że komórka LSTM w artykule jest wektorem jak w Tensorflow, prawda?
Pinokio

Odpowiedzi:


17

Terminologia jest niestety niespójna. num_unitsw TensorFlow jest liczba stanów ukrytych, tj. wymiar w podanych równaniach.ht

Ponadto z https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/api_docs/python/functions_and_classes/shard9/tf.nn.rnn_cell.RNNCell.md :

Definicja komórki w tym pakiecie różni się od definicji użytej w literaturze. W literaturze komórka odnosi się do obiektu z pojedynczym wyjściem skalarnym. Definicja w tym pakiecie odnosi się do poziomej tablicy takich jednostek.

„Warstwa LSTM” jest prawdopodobnie bardziej wyraźna, przykład :

def lstm_layer(tparams, state_below, options, prefix='lstm', mask=None):
    nsteps = state_below.shape[0]
    if state_below.ndim == 3:
        n_samples = state_below.shape[1]
    else:
        n_samples = 1

    assert mask is not None
    […]

Ach, rozumiem, więc wtedy „komórka” to num_unitpoziomy poziomy zestaw połączonych ze sobą komórek LSTM. Ma sens. Czy więc byłoby to analogiczne do ukrytej warstwy w standardowej sieci feed-forward?

* Jednostki stanu LSTM

@rec Zgadza się
Franck Dernoncourt

1
@Sycorax, na przykład, jeśli wejście sieci neuronowej to szereg czasowy z 10 krokami czasowymi, wymiar poziomy ma 10 elementów.
Franck Dernoncourt

1
Nadal jestem zdezorientowany, czytałem colah.github.io/posts/2015-08-Understanding-LSTMs i dobrze to rozumiem. Jak stosuje się termin komórka w odniesieniu do tego artykułu? Wygląda na to, że komórka LSTM w artykule jest wektorem jak w Tensorflow, prawda?
Pinokio

4

Większość diagramów LSTM / RNN pokazuje tylko ukryte komórki, ale nigdy ich jednostki. Stąd zamieszanie. Każda ukryta warstwa ma ukryte komórki, tyle ile kroków czasowych. Co więcej, każda ukryta komórka składa się z wielu ukrytych jednostek, jak na poniższym schemacie. Dlatego wymiarowość macierzy ukrytej warstwy w RNN wynosi (liczba kroków czasowych, liczba ukrytych jednostek).

wprowadź opis zdjęcia tutaj


4

Chociaż problem jest prawie taki sam, jak udzieliłem odpowiedzi w tej odpowiedzi , chciałbym zilustrować ten problem, który również trochę mnie dzisiaj pomylił w modelu seq2seq (dzięki odpowiedzi @Franck Dernoncourt), na wykresie. Na tym prostym schemacie enkodera:

wprowadź opis zdjęcia tutaj

Każde powyżej to ta sama komórka w innym przedziale czasowym (komórka GRU lub LSTM, jak w twoim pytaniu), a wektory masy (nie stronniczości) w komórce są tego samego rozmiaru (liczba_jednostek / liczba_skrytych lub rozmiar_państwowa lub wielkość_wyjściowa ) .hi


Wierzę num_units = nw tę liczbę
notilas

-1

Moim zdaniem komórka oznacza węzeł taki jak ukryta komórka, który jest również nazywany ukrytym węzłem, w przypadku wielowarstwowego modelu LSTM liczbę komórek można obliczyć za pomocą time_steps * num_layers, a liczba_jednostek jest równa time_steps


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.