“Datawhale X 李宏毅苹果书 AI夏令营”深度学习-第三章 深度学习基础3.7 批量归一化

  1. 引入批量归一化的背景

    • 如果误差表面崎岖则训练困难,批量归一化(BN)是 “把山铲平” 让训练变得容易的一种方法。
    • 当固定学习率时,因参数对损失的斜率差别大(如在不同方向上斜率变化不同),可能难以得到好的训练结果,需要自适应学习率或更进阶的优化方法,也可直接改变误差表面使其更易训练。
  2. 产生不好训练的误差表面的原因及解决办法

    • 原因:在线性模型中,当输入特征不同维度的值范围差距很大时,可能导致误差表面在不同方向上的斜率不同,从而使训练变得困难。
    • 解决办法:通过特征归一化,给特征里不同的维度赋予同样的数值范围,从而制造较好的误差表面。例如采用 z 值归一化(标准化),将每个维度的数值减去该维度的平均值再除以标准差,使归一化后该维度数值的平均值为 0,方差为 1,分布在 0 上下,有助于训练时损失收敛更快。
  3. 深度学习中的批量归一化

    • 归一化过程
      • 虽然输入特征已归一化,但通过后不同维度数值分布仍可能有差异,所以应对或(或是一种特征)做归一化。以对归一化为例,先计算的平均值和标准差,然后根据和进行归一化:(除号代表逐元素相除)。
      • 由于特征归一化后,改变的值会使、和改变,进而影响的值,所以做特征归一化时,可把整个过程当做网络的一部分。但因训练数据多,GPU 显存无法加载所有样本,实际实现时只考虑一个批量内的样本(如批量设为 64,就对这 64 笔数据计算并做归一化),这种只对批量数据做归一化的技巧称为批量归一化。
    • 相关操作:在批量归一化时,往往还会进行的操作(代表逐元素相乘),其中可视为网络参数需另外学习。加入是因为归一化后的平均值为 0 可能给网络带来限制,而让网络学习来调整输出分布从而调整的分布。初始时设为值全为 1 的向量,设为零向量,训练一段时间后再将慢慢加进去,对训练有帮助。
  4. 测试时的批量归一化

    • 测试时面临的问题是若批量大小设为 64,不能等 64 笔数据都进来才做运算。
    • 实际解法是在训练时,对每个批量计算出的计算移动平均(如,设为 0.1),测试时直接用和(即在训练时的移动平均)取代原来的。
  5. 批量归一化的作用及相关讨论

    • 作用:从实验结果(图 3.46)看,做批量归一化训练速度更快(红色虚线比黑色虚线快),能在较短时间内达到相同准确率,且即使是较难训练的 sigmoid 函数加批量归一化后也可训练(sigmoid 不加批量归一化根本训练不起来)。此外,因批量归一化使误差表面更平滑,可将学习率设大一点。
    • 相关讨论
      • 原始论文提出内部协变量偏移概念,认为每次做批量归一化会使前一层输出的分布更接近,从而对训练有帮助,但另一篇论文认为该观点有问题,内部协变量偏移不一定是训练网络的主要问题,也不一定是批量归一化好的关键。
      • 批量归一化可改变误差表面使其不崎岖,这有理论支持和实验佐证,但让误差表面不崎岖不一定要用批量归一化,还有很多其他方法,批量归一化是一种偶然发现但有用的方法。此外,还有很多其他归一化方法,如批量重归一化、层归一化、实例归一化、组归一化、权重归一化和谱归一化等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值