Une cellule LSTM maintient deux vecteurs d’état : la cell state \(c_t \in \mathbb{R}\) et l’état caché \(h_t \in \mathbb{R}\) (on reste scalaire pour les calculs). À chaque pas de temps, quatre quantités intermédiaires sont calculées à partir de \(x_t\) et \(h_{t-1}\) : \[\begin{align*} f_t &= \sigma(w_f x_t + u_f h_{t-1} + b_f) & &\text{(porte d'oubli)}\\ i_t &= \sigma(w_i x_t + u_i h_{t-1} + b_i) & &\text{(porte d'entrée)}\\ \tilde{c}_t &= \tanh(w_c x_t + u_c h_{t-1} + b_c) & &\text{(candidat)}\\ o_t &= \sigma(w_o x_t + u_o h_{t-1} + b_o) & &\text{(porte de sortie)} \end{align*}\] La mise à jour des états suit : \[c_t = f_t \cdot c_{t-1} + i_t \cdot \tilde{c}_t, \qquad h_t = o_t \cdot \tanh(c_t)\] où \(\sigma\) désigne la fonction sigmoïde.
Les paramètres sont tous les biais nuls et :
| \(w\) | \(u\) | |
|---|---|---|
| Porte d’oubli \(f\) | \(0\) | \(0\) |
| Porte d’entrée \(i\) | \(2\) | \(0\) |
| Candidat \(\tilde{c}\) | \(2\) | \(0\) |
| Porte de sortie \(o\) | \(1\) | \(0\) |
Les états initiaux sont \(h_0 = 0\), \(c_0 = 0\). On traite la séquence \(x_1 = 1\), \(x_2 = 1\), \(x_3 = 0\), \(x_4 = -1\).
Pour gagner du temps, vous pouvez utiliser : \(\sigma(0) = 0.5\), \(\sigma(1) \approx 0.731\), \(\sigma(-1) \approx 0.269\), \(\sigma(2) \approx 0.88\), \(\sigma(-2) \approx 0.12\), \(\tanh(2) \approx 0.96\), \(\tanh(0) = 0\).
(Pas \(t=1\)) Calculer \(f_1, i_1, \tilde{c}_1, o_1\), puis \(c_1\) et \(h_1\).
(Pas \(t=2\)) Calculer \(f_2, i_2, \tilde{c}_2, o_2\), puis \(c_2\) et \(h_2\). Que remarque-t-on sur \(c_2\) par rapport à \(c_1\) ?
(Pas \(t=3\)) L’entrée est \(x_3 = 0\). Calculer \(c_3\) et \(h_3\). Que fait la porte d’oubli ici ? Comparer \(c_3\) et \(c_2\).
(Pas \(t=4\)) L’entrée est \(x_4 = -1\). Calculer \(c_4\) et \(h_4\). Commenter le rôle de la porte d’entrée.
Dans un RNN simple, l’état caché \(h_t\) était directement écrasé à chaque pas. Expliquer en quoi le mécanisme de cell state \(c_t\) de la LSTM permet de mieux préserver l’information sur le long terme.