Estaba leyendo el documento de normalización por lotes [1] y tenía una sección donde se muestra un ejemplo, tratando de mostrar por qué la normalización debe hacerse con cuidado. Honestamente, no puedo entender cómo funciona el ejemplo y estoy realmente muy curioso por entender que se escriben tanto como puedo. Primero déjenme citarlo aquí:
Por ejemplo, considere una capa con la entrada u que agrega el sesgo aprendido b, y normaliza el resultado restando la media de la activación calculada sobre los datos de entrenamiento: donde es el conjunto de valores de sobre el conjunto de entrenamiento, y . Si un paso de descenso de gradiente ignora la dependencia de en , actualizará , donde . Entonces . Por lo tanto, la combinación de la actualización ax=u+b,X={x1. . . N}xE[x]=∑ N i = 1 xiE[x]bb←b+Δ>bΔb∝-∂l u+(b+Δb)-E[u+(b+Δb)]=u+b-E[u+b]b y el cambio posterior en la normalización no condujo a ningún cambio en la salida de la capa ni, en consecuencia, a la pérdida.
Creo que entiendo el mensaje, que si uno no hace la normalización correctamente, puede ser malo. Simplemente no sé cómo el ejemplo que están usando muestra esto.
Soy consciente de que es difícil ayudar a alguien si no son más específicos sobre lo que los confunde, por lo que proporcionaré en la siguiente sección las cosas que me confunden acerca de su explicación.
Creo que la mayoría de mis confusiones pueden ser notacionales, por lo que aclararé.
Primero, creo que una de las cosas que me confunde mucho es lo que significa para los autores tener una unidad en la red y qué es una activación. Por lo general, pienso en una activación como:
donde son los vectores de características sin procesar de la primera capa de entrada.
Además, creo que una de las primeras cosas que me confunde (debido a la razón anterior) es cuál es el escenario que realmente están tratando de explicar. Dice:
normaliza el resultado restando la media de la activación calculada sobre los datos de entrenamiento: donde
Creo que lo que están tratando de decir es que, en lugar de utilizar las activaciones calculadas por el pase directo, uno realiza algún tipo de "normalización" restando la activación media :
y luego pasa eso al algoritmo de propagación hacia atrás. O al menos eso es lo que tendría sentido para mí.
En relación con esto, supongo que lo que llaman es quizás ? Eso es lo que adivinaría porque lo llaman "entrada" y tienen la ecuación (¿supongo que están utilizando la unidad de identidad / activación lineal para su red neuronal? Quizás).
Para confundirme aún más, definen como algo proporcional a la derivada parcial, pero la derivada parcial se calcula con respecto a , lo que me parece realmente extraño. Por lo general, las derivadas parciales cuando se utiliza el descenso de gradiente son con respecto a los parámetros de la red. En el caso de un desplazamiento, habría pensado:
tiene más sentido en lugar de tomar la derivada con respecto a las activaciones normalizadas. Estaba tratando de entender por qué tomarían la derivada con respecto a y pensé que tal vez se referían a los deltas cuando escribieron desde por lo general, esa es la única parte del algoritmo de respaldo que tiene una derivada con respecto a las preactivaciones ya que la ecuación de delta es:
Otra cosa que me confunde es:
Entonces .
en realidad no dicen lo que intentan calcular en la ecuación anterior, pero deduciría que intentan calcular la activación normalizada actualizada (¿para la primera capa?) después de que se actualiza a ? No estoy seguro si compro su punto porque creo que la ecuación correcta debería haber sido:
que no cancela el cambio en el parámetro . Sin embargo, realmente no sé qué están haciendo, así que solo estoy adivinando. ¿Qué es exactamente esa ecuación que han escrito?
No estoy seguro de si esta es la comprensión correcta, pero he pensado un poco en su ejemplo. ¿Parece que su ejemplo no tiene una unidad de activación no lineal (usa la identidad) y están hablando solo de la primera capa de entrada? Como dejaron de lado muchos de los detalles y la notación no es muy clara, no puedo deducir exactamente de qué están hablando. ¿Alguien sabe cómo expresar este ejemplo con una notación que exprese lo que sucede en cada capa? ¿Alguien entiende lo que realmente está sucediendo con ese ejemplo y quiere compartir su sabiduría conmigo?
[1]: Ioffe S. y Szegedy C. (2015),
"Normalización por lotes: acelerando la capacitación en redes profundas mediante la reducción del cambio de covariable interno",
Actas de la 32ª Conferencia Internacional sobre Aprendizaje Automático , Lille, Francia, 2015.
Journal of Machine Learning Investigación: W&CP volumen 37
fuente
Respuestas:
Creo que todo el punto de este párrafo es, si un paso de descenso de gradiente ignora la dependencia de en , actualizar el término de sesgo b no conducirá a ningún cambio en la salidaE[x] b , como se afirma en la oración anterior,
Por lo tanto, hicieron que el descenso del gradiente fuera consciente de la normalización en su método.
Con respecto a sus preguntas
Como se afirma en su primera oración, es la entrada de la capa. Qué realidad es no parece tener importancia, a medida que se ilustra sólo el efecto de en el ejemplo.u u b
Sabemos , ya que estamos ignorando la dependencia de en , tenemos entonces .x^=x−E[x]=u+b−E[x] E[x] b
Está calculando después de que se actualice a , para mostrar que si un paso de descenso de gradiente ignora la dependencia de en , actualizar el término de sesgo b no conducirá a ningún cambio en el salida. bb+ΔbE[x]bx^ b b+Δb E[x] b
Puede ser útil echar un vistazo a algunas implementaciones de código abierto de normalización por lotes, por ejemplo en Lasagne y Keras .
Hay otra pregunta que puede parecer relacionada: ¿por qué tomar el gradiente de los momentos (media y varianza) cuando se usa la normalización por lotes en una red neuronal?
fuente