首页 > 试题广场 >

BatchNormalization的作用

[问答题]
因为神经网路每层的权重参数在变化,每层的输入数据的分布在变化,让每一层去拟合输入的分布就容易过拟合且学习率不能太高;BN就是就是让每一层去自适应拟合自己的输入分布,使得每一层比较独立;做法就是把数据标准化为0均值1方差,然后设置2个参数控制均值和方差,让每一层自己去学习这两个参数
发表于 2019-10-21 12:25:06 回复(0)
BN可以解决梯度消失的问题假设激活函数为sigmoid.
al=sigmoid(hl)=sigmoid(al−1∗wl)al=sigmoid(hl)=sigmoid(al−1∗wl)
因为在反向传播中:
∂g∂w=∂g∂al∗∂al∂hl∗∂hl∂w=∂g∂al∗∂al∂hl∗∂hl∂al−1∗∂al−1∂hl−1∗∂hl−1∂w=...∂g∂w=∂g∂al∗∂al∂hl∗∂hl∂w=∂g∂al∗∂al∂hl∗∂hl∂al−1∗∂al−1∂hl−1∗∂hl−1∂w=...
如果hlhl非常大,根据sigmoid图像的特点,在两边值的导数几乎为0,只有中间y轴附近值导数值比较大。所以,经过若干次链式求导,最终∂g∂w∂g∂w接近为0,这就是梯度消失。
如果经过了Batch Normalization,可以使得每一层的hh的均值为0,标准差为1,也就是数据集中在y轴附近,这样就使得梯度比较大,解决了梯度消失的问题



发表于 2019-10-21 17:20:47 回复(0)
1.加速梯度下降的收敛速度
2.控制过拟合,可以少用或者不用dropout和正则化
3.降低网络对初始化权重的不敏感
4.允许使用较大的学习率
发表于 2020-07-10 21:23:07 回复(0)