Datawhale X 李宏毅苹果书 AI夏令营 Task3

3.7提出了批量归一化的想法,前面的部分我们研究了,在各种各样简单或复杂的误差表面,应该使用什么样的方法才能得到一个比较好的训练效果,而批量归一化则是从误差表面的角度出发,想办法将一个复杂的误差表面变得简单易于训练。

以图3.39为例,出现这种情况的原因可能是参数x1和x2的大小相差很多,导致在w1和w2加上一个相同的小增量Δw时,就会产生斜率坡度甚至方向都差别非常大的误差表面。解决的方法为特征归一化,典型代表为Z值归一化,也叫标准化,是统计上很常用的一种方法,这种方法能够将一组数据转化为均值为0,方差为1,并且不改变其相对位置关系,这样处理之后每个维度的值就都在0附近波动,从而就改造出了一个比较简单的误差表面。

但是在深度学习过程中,我们的数值往往要经过非常多层的处理,即使我们再进行某一层的处理之前已经将数值归一化,但经过这层的处理之后数值并不一定仍然维持标准化后的特征,甚至可能差距很大,这时需要将处理后的z1,z2,z3重新进行标准化,让其利于下一层的训练。需要注意的是,当时在计算标准化前后的x1,x2,x3以及z1,z2,z3时,他们之间都是相互独立的,但对z1,z2,z3进行标准化时,由于要计算三者的均值及标准差用于标准化,因此均值μ,标准差σ,标准化后的z1,z2,z3以及经激活函数处理后得到的a1,a2,a3均是不独立的。

这里再次遇到了一个问题,由于要计算整体的μ和σ,就需要用到全部的数据参与计算,但实际情况中的数据量往往非常大,同时参与计算并不现实。所以提出了批量归一化,通过设定一个较大的批量来近似计算整体的μ和σ,如果批量比较大,则批量内的数据有可能对于整体数据的分布特征有一个很好的代表性。

看完了训练的部分,下面来到测试的部分。在实际情况下,我们不可能等一个批量中所有的数据都拿到之后才开始计算,而是需要针对每一笔新收到的数据进行及时的调整与反馈,所以这里用到了移动平均的方法,给定一个系数p,新的均值\bar{μ}=p*前一期的均值\bar{μ}+(1-p)*新加入的数据μ,\bar{σ}的计算同理,这样就解决了测试集上均值和标准差的计算问题。

图3.46展示了批量归一化应用于卷积神经网络CNN时,不同条件下训练的情况,可以看出使用了批量归一化的训练效果更好且效率更高,由于采取这种方法会使得误差表面比较平缓,因此调大学习率可以进一步优化训练效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值