¿Cómo derivar errores en la red neuronal con el algoritmo de retropropagación?

10

De este video de Andrew Ng alrededor de las 5:00

ingrese la descripción de la imagen aquí

¿Cómo se y ? De hecho, ¿qué significa ? se obtiene al comparar con y, no es posible tal comparación para la salida de una capa oculta, ¿verdad?δ3δ2δ3δ4

qed
fuente
El enlace del video no funciona. Por favor, actualícelo o proporcione un enlace al curso. Gracias.
MadHatter

Respuestas:

15

Voy a responder su pregunta sobre el , pero recuerde que su pregunta es una subpregunta de una pregunta más grande que es por qué:δi(l)

ij(l)=kθki(l+1)δk(l+1)(ai(l)(1ai(l)))aj(l1)

Recordatorio sobre los pasos en las redes neuronales:

  • Paso 1: propagación hacia adelante (cálculo de )ai(l)

  • Paso 2a: propagación hacia atrás: cálculo de los erroresδi(l)

  • Paso 2b: propagación hacia atrás: cálculo del gradiente de J ( ) utilizando los errores y ,ij(l)Θδyo(l+1)unayo(l)

  • Paso 3: descenso del gradiente: calcule el nuevo utilizando los gradientesθyoj(l)yoj(l)

En primer lugar, para entender lo que el sonδyo(l) , lo que representan y por qué Andrew GN que hablar de ellos , es necesario comprender lo que Andrew está haciendo realidad en ese pointand por qué hacemos todos estos cálculos: él es el cálculo de la gradiente deyoj(l)θyoj(l) para ser utilizado en el algoritmo de descenso de gradiente.

El gradiente se define como:

yoj(l)=Cθyoj(l)

Como realmente no podemos resolver esta fórmula directamente, vamos a modificarla con DOS TRUCOS MÁGICOS para llegar a una fórmula que realmente podamos calcular. Esta fórmula utilizable final es:

yoj(l)=θ(l+1)Tδ(l+1).(unayo(l)(1-unayo(l)))unaj(l-1)

Para llegar a este resultado, el PRIMER TRUCO MÁGICO es que podemos escribir el gradiente de usando :ij(l)θij(l)δi(l)

ij(l)=δi(l)aj(l1)
Con definido (solo para el índice L) como:δi(L)

δi(L)=Czi(l)

Y luego el SEGUNDO TRUCO MÁGICO usando la relación entre y , para definir los otros índices,δi(l)δi(l+1)

δi(l)=θ(l+1)Tδ(l+1).(ai(l)(1ai(l)))

Y como dije, finalmente podemos escribir una fórmula para la cual conocemos todos los términos:

ij(l)=θ(l+1)Tδ(l+1).(ai(l)(1ai(l)))aj(l1)

DEMOSTRACIÓN del PRIMER TRUCO MÁGICO: ij(l)=δi(l)aj(l1)

Definimos:

ij(l)=Cθij(l)

La regla de cadena para dimensiones superiores (REALMENTE debería leer esta propiedad de la regla de cadena) nos permite escribir:

ij(l)=kCzk(l)zk(l)θij(l)

Sin embargo, como:

zk(l)=mθkm(l)am(l1)

Entonces podemos escribir:

zk(l)θij(l)=θij(l)mθkm(l)am(l1)

Debido a la linealidad de la diferenciación [(u + v) '= u' + v '], podemos escribir:

zk(l)θij(l)=mθkm(l)θij(l)am(l1)

con:

ifk,mi,j,  θkm(l)θij(l)am(l1)=0

yoFk,metro=yo,j,  θkmetro(l)θyoj(l)unametro(l-1)=θyoj(l)θyoj(l)unaj(l-1)=unaj(l-1)

Entonces para k = i (de lo contrario, es claramente igual a cero):

zyo(l)θyoj(l)=θyoj(l)θyoj(l)unaj(l-1)+metrojθyometro(l)θyoj(l)unaj(l-1)=unaj(l-1)+0 0

Finalmente, para k = i:

zyo(l)θyoj(l)=unaj(l-1)

Como resultado, podemos escribir nuestra primera expresión del gradiente :yoj(l)

yoj(l)=Czyo(l)zyo(l)θyoj(l)

Lo que es equivalente a:

yoj(l)=Czyo(l)unaj(l-1)

O:

yoj(l)=δyo(l)unaj(l-1)

DEMOSTRACIÓN DEL SEGUNDO TRUCO MÁGICO : o:δyo(l)=θ(l+1)Tδ(l+1).(unayo(l)(1-unayo(l)))

δ(l)=θ(l+1)Tδ(l+1).(una(l)(1-una(l)))

Recuerda que planteamos:

δ(l)=Cz(l)   unanortere   δyo(l)=Czyo(l)

Nuevamente, la regla de la cadena para dimensiones superiores nos permite escribir:

δyo(l)=kCzk(l+1)zk(l+1)zyo(l)

Reemplazando por , tenemos:Czk(l+1)δk(l+1)

δyo(l)=kδk(l+1)zk(l+1)zyo(l)

Ahora, centrémonos en . Tenemos:zk(l+1)zyo(l)

zk(l+1)=jθkj(l+1)unaj(l)=jθkj(l+1)sol(zj(l))

Luego derivamos esta expresión con respecto a :zk(yo)

zk(l+1)zyo(l)=jθkj(l)sol(zj(l))zyo(l)

Debido a la linealidad de la derivación, podemos escribir:

zk(l+1)zyo(l)=jθkj(l)sol(zj(l))zyo(l)

Si j i, entoncesθkj(l)sol(zj(l))zyo(l)=0 0

Como consecuencia:

zk(l+1)zyo(l)=θkyo(l)sol(zyo(l))zyo(l)

Y entonces:

δyo(l)=kδk(l+1)θkyo(l)sol(zyo(l))zyo(l)

Como g '(z) = g (z) (1-g (z)), tenemos:

δyo(l)=kδk(l+1)θkyo(l)sol(zyo(l))(1-sol(zyo(l))

Y como , tenemos:sol(zyo(l)=unayo(l)

δyo(l)=kδk(l+1)θkyo(l+1)unayo(l)(1-unayo(l))

Y finalmente, usando la notación vectorizada:

yoj(l)=[θ(l+1)Tδ(l+1)(unayo(l)(1-unayo(l)))][unaj(l-1)]
tmangin
fuente
1
Gracias por su respuesta. ¡Te he votado! ¿Podría por favor citar las fuentes que refirió para llegar a la respuesta ... :)
Adithya Upadhya
@tmangin: Siguiendo la charla de Andrew Ng, tenemos es el error del nodo j en la capa l. ¿Cómo se obtuvo la definición de . δj(yo)δj(yo)=CZj(l)
phuong
@phuong En realidad, tengo razón al preguntar: solo el con el índice "l" más alto L se define como Mientras que los deltas con índices "l" más bajos se definen mediante la siguiente fórmula:
δyo(L)
δyo(L)=Czyo(l)
δyo(l)=θ(l+1)Tδ(l+1).(unayo(l)(1-unayo(l)))
tmangin
3
Recomiendo leer la notación vectorial de backprop para calcular los gradientes.
CKM
Su fórmula utilizable final no es la que tenía Andrew Ng, lo que hace que sea realmente frustrante seguir su prueba. Tenía ∇ (l) ij = θ (l) Tδ (l + 1). ∗ (a (l) i (1 − a (l) i)) ∗ a (l − 1) j, no θ (l + 1) Tδ (l + 1)
Aziz Javed
0

Este cálculo ayuda. La única diferencia de este resultado con el resultado de Andrew se debe a la definición de theta. En la definición de Andrew, z (l + 1) = theta (l) * a (l). En este cálculo, z (l + 1) = theta (l + 1) * a (l). Entonces, en realidad no hay diferencia.

Canción Qing
fuente