Rétropropagation à travers le temps
# Rétropropagation à travers le temps

La rétropropagation à travers le temps (BPTT, pour l'anglais backpropagation through time ) est une technique de gradient pour entrainer certains types de réseaux de neurones récurrents. L'algorithme a été conçu indépendamment par plusieurs $chercheurs^,.$

Les données d'apprentissage d'un réseau neuronal récurrent sont une séquence ordonnée de $k$ paires d'entrées-sorties, $\langle \mathbf {a} _{0},\mathbf {y} _{0}\rangle ,\langle \mathbf {a} _{1},\mathbf {y} _{1}\rangle ,\langle \mathbf {a} _{2},\mathbf {y} _{2}\rangle ,...,\langle \mathbf {a} _{k-1},\mathbf {y} _{k-1}\rangle$ . Une valeur initiale doit être spécifiée pour l'état caché $\mathbf {x} _{0}$ . En règle générale, un vecteur de tous les zéros est utilisé à cette fin.

La rétropropagation à travers le temps commence par déplier un réseau neuronal récurrent dans le temps. Le réseau déplié contient $k$ entrées et sorties, mais chaque copie du réseau partage les mêmes paramètres. Ensuite, l'algorithme de rétropropagation est utilisé pour trouver le gradient de la fonction de coût par rapport à tous les paramètres du réseau.

Considérant un exemple de réseau de neurones ayant une couche récurrente $f$ et une couche de propagation avant $g$. Il existe différentes manières de définir le coût de la formation, mais le coût agrégé est toujours la moyenne des coûts de chacune des étapes temporelles. Le coût de chaque pas de temps peut être calculé séparément. La figure ci-dessus montre comment le coût au moment $t+3$ peut être calculé, en dépliant la couche récurrente $f$ pour trois pas de temps et en ajoutant la couche d'anticipation $g$. Chaque instance de $f$ dans le réseau déplié partage les mêmes paramètres. Ainsi, le poids est mis à jour dans chaque instance ( $f_{1},f_{2},f_{3}$ ) sont additionnées.

## Pseudocode

Ce pseudocode pour une version tronquée de la rétropropagation à travers le temps, où les données de formation contiennent $n$ paires d'entrées-sorties, mais le réseau est déplié pour $k$ pas de temps :

## Avantages

La rétropropagation à travers le temps a tendance à être beaucoup plus rapide pour former des réseaux de neurones récurrents que les techniques d'optimisation à usage général telles que l'optimisation évolutive.

## Désavantages

La rétropropagation à travers le temps a des difficultés avec les optima locaux. Avec les réseaux de neurones récurrents, les optima locaux sont un problème beaucoup plus important qu'avec les réseaux de neurones à anticipation. La rétroaction récurrente dans de tels réseaux a tendance à créer des réponses chaotiques dans la surface d'erreur, ce qui provoque l'apparition fréquente d'optimums locaux et à des emplacements médiocres sur la surface d'erreur.

