Batch Normalization的一些个人理解
简单说一说Batch Normalization的一些个人理解:
1、要说batch normalization不得不先说一下梯度消失和梯度爆炸问题
梯度消失一是容易出现在深层网络中,二是采用了不合适的损失函数也较容易发生梯度消失,比如sigmoid;
梯度爆炸一般出现在深层网络和权值初始化值太大的情况。
考虑这样一个简单的三隐层的全连接网络
我们假设每一层网络激活后的输出为fi(x),其中i表示第i层, x代表第i层的输入,也就是第i−1层的输出,f是激活函数,那么得出fi+1=f(fi∗wi+1+bi+1) ,偏置在梯度消失和梯度爆炸中影响较小,所以我们可以简单记为fi+1=f(fi∗wi+1)。
如果要更新第二隐层的权值信息,根据链式求导法则,更新梯度信息:
很容易看出来∂f2 /∂w2即为第二隐藏层的输入,∂f4 / ∂f3就是对激活函数求导。如果此部分大于1,那么层数增多的时候,最终的求出的梯度更新信息将以指数形式增加,即发生梯度爆炸,如果此部分小于1,那么随着层数增多,求出的梯度更新信息将会以指数形式衰减,即发生了梯度消失(注:在深层网络中梯度消失发生的常见一点,而梯度爆炸比较少见)。
如下图所示,是sigmoid函数的导数信息,可见sigmoid函数的导数最大为0.25,所以使用sigmoid函数,网络过深时较容易发生梯度消失
梯度消失和梯度爆炸问题也说明一个问题:随着网络深度的增加,网络的输出在输入到激活函数中之前,往往会趋于分布在较大的值附近或较小的值附近,而BN正是可以较好的解决这个问题
2、介绍batch normalization
因为深层神经网络在做非线性变换前的激活输入值(就是x=WU+B,U是输入,x是激活函数的输入)随着训练过程加深中,其分布逐渐发生偏移或者变动,之所以训练收敛慢一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近(对于Sigmoid函数来说,意味着激活输入值WU+B是大的负值或正值),所以这导致激活单元饱和,即反向传播时低层神经网络的梯度消失,这是训练深层神经网络收敛越来越慢的本质原因。
而BN就是通过一定的规范化手段,把每层神经网络任意神经元的输入值的分布强行拉回到均值为0方差为1的标准正态分布,其实就是把越来越偏的分布强制拉回比较标准的分布,这样使得激活函数输入值落在非线性函数对输入比较敏感的区域,这样输入的小变化就会导致激活函数较大的变化,也就是让梯度变大,避免产生梯度消失问题,而且梯度变大也意味着学习收敛速度快,能大大加快训练速度。
Batch Normalization的一些个人理解相关推荐
- Batch Normalization(BN)简介
目录 1 提出背景 1.1 ICS是什么 1.2 ICS带来的问题 1.2.1 训练速度降低 1.2.2 梯度消失问题 1.3 ...
- 【深度学习】深入理解Batch Normalization批标准化
这几天面试经常被问到BN层的原理,虽然回答上来了,但还是感觉答得不是很好,今天仔细研究了一下Batch Normalization的原理,以下为参考网上几篇文章总结得出. Batch Normaliz ...
- Batch Normalization的细致理解
最近读论文遇见很多对BN的优化,例如MoCo当中的shuffling BN.Domain Generalization.连原来是什么东西都不知道,怎么看优化呢? 1.不就是归一化吗?其实并不是 可能大 ...
- Batch Normalization深入理解
Batch Normalization深入理解 1. BN的提出背景是什么? 统计学习中的一个很重要的假设就是输入的分布是相对稳定的.如果这个假设不满足,则模型的收敛会很慢,甚至无法收敛.所以,对于一 ...
- dropout+Batch Normalization理解
Dropout理解: 在没有dropout时,正向传播如下: 加入dropout后: 测试时,需要每个权值乘以P: Dropout官方源码: #dropout函数实现 def dropout(x, ...
- 【深度学习】深入理解Batch Normalization批归一化
[深度学习]深入理解Batch Normalization批归一化 转自:https://www.cnblogs.com/guoyaohua/p/8724433.html 这几天面试经常被问到BN层的 ...
- 【深度学习】简单理解Batch Normalization批标准化
资源 相关的Paper请看这两篇 Batch Normalization Accelerating Deep Network Training by Reducing Internal Covaria ...
- 关于Batch Normalization的理解和认识
1 前言 Batch Normalization作为最近几年来DL的重要成果,已经广泛被证明其有效性和重要性.目前几乎已经成为DL的标配了,任何 有志于学习DL的同学们朋友们都应该好好学一学BN.BN ...
- 透彻理解BN(Batch Normalization)层
什么是BN Batch Normalization是2015年论文<Batch Normalization: Accelerating Deep Network Training by Redu ...
最新文章
- linux下查看vnc端口_怎样查vnc端口,Linux下根据进程名怎样查端口
- Tears in Heaven
- java 错误日期转正确日期_Java日期格式转换-错误的月份
- php常用linux命令httpd,Linux常用的100个命令
- 【华为云技术分享】大数据容器化,头部玩家尝到了甜头
- 玩转Android---事件监听篇---第2篇
- NOIP2016 DAY2 T3 愤怒的小鸟
- 谈谈未来简书首页拒稿界面的设计思路
- C#中WinForm 父窗体和子窗体传值
- DEFERRED_SEGMENT_CREATION
- 拓端tecdat|机器学习:在SAS中运行随机森林
- Springboot+vue项目疫情社区防控系统
- 天正2014打开加载lisp_天正CAD2014对不信任加载项的解决方法
- 新一批交通强国试点工作启动
- PL2303HXA自2012已停产,请联系供货商
- 使用EasyExcel实现Excel的导入、导出、下载模板等功能
- 2440 wince 5.0 BSP之flash驱动分析
- 推荐几个帮你避坑和赚钱的公众号
- 移动开发的英文单词发音
- Scheduler: Initial job has not accepted any resources; check your cluster UI to ensure that workers