La retropropagació a través del temps (BPTT) és una tècnica basada en gradients per entrenar certs tipus de xarxes neuronals recurrents, com les xarxes Elman. L'algorisme va ser derivat de manera independent per nombrosos investigadors.[1][2]
Les dades d'entrenament per a una xarxa neuronal recurrent són una seqüència ordenada de parells entrada-sortida, . S'ha d'especificar un valor inicial per a l'estat ocult , normalment escollit per ser un vector zero.[3]
BPTT comença desplegant una xarxa neuronal recurrent en el temps. La xarxa desplegada conté entrades i sortides, però cada còpia de la xarxa comparteix els mateixos paràmetres. Aleshores, s'utilitza l'algoritme de retropropagació per trobar el gradient de la funció de pèrdua respecte a tots els paràmetres de la xarxa.
Considereu un exemple de xarxa neuronal que conté una capa recurrent i una capa d'alimentació anticipada . Hi ha diferents maneres de definir el cost de la formació, però el cost agregat és sempre la mitjana dels costos de cadascun dels passos de temps. El cost de cada pas de temps es pot calcular per separat. La figura anterior mostra com és el cost en el moment es pot calcular, desplegant la capa recurrent durant tres passos de temps i afegint la capa de feedforward . Cada instància de a la xarxa desplegada comparteix els mateixos paràmetres. Així, el pes s'actualitza en cada cas ( ) es sumen.[4]
A continuació es mostra el pseudocodi d'una versió truncada de BPTT, on conté les dades d'entrenament parells d'entrada-sortida, i la xarxa es desplega per passos de temps:
Back_Propagation_Through_Time(a, y) // a[t] és l'entrada en el temps t. y[t] és la sortida
Desplegueu la xarxa per contenir k instàncies de f
fer fins que es compleixi el criteri d'aturada: x := el vector de magnitud zero // x és el context actual
per a t de 0 a n − k do // t és temps. n és la durada de la seqüència d'entrenament Estableix les entrades de xarxa a x, a[t], a[t+1],... , a[t+k−1]
p := propagar cap endavant les entrades a tota la xarxa desplegada
e := y[t+k] − p; // error = objectiu − predicció Propaga l'error, e, enrere a tota la xarxa desplegada Suma els canvis de pes en les k instàncies de f. Actualitzeu tots els pesos en f i g.
x := f(x, a[t]); // calcula el context per al següent pas de temps
El BPTT acostuma a ser significativament més ràpid per entrenar xarxes neuronals recurrents que les tècniques d'optimització de propòsit general com l'optimització evolutiva.[5]
BPTT té dificultats amb els òptims locals. Amb les xarxes neuronals recurrents, els òptims locals són un problema molt més significatiu que amb les xarxes neuronals feed-forward.[6] La retroalimentació recurrent en aquestes xarxes tendeix a crear respostes caòtiques a la superfície d'error que fan que els òptims locals es produeixin amb freqüència i en llocs pobres de la superfície d'error.