La retropropagación a través del tiempo (BPTT) es una técnica basada en gradientes para entrenar ciertos tipos de redes neuronales recurrentes . Puede utilizarse para entrenar redes Elman . El algoritmo fue derivado de forma independiente por numerosos investigadores. [1] [2] [3]
Los datos de entrenamiento de una red neuronal recurrente son una secuencia ordenada de pares de entrada y salida. Se debe especificar un valor inicial para el estado oculto . Normalmente, se utiliza un vector de todos los ceros para este propósito.
El método BPTT comienza desplegando una red neuronal recurrente en el tiempo. La red desplegada contiene entradas y salidas, pero cada copia de la red comparte los mismos parámetros. Luego, se utiliza el algoritmo de retropropagación para encontrar el gradiente del costo con respecto a todos los parámetros de la red.
Consideremos un ejemplo de una red neuronal que contiene una capa recurrente y una capa de avance . Hay diferentes maneras de definir el costo de entrenamiento, pero el costo agregado es siempre el promedio de los costos de cada uno de los pasos de tiempo. El costo de cada paso de tiempo se puede calcular por separado. La figura anterior muestra cómo se puede calcular el costo en el tiempo, desplegando la capa recurrente para tres pasos de tiempo y agregando la capa de avance . Cada instancia de en la red desplegada comparte los mismos parámetros. Por lo tanto, las actualizaciones de peso en cada instancia ( ) se suman juntas.
Pseudocódigo para una versión truncada de BPTT, donde los datos de entrenamiento contienen pares de entrada-salida, pero la red se despliega para pasos de tiempo:
Back_Propagation_Through_Time(a, y) // a[t] es la entrada en el momento t. y[t] es la salida Despliegue la red para contener k instancias de f hasta que se cumpla el criterio de detención: x := el vector de magnitud cero // x es el contexto actual para t de 0 a n − k hacer // t es el tiempo. n es la longitud de la secuencia de entrenamiento Establezca las entradas de la red en x, a[t], a[t+1], ..., a[t+k−1] p := propagar hacia adelante las entradas a lo largo de toda la red desplegada e := y[t+k] − p; // error = objetivo − predicción Retropropagar el error, e, a lo largo de toda la red desplegada Sume los cambios de peso en las k instancias de f juntas. Actualice todos los pesos en f y g. x := f(x, a[t]); // calcula el contexto para el siguiente paso de tiempo
BPTT tiende a ser significativamente más rápido para entrenar redes neuronales recurrentes que las técnicas de optimización de propósito general, como la optimización evolutiva . [4]
La BPTT tiene dificultades con los óptimos locales. Con las redes neuronales recurrentes, los óptimos locales son un problema mucho más significativo que con las redes neuronales de retroalimentación. [5] La retroalimentación recurrente en dichas redes tiende a crear respuestas caóticas en la superficie de error que hacen que los óptimos locales se produzcan con frecuencia y en ubicaciones deficientes en la superficie de error.
{{cite book}}
: |website=
ignorado ( ayuda )