¿Cuál es una explicación del ejemplo de por qué la normalización de lotes debe hacerse con cuidado?

11

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]bbb+Δ>bΔb-lx^=xE[x]x=u+b,X={x1...N}xE[x]=i=1NxiE[x]bbb+Δ>b u+(b+Δb)-E[u+(b+Δb)]=u+b-E[u+b]bΔblx^u+(b+Δb)E[u+(b+Δb)]=u+bE[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:

x(l)=a(l)=θ(z(l))=θ(w(l),x(l1)+b(l))

donde son los vectores de características sin procesar de la primera capa de entrada.x(0)=a(0)=x

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: dondex^=xE[x]x=u+b

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 :x(l)=a(l)

x¯l=a¯l=1Ni=1Na¯l=1Ni=1Nx¯l

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).ux(l)x=u+b

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:Δbx^

Δb(l)lb(l)

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:x^lx^

δj(l)=Lzj(l)

Otra cosa que me confunde es:

Entonces .u+(b+Δb)E[u+(b+Δb)]=u+bE[u+b]

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:bb+Δb

x^=θ(u+(b+Δb))E[θ(u+(b+Δb))]

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?Δbb

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

Charlie Parker
fuente
Creo que la naturaleza de notación de ese párrafo es clara ahora, pero el mensaje está tratando de transmitir y su propósito es menos claro.
Charlie Parker

Respuestas:

3

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,

Sin embargo, si estas modificaciones se intercalan con los pasos de optimización, entonces el paso de descenso de gradiente puede intentar actualizar los parámetros de una manera que requiera que se actualice la normalización, lo que reduce el efecto del paso de gradiente.

Por lo tanto, hicieron que el descenso del gradiente fuera consciente de la normalización en su método.


Con respecto a sus preguntas

En relación con esto, supongo que lo que llaman es quizás ?ux(l)

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.uub

Habría pensado que tiene más sentido en lugar de tomar la derivada con respecto a las activaciones normalizadas.Δblb

Sabemos , ya que estamos ignorando la dependencia de en , tenemos entonces .x^=xE[x]=u+bE[x]E[x]b

lb=lx^x^b=lx^,
Δblx^

b b + Δ bu+(b+Δb)E[u+(b+Δb)]=u+bE[u+b] en realidad no dicen lo que están tratando de calcular en la ecuación anterior pero Yo deduciría que están tratando de calcular la activación normalizada actualizada (¿para la primera capa?) Después de que se actualice a ?bb+Δ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^bb+ΔbE[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?

dontloo
fuente
así que supongo que su punto es que necesitan hacer que la actualización de GD sea consciente de la normalización para que la pérdida cambie al actualizar un sesgo. ¿O cuál es el objetivo central de ese párrafo?
Charlie Parker
@CharlieParker sí, supongo que sí, para mostrar que hay una razón para que la actualización de GD sea consciente de la normalización (IMO).
dontloo
¿Es E [Δb] = Δb? Si es así, ¿por qué?
MichaelSB