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.
- ¿Cuál es la utilidad de la normalización por lotes en una red neuronal convolucional muy profunda?
- Cómo corregir el sobreajuste
- ¿Cuáles son los algoritmos actuales de última generación para la detección de objetos en 2017?
- ¿Cómo se puede mejorar Google News?
- ¿Cuáles son algunos buenos proyectos de aprendizaje automático que implican el uso de estructuras de datos y tienen aplicaciones de la vida real y se pueden hacer en 2-3 semanas?
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.