Rétropropagation à travers le temps
La rétropropagation à travers le temps (BPTT, pour l'anglais backpropagation through time) est une technique de gradient visant à entrainer certains types de réseaux de neurones récurrents. L'algorithme a été conçu indépendamment par plusieurs chercheurs[1],[2]. Les données d'apprentissage d'un réseau neuronal récurrent sont une séquence ordonnée de paires d'entrées-sorties, . Une valeur initiale doit être spécifiée pour l'état caché . 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 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 et une couche de propagation avant . 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 peut être calculé, en dépliant la couche récurrente pour trois pas de temps et en ajoutant la couche d'anticipation . Chaque instance de dans le réseau déplié partage les mêmes paramètres. Ainsi, le poids est mis à jour dans chaque instance ( ) sont additionnées.
Pseudocode
[modifier | modifier le code]Ce pseudocode pour une version tronquée de la rétropropagation à travers le temps, où les données de formation contiennent paires d'entrées-sorties, mais le réseau est déplié pour pas de temps :
Back_Propagation_Through_Time(a, y) // a[t] est l'entrée au temps t. y[t] est la sortie Déplier le réseau pour contenir k instances de f jusqu'à ce que le critère d'arrêt soit atteint faire : x := le vecteur de magnitude nulle // x est le contexte courant pour t de 0 à n − k do // t est le temps. n est la longueur de la séquence d'apprentissage Réglez les entrées réseau sur x, a[t], a[t+1], ..., a[t+k−1] p := propager en avant les entrées sur l'ensemble du réseau déplié e := y[t+k] − p ; // erreur = cible − prédiction Rétro-propagez l'erreur, e, sur l'ensemble du réseau déployé Additionnez les changements de poids dans les k instances de f ensemble. Mettre à jour tous les poids en f et g. x := f(x, un[t]); // calcule le contexte pour le pas de temps suivant
Avantages
[modifier | modifier le code]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[3].
Désavantages
[modifier | modifier le code]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[4]. 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.
Notes et références
[modifier | modifier le code]- (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Backpropagation through time » (voir la liste des auteurs).
- (en) M. C. Mozer, Backpropagation: Theory, architectures, and applications, Hillsdale, NJ: Lawrence Erlbaum Associates, , 137–169 p., « A Focused Backpropagation Algorithm for Temporal Pattern Recognition »
- (en) Paul J. Werbos, « Generalization of backpropagation with application to a recurrent gas market model », Neural Networks, vol. 1, no 4, , p. 339–356 (DOI 10.1016/0893-6080(88)90007-x, lire en ligne)
- (en) Jonas Sjöberg, Qinghua Zhang, Lennart Ljung et Albert Benveniste, « Nonlinear black-box modeling in system identification: a unified overview », Automatica, vol. 31, no 12, , p. 1691–1724 (DOI 10.1016/0005-1098(95)00120-8, CiteSeerx 10.1.1.27.81)
- (en) M.P. Cuéllar, M. Delgado et M.C. Pegalajar, « An Application of Non-linear Programming to Train Recurrent Neural Networks in Time Series Prediction Problems », Enterprise Information Systems VII, Springer Netherlands, , p. 95–102 (ISBN 978-1-4020-5323-8, DOI 10.1007/978-1-4020-5347-4_11)