Rétropropagation à travers le temps (BPTT)

On considère un RNN simple scalaire (\(h_t \in \mathbb{R}\)) défini par : \[h_t = \tanh(w_h h_{t-1} + w_x x_t), \qquad y_t = w_y h_t\] On dispose de la séquence \(x_1 = 1\), \(x_2 = 0\), \(x_3 = -1\) et des cibles \(\hat{y}_1 = 0\), \(\hat{y}_2 = 0\), \(\hat{y}_3 = 1\).

La fonction de perte est : \[\mathcal{L} = \frac{1}{3}\sum_{t=1}^{3} (y_t - \hat{y}_t)^2\] Les paramètres sont \(w_x = 1\), \(w_h = 0.5\), \(w_y = 1\), et \(h_0 = 0\).

1

(Forward pass) Calculer \(h_1, h_2, h_3\), puis \(y_1, y_2, y_3\), et enfin la perte \(\mathcal{L}\).

2

Calculer \(\dfrac{\partial \mathcal{L}}{\partial y_t}\) pour chaque \(t\).

3

On pose \(z_t = w_h h_{t-1} + w_x x_t\) (l’entrée du neurone avant activation) et \(\delta_t = \dfrac{\partial \mathcal{L}}{\partial z_t}\). Montrer que : \[\delta_t = \left(\frac{\partial \mathcal{L}}{\partial y_t} \cdot w_y + \delta_{t+1} \cdot w_h\right) (1 - h_t^2)\] avec la convention \(\delta_4 = 0\). Calculer numériquement \(\delta_3\), \(\delta_2\), \(\delta_1\) en remontant le temps.

4

En déduire les gradients par rapport aux poids : \[\frac{\partial \mathcal{L}}{\partial w_y} = \sum_{t=1}^3 \frac{\partial \mathcal{L}}{\partial y_t} h_t, \qquad \frac{\partial \mathcal{L}}{\partial w_h} = \sum_{t=1}^3 \delta_t h_{t-1}, \qquad \frac{\partial \mathcal{L}}{\partial w_x} = \sum_{t=1}^3 \delta_t x_t\] Calculer numériquement ces trois gradients.

5

Le calcul de \(\delta_t\) fait intervenir un produit récurrent en remontant le temps. Que se passe-t-il si la séquence est très longue ? Pourquoi le fait d’avoir \(w_h < 1\) est-il un problème ?

Exercice Tz9w

Signaler une erreur

  1. Problème
  2. Précisions
  3. Envoi
Quel est le problème ?