What does the gradient flowing through batch normalization looks like ?
反向传播梯度下降权值参数更新公式的推导全依赖于复合函数求梯度时的链式法则。
1. Batch Normalization
给定输入样本
x∈RN×D
,经过一个神经元个数为
H
的隐层,负责连接输入层和隐层的权值矩阵
Batch Normalization 的过程如下:
仿射变换(affine transformation)
h=XW+b
显然 h∈RN×Hbatch normalization 变换:
y=γh^+β其中 γ,β 是待学习的参数, h^ 是 h 去均值和方差归一化的形式:
h^=(h−μ)(σ2+ϵ)−1/2 进一步其标量形式如下:
hˆkl=(hkl−μl)(σ2l+ϵ)−1/2
l={1,…,H} , μ 和 σ 分别是对矩阵 h∈RN×H 的各个属性列,求均值和方差,最终构成的均值向量和方差向量。μl=1N∑phpl,σ2l=1N∑p(hpl−μl)2
2. ∂L∂h,∂L∂γ,∂L∂β 的计算
首先我们来看损失函数 L 关于隐层输入偏导的计算:
dLdh=⎛⎝⎜⎜⎜⎜⎜⎜⎜dLdh11..dLdhN1..dLdhkl...dLdh1H..dLdhNH⎞⎠⎟⎟⎟⎟⎟⎟⎟.
又由于:
h=XW+b,h⇒h^,h^⇒y
由链式法则可知:
∂L∂hij=∑k,l∂L∂ykl∂ykl∂h^kl∂h^kl∂hij
显然其中 ∂ykl∂h^kl=γl ,
又由于:
hˆkl=(hkl−μl)(σ2l+ϵ)−1/2,μl=1N∑phpl,σ2l=1N∑p(hpl−μl)2
所以:
dh^kldhij=(δikδjl−1Nδjl)(σ2l+ϵ)−1/2−12(hkl−μl)dσ2ldhij(σ2l+ϵ)−3/2
根据 σ2l 与 hij 的计算公式可知:
dσ2ldhij====2N∑p(hpl−μl)(δipδjl−1Nδjl)(只有在p=1时)2N(hil−μl)δjl−2Nδjl⎛⎝1N∑p(hpl−μl)⎞⎠2N(hil−μl)δjl−2Nδjl⎛⎝1N∑phpl−μl⎞⎠(显然右侧为0)2N(hil−μl)δjl