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

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

3天内不再提示

深度学习模型常用的数据增强方法

汽车玩家 来源:CSDN博主 作者:csuzhaoqinghui 2020-01-19 17:03 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

数据增强(Data Augmentation)

人工智能,或者说计算机视觉的一个最终目标在于构建一个真正可适用于真实世界复杂环境的系统。而就目前所应用的机器学习系统而言,大部分采用了有监督的学习方法,也必然导致了需要广泛收集图像样本,并进行对应的图像标注的工作。而人力时有穷尽,高质量的样本集图片又是构建一个优秀的机器学习系统的关键因素。使用适当的数据增强方法可以将数据集的数量增大十倍以上,从而极大化利用小样本集中的每个样本,使之也可以训练得到一个较好的机器学习模型。数据增强方法也可以提高模型的鲁棒性,防止其易在训练中出现过拟合的现象。

常用的数据增强方法主要来自数字图像处理中的几何变换,但不改变图像中的像素值,而是改变了其空间位置,借此希望卷积神经网络学习到图像中更多的不变性特征,也有利于提高其泛化性能。

以下将对各种方法做简单的列举与说明。

平移(Shift)变换:对原始图片在图像平面内以某种方式(预先定义或者随机方式确定平移的步长、范围及其方向)进行平移。

翻转(Flip)变换:沿竖直或者水平方向对原始图片进行翻转。

随机裁剪(Random Crop):随机定义感兴趣区域以裁剪图像,相当于增加随机扰动。

噪声扰动(Noise):对图像随机添加高斯噪声或者椒盐噪声等。

对比度变换(Contrast):改变图像对比度,相当于在HSV空间中,保持色调分量H不变,而改变亮度分量V和饱和度S,用于模拟现实环境的光照变化。

缩放变换(Zoom):以设定的比例缩小或者放大图像。

尺度变换(Scale):与缩放变换有点类似,不过尺度变换的对象是图像内容而非图像本身(可以参考SIFT特征提取方法),构建图像金字塔以得到不同大小、模糊程度的图像。

权重初始化(weight initialization)

传统神经网络之所以一直没办法加深网络的深度,一个很重要的原因在于使用随机梯度下降法训练时,随着训练迭代过程的深入会出现梯度弥散的现象,也就导致了神经网络无法有效地从样本中进行学习。而造成梯度弥散的一部分原因应该归结于传统神经网络使用了权重随机初始化。

而现代深度神经网络抛弃了随机初始化的方法,转而使用高斯初始化、 Xavier算法等来解决这一问题。

所谓的高斯初始化方法是指随机选取一个固定均值(如0等)和固定方差(如0.01等)的高斯分布中的值作为网络各个神经元的权重参数的初值,从而保证权重参数训练开始时符合高斯分布,以期获得更好的结果。这是一种常用的权重初始化方法。

Xavier算法是Glorot于2010年提出的权值初始化方法。相比与随机初始化或者高斯初始化方法中的随机选取,Xavier算法为每一个深度神经网络的初始权值进行了个性定制,因为他是根据输入输出神经元的个数来进行权重的初始化。该算法假设对于一个网络有n个线性神经元,其初始权值为W,网络输出为Y,即:

Y=W_1 X_1+W_2 X_2+⋯+ W_n X_n (1-1)

计算每个神经元输出的方差如下:

Var(W_i X_i )=E[X_i ]^2 Var(W_i )+E[W_i ]^2 Var(X_i ) + Var(W_i )Var(X_i ) (1-2)

假设所有输入权重的均值为0,上述公式可以简化如下:

Var(W_i X_i )= Var(W_i )Var(X_i ) (1-3)

同时假设Xi和Wi都是独立同分布的,可得输出Y的方差:

Var(Y)=Var(W_1 X_1+W_2 X_2+⋯+ W_n X_n )=nVar(W_i )Var(X_i ) (1-4)

故如果我们要求输出分布要与输入的分布一样,则nVar(Wi)的值应为1。

尽管算法中使用了诸多假设,可是在实际应用过程中取得了良好的效果。直观上来讲,对原始的Xavier算法来说,假设输入的均值为0对于传统的神经网络是合理的。因为其初始化层之后是非线性激活层(tanh,sigmoid等)中的激活函数在0值附近的梯度值最大。而对于现代深度神经网络而言,由于其线性整流单元(ReLU)对于输入的响应有一半为0,故He等提出以下公式作为替代。

Var(W_i )=2/n_in (1-8)

随机梯度下降法(Stochastic Gradient descent)

梯度下降法(Gradient descent)是当前最为受欢迎的优化算法之一,也是最常用的深度神经网络优化方法。它通过沿着当前函数点所对应的梯度的反方向进行迭代搜索,从而找到目标函数的极值点。许多学者对其提出了改进算法。

标准梯度下降法可以表征为:

θ(t+1)=θ_t- η∇θ E(L(θ_t) (1-9)

其中η为每次迭代的学习率,L(θ)为目标函数。E[L(θ)]整个数据集的数学期望。

标准梯度下降法要求在每次迭代的时候都要计算整个数据集的梯度方向。它可以保证凸目标函数可以收敛到全局最小点,而对于非凸目标函数至少可以收敛到局部极值点。近几十年来,样本数据的增长速度远远大于处理器的计算能力的增长。从这个角度上来说,统计机器学习方法的局限在于计算能力而不在于样本量的大小。对于小样本学习中标准梯度下降法是适用的,但是应用于大数据集时是极其缓慢的,整个数据集无法一次性装载进内存中的情况越来越普遍。因此标准梯度下降法无法胜任于现代大规模数据的优化任务,此时随机梯度下降法 (stochastic gradient descent, SGD)的应用效果要远远好于标准梯度下降法。

相比于计算整个数据集的梯度方向,随机梯度下降法(SGD)以从训练集中随机选取的单个样本来估计目标梯度,以迭代更新参数θ。

θ(t+1)=θ_t- η_t ∇θ L(θ_t;x^((t) ),y^((t) )) (1-10)

在实际应用过程中,每次的参数更新并不是根据单个样本计算的,而是由所定义的最小批量样本(mini-batch)来计算的。这可以降低单个样本参数更新的剧烈波动并使收敛过程更加稳定。由于采用批量样本并不能完全代表数据集的梯度方向,其参数更新的波动也是无可避免的。但是这种波动一定程度上使其能够跳转到潜在的更好的局部极小点,并且最终到达全局最小点。尽管理论上,随机梯度下降法(SGD)可以渐进收敛,但是在实际应用过程中仍有许多挑战。

首先,收敛的速度取决于学习率η,一个合适的学习率并不是那么容易确定的。如果学习率太小会导致收敛过程极其缓慢,而过大的学习率η将会阻碍模型收敛并导致目标函数在最小值附近波动甚至发散。其次,对于神经网络这种高度非线性任务而言,其目标函数通常都有大量的次优局部极小点,为保证收敛到全局最小点需要避免训练过程陷入局部极小点中。

对于学习率或者学习策略的选择,可以参考以下方法:

- 选取一个足够小的,在第一次迭代中可以收敛的常数值(或选取两个取其均值),如果收敛速度有所下降,取η/2作为新的学习率;

- 在每次迭代之后引入评估机制,当两次迭代间的变化小于某个设定阈值时减小学习率。

为了避免训练陷入局部极小点,Qian等提出了基于动量(momentum)的梯度下降学习算法,通过增加历史参数更新的权重项,加速当前参数更新的过程并减少振荡。

ν(t+1)=〖γν〗_t- η_t ∇θ L(θ_t;x^((t) ),y^((t) )) (1-11)

θ(t+1)=θ_t+ν(t+1) (1-12)

其中ν_(t+1)是当前的更新向量,γ即为动量,通常设为0.9或者其他常数。

2013年,Sutskever等对传统动量算法改进动量更新过程使得训练更加稳定。而Recht等提出并行SGD以适应现代海量数据集的训练任务。

批规范化(Batch normalization)

当训练一个深度神经网络时,由于各层参数不断变化,所以各层输入的概率分布也在不断的变化,也导致了非线性激活函数(如sigmoid等)正负两边都会饱和,使得训练迭代的过程变得极其缓慢甚至无法进行。这时候,通常需要采用较小的学习率以及精细进行权重初始化。loffe等将这种现象称为“内部协方差偏移”(internal covariate shift),并提出了批规范化(Batch normalization,BN)解决此类问题。

该论文中提出在每次随机梯度下降迭代时,在最小批量样本(mini-batch)内做规范化操作,使得输出结果各个维度的均值为0,方差为1,有效地避免了非线性激活函数的饱和问题(以sigmoid为例,观察sigmoid函数即可知,该函数输入集中在0附近时,其输出梯度较大);同时也让梯度变化受参数及其初值的影响减小。

假设对当前隐含层执行规范化,其输入有d个,分别为 x=〖[x_1,x_1,…,x_d]〗^T,则其第k维输出如下:

x ̂k = (x_k-μβ)/√(δ_β^2+ϵ) (1-13)

其中,μβ和δβ^2分别为最小批量样本的均值和方差。

为了加强其表示能力,原作中引入了一对可学习参数 γ,β,使得:

y_k=〖BN〗_(γ,β) (x_k )= γx ̂_k+β (1-14)

总体而言,批规范化(Batch normalization)作用可以归纳如下:

(1) 可以使用更高的学习率,加快了训练速度;

(2) 可以移除或使用较低的dropout(下一小节将作介绍)。dropout是常用的防止过拟合的方法,较低的dropout也可以提高训练速度。

(3) 减少图像预处理的使用。由于现在训练迭代次数降低,所以可以对样本数据少做一些图像扭曲,让神经网络多从真实的数据中学习。

当然,对于上述问题的解决办法并不是唯一的,Razvan等提出的自然梯度(Natural Gradient)也是对解决这一问题的一种思路。

Dropout

众所周知,过拟合问题一直是机器学习的算法的致力于解决的问题。对于大型神经网络来说,其参数规模相比于浅层学习算法有了跃进式的增加,所以相对来说也更加容易发生过拟合的现象。而为了解决过拟合问题,一般会采用集成方法,即同时训练多个模型进行组合,然而这种方法费时费力也不能保证取得预期效果。

2012年,Hinton等提出Dropout用于解决神经网络训练易过拟合的问题。通过在其训练过程中,按照事先规定的概率暂时屏蔽掉其中的某些神经元。由于这种屏蔽是暂时而是随机的,对于随机梯度下降来说,相当于每一次批量样本的训练均是在训练一个新的网络。极端情况下,对于一个n节点的网络,相当于同时在训练2^n个不同网络模型, 但此时需要优化的参数数量确实不变的,这也一定程度上符合传统的集成方法的思想而同时解决了其费时的问题。

其数学表达如下:

y= εx (1-15)

其中,ε以一定的概率p等于0,使得该神经元节点x暂时被屏蔽。

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

    关注

    42

    文章

    4842

    浏览量

    108180
  • 人工智能
    +关注

    关注

    1820

    文章

    50330

    浏览量

    266967
  • 深度学习
    +关注

    关注

    73

    文章

    5608

    浏览量

    124635
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    人工智能-Python深度学习进阶与应用技术:工程师高培解读

    深度学习的工程化落地,早已不是纸上谈兵的事。从卷积神经网络到Transformer,从目标检测到大模型私有化部署,技术栈不断延伸,工程师面临的知识体系也越来越庞杂。现根据中际赛威工程师培训老师的一份
    的头像 发表于 04-21 11:01 318次阅读
    人工智能-Python<b class='flag-5'>深度</b><b class='flag-5'>学习</b>进阶与应用技术:工程师高培解读

    人工智能多模态与视觉大模型开发实战 - 2026必会

    和鲁棒性。同时,还会学习到如何使用数据增强技术扩充数据集,进一步提升模型的泛化能力。 部署应用:让视觉大
    发表于 04-15 16:06

    面向物理世界的 AI 数据采集

    从产业视角看,人工智能的发展大致经历了从规则系统、机器学习深度学习到大模型的演进过程。前几个阶段,AI的核心驱动力主要来自算法创新与算力提升,模型
    的头像 发表于 04-13 09:24 184次阅读
    面向物理世界的 AI <b class='flag-5'>数据</b>采集

    【智能检测】基于AI深度学习与飞拍技术的影像测量系统:实现高效精准的全自动光学检测与智能制造数据闭环

    内容概要:文档内容介绍了中图仪器(Chotest)影像测量仪融合人工智能深度学习与飞拍技术的自动化检测解决方案。系统通过AI深度学习实现抗干扰能力强、自适应高的智能寻边,精准识别复
    发表于 03-31 17:11

    【2025夏季班正课】大模型Agent智能体开发实战 课分享

    【2025年12月班】大模型与Agent智能体开发实战] 拒绝碎片化:体系化学 Agent 开发方法的技术深度剖析 在当今的人工智能应用开发领域,一种浮躁的“碎片化”风气正在蔓延。许多开发者习惯于
    发表于 03-29 16:12

    机器学习深度学习中需避免的 7 个常见错误与局限性

    无论你是刚入门还是已经从事人工智能模型相关工作一段时间,机器学习深度学习中都存在一些我们需要时刻关注并铭记的常见错误。如果对这些错误置之不理,日后可能会引发诸多麻烦!只要我们密切关注
    的头像 发表于 01-07 15:37 350次阅读
    机器<b class='flag-5'>学习</b>和<b class='flag-5'>深度</b><b class='flag-5'>学习</b>中需避免的 7 个常见错误与局限性

    穿孔机顶头检测仪 机器视觉深度学习

    顶头状态。 检测顶头算法 引入人工智深度学习技术,通过Keras实现卷积神经网络(CNN),用Numpy实现采集数据的训练,得到符合现场需求的模型,进一步提升检测的准确性和现场的适应性
    发表于 12-22 14:33

    【团购】独家全套珍藏!龙哥LabVIEW视觉深度学习实战课(11大系列课程,共5000+分钟)

    (第10系列)、YOLOv8-Tiny工业优化版(第9系列),满足产线端设备算力限制,模型推理速度提升300%。 LabVIEW生态整合 作为工业自动化领域主流开发环境,LabVIEW与深度学习的集成
    发表于 12-04 09:28

    【团购】独家全套珍藏!龙哥LabVIEW视觉深度学习实战课程(11大系列课程,共5000+分钟)

    (第10系列)、YOLOv8-Tiny工业优化版(第9系列),满足产线端设备算力限制,模型推理速度提升300%。 LabVIEW生态整合 作为工业自动化领域主流开发环境,LabVIEW与深度学习的集成
    发表于 12-03 13:50

    【「AI芯片:科技探索与AGI愿景」阅读体验】+第二章 实现深度学习AI芯片的创新方法与架构

    、Transformer 模型的后继者 二、用创新方法实现深度学习AI芯片 1、基于开源RISC-V的AI加速器 RISC-V是一种开源、模块化的指令集架构(ISA)。优势如下: ①模
    发表于 09-12 17:30

    深度学习对工业物联网有哪些帮助

    、实施路径三个维度展开分析: 一、深度学习如何突破工业物联网的技术瓶颈? 1. 非结构化数据处理:解锁“沉睡数据”价值 传统困境 :工业物联网中70%以上的
    的头像 发表于 08-20 14:56 1211次阅读

    自动驾驶中Transformer大模型会取代深度学习吗?

    [首发于智驾最前沿微信公众号]近年来,随着ChatGPT、Claude、文心一言等大语言模型在生成文本、对话交互等领域的惊艳表现,“Transformer架构是否正在取代传统深度学习”这一话题一直被
    的头像 发表于 08-13 09:15 4367次阅读
    自动驾驶中Transformer大<b class='flag-5'>模型</b>会取代<b class='flag-5'>深度</b><b class='flag-5'>学习</b>吗?

    宁畅与与百度文心大模型展开深度技术合作

    近日,百度正式开源文心大模型4.5系列模型。作为文心开源合作伙伴,宁畅在模型开源首日即实现即刻部署,做到“开源即接入、发布即可用”。据悉,文心4.5开源系列全部基于飞桨深度
    的头像 发表于 07-07 16:26 1016次阅读

    模型推理显存和计算量估计方法研究

    方法。 一、引言 大模型推理是指在已知输入数据的情况下,通过深度学习模型进行预测或分类的过程。然
    发表于 07-03 19:43