LSTM

Long Short Term Memory cells.

Variablen

  • $N$ Anzahl hidden Nodes
  • $I$ Anzahl Inputnodes
  • $t=0\dots T$ Zeitpunkte
  • $\theta^{xi(t)}\in R^{N\times I}$ Inputgate Input
  • $\theta^{hi(t)}\in R^{N\times N}$ Inputgate Hidden
  • $b^{i(t)}\in R^{N}$ Inputgate Konstante

Forward Pass

lstmtcell

  • $z^{i(t)}=\theta^{xi(t)}x^{(t)} + \theta^{hi(t)}h^{(t-1)} + b^{i(t)}$
  • $i^{(t)}=Sig(z^{i(t)})$
  • $z^{f(t)}=\theta^{xf(t)}x^{(t)} + \theta^{hf(t)}h^{(t-1)} + b^{f(t)}$
  • $f^{(t)}=Sig(z^{f(t)})$
  • $z^{o(t)}=\theta^{xo(t)}x^{(t)} + \theta^{ho(t)}h^{(t-1)} + b^{o(t)}$
  • $o^{(t)}=Sig(z^{o(t)})$
  • $z^{g(t)}=\theta^{xg(t)}x^{(t)} + \theta^{hg(t)}h^{(t-1)} + b^{g(t)}$
  • $g^{(t)}=Tanh(z^{g(t)})$
  • $c^{(t)}=f^{(t)}\cdot c^{(t-1)} + i^{(t)}\cdot g^{(t)}$
  • $h^{(t)}=o^{(t)}\cdot Tanh(c^{(t)})$
  • $z^{r(t)}=\theta^{r(t)}h^{(t)}+b^{r(t)}$
  • $r^{(t)}=Sig(z^{r(t)})$

Schema für Kettenregel

  1. Variable aussuchen. Z.B. $v$
  2. Direkt abhängige Variablen identifizieren. Z.B. $h_1, c_1$
  3. Summe aus den Ableitungen der abhängigen Funktionen:
    ${\delta E\over\delta v}
    ={\delta h_1\over\delta v}{\delta E\over\delta h_1}
    +{\delta c_1\over\delta v}{\delta E\over\delta c_1}
    $

Backward Pass

E auffassen als Funktion in den Outputvariablen $h_i^{(t)}, c_i^{(t)}$ mit festem $t$ und $i=1,\dots,N$.
Ableiten nach Inputvariablen $z_i^{(t)}, c_{i-1}^{(t)}$. Danach auffassen als Funktion in den Inputvariablen und ableiten nach den Outputs.

Richtungsableitungen

  • ${\delta E\over\delta h_i^{(t)}}=
    \sum_j^N{\delta z_j^{i(t+1)}\over\delta h_i^{(t)}}{\delta E\over\delta z_j^{i(t+1)}}
    +\sum_j^N{\delta z_j^{f(t+1)}\over\delta h_i^{(t)}}{\delta E\over\delta z_j^{f(t+1)}}
    +\sum_j^N{\delta z_j^{o(t+1)}\over\delta h_i^{(t)}}\delta {E\over\delta z_j^{o(t+1)}}
    +\sum_j^N{\delta z_j^{g(t+1)}\over\delta h_i^{(t)}}{\delta E\over\delta z_j^{g(t+1)}}
    +\sum_j^R{\delta z_j^{r(t)}\over\delta h_i^{(t)}}{\delta E\over\delta z_j^{r(t)}}
    $
    $
    =\sum_j^N{\theta^{hi(t)}_{ji}{\delta E\over\delta z_j^{i(t+1)}}}
    +\sum_j^N{\theta^{hf(t)}_{ji}{\delta E\over\delta z_j^{f(t+1)}}}
    +\sum_j^N{\theta^{ho(t)}_{ji}{\delta E\over\delta z_j^{o(t+1)}}}
    +\sum_j^N{\theta^{hg(t)}_{ji}{\delta E\over\delta z_j^{g(t+1)}}}
    +\sum_j^R{\theta^{r(t)}_{ji}{\delta E\over\delta z_j^{r(t)}}}
    $
  • ${\delta E\over\delta c_i^{(t)}}
    ={\delta h_i{(t)}\over\delta c_i^{(t)}}{\delta E\over\delta h_i{(t)}}
    +{\delta c_i^{(t+1)}\over\delta c_i^{(t)}}{\delta E\over\delta c_i^{(t+1)}}
    =o_i^{(t)}Tanh'(c_i^{(t)}){\delta E\over\delta h_i{(t)}}
    +f_i^{(t+1)}{\delta E\over\delta c_i^{(t+1)}}
    $
  • ${\delta E\over\delta i_i^{(t)}}=
    {\delta c_i^{(t)}\over\delta i_i^{(t)}}{\delta E\over\delta c_i^{(t)}}
    =g_i^{(t)}{\delta E\over\delta c_i^{(t)}}
    $
  • ${\delta E\over\delta z_i^{i(t)}}=
    {\delta i_i^{(t)}\over\delta z_i^{i(t)}}{\delta E\over\delta i_i^{(t)}}
    = Sig'(z_i^{i(t)}){\delta E\over\delta i_i^{(t)}}
    $
  • ${\delta E\over\delta f_i^{(t)}}
    ={\delta c_i^{(t)}\over\delta f_i^{(t)}}{\delta E\over\delta c_i^{(t)}}
    =c_i^{(t-1)}{\delta E\over\delta c_i^{(t)}}
    $
  • ${\delta E\over\delta z_i^{f(t)}}
    ={\delta f_i^{(t)}\over\delta z_i^{f(t)}}{\delta E\over\delta f_i^{(t)}}
    =Sig'(z_i^{f(t)}){\delta E\over\delta f_i^{(t)}}
    $
  • ${\delta E\over\delta o_i^{(t)}}
    ={\delta h_i^{(t)}\over\delta o_i^{(t)}}{\delta E\over\delta h_i^{(t)}}
    =Tanh(c_i^{(t)}){\delta E\over\delta h_i^{(t)}}
    $
  • ${\delta E\over\delta z_i^{o(t)}}
    ={\delta o_i^{(t)}\over\delta z_i^{o(t)}}{\delta E\over\delta o_i^{(t)}}
    =Sig'(z_i^{o(t)}){\delta E\over\delta o_i^{(t)}}
    $
  • ${\delta E\over\delta g_i^{(t)}}
    ={\delta c_i^{(t)}\over\delta g_i^{(t)}}{\delta E\over\delta c_i^{(t)}}
    =i_i^{(t)}{\delta E\over\delta c_i^{(t)}}
    $
  • ${\delta E\over\delta z_i^{g(t)}}
    ={\delta g_i^{(t)}\over\delta z_i^{g(t)}}{\delta E\over\delta g_i^{(t)}}
    =Tanh'(z_i^{g(t)}){\delta E\over\delta g_i^{(t)}}
    $

Ableitungen nach den Gewichten

  • ${\delta E\over\delta w_{ij}^{xi(t)}}
    ={\delta z_i^{i(t)}\over\delta w_{ij}^{xi(t)}}{\delta E\over\delta z_i^{i(t)}}
    =x_j^{(t)}{\delta E\over\delta z_i^{i(t)}}
    $
  • ${\delta E\over\delta w_{ij}^{hi(t)}}
    ={\delta z_i^{i(t)}\over\delta w_{ij}^{hi(t)}}{\delta E\over\delta z_i^{i(t)}}
    =h_j^{(t-1)}{\delta E\over\delta z_i^{i(t)}}
    $
  • ${\delta E\over\delta b_{i}^{i(t)}}
    ={\delta z_i^{i(t)}\over\delta b_{i}^{i(t)}}{\delta E\over\delta z_i^{i(t)}}
    =1{\delta E\over\delta z_i^{i(t)}}
    $

Weiteres

  • Ableitung nach den Gewichten ist dann die Summe der $w_i^{(t)}$ über $t$.
  • Ableitung nach den Inits für $h$ und $c$: Kettenregel für $z_i^{(0)}$