2018-12-05 20:28:15

在机器学习领域有一个很重要的假设,即独立同分布假设,也就是说训练集和测试集是满足相同分布的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。而BatchNorm就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布。

为什么深度神经网络随着网络深度加深,训练起来越困难,收敛越来越慢

有很多研究人员都致力于研究这个问题,也提出了很多行之有效的方法,BN就是google小组在论文Batch Normalizatoin中提出来的方法。他们指出模型在训练过程中Internal Covariate Shift 会导致模型收敛变慢且训练效果变差,其主要描述的是:训练深度网络的时候经常发生训练困难的问题,因为,每一次参数迭代更新后,上一层网络的输出数据经过这一层网络计算后,数据的分布会发生变化,为下一层网络的学习带来困难。

(随着网络深度加深或者在训练过程中,其分布逐渐发生偏移或者变动,之所以训练收敛慢,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近,对于Sigmoid函数来说,意味着激活输入值WU+B是大的负值或正值,所以这导致后向传播时低层神经网络的梯度消失)

为了解决ICS问题,就引入了BN层,对隐含的输出也进行标准化,同时引入扩展参数 gamma, 和 平移参数 β, 这样神经网络就能自己慢慢琢磨出前面的 normalization 操作到底有没有起到优化的作用, 如果没有起到作用, 我就使用 gamma 和 belt 来抵消一些 normalization 的操作。

需要注意的是,上述的计算方法用于在训练。因为测试时常会只预测一个新样本,也就是说batch size为1。若还用相同的方法计算 就会是这个新样本自身, 就会成为0。

所以在测试时,所使用的 是整个训练集的均值 和方差

而整个训练集的均值和方差 的值通常是使用指数加权平均进行计算得到的。

指数加权平均 : v_i = beta * v_i - 1 + (1 - beta) * nums_i

其中beta是一个超参,一般来说可以看作1 / (1 - beta) 为平均的batch的数目。比如取beta = 0.9,那么就表明大概得到的是近10天的平均值。

批标准化 Batch Normalization的更多相关文章

  1. 批标准化(Batch Norm)

    BN作用: 加速收敛 控制过拟合,可以少用或不用Dropout和正则 降低网络对初始化权重不敏感 允许使用较大的学习率 一.如何加速收敛? 通过归一化输入值/隐藏单元值,以获得类似的范围值,可加速学习 ...

  2. CNN学习笔记:批标准化

    CNN学习笔记:批标准化 Batch Normalization Batch Normalization, 批标准化, 是将分散的数据统一的一种做法, 也是优化神经网络的一种方法. 在神经网络的训练过 ...

  3. 深度学习面试题21:批量归一化(Batch Normalization,BN)

    目录 BN的由来 BN的作用 BN的操作阶段 BN的操作流程 BN可以防止梯度消失吗 为什么归一化后还要放缩和平移 BN在GoogLeNet中的应用 参考资料 BN的由来 BN是由Google于201 ...

  4. [转] 深入理解Batch Normalization批标准化

    转自:https://www.cnblogs.com/guoyaohua/p/8724433.html 郭耀华's Blog 欲穷千里目,更上一层楼项目主页:https://github.com/gu ...

  5. 莫烦课程Batch Normalization 批标准化

    for i in range(N_HIDDEN): # build hidden layers and BN layers input_size = 1 if i == 0 else 10 fc = ...

  6. 转载-【深度学习】深入理解Batch Normalization批标准化

      全文转载于郭耀华-[深度学习]深入理解Batch Normalization批标准化:   文章链接Batch Normalization: Accelerating Deep Network T ...

  7. 【深度学习】深入理解Batch Normalization批标准化

    这几天面试经常被问到BN层的原理,虽然回答上来了,但还是感觉答得不是很好,今天仔细研究了一下Batch Normalization的原理,以下为参考网上几篇文章总结得出. Batch Normaliz ...

  8. [转载]深入理解Batch Normalization批标准化

    文章转载自:http://www.cnblogs.com/guoyaohua/p/8724433.html Batch Normalization作为最近一年来DL的重要成果,已经广泛被证明其有效性和 ...

  9. 【深度学习】批归一化(Batch Normalization)

    BN是由Google于2015年提出,这是一个深度神经网络训练的技巧,它不仅可以加快了模型的收敛速度,而且更重要的是在一定程度缓解了深层网络中"梯度弥散"的问题,从而使得训练深层网 ...

随机推荐

  1. 11: python递归

    1.1 递归讲解 1.定义 1. 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 2.递归特性 1. 必须有一个明确的结束条件 2. 每次进入更深一层递归时,问题 ...

  2. phpstorm 配置点右上角浏览器图标时用浏览器打开当前页面

    文件>设置 只要这一步就可以这样了

  3. 经典算法分析:n与lgn

    顺序查找O(n) 二分查找O(lgn) 通过代码来感受性能差别 package recursion; /** * @author zsh * @company wlgzs * @create 2019 ...

  4. linux --- 4. 虚拟环境

    一.虚拟环境的两种安装方式 1. virtualenv  虚拟环境 ①下载 virtualenv pip3 install -i https://pypi.tuna.tsinghua.edu.cn/s ...

  5. Linux 系统/etc/profile 内配置 系统脚本命令

    背景 在Linux系统下,我们需要利用脚本命令启动一个进程的时候,需要先找到找到启动文件,然后再启动.比如服务器上安装了一个was应用服务器,我们需要每次启动服务器都需要使用如下命令: sh  was ...

  6. Restful framework【第四篇】视图组件

    基本使用 -view的封装过程有空可以看一下 -ViewSetMixin # ViewSetMixin 写在前面,先找ViewSetMixin的as_view方法 # 用了ViewSetMixin , ...

  7. 3545: [ONTAK2010]Peaks 平衡树,最小生成树

    链接 https://www.lydsy.com/JudgeOnline/problem.php?id=3545 离线询问,按照权值排个序 就是在克鲁斯卡尔时候维护个treap,到时候挨个查询一下就好 ...

  8. Vue脚手架创建项目

    创建一个基于webpack模板的新项目 D:\Git $ vue -V D:\Git $ vue init webpack my-project ? Project name my-project ? ...

  9. SpringBoot Mybatis问题收集

    1.在SpringBoot中打印mybatis中执行的sql 其实在application.properties 文件下,添加一下配置即可: logging.level.org.springframe ...

  10. html页面使用前端框架布局时,弹出子页面等情况若出现布局混乱,可能是回发导致

    解决方法:需要带调用 弹框 那里 写一段return false防止回发