机器学习-8:DeepLN之BN

你要的答案或许都在这里小鹏的博客目录

我想说:

又到了每天写东西的时间了,这时候最兴奋,这种兴奋可以延续到后半夜,两点甚至三点;以前写博客都是杂乱无章的,现在写公众号决定按照一个框架,按照一个系列来写;


1. 前言:

先看一个概念:

Covariance shift 
——when the input distribution to a learning system changes, it is said to experience covariance shift.

在模型训练的时候我们一般都会做样本归一化(样本归一化作用会在下面文章介绍),在往多层神经网络传播时,前面层参数的改变,使得后面层的输入分布发生改变时,就叫Internal covariance shift。这会导致:其一,增加模型训练时间,因为样本分布变了,要调整 参数适应这种分布;其二:在MachineLN之激活函数文章中提到的使用sigmoid函数,梯度消失的问题;

2. BN (Batch Normalization

BN:批量规范化:使得均值为0,方差为1;scale and shift:引入两个参数,从而使得BN操作可以代表一个恒等变换,为了训练所需加入到BN有可能还原最初的输入;看一下这个公式:

再看下面BN的两个公式,将上面公式带入,你会发现输入=输出,好尴尬啊!


BN的引入就是为了解决 样本分布改变训练训练慢、梯度消失、过拟合(可以使用较低的dropout和L2系数)等问题;

BN的具体推导,就不得不提到google的Batch Normalization Accelerating Deep Network Training by Reducing Internal Covariate Shift论文,看下图:



输入:m个样本x{1,...,m},一般时卷积后输入激活函数前的数据;

输出:BN的处理结果;

上图中前向传播的公式应该很好理解;

下图是后向传播的公式:


直接看起来比较费劲还是用手撕一下吧:



再看一下训练过程:


可以解释为:(参考大神)

  • 1.对于K维(通道数)的输入,假设每一维包含m个变量(这里可以理解为cnn的feature map),所以需要K个循环。每个循环中按照上面所介绍的方法计算γ与β。这里的K维,在卷积网络中可以看作是卷积核个数(卷积后的通道数),如网络中第n层有64个卷积核,就需要计算64次。 

  • 需要注意,在正向传播时,会使用γ与β使得BN层输出与输入一样。

  • 2.在反向传播时利用γ与β求得梯度从而改变训练权值(变量)。 

  • 3.通过不断迭代直到训练结束,求得关于不同层的γ与β。如网络有n个BN层,每层根据batch_size决定有多少个变量,设定为m,这里的mini-batcherB指的是特征图大小*batch_size,即m=特征图大小*batch_size,因此,对于batch_size为1,这里的m就是每层特征图的大小。 

  • 4.不断遍历训练集中的图片,取出每个batch_size中的γ与β,最后统计每层BN的γ与β各自的和除以图片数量得到平均直,并对其做无偏估计直作为每一层的E[x]与Var[x]。 

  • 5.在预测的正向传播时,对测试数据求取γ与β,并使用该层的E[x]与Var[x],通过图中11:所表示的公式计算BN层输出。 

  • 注意,在预测时,BN层的输出已经被改变,所以BN层在预测的作用体现在此处。

3. 总结

上面两本部分回答了BN的由来、BN的计算、BN的前后向传播。对自己今后的工作有什么启发?


还可以参考:

1. tf的BN代码:http://blog.csdn.net/u014365862/article/details/77188011

2. resnet、inception、inception_resnet等网络的BN使用:http://blog.csdn.net/u014365862/article/details/78272811

推荐阅读:

1. 机器学习-1:MachineLN之三要素

2. 机器学习-2:MachineLN之模型评估

3. 机器学习-3:MachineLN之dl

4. 机器学习-4:DeepLN之CNN解析

5. 机器学习-5:DeepLN之CNN权重更新(笔记)

6. 机器学习-6:DeepLN之CNN源码

7. 机器学习-7:MachineLN之激活函数

8. 机器学习-8:DeepLN之BN

9. 机器学习-9:MachineLN之数据归一化

10. 机器学习-10:MachineLN之样本不均衡

11. 机器学习-11:MachineLN之过拟合

12. 机器学习-12:MachineLN之优化算法

13. 机器学习-13:MachineLN之kNN

14. 机器学习-14:MachineLN之kNN源码

15. 机器学习-15:MachineLN之感知机

16. 机器学习-16:MachineLN之感知机源码

17. 机器学习-17:MachineLN之逻辑回归

18. 机器学习-18:MachineLN之逻辑回归源码



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MachineLP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值