Caffe Batch Normalization推导
Caffe Batch Normalization推导
Caffe BatchNormalization 推导
总所周知,BatchNormalization通过对数据分布进行归一化处理,从而使得网络的训练能够快速并简单,在一定程度上还能防止网络的过拟合,通过仔细看过Caffe的源码实现后发现,Caffe是通过BN层和Scale层来完整的实现整个过程的。
谈谈理论与公式推导
那么再开始前,先进行必要的公式说明:定义LL为网络的损失函数,BN层的输出为yy,根据反向传播目前已知 ∂L∂yi∂L∂yi,其中:
yi=xi−x¯¯¯δ2+ϵ−−−−−√,x¯¯¯=1m∑i=1mxi,δ2=1m∑i=1m(xi−x¯¯¯)2,求∂L∂xiyi=xi−x¯δ2+ϵ,x¯=1m∑i=1mxi,δ2=1m∑i=1m(xi−x¯)2,求∂L∂xi
推导的过程中应用了链式法则:
∂L∂xi=∑j=1m∂L∂yj∗∂yj∂xi∂L∂xi=∑j=1m∂L∂yj∗∂yj∂xi
则只需要着重讨论公式 ∂yj∂xi∂yj∂xi
分布探讨:
(1) x¯¯¯x¯对xixi的导函数
∂x¯¯¯∂xi=1m∂x¯∂xi=1m
(2) δ2δ2对xixi的导函数
∂δ2∂xi=1m(∑j=1m2∗(xj−x¯¯¯)∗(−1m))+2(xi−x¯¯¯)∂δ2∂xi=1m(∑j=1m2∗(xj−x¯)∗(−1m))+2(xi−x¯)
由于 ∑mj=12∗(xj−x¯¯¯)=2∗∑mi=1xi−n∗x¯¯¯=0∑j=1m2∗(xj−x¯)=2∗∑i=1mxi−n∗x¯=0
所以: ∂δ2∂xi=2m∗(xi−x¯¯¯)∂δ2∂xi=2m∗(xi−x¯)
具体推导:
∂yj∂xi=∂xj−x¯¯¯δ2+ϵ√∂xi∂yj∂xi=∂xj−x¯δ2+ϵ∂xi
此处当jj等于ii成立时时,分子求导多一个 xixi的导数
∂yj∂xi=−1m(δ2+ϵ)−1/2−1m(δ2+ϵ)−3/2(xi−x¯¯¯)(xj−x¯¯¯)i≠j∂yj∂xi=−1m(δ2+ϵ)−1/2−1m(δ2+ϵ)−3/2(xi−x¯)(xj−x¯)i≠j
∂yj∂xi=(1−1m)(δ2+ϵ)−1/2−1m(δ2+ϵ)−3/2(xi−x¯¯¯)(xj−x¯¯¯)i=j∂yj∂xi=(1−1m)(δ2+ϵ)−1/2−1m(δ2+ϵ)−3/2(xi−x¯)(xj−x¯)i=j
根据上式子,我们代入链式法则的式子
∂L∂xi=∂L∂yi∗(δ2+ϵ)−1/2+∑j=1m∂L∂yj∗(−1m(δ2+ϵ)−1/2−1m(δ2+ϵ)−3/2(xi−x¯¯¯)(xj−x¯¯¯))∂L∂xi=∂L∂yi∗(δ2+ϵ)−1/2+∑j=1m∂L∂yj∗(−1m(δ2+ϵ)−1/2−1m(δ2+ϵ)−3/2(xi−x¯)(xj−x¯))
我们提出 (δ2+ϵ)−1/2:(δ2+ϵ)−1/2:
∂L∂xi=(δ2+ϵ)−1/2(∂L∂yi−∑j=1m∂L∂yj1m−∑j=1m∂L∂yj1m(δ2+ϵ)−1(xi−x¯¯¯)(xj−x¯¯¯))=(δ2+ϵ)−1/2(∂L∂yi−∑j=1m∂L∂yj1m−∑j=1m∂L∂yj1myjyi=(δ2+ϵ)−1/2(∂L∂yi−1m∑j=1m∂L∂