Derivando el gradiente de una red neuronal de una sola capa wrt sus entradas, ¿cuál es el operador en la regla de la cadena?

9

El problema es:

Derive el gradiente con respecto a la capa de entrada para una sola red neuronal de capa oculta usando sigmoide para entrada -> oculto, softmax para oculto -> salida, con una pérdida de entropía cruzada.

Puedo pasar la mayor parte de la derivación usando la regla de la cadena, pero no estoy seguro de cómo realmente "encadenarlos" juntos.

Definir algunas anotaciones.

r=xW1+b1

h=σ(r) , es función sigmoideσ

θ=hW2+b2 ,

y^=S(θ) , es función softmaxS

J(y^)=iylogy^i , es un vector de etiqueta realy

Luego, por la regla de la cadena,

Jx=Jθθhhrrx

Los gradientes individuales son:

Jθ=(y^y)
θh=h[hW2+b2]=W2T
hr=h(1h)
rx=x[xW1+b1]=W1T

Ahora tenemos que encadenar las definiciones juntas. En variable única esto es fácil, simplemente multiplicamos todo juntos. En vectores, no estoy seguro de si usar la multiplicación por elementos o la multiplicación de matrices.

Jx=(y^y)W2T[h(1h)]W1T

Donde es la multiplicación de vectores por elementos, y es una matriz multiplicada. Esta combinación de operaciones es la única forma en que podría para obtener un vector de dimensión , que sé que tiene que ser.1 D x J1DxJx

Mi pregunta es: ¿cuál es la forma de principios para que yo descubra qué operador usar? Estoy específicamente confundido por la necesidad del elemento inteligente entre y . hW2Th

¡Gracias!

amatsukawa
fuente
Me doy cuenta de que no es frecuente encontrar el gradiente wrt en las entradas. Creo que esto es una ventaja para calcular las incorporaciones de palabras, donde tiene la opción de optimizar los vectores de palabras de "entrada".
amatsukawa
cómo deri dj / dTheta
raaj

Respuestas:

4

Creo que la clave para responder a esta pregunta es señalar que la multiplicación por elementos es en realidad una forma abreviada y, por lo tanto, cuando deriva las ecuaciones, en realidad nunca la usa.

La operación real no es una multiplicación por elementos, sino una multiplicación matricial estándar de un gradiente con un jacobiano , siempre .

En el caso de la no linealidad, el jacobiano de la salida del vector de la no linealidad con respecto a la entrada del vector de la no linealidad pasa a ser una matriz diagonal. Por lo tanto, es cierto que el gradiente multiplicado por esta matriz es equivalente al gradiente de la salida de la no linealidad con respecto a la pérdida en cuanto al elemento multiplicado por un vector que contiene todas las derivadas parciales de la no linealidad con respecto a la entrada de la no linealidad, pero esto se desprende del ser jacobiano en diagonal. Debe pasar por el paso jacobiano para llegar a la multiplicación por elementos, lo que podría explicar su confusión.

En matemáticas, tenemos algunas no linealidades , una pérdida y una entrada a la no linealidad (esto podría ser cualquier tensor). La salida de la no linealidad tiene la misma dimensión --- como dice @Logan, la función de activación se define como elemento inteligente.L x R n × 1 s ( x ) R n × 1sLxRn×1s(x)Rn×1

Queremos

xL=(s(x)x)Ts(x)L

Donde es el jacobiano de . Ampliando este jacobiano, obtenemos s[s ( x 1 )s(x)xs

[s(x1)x1s(x1)xns(xn)x1s(xn)xn]

Vemos que está en todas partes cero, excepto la diagonal. Podemos hacer un vector de todos sus elementos diagonales

Diag(s(x)x)

Y luego use el operador de elementos sabios.

xL=(s(x)x)Ts(x)L=Diag(s(x)x)s(x)L
usuario0
fuente
0

Siempre que se vuelve proporcional a una función de activación, las operaciones se convierten en elementos sabios. Específicamente, usando su ejemplo, es un derivado de retropropagación y es un derivado de activación, y su producto es un producto de elementos, . Esto se debe a que las funciones de activación se definen como operaciones basadas en elementos en la red neuronal.δ2=(y^y)W2Ta=h(1h)δ2a

Vea las diapositivas de la conferencia cs224d en la página 30, también podría ser útil.

Logan
fuente