Qual é uma explicação do exemplo de por que a normalização de lotes deve ser feita com algum cuidado?

11

Eu estava lendo o documento de normalização em lote [1] e tinha uma seção em que é apresentado um exemplo, tentando mostrar por que a normalização deve ser feita com cuidado. Sinceramente, não consigo entender como o exemplo funciona e estou genuinamente muito curioso para entender que eles são tão importantes quanto eu. Primeiro deixe-me citar aqui:

Por exemplo, considere uma camada com a entrada u que adiciona o viés b aprendido, e normaliza o resultado subtraindo a média da activação calculado sobre os dados de em que x = u + b , X = { x 1 . . . N } é o conjunto de valores de x sobre o conjunto de treinamento e E [ x ] = N i = 1 x ix^=xE[x]x=u+b,X={x1...N}xE[x]=i=1Nxi. Se um passo de descida de gradiente ignora a dependência de em b , ele atualiza b b + Δ > b , onde Δ b - lE[x]bbb+Δ>b . Entãou+(b+Δb)-E[u+(b+Δb)]=u+b-E[u+b]. Assim, a combinação da atualização parabesubsequente mudança na normalização não levou a nenhuma alteração na saída da camada nem, consequentemente, à perda.Δblx^u+(b+Δb)E[u+(b+Δb)]=u+bE[u+b]b

Acho que entendi a mensagem de que, se não se faz a normalização adequadamente, pode ser ruim. Eu simplesmente não sei como o exemplo que eles estão usando retrata isso.

Estou ciente de que é difícil ajudar alguém se eles não são mais específicos sobre o que os confunde, por isso fornecerei na próxima seção as coisas que estão me confundindo com a explicação deles.


Acho que a maioria das minhas confusões pode ser notacional, então vou esclarecer.

Primeiro, acho que uma das coisas que mais me confunde é o que significa para os autores ter uma unidade na rede e o que é uma ativação. Normalmente, penso em uma ativação como:

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

onde são os vetores de recursos brutos da primeira camada de entrada.x(0)=a(0)=x

Além disso, acho que uma das primeiras coisas que me confunde (devido à razão anterior) é qual é realmente o cenário que eles estão tentando explicar. Diz:

normaliza o resultado subtraindo a média da activação calculado através dos dados de em que x = u + bx^=xE[x]x=u+b

Eu acho que o que eles estão tentando dizer é que, em vez de usar as ativações calculadas pelo passe para frente, alguém realiza algum tipo de "normalização" subtraindo a ativação média:x(l)=a(l)

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

e depois passa isso para o algoritmo de retropropagação. Ou pelo menos é o que faria sentido para mim.

Em relação a isso, acho que o que eles chamam de é talvez x ( l ) ? É o que eu acho que eles chamam de "input" e têm a equação x = u + b (acho que eles estão usando a unidade de ativação de identidade / linear para sua rede neural? Talvez).ux(l)x=u+b

Para mais me confundem, eles definem como algo proporcional à derivada parcial, mas a derivada parcial é calculado em relação à x , que parece realmente bizarro para mim. Geralmente, as derivadas parciais ao usar descida de gradiente são relativas aos parâmetros da rede. No caso de uma compensação, eu teria pensado:Δbx^

Δb(l)lb(l)

faz mais sentido do que tomar a derivada de com relação às ativações normalizadas. Eu estava tentando entender por que eles levaria a derivada em relação à x e eu pensei que talvez eles estavam se referindo aos deltas quando escreveram lx^ desde, geralmente, que é a única parte do algoritmo volta-hélice que tem um derivado com respeito à pré-activações uma vez que a equação de delta é:lx^

δj(l)=Lzj(l)

Outra coisa que me confunde é:

Então .u+(b+Δb)E[u+(b+Δb)]=u+bE[u+b]

eles realmente não dizem o que estão tentando calcular na equação acima, mas eu inferiria que eles estão tentando calcular a ativação normalizada atualizada (para a primeira camada?) depois que é atualizado para b + Δ b ? Não tenho certeza se comprei o argumento deles, porque acho que a equação correta deveria ter sido:bb+Δb

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

Δbb

Não tenho certeza se esse é o entendimento correto, mas pensei um pouco no exemplo deles. Parece que o exemplo deles não possui uma unidade de ativação não linear (usa a identidade) e eles estão falando apenas da primeira camada de entrada? Como eles deixaram de fora muitos detalhes e a notação não é muito clara, não posso deduzir exatamente do que eles estão falando. Alguém sabe como expressar este exemplo com uma notação que expressa o que está acontecendo em cada camada? Alguém entende o que realmente está acontecendo com esse exemplo e deseja compartilhar sua sabedoria comigo?


[1]: Ioffe S. e Szegedy C. (2015),
"Normalização de lotes: acelerando o treinamento em rede profunda reduzindo a mudança de Covariate Interna",
Anais da 32ª Conferência Internacional sobre Aprendizado de Máquina , Lille, França, 2015.
Journal of Machine Learning Pesquisa: W&CP volume 37

Charlie Parker
fonte
Penso que a natureza notacional desse parágrafo está clara agora, mas a mensagem está tentando transmitir e seu objetivo é menos claro.
Charlie Parker

Respostas:

3

E[x]b

No entanto, se essas modificações forem intercaladas com as etapas de otimização, a etapa de descida do gradiente pode tentar atualizar os parâmetros de uma maneira que exija que a normalização seja atualizada, o que reduz o efeito da etapa de gradiente.

Portanto, eles fizeram a descida do gradiente ciente da normalização em seu método.


Em relação às suas perguntas

ux(l)

uub

Δblb

x^=xE[x]=u+bE[x]E[x]b

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

u+(b+Δb)E[u+(b+Δb)]=u+bE[u+b]bb+Δb

x^bb+ΔbE[x]b


Pode ser útil dar uma olhada em algumas implementações de código aberto da normalização de lotes, por exemplo, em Lasanha e Keras .

Há outra pergunta que pode parecer relacionada: por que calcular o gradiente dos momentos (média e variância) ao usar a Normalização de lotes em uma rede neural?

dontloo
fonte
então acho que o argumento deles é que eles precisam conscientizar a GD sobre a normalização para que a perda mude ao atualizar um viés? Ou qual é o objetivo central desse parágrafo?
Charlie Parker
@CharlieParker sim, acho que sim, para mostrar que há uma razão para tornar a atualização do GD ciente da normalização (IMO).
dontloo
E [Δb] = Δb? Se sim, por quê?
precisa