干货|理解Dropout,BN及数据预处理

一、随机失活(Dropout)

具体做法:在训练的时候,随机失活的实现方法是让神经元以超参数

的概率被激活或者被设置为0。如下图所示:

Dropout可以看作是Bagging的极限形式,每个模型都在当一种情况中训练,同时模型的每个参数都经过与其他模型共享参数,从而高度正则化。在训练过程中,随机失活也可以被认为是对完整的神经网络抽样出一些子集,每次基于输入数据只更新子网络的参数(然而,数量巨大的子网络们并不是相互独立的,因为它们都共享参数)。在测试过程中不使用随机失活,可以理解为是对数量巨大的子网络们做了模型集成(model ensemble),以此来计算出一个平均的预测。

关于Dropout的Motivation:一个是类似于性别在生物进化中的角色:物种为了生存往往会倾向于适应这种环境,环境突变则会导致物种难以做出及时反应,性别的出现可以繁衍出适应新环境的变种,有效的阻止过拟合,即避免环境改变时物种可能面临的灭绝。还有一个就是正则化的思想,减少神经元之间复杂的共适应关系,减少权重使得网络对丢失特定神经元连接的鲁棒性提高。

这里强烈推荐看下论文原文。虽然是英文的,但是对于更深刻的理解还是有很大帮助的!

二、图像数据的预处理

为什么要预处理:

简单的从二维来理解,首先,图像数据是高度相关的,假设其分布如下图a所示(简化为2维)。由于初始化的时候,我们的参数一般都是0均值的,因此开始的拟合

,基本过原点附近(因为b接近于零),如图b红色虚线。因此,网络需要经过多次学习才能逐步达到如紫色实线的拟合,即收敛的比较慢。如果我们对输入数据先作减均值操作,如图c,显然可以加快学习。更进一步的,我们对数据再进行去相关操作,使得数据更加容易区分,这样又会加快训练,如图d。

下面介绍下一些基础预处理方法:

归一化处理

    1. 均值减法(Mean subtraction):它对数据中每个独立特征减去平均值,从几何上可以理解为在每个维度上都将数据云的中心都迁移到原点。(就是每个特征数据减去其相应特征的平均值)

    2. 归一化(Normalization);先对数据做零中心化(zero-centered)处理,然后每个维度都除以其标准差。

(中间零中心化,右边归一化)

PCA和白化(Whitening)

    1. 白化(Whitening):白化操作的输入是特征基准上的数据,然后对每个维度除以其特征值来对数值范围进行归一化。该变换的几何解释是:如果数据服从多变量的高斯分布,那么经过白化后,数据的分布将会是一个均值为零,且协方差相等的矩阵

    2. 特征向量是按照特征值的大小排列的。我们可以利用这个性质来对数据降维,只要使用前面的小部分特征向量,丢弃掉那些包含的数据没有方差的维度。这个操作也被称为主成分分析( Principal Component Analysis)简称PCA)降维

(中间是经过PCA操作的数据,右边是白化)

需要注意的是:

  1. 对比与上面的中心化,与pca有点类似,但是不同的是,pca把数据变换到了数据协方差矩阵的基准轴上(协方差矩阵变成对角阵),也就是说他是轴对称的,但简单的零中心化,它不是轴对称的;还有PCA是一种降维的预处理,而零中心化并不是。

  2. 常见错误:任何预处理策略(比如数据均值)都只能在训练集数据上进行计算,算法训练完毕后再应用到验证集或者测试集上。例如,如果先计算整个数据集图像的平均值然后每张图片都减去平均值,最后将整个数据集分成训练/验证/测试集,那么这个做法是错误的。应该怎么做呢?应该先分成训练/验证/测试集,只是从训练集中求图片平均值,然后各个集(训练/验证/测试集)中的图像再减去这个平均值。

三、Batch Normalization

原论文中,作者为了计算的稳定性,加了两个参数将数据又还原回去了,这两个参数也是需要训练的。说白了,就是对每一层的数据都预处理一次。方便直观感受,上张图:

这个方法可以进一步加速收敛,因此学习率可以适当增大,加快训练速度;过拟合现象可以得倒一定程度的缓解,所以可以不用Dropout或用较低的Dropout,而且可以减小L2正则化系数,训练速度又再一次得到了提升。即Batch Normalization可以降低我们对正则化的依赖程度。

还有要注意的是,Batch Normalization和pca加白化有点类似,结果都是可以零均值加上单位方差,可以使得数据弱相关,但是在深度神经网络中,我们一般不要pca加白化,原因就是白化需要计算整个训练集的协方差矩阵、求逆等操作,计算量很大,此外,反向传播时,白化操作不一定可导。最后,再次强烈直接看BN的相关论文,有很多细节值得一看!

-结束-

(0)

相关推荐

  • AdvProp:两组Batch Normalization助你在CNN对抗训练中高效涨点

    作者丨皮特潘 审稿|邓富城 编辑丨极市平台 极市导读 CNN能被轻易的攻击是其最大的弱点之一,本文介绍的AdvProp创造性提出了在一个网络中使用两组可以切换的BN,并利用附加的BN去处理对抗样本,实 ...

  • 基于OpencvCV的情绪检测

    重磅干货,第一时间送达 情绪检测或表情分类在深度学习领域中有着广泛的研究.使用相机和一些简单的代码我们就可以对情绪进行实时分类,这也是迈向高级人机交互的一步. 前言 本期我们将首先介绍如何使用Kera ...

  • SPSS是如何求数据的均值的?

    求一组数据的平均值大家可能会立马想到用Excel的平均值公式,那么用SPSS求平均值怎么做呢?下面就让小编来教大家吧! 我们今天要求一下舒张压和收缩压这两组的平均值. 点击转换--计算变量. 然后在弹 ...

  • 可视化的BatchNorm--它的工作方式以及为什么神经网络需要它

    设为 "星标",DLCV消息即可送达! Batch Norm是现代深度学习从业者工具包的重要组成部分.在Batch Norm论文中将其引入后不久,它就被认为是在创建可以更快训练的更 ...

  • 【AI初识境】深度学习模型中的Normalization,你懂了多少?

    这是<AI初识境>第6篇,这次我们说说Normalization.所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法. 数据经过归一化和标准化后可以加快梯度下降的求解速度,这就是Ba ...

  • Batchsize不够大,如何发挥BN性能?探讨神经网络在小Batch下的训练方法

    作者丨皮特潘 编辑丨极市平台 极市导读 由于算力的限制,有时我们无法使用足够大的batchsize,此时该如何使用BN呢?本文将介绍两种在小batchsize也可以发挥BN性能的方法. >> ...

  • 通过深层神经网络生成音乐

    深度学习改善了我们生活的许多方面,无论是明显的还是微妙的.深度学习在电影推荐系统.垃圾邮件检测和计算机视觉等过程中起着关键作用. 尽管围绕深度学习作为黑匣子和训练难度的讨论仍在进行,但在医学.虚拟助理 ...

  • Pandas数据预处理的10个小技能

    大家好,欢迎来到 Crossin的编程教室 ! 数据预处理是数据分析的重要步骤,常用的处理包括找出异常值.处理缺失值.过滤不合适值.去掉重复行.分箱.分组.排名.category转数值等.今天分享的这 ...

  • 干货|理解机器学习必学算法条件随机场CRF

    第一时间获取价值内容 一.概率图模型 概率图模型又叫做马尔可夫随机场,是一个可以用无线图表示的联合概率分布.在这个无线图中结点表示随机变量,边表示两个随机变量依赖关系.给定一个概率分布及其无向图,首先 ...

  • Python制作一个数据预处理小工具,非常实用(拿走不谢)

    我们平常使用Python进行数据处理与分析时,在import完一大堆库之后 ,就是对数据进行预览,查看数据是否出现了缺失值.重复值等异常情况,并进行处理. 本文将结合GUI工具PySimpleGUI, ...

  • 干货 | 理解交易系统的真正核心

    只做专业交易软件 01 良好的交易系统 交易的秘密就是找到一套适合你的交易系统.这个交易系统是非机械的,适合你自己个性的,有完善的交易思想.细致的市场分析和整体操作方案的.风险市场中的赢家都有自已的交 ...

  • Python数据分析:常见的数据预处理方法

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于数据杂论,作者:Wpc7113 Python 数据分析入门案例讲解 https:// ...

  • 我所理解的互联网BI数据分析师

    数据分析师虽然是很多互联网公司都设立的一个职位,但不同公司对这一职位的定位不同.即使是统一公司,在不同的团队,数据分析师的职责,作用和地位也可能不一样. 本文从笔者自己的实际经历出发,总结一下数据分析 ...

  • mxnet框架下超全手写字体识别—从数据预处理到网络的训练—模型

    Mxnet框架深度学习框架越来越受到大家的欢迎.但是如何正确的使用这一框架,很多人并不是很清楚.从训练数据的预处理,数据的生成(网络真正需要的数据格式,网络模型的保存,网络训练日志的保存,等等,虽然网 ...

  • letswave7中文教程2:脑电数据预处理-通道位置分配

    更多技术干货第一时间送达 原始的脑电图信号是有噪声的.预处理对于提高信号的信噪比以获得"清晰"的脑电图数据是非常有必要的.但是,想要完全区分噪音和信号却是几乎不可能的.在脑电信号中 ...

  • letswave7中文教程3:脑电数据预处理-ICA去除伪影

    更多技术干货第一时间送达 ICA/BSS的理论与模型 独立成分分析(ICA)是一种盲信号分离(Blind Signal Separation,BSS)方法.ICA可线性建模如下图所示. 假设X为&qu ...