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.
, es función sigmoide
,
, es función softmax
, es un vector de etiqueta real
Luego, por la regla de la cadena,
Los gradientes individuales son:
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.
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 ∂ J
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 . h
¡Gracias!
fuente
Respuestas:
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 × 1s L x∈Rn×1 s(x)∈Rn×1
Queremos
Donde es el jacobiano de . Ampliando este jacobiano, obtenemos s[ ∂ s ( x 1 )∂s(x)∂x s
Vemos que está en todas partes cero, excepto la diagonal. Podemos hacer un vector de todos sus elementos diagonales
Y luego use el operador de elementos sabios.
fuente
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)WT2 a′=h∘(1−h) δ2∘a′
Vea las diapositivas de la conferencia cs224d en la página 30, también podría ser útil.
fuente