0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于Dropout、BN及数据预处理方案

电子设计 来源:程序员大本营 作者:datayx 2021-05-31 17:37 次阅读

一、随机失活(Dropout)

具体做法:在训练的时候,随机失活的实现方法是让神经元以超参数o4YBAF-cdnmAWpDBAAACU_DoSa0457.png的概率被激活或者被设置为 0。如下图所示:

pIYBAF-cdnuAKYslAABDQ5yQB94073.jpg

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

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

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

二、图像数据的预处理

为什么要预处理:简单的从二维来理解,首先,图像数据是高度相关的,假设其分布如下图 a 所示(简化为 2 维)。由于初始化的时候,我们的参数一般都是 0 均值的,因此开始的拟合 o4YBAF-cdn2AUm5PAAAISG9lNi8513.png,基本过原点附近(因为 b 接近于零),如图 b 红色虚线。因此,网络需要经过多次学习才能逐步达到如紫色实线的拟合,即收敛的比较慢。如果我们对输入数据先作减均值操作,如图 c,显然可以加快学习。更进一步的,我们对数据再进行去相关操作,使得数据更加容易区分,这样又会加快训练,如图 d。

pIYBAF-cdoCAGQkwAAAU0Fjltps385.jpg

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

归一化处理

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

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

pIYBAF-cdoKAHx1cAAAs6MzWcJQ190.jpg

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

PCA 和白化(Whitening)

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

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

o4YBAF-cdoSAM91NAAAqrWV9zyE177.jpg

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

需要注意的是:

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

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

三、Batch Normalization

pIYBAF-cdoeAaDEsAACN5x16PK0221.png

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

o4YBAF-cdomALAtFAABipDQJan0158.jpg

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

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

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4771

    浏览量

    100721
收藏 人收藏

    评论

    相关推荐

    机器学习为什么需要数据预处理

    数据预处理是准备原始数据并使其适合机器学习模型的过程。这是创建机器学习模型的第一步也是关键的一步。 创建机器学习项目时,我们并不总是遇到干净且格式化的数据。在对
    的头像 发表于 08-24 09:20 1885次阅读
    机器学习为什么需要<b class='flag-5'>数据</b><b class='flag-5'>预处理</b>

    请教大家一下关于数据预处理

    一般将获得的加速度数据得进行数据预处理,常见的预处理方法有去掉趋势相、还得将离散的数值积分获得振幅。请问有做过的没,请教一下。
    发表于 06-07 11:16

    振动信号的预处理具体是什么意思?

    振动信号的处理预处理之间有什么区别?我用labview对振动信号进行预处理处理吗?
    发表于 10-08 15:33

    Python数据预处理方法

    机器学习-Python实践Day3(特征工程--数据预处理2)
    发表于 06-03 15:55

    数据探索与数据预处理

    目录1数据探索与数据预处理21.1 赛题回顾21.2 数据探索性分析与异常值处理21.3 相关性分析52特征工程82.1 光伏发电领域特征8
    发表于 07-12 08:37

    工业蒸汽量预测的数据预处理知识有哪些

    工业蒸汽量预测的数据预处理知识有哪些?工业蒸汽量预测的特征工程有哪些?
    发表于 10-22 06:32

    C预处理与C语言基本数据类型

    嵌入式系统设计师学习笔记二十九:嵌入式程序设计④——C预处理预处理指令表:(编码规范:GB/T 28169-2011)关于宏定义 #denfine 详解可点击连接查看博主的另一篇文章 预定义宏
    发表于 12-21 08:29

    C语言的编译预处理

    在将一个C源程序转换为可执行程序的过程中, 编译预处理是最初的步骤. 这一步骤是由预处理器(preprocessor)来完成的. 在源流程序被编译器处理之前, 预处理器首先对源程序中的
    发表于 09-20 18:17 47次下载

    Python数据清洗和预处理入门完整指南

    凡事预则立,不预则废,训练机器学习模型也是如此。数据清洗和预处理是模型训练之前的必要过程,否则模型可能就「废」了。本文是一个初学者指南,将带你领略如何在任意的数据集上,针对任意一个机器学习模型,完成
    的头像 发表于 12-21 13:50 879次阅读

    什么是大数据采集和预处理

    一般情况下,大数据处理的流程为:数据采集和预处理数据存储、数据分析和数据可视化。
    的头像 发表于 02-15 14:22 4050次阅读

    PyTorch教程之数据预处理

    电子发烧友网站提供《PyTorch教程之数据预处理.pdf》资料免费下载
    发表于 06-02 14:11 0次下载
    PyTorch教程之<b class='flag-5'>数据</b><b class='flag-5'>预处理</b>

    图像预处理方法研究

    图像预处理的主要目的是消除图像中无关的信息,恢复有用的真实信息,增强有关信息的可检测性、最大限度地简化数据,从而改进特征提取、图像分割、匹配和识别的可靠性。一般的预处理流程为:1灰度化->2几何变换->3图像增强
    发表于 09-20 09:35 557次阅读

    数据预处理和特征工程的常用功能

    机器学习最基础的5个流程,分别是数据获取,数据预处理,特征工程,建模、测试和预测,上线与部署。
    的头像 发表于 01-25 11:26 747次阅读

    机器学习中的数据预处理与特征工程

    在机器学习的整个流程中,数据预处理与特征工程是两个至关重要的步骤。它们直接决定了模型的输入质量,进而影响模型的训练效果和泛化能力。本文将从数据预处理和特征工程的基本概念出发,详细探讨这
    的头像 发表于 07-09 15:57 397次阅读

    Minitab 数据清理与预处理技巧

    Minitab是一款功能强大的统计分析和质量管理软件,在数据分析过程中,数据清理与预处理是至关重要的环节。以下是一些在Minitab中进行数据清理与
    的头像 发表于 12-02 16:06 308次阅读