机器学习进阶系列机器学习与数据挖掘深度学习·神经网络·计算机视觉

机器学习-8:DeepLN之BN

2018-01-10  本文已影响38人  MachineLP

我想说:

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

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有可能还原最初的输入;看一下这个公式:

image

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

image

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

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

image

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

输出:BN的处理结果;

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

下图是后向传播的公式:

image

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

image

再看一下训练过程:

image

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

3. 总结

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

还可以参考:

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

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

推荐阅读:

  1. MachineLN之三要素

  2. MachineLN之模型评估

  3. MachinLN之dl

  4. DeepLN之CNN解析

5. DeepLN之手撕CNN权值更新(笔记)

  1. DeepLN之CNN源码

  2. MachineLN之激活函数

image

我想说:

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

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有可能还原最初的输入;看一下这个公式: image

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

image

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

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

image

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

输出:BN的处理结果;

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

下图是后向传播的公式:

image

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

image

再看一下训练过程:

image

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

3. 总结

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

还可以参考:

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

  1. 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之逻辑回归源码

MachineLN 交流群请扫码加machinelp为好友:

image

版权声明:本文为博主原创文章,未经博主允许不得转载。有问题可以加微信:lp9628(注明CSDN)。

上一篇下一篇

猜你喜欢

热点阅读