¿Cuál es la diferencia entre la retropropagación y la retropropagación a través del tiempo?

Honestamente, no entiendo cuál es el problema con llamarlo BTT (si alguien se siente libre de decirme), pero parece enfatizar algo que debería haber sido obvio, que es la profundidad causada por el componente de tiempo de los puntos de datos. La “evidencia” es que tenemos una pérdida en cada paso de tiempo, por lo que cambiamos los pesos con la regla de cambio habitual como siempre lo hacemos de acuerdo con todas las pérdidas (y su agregado), pero la profundidad de la red es inducida por el componente de tiempo . Para mí, parece una regla de cadena estándar una vez que despliegas el gráfico.

Si tenemos una función de pérdida para un punto de datos que se puede descomponer en el tiempo (como una oración), entonces tenemos:

[matemática] V (f (x), y) = \ sum ^ T_ {t = 1} V_t = \ sum ^ T_ {t = 1} V (f (x_t), y_t) [/ math]

Entonces, por supuesto, si va a hacer algún tipo de método de gradiente como SGD, entonces necesitamos el gradiente de lo anterior:

[matemáticas] \ frac {\ parcial V (f (x), y)} {\ parcial W} = \ sum ^ T_ {t = 1} \ frac {\ parcial V (f (x_t), y_t)} {\ parcial W} = \ sum ^ T_ {t = 1} \ frac {\ partial V_t} {\ partial W} [/ math]

y luego simplemente hacemos la regla de cadena normal para cada componente anterior como lo haríamos normalmente. Los componentes de error más cercanos al final tendrán una regla de cadena más grande ya que cuando se despliega el gráfico es mucho más largo.

En resumen, la respuesta es que la diferencia es nula y, por supuesto, si la red cambia y la pérdida también cambia la ecuación final, pero sigue siendo la misma regla de la cadena.


Si quiere los detalles aquí es a lo que me refiero: considere alguna función de pérdida en algún momento paso [math] V_t [/ math] y la salida en ese paso de tiempo [math] \ hat y_t [/ math]. Entonces tenemos:

[matemáticas] \ frac {\ partial V_n} {\ partial W} = \ frac {\ partial V_n} {\ partial y_n} \ frac {\ partial y_n} {\ partial W} = \ frac {\ partial V_n} {\ parcial y_n} \ frac {\ partial y_n} {\ partial h_n} \ frac {\ partial h_n} {\ partial W} [/ math]

entonces la última parte [matemática] \ frac {\ parcial h_n} {\ parcial W} [/ matemática] depende de cada unidad oculta [matemática] h_t [/ matemática] en cada paso de tiempo anterior y cada [matemática] h_t [/ matemática ] depende de [matemáticas] W [/ matemáticas]. Por lo tanto, tenemos que aplicar la regla de la cadena (multivariable) nuevamente para cada unidad oculta en el pasado:

[math] \ frac {\ partial h_n} {\ partial W} = \ sum ^ n_ {t = 0} \ frac {\ partial h_n} {\ partial h_t} \ frac {\ partial h_t} {\ partial W} [ /mates]

para finalmente dar:

[matemáticas] \ frac {\ partial V_n} {\ partial W} = \ frac {\ partial V_n} {\ partial y_n} \ frac {\ partial y_n} {\ partial h_n} \ sum ^ n_ {t = 0} \ frac {\ partial h_n} {\ partial h_t} \ frac {\ partial h_t} {\ partial W} [/ math]

Puede parecer complicado, pero acabo de hacer una regla de cadena normal. Nada lujoso, excepto que había un componente de tiempo porque el modelado y la pérdida lo tenían.

Tenga en cuenta que [math] \ frac {\ partial h_t} {\ partial W} [/ math] puede calcularse fácilmente debido a la ecuación de recurrencia [math] h_t = tanh (W h_ {t-1} + U x_t + b_t) [/mates]. Observe también mi abuso de notación donde [math] W [/ math] representa un solo peso y toda la matriz / tensor para evitar suscribir todo y hacer que parezca más confuso de lo que realmente es.

Como un punto adicional para observar, observe que también podemos aplicar la regla de la cadena nuevamente donde el estado oculto actual [math] h_n [/ math] depende de los anteriores [math] h_t [/ math]. Si procedemos a aplicarlo, obtenemos:

[mates] \ frac {\ partial h_n} {\ partial h_t} = \ frac {\ partial h_n} {\ partial h_ {n-1}} \ frac {\ partial h_ {n-1}} {\ partial h_ { n-2}}… \ frac {\ partial h_1} {\ partial h_ {0}} [/ math]

y dado que los estados ocultos dependen entre sí de acuerdo con una función de activación [matemáticas] h_t = tanh (W h_ {t-1} + U x_t + b_t) [/ matemáticas] entonces obtenemos el famoso problema de gradiente de fuga si usamos un tanh, así que para evitar eso, usamos ReLu y evitamos eso.

Espero eso ayude.


Esta respuesta se basó principalmente en una gran explicación hecha a continuación:

quien recientemente vino a dar una charla en CBMM.

Ambos se refieren al mismo algoritmo subyacente (es decir, la regla de la cadena aplicada al gráfico de cálculo subyacente, por ejemplo, una arquitectura neural, para calcular gradientes de una función de pérdida con respecto a partes del gráfico, especialmente parámetros). La razón “a través del tiempo” se agrega a la retropropagación es para indicar que este algoritmo se está aplicando a un modelo neural temporal (p. Ej., Red neuronal recurrente o RNN).

Específicamente, desplegamos un RNN sobre tantos pasos de tiempo o elementos en una secuencia (compartiendo sus parámetros sobre cada paso) para crear una arquitectura neural muy profunda (en el tiempo). Idealmente, lo desarrollamos en un número variable de pasos de tiempo (dependiendo del número de elementos que vienen antes del objetivo para predecir), pero generalmente se truncan después de m pasos. Esencialmente, a este procedimiento de despliegue se refiere “a través del tiempo”, de lo contrario, la retropropagación a través del tiempo aplica efectivamente la retropropagación de errores clásica a los RNN.

La retropropagación se usa comúnmente cuando se calculan gradientes en una red de varias capas, mientras que la retropropagación a través del tiempo se usa en una red neuronal recurrente (RNN).

Las activaciones de red en un RNN en un paso de tiempo se usan para calcular las activaciones en los pasos de tiempo siguientes. Esto es similar a la red de alimentación de múltiples capas donde las activaciones en una capa inferior se utilizan para calcular las activaciones de unidades en la capa superior. Cuando el método de retropropagación utilizado para la red de alimentación de múltiples capas se utiliza para RNN, se denomina retropropagación a través del tiempo.

Espero que la siguiente discusión responda su pregunta. Este tutorial describe interactivamente lo siguiente:

1. Conceptos básicos de la red neuronal recurrente (RNN),

2. Diferencias arquitectónicas entre RNN y DNN (Red neuronal profunda).

3. Entrenamiento RNN – A través de un ejemplo muy simple.

Aprendizaje profundo utilizando la red neuronal recurrente Parte 1

Aprendizaje profundo utilizando la red neuronal recurrente Parte 2

More Interesting

¿Cuáles son algunos buenos documentos con ejemplos del mundo real del aprendizaje de refuerzo inverso (IRL)?

¿Podría alguien elaborar la relación entre un lenguaje de máquina, un sistema operativo y un procesador en particular?

Cómo crear un sistema de predicción de calificación a partir de los comentarios de los revisores para comentarios 360 dados un comentario del revisor y el conjunto de datos de calificación correspondiente

¿Son los modelos de aprendizaje profundo / redes neuronales siempre superiores en las tareas de PNL?

Usando TensorFlow, ¿cómo construiría una IA que pueda reconocer patrones en secuencias numéricas y luego transmitir el patrón al usuario? Está destinado a aprender los patrones que le doy de comer.

¿El libro de Neural Networks de James Freeman cubre todos los temas?

¿La 'automatización' y la 'inteligencia artificial' conducirán al desempleo crónico y al colapso económico?

¿Cuáles serían los proyectos / servicios más interesantes en el cuidado de la salud que involucren alta tecnología como dispositivos móviles, big data y data science? Por ejemplo, Ginger.io.

Aprendizaje automático: ¿cuándo debo aplicar la normalización / estandarización de datos?

¿Cuáles son algunos de los desafíos y oportunidades sobresalientes en el análisis predictivo con respecto a la privacidad y la propiedad de los datos, el análisis de los datos del usuario, el escalado de algoritmos y los ecosistemas e intercambios de datos emergentes?

¿Cómo decidimos qué algoritmo usar en el aprendizaje automático?

¿Cuál es el peor caso de sobreajuste que hayas visto en entornos sociales o psicológicos?

¿Cómo debo entrenar mi modelo de tren con un modelo de regresión?

¿Podemos agregar la capa SVM como capa inferior en la arquitectura CNN para una mejor clasificación?

¿Cómo implemento un análisis de sentimiento a nivel de documento?