¿En qué casos notamos un problema de gradiente que explota o desaparece y por qué?

Considere una red neuronal (NN) con parámetros representados como [matemática] w [/ matemática] y una pérdida [matemática] l [/ matemática], necesitamos calcular la derivada de peso [matemática] w_ {i} [/ matemática] wrt [matemáticas] l [/ matemáticas]:

[matemática] \ frac {\ parcial l} {\ parcial w_ {i}} [/ matemática]

Podría haber varias capas entre el peso [math] w_ {i} [/ math] y la función de pérdida [math] l [/ math], por lo que esa expresión es difícil de evaluar directamente. La solución es encadenar los derivados comenzando desde la capa de salida (que está directamente conectada a [math] l [/ math]) y avanzando hacia la capa de entrada. Esta es la forma más efectiva de calcular las derivadas en un período de tiempo razonable, varios órdenes de magnitud más rápido que una evaluación directa. Esto se denomina algoritmo de retropropagación, una forma rápida estándar de evaluar derivados en gráficos computacionales.

Pero esto puede ser problemático para las funciones de activación que están limitadas, como la función sigmoide dada por:

[matemáticas] s (x) = \ frac {1} {1 + e ^ {- x}} [/ matemáticas]

y la derivada

[matemática] \ frac {\ parcial s (x)} {\ parcial x} = s (x) (1 – s (x)) [/ matemática]

Como [math] s (x) [/ math] está limitado entre [math] 0 [/ math] y [math] 1 [/ math], la derivada también está claramente limitada entre [math] 0 [/ math] y [ matemáticas] 1 [/ matemáticas], puede inspeccionar eso fácilmente. Por lo tanto, las funciones de activación saturadas tendrán un gradiente normalmente menor que la unidad y esto puede causar problemas cuando se encadenan derivados en el algoritmo de backprop como se explica a continuación. Expandiendo la derivada de peso con respecto a una de las neuronas de salida, [matemáticas] z [/ matemáticas] tenemos:

[matemáticas] \ frac {\ partial l} {\ partial w_ {i}} = \ frac {\ partial o_ {z}} {\ partial w_ {i}} \ frac {\ partial l} {\ partial o_ {z }}[/matemáticas]

donde [math] o_ {z} [/ math] = salida de la neurona [math] z [/ math] en la capa de salida

y [matemáticas] o_ {z} = s (a_ {z}) [/ matemáticas],

dónde

[matemáticas] a_ {z} = \ sum_ {j} ^ {n} x_ {j} w_ {j} [/ matemáticas]

donde [math] x [/ math] = salida de la capa de abajo,

[matemáticas] w_ {j} [/ matemáticas] = peso de la neurona [matemáticas] z [/ matemáticas]

Más expansión tenemos:

[matemáticas] \ frac {\ partial l} {\ partial w_ {i}} = \ frac {\ partial a_ {z}} {\ partial w_ {i}} \ frac {\ partial o_ {z}} {\ partial a_ {z}} \ frac {\ partial l} {\ partial o_ {z}} [/ math]

Ahora específicamente nos enfocamos en:

[matemáticas] \ frac {\ partial o_ {z}} {\ partial a_ {z}} = \ frac {\ partial s (a_ {z})} {\ partial a_ {z}} [/ math]

Como si [math] w_ {i} [/ math] se encuentra en algún lugar lejano, suponiendo que [math] n [/ math] capas lejos, tendrá muchas de esas multiplicaciones, porque las capas [math] n [/ math] serán suficientes [matemática] n [/ matemática] multiplicación de la derivada de activación cuando se mueve hacia atrás.

Similar al siguiente ejemplo simplificado:

[matemáticas] f (n) = {\ alpha} ^ {n} [/ matemáticas]

if [math] 0.0 <\ alpha <1.0 [/ math] como el caso de la derivada sigmoidea entonces

[matemáticas] f (1)> f (2)>…> f (m) [/ matemáticas]

Por lo tanto, hay una atenuación en tal caso, la señal de error se desvanece con el aumento de [matemática] m [/ matemática], análoga a la señal de error de desaparición cuando el algoritmo se mueve hacia la capa que contiene el peso [matemática] w_ {i} [/ matemáticas] en cuestión. Pero para una unidad rectificadora lineal (ReLU), la derivada es la unidad para la activación positiva.

entonces en el ejemplo simplificado anterior [math] \ alpha = 1 [/ math] entonces:

[matemáticas] f (1) = f (2) =… = f (m) [/ matemáticas]

Lo que significa que no hay atenuación de la señal de error para ReLU.

Por lo tanto, se espera un gradiente de fuga siempre que la derivada de la función de activación sea menor que la unidad:

[matemática] \ frac {\ parcial {\ Phi (x)}} {\ parcial x} <1.0 [/ matemática]

para alguna variable escalar [matemáticas] x [/ matemáticas]

donde [math] \ Phi (x) [/ math] = función de activación

Entonces se esperan gradientes explosivos si

[matemática] \ frac {\ parcial {\ Phi (x)}} {\ parcial x}> 1.0 [/ matemática]

Espero que esto ayude.

More Interesting

¿Se puede resolver el problema de cauvery utilizando algoritmos de aprendizaje automático?

¿Cómo es trabajar en el equipo de Machine learning / Data Mining?

¿Los humanos son actualizadores bayesianos?

¿Cuáles son las desventajas de usar un árbol de decisión para la clasificación?

¿Qué piensan los pequeños equipos de ciencia de datos sobre la plataforma Dato y el pensamiento de Carlos Guestrin detrás de la democratización del aprendizaje automático?

¿Por qué no se debe hacer AI?

¿Es posible comenzar a aprender y trabajar en el aprendizaje por refuerzo y el aprendizaje profundo sin un conocimiento previo sólido de otras clases de ML?

¿Cuáles son los beneficios del filtrado colaborativo?

Soy un hombre de 25 años que estudió CS, aprendizaje automático y minería de datos para mi maestría. Mi verdadera pasión radica en la música y los viajes. He estado sin trabajo durante 7 a 8 meses, solicito un doctorado en ML y música, y mi papá quiere que consiga un trabajo. ¿Qué debo hacer?

¿Qué le parece más interesante: el análisis de series temporales o el aprendizaje automático? ¿Por qué?

¿Cuál es el mejor foro de red neuronal en Internet?

¿Cuáles son las diferencias en las aplicaciones de filtrado colaborativo en los datos de calificación y en los datos de compra?

¿Qué pensaría BF Skinner del aprendizaje automático?

¿Qué es la regresión de Ridge en términos simples?

¿Cuáles son las mejores prácticas para garantizar que los datos adquiridos de la investigación que implica el análisis de Big Data resulten precisos y útiles?