Inception系列之Batch-Normalization
训练深度神经网络非常复杂,因为在训练过程中,随着先前各层的参数发生变化,各层输入的分布也会发生变化,图层输入分布的变化带来了一个问题,因为图层需要不断适应新的分布,因此训练变得复杂,随着网络变得更深,网络参数的细微变化也会放大。由于要求较低的学习率和仔细的参数初始化,这减慢了训练速度,并且众所周知,训练具有饱和非线性的模型非常困难。我们将此现象称为内部协变量偏移,并通过归一化层输入来解决该问题。
Batch Normalization通过将归一化作为模型体系结构的一部分并为每个训练小批量执行归一化来汲取其优势。批处理规范化使我们可以使用更高的学习率,而对初始化则不必那么小心。它还可以充当正则化器,在某些情况下,不需要Dropout,BN朝着减少内部协变量偏移迈出了一步,并且在此过程中极大地加速了深度神经网络的训练。它通过固定图层输入的均值和方差的归一化步骤来完成此操作。
BN应用于最先进的图像分类模型,以较少的14倍训练步骤即可达到相同的精度,并且在很大程度上击败了原始模型。使用批归一化网络的模型在 ImageNet分类中达到4.9%的top-5验证错误(和4.8%的测试错误),超过了人类评分者的准确性。
Batch-Normalization实现
最开始的想法是通过白化来实现分布归一化,然而考虑到白化需要在梯度下降外计算协方差矩阵,因此白化层将严重影响计算量。后来选择了在mini-batch中使用如下公式实现归一化:
请注意,简单地标准化图层的每个输入可能会更改该图层可以表示的内容。例如,对S形输入进行归一化会将其约束为非线性的线性状态。为了解决这个问题,我们确保网络中插入的转换可以表示身份转换(the transformation inserted in the network can represent the identity transform)。因此,我们为每次激活x(k)引入一对参数γ(k),β(k),它们可缩放和移动标准化值:
其中,γ(k) = Var[x(k)]开根号,β(k) = E[x(k)]
具体实现算法伪代码如下:
在训练期间,我们需要通过此变换反向传播损耗gradient的梯度,以及计算与BN变换的参数有关的梯度。我们使用链式规则,如下所示(在简化之前):
因此,BN转换是将标准化激活引入网络的可微分转换。这样可以确保在训练模型时,各层可以继续学习内部协变量偏移较少的输入分布,从而加快了训练速度。此外,将学习到的仿射变换应用于这些规范化激活,可以使BN变换表示身份变换并保留网络容量。
Batch-Normalization在卷积层中应用
卷积网络中添加BN前的映射方程为z = g(W u + b),这里g是激活函数。在添加BN后变为了z = g(BN(W u)),这里去除了b,由于我们对W u + b进行了归一化,因此可以忽略偏差b,因为其作用将被随后的均值减法抵消(偏差的作用在前面的式子中由β所实现)
Batch-Normalization有利于使用更大的学习率
在传统的深度网络中,过高的学习率可能会导致梯度爆炸或消失,以及陷入不良的局部最小值。批处理规范化有助于解决这些问题。通过对整个网络的激活进行标准化,可以防止对参数的细微更改放大为梯度激活中的较大和次佳的更改。例如,它可以防止训练陷入非线性的饱和状态。
批归一化还使训练对参数规模更具弹性。通常,较高的学习率可能会增加图层参数的规模,然后放大反向传播期间的梯度并导致模型爆炸。但是,使用批归一化,通过层的反向传播不受其参数范围的影响。确实,对于标量a, 假设BN (W u) = BN ((aW )u),(这里可以这么假设的原因,个人理解是BN有仿射变换,可以实现不同卷积参数大小得到相同的结果),等式两边分别对u和W求导,
对此,比例尺a不会影响雅可比层,也不会影响梯度传播。而且,较大的权重反而有较小的梯度,并且“批归一化”将稳定参数的增长。
Batch-Normalization实际效果
1. 增加学习率
2. 可去除Dropout
3. 减少L2权重正则化
4. 加速学习率衰减
5. 不再需要局部响应归一化(LRN)(在BN提出来之前是使用LRN)
6. 更彻底地混洗训练示例
7. 减少光度失真
后两个不太好理解,例如第七点,原文的说法是“由于批量归一化的网络训练速度更快,并且观察每个训练示例的次数更少,因此,我们使训练者可以通过减少畸变来专注于更多“真实”的图像。“我个人的理解是可以减少对图像进行畸变这种数据增强方式,因为有了BN后能更关注于真实图像,但这种理解不够直观,并不知道为什么会可以这样。
实验效果,收敛速度明显更快,精度更高。
Inception系列之Batch-Normalization的更多相关文章
- 深度卷积网络-Inception系列
目录 1. Inception V1 1.1 Inception module 2. Inception V2 3. Inception V3 4. Inception V4, Inception-R ...
- 深度学习基础系列(九)| Dropout VS Batch Normalization? 是时候放弃Dropout了
Dropout是过去几年非常流行的正则化技术,可有效防止过拟合的发生.但从深度学习的发展趋势看,Batch Normalizaton(简称BN)正在逐步取代Dropout技术,特别是在卷积层.本文将首 ...
- 深度学习基础系列(七)| Batch Normalization
Batch Normalization(批量标准化,简称BN)是近些年来深度学习优化中一个重要的手段.BN能带来如下优点: 加速训练过程: 可以使用较大的学习率: 允许在深层网络中使用sigmoid这 ...
- 【网络优化】Batch Normalization(inception V2) 论文解析(转)
前言 懒癌翻了,这篇不想写overview了,公式也比较多,今天有(zhao)点(jie)累(kou),不想一点点写latex啦,读论文的时候感觉文章不错,虽然看似很多数学公式,其实都是比较基础的公式 ...
- 深度学习面试题21:批量归一化(Batch Normalization,BN)
目录 BN的由来 BN的作用 BN的操作阶段 BN的操作流程 BN可以防止梯度消失吗 为什么归一化后还要放缩和平移 BN在GoogLeNet中的应用 参考资料 BN的由来 BN是由Google于201 ...
- 网络结构解读之inception系列三:BN-Inception(Inception V2)
网络结构解读之inception系列三:BN-Inception(Inception V2) BN的出现大大解决了训练收敛问题.作者主要围绕归一化的操作做了一系列优化思路的阐述,值得细看. Batch ...
- Inception系列理解
博客:博客园 | CSDN | blog 写在前面 Inception 家族成员:Inception-V1(GoogLeNet).BN-Inception.Inception-V2.Inception ...
- 从Bayesian角度浅析Batch Normalization
前置阅读:http://blog.csdn.net/happynear/article/details/44238541——Batch Norm阅读笔记与实现 前置阅读:http://www.zhih ...
- Feature Extractor[batch normalization]
1 - 背景 摘要:因为随着前面层的参数的改变会导致后面层得到的输入数据的分布也会不断地改变,从而训练dnn变得麻烦.那么通过降低学习率和小心地参数初始化又会减慢训练过程,而且会使得具有饱和非线性模型 ...
- 图像分类(二)GoogLenet Inception_v2:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
Inception V2网络中的代表是加入了BN(Batch Normalization)层,并且使用 2个 3*3卷积替代 1个5*5卷积的改进版,如下图所示: 其特点如下: 学习VGG用2个 3* ...
随机推荐
- 记录编译JDK11源码时遇到的两个问题
执行make all报错信息: 错误一 /src/hotspot/share/runtime/arguments.cpp:1461:35: error: result of comparison ag ...
- Navicat连接MySQL报错-2059
解释原因:据说,mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种,一种是 ...
- java swing 按钮事件触发两次或者多次
按钮事件触发多次? 如果是JButton,八成是由于粗心,多次添加了监听事件 保持只添加一个监听事件就解决了~
- GIS和视频监控的集成
本文讨论了使用增强现实(AR)技术的三维(3D)地理信息系统(GIS)和视频监视系统的集成.进行这种集成的动机是要克服常规视频监视系统面临的问题.关于哪个摄像机当前监视此类系统中哪个区域的明确信息:因 ...
- Javascript判断数据类型的五种方式及其特殊性
Javascript判断数据类型的五种方式及区别 @ 目录 typeof instanceof Object.prototype.toString isArray iisNaN ----------- ...
- SessionStorage、LocalStorage详解
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://blog.bitsrc.io/sessionstorage-and-localst ...
- centos7搭建docker环境
Docker简介 Docker是一种虚拟化技术,用来将你的应用程序及其依赖的环境一起打包成一个镜像发布,使得在任何地方都能获得相同的运行环境. Docker 是一个开源项目,诞生于 2013 年初,最 ...
- 【差分】POJ 3263 Tallest Cow
题目大意 POJ链接 给出\(n\)头牛的身高,和\(m\)对关系,表示牛\(a[i]\)与\(b[i]\)可以相互看见.已知最高的牛为第\(p\)头,身高为\(h\). 求每头牛的身高最大可能是多少 ...
- ansible用user/group模块管理受控机上的用户和组(ansible2.9.5)
一,ansible的user/group模块的用途: ansible的user模块用来实现:生成用户.删除用户等用户的管理ansible的group模块用来实现:生成组.删除组等组的管理 说明:刘宏缔 ...
- Jquery特效之=》仿京东多条件筛选特效
仿京东多条件筛选特效 * { margin: 0; padding: 0; list-style-type: none } a, img { border: 0 } body { font: 12px ...