¿Puedes explicar cómo el BPTT sufre un problema de gradiente?

BPTT tiene dos problemas con sus gradientes: el problema de explosión de los gradientes y el problema de desaparición del gradiente. Leí por primera vez sobre estos temas en Pascanu et al., 2013 [1].

Aquí están mis explicaciones para ellos. Comienza con la fórmula de vainilla RNN:

[matemáticas] h_t = f (R \ cdot h_ {t-1} + U \ cdot x_t), [/ math]

donde [math] x_t, h_t \ in \ mathbb {R} ^ {d} [/ math] son ​​la señal de entrada y el estado oculto recurrente en el paso de tiempo [math] t [/ math], respectivamente y [math] R, U \ in \ mathbb {R} ^ {d \ times d} [/ math] son ​​los parámetros.

BPTT calcula los gradientes en el paso de tiempo [matemática] t-1 [/ matemática] a partir de los del paso de tiempo [matemática] t [/ matemática], produciendo el siguiente término

[matemáticas] \ frac {\ partial L} {\ partial h_ {t-1}} = (…) + R ^ {\ top} \ cdot \ frac {\ partial L} {\ partial h_t} [/ matemática]

Ahora, si aplica el mismo razonamiento al paso de tiempo [matemáticas] t-2 [/ matemáticas], tendrá el siguiente término en sus gradientes:

[matemáticas] (R ^ {\ top}) ^ 2 \ cdot \ frac {\ partial L} {\ partial h_t} [/ math]

Y repita este argumento hasta el primer estado [matemáticas] h_1 [/ matemáticas], tendrá el término

[matemáticas] (R ^ {\ top}) ^ {t-1} \ cdot \ frac {\ partial L} {\ partial h_t} [/ math]

Este tipo travieso [matemáticas] (R ^ {\ top}) ^ {t-1} [/ matemáticas] es la raíz de todos los males. En efecto,

  1. Si [matemáticas] | R ^ {\ top} | > 1 [/ math] luego [math] | (R ^ {\ top}) ^ {t-1} | [/ math] se volverá muy grande cuando realices BPTT a través de una secuencia larga, lo que resultará en números muy grandes que potencialmente causar problemas con la estabilidad numérica, es decir, tendrá muchos NaN e inf . Esto se llama el problema de explosión de gradiente .
  2. Si [matemáticas] | R ^ {\ top} | <1 [/ math] luego [math] | (R ^ {\ top}) ^ {t-1} | [/ math] se volverá muy pequeño, y pase lo que pase en el paso de tiempo [math] t [/ math] tener muy poco impacto en el primer estado [matemáticas] h_1 [/ matemáticas]. Esto no es deseado, ya que cuando usamos RNNs, queremos que modelen las dependencias a largo plazo en nuestras secuencias. Esto se llama el problema de desaparición de gradiente .

Dicho esto, el algoritmo BPTT y su variación BPTT truncada siguen siendo muy relevantes para los RNN, ya que son la única forma (suficientemente eficiente) de calcular gradientes de RNN. No son más que una aplicación de la regla de la cadena, también conocida como la misma regla que respalda el algoritmo normal de retropropagación. De hecho, si usa software de diferenciación automática como Torch, TensorFlow o Theano, todos usan la regla de la cadena para calcular los gradientes de sus gráficos computacionales. Al aplicarse en RNN, estos no serán más que BPTT o BPTT truncado. Entonces sí, deberías aprenderlos.

[1] http://www.jmlr.org/proceedings/…

No es una respuesta (ya dada) sino más bien un comentario: el problema fue identificado (al menos) hace dos décadas en RNN entrenados con BP. Consulte “Aprender dependencias a largo plazo con descenso de gradiente es difícil” en http://www.dsi.unifi.it/~paolo/p… .

En realidad, hay algunos métodos útiles para tratar este problema.

El problema es que, con la profundidad creciente, el gradiente de propagación hacia atrás se vuelve cada vez más pequeño, lo que conduce a la ignorancia del error. Entonces, si tiene una red muy profunda, debe usar un poco de tecnología para evitar este problema, como la red residual.

BPTT convierte efectivamente el RNN en una red súper profunda durante el desenrollado.

More Interesting

¿Cómo implementaría el servicio de noticias de Quora?

Entre JavaScript y la ciencia de datos, ¿qué debo hacer? Tengo que aprender a los dos desde cero.

¿Existe algún modelo de aprendizaje profundo o algún otro método que ingrese como una colección de documentos y pueda predecir la probabilidad de un nuevo documento?

¿A qué áreas de investigación y aplicaciones se aplica con éxito el aprendizaje automático bayesiano?

¿Es generalmente una buena idea entrenar en caso real, desarrollar y probar conjuntos de datos para la traducción automática?

¿Cuál es la diferencia entre el control óptimo adaptativo y el aprendizaje por refuerzo?

Yoshua Bengio: ¿Será el aprendizaje profundo un paso hacia la IA consciente?

¿Es inevitable la multicolinealidad en los datos experimentales? Si no, ¿en qué condiciones podemos esperar multicolinealidad?

¿Cómo modifica una red neuronal su peso sin entrar en un efecto de ping-pong? La función de modificación de peso se basa en el error (l * e * o [1, 2]), por lo que los valores de error altos dan modificaciones de peso drásticas.

¿Cuáles son las diferencias entre los métodos de análisis de componentes principales?

¿Qué tipo de programas de back-end ejecuta YouTube, como el aprendizaje automático y otros programas funcionales?

Cómo aumentar mis posibilidades de ser seleccionado en un programa de doctorado en aprendizaje automático o inteligencia artificial

Visión por computadora: ¿cómo es la detección de objetos usando los puntos clave SIFT escala / rotacionalmente invariante?

¿Se pueden mapear los datos de entrada circulares (como la fase de una sinusoide) en un espacio de características lineales usando un núcleo lineal usando SVM? Si no, ¿qué núcleo es óptimo para datos de entrada circulares?

¿Las herramientas como BigML o Google Prediction API dejarán a los expertos en aprendizaje automático fuera del trabajo?