爱吧机器人网 » 技术 > 神经网络 > 正文

从检查过拟合到数据增强 一文简述提升神经网络性能方法



神经网络是一种在很多用例中能够提供最优准确率的机器学习算法。

但是,很多时候我们构建的神经网络的准确率可能无法令人满意,或者无法让我们在数据科学竞赛中拿到领先名次。

所以,我们总是在寻求更好的方式来改善模型的性能。有很多技术可以帮助我们达到这个目标。本文将介绍这些技术,帮助大家构建更准确的神经网络。

检查过拟合



保证神经网络在测试集上运行良好的第一步就是验证神经网络没有过拟合。什么是过拟合呢?

当你的模型开始记录训练数据而不是从中学习的时候,就发生了过拟合。然后,当你的模型遇到之前没有见过的数据时,它就无法很好的运行。

为了更好地理解,我们来看一个类比。我们有一个记性特好的同学,假设一次数学考试马上就要来临了。

你和这位擅长记忆的同学开始学习课本。这名同学记住课本中的每一个公式、问题以及问题的答案,然而你要比他来得聪明一些,所以你决定以直觉为基础、解决问题、学习这些公式是如何发挥作用的。

考试来了,如果试卷中的问题是直接来源于课本的,那么可以想像那名记忆力超群的同学发挥得更好,但是,如果试题是涉及应用直观知识的全新问题,那么你将会做得更好,而你的朋友会惨败。

如何鉴别模型是否过拟合呢?你仅仅需要交叉检查训练准确率和测试准确率。

如果训练准确率远远高出了测试准确率,那么可以断定你的模型是过拟合了。你也可以在图中画出预测点来验证。

下面是一些避免过拟合的技术:

数据正则化(L1 或 L2);

Dropout:随机丢弃一些神经元之间的连接,强制神经网络寻找新的路径并泛化;

早停(Early Stopping):促使神经网络训练早点停止,以减少在测试集中的误差。

超参数调节




超参数是你必须给网络初始化的值,这些数值不能在训练的过程中学到。

在卷积神经网络中,这些超参数包括:核大小、神经网络层数、激活函数、损失函数、所用的优化器(梯度下降、RMSprop)、批大小、训练的 epoch 数量等等。

每个神经网络都会有最佳超参数组合,这组参数能够得到最大的准确率。

你也许会问,「有这么多超参数,我如何选择每个参数呢?」不幸的是,对每个神经网络而言,并没有确定最佳超参数组合的直接方法,所以通常都是通过反复试验得到的。但是也有一些关于上述超参数的最佳实践:

学习率:选择最优学习率是很重要的,因为它决定了神经网络是否可以收敛到全局最小值。选择较高的学习率几乎从来不能到达全局最小值,因为你很可能跳过它。所以,你总是在全局最小值附近,但是从未收敛到全局最小值。选择较小的学习率有助于神经网络收敛到全局最小值,但是会花费很多时间。这样你必须用更多的时间来训练神经网络。较小的学习率也更可能使神经网络困在局部极小值里面,也就是说,神经网络会收敛到一个局部极小值,而且因为学习率比较小,它无法跳出局部极小值。所以,在设置学习率的时候你必须非常谨慎。

神经网络架构:并不存在能够在所有的测试集中带来高准确率的标准网络架构。你必须实验,尝试不同的架构,从实验结果进行推断,然后再尝试。我建议使用已经得到验证的架构,而不是构建自己的网络架构。例如:对于图像识别任务,有 VGG net、Resnet、谷歌的 Inception 网络等。这些都是开源的,而且已经被证明具有较高的准确率。所以你可以把这些架构复制过来,然后根据自己的目的做一些调整。

优化器和损失函数:这方面有很多可供选择。事实上,如果有必要,你可以自定义损失函数。常用的优化器有 RMSprop、随机梯度下降和 Adam。这些优化器貌似在很多用例中都可以起作用。如果你的任务是分类任务,那么常用的损失函数是类别交叉熵。如果你在执行回归任务,那么均方差是最常用的损失函数。你可以自由地使用这些优化器超参数进行试验,也可以使用不同的优化器和损失函数。

批大小和 epoch 次数:同样,没有适用于所有用例的批大小和 epoch 次数的标准值。你必须进行试验,尝试不同的选择。在通常的实践中,批大小被设置为 8、16、32……epoch 次数则取决于开发者的偏好以及他/她所拥有的计算资源。

激活函数:激活函数映射非线性函数输入和输出。激活函数是特别重要的,选择合适的激活函数有助于模型学习得更好。现在,整流线性单元(ReLU)是最广泛使用的激活函数,因为它解决了梯度消失的问题。更早时候,Sigmoid 和 Tanh 函数都是最常用的激活函数。但是它们都会遇到梯度消失的问题,即在反向传播中,梯度在到达初始层的过程中,值在变小,趋向于 0。这不利于神经网络向具有更深层的结构扩展。ReLU 克服了这个问题,因此也就可以允许神经网络扩展到更深的层。



ReLU 激活函数

算法集成



如果单个神经网络不像你期待的那样准确,那么你可以创建一个神经网络集成,结合多个网络的预测能力。

你可以选择不同的神经网络架构,在不同部分的数据集上训练它们,然后使用它们的集合预测能力在测试集上达到较高的准确率。

假设你在构建一个猫狗分类器,0 代表猫,1 代表狗。当组合不同的猫狗分类器时,基于单个分类器之间的皮尔逊相关系数,集成算法的准确率有了提升。让我们看一个例子,拿 3 个模型来衡量它们各自的准确率:

Ground Truth: 1111111111
Classifier 1: 1111111100 = 80% accuracy
Classifier 2: 1111111100 = 80% accuracy
Classifier 3: 1011111100 = 70% accuracy

3 个模型的皮尔逊相关系数很高。所以,集成它们并不会提升准确率。如果我们使用多数投票的方式来组合这三个模型,会得到下面的结果:

Ensemble Result: 1111111100 = 80% accuracy
现在,让我们来看一组输出具备较低皮尔逊相关系数的模型:

Ground Truth: 1111111111
Classifier 1: 1111111100 = 80% accuracy
Classifier 2: 0111011101 = 70% accuracy
Classifier 3: 1000101111 = 60% accuracy

当我们组合这三个弱学习器的时候,会得到以下结果:

Ensemble Result: 1111111101 = 90% accuracy
正如你在上面所看到的,具有低皮尔逊相关系数的弱学习器的组合优于具有较高皮尔逊相关系数的学习器的组合。

缺乏数据



在使用了上述所有的技术以后,如果你的模型仍然没有在测试集上表现得更好一些,这可能是因为缺乏数据。

在很多用例中训练数据的数量是有限的。如果你无法收集更多的数据,那么你可以采取数据增强方法。



数据增强技术

如果你正在使用的是图像数据集,你可以通过剪切、翻转、随机裁剪等方法来增加新的图像。这可以为你正在训练的神经网络提供不同的样本。

结论

这些技术被认为是最佳实践经验,在提升模型学习特征的能力方面通常是有效的。希望对大家有所帮助。

End

上一篇:TensorFlow的使用之实现神经网络
下一篇:如何应用TFGAN快速实践生成对抗网络?
精选推荐
2017年:AI渗入云端
2017年:AI渗入云端

[2017-12-29]  云中的人工智能不仅仅是科技巨头的权力游戏,它也可能是人工智能领域的下一个飞跃。加利福尼亚州的Rigetti Computing公司刚刚使用其原型量子芯片之一在其云平台上运行机器学......

机器人灵巧手将成为智能机器人的下一个重大突破
机器人灵巧手将成为智能机器人的下一个重大突破

[2018-01-25]  计算机科学教授兼东北地区助手机器人实验室负责人罗伯特·普拉特(Robert Platt)说:“机器人手操作是下一步要解决的问题。想象一下,一个机器人可以在现实世界中用手去做事......

2023年服务机器人市场将超过250亿美元
2023年服务机器人市场将超过250亿美元

[2017-09-04]  全球服务机器人市场预计到2023年将达到250亿美元, 并在预测期内登记15% 的复合年增长率。短期中期回收期和投资回报率高 (ROI), 以及在教育和研究、临场感、防御、救援和安......

深度神经网络揭示了大脑喜欢看什么
深度神经网络揭示了大脑喜欢看什么

[2019-11-06]  爱吧机器人网编者按:近日,《自然-神经科学》发表了一篇论文,研究人员创建了一种深度人工神经网络,能够准确预测生物大脑对视觉刺激所产 ...

17世纪的莱布尼茨试图制造“思想机器”却被现实打脸
17世纪的莱布尼茨试图制造“思想机器”却被现实打脸

[2019-11-05]  莱布尼茨,德国哲学家、数学家、律师,历史上少见的通才1666年,德国博学家戈特弗里德·威廉·莱布尼茨(Gottfried Wilhelm Leibniz)发 ...

哈佛大学《自然》发表新驱动技术,让飞行机器人悬停且不受损伤
哈佛大学《自然》发表新驱动技术,让飞行机器人悬停且不受损伤

[2019-11-06]  哈佛大学研究人员发表在《自然》杂志上的一项最新研究,他们开发了一种由柔软的人造肌肉驱动的机器人蜜蜂(RoboBee),这种机器人在撞墙、 ...

麻省理工学院最新研究:优化软体机器人的控制和设计
麻省理工学院最新研究:优化软体机器人的控制和设计

[2019-11-24]  软体机器人属于一个新的领域,它可能在诸如外科手术等领域发挥重要作用(手术时的纳米机器人需要在人体内部移动而不损伤软组织)。软体机器 ...

什么是机器人学?机器人学简介
什么是机器人学?机器人学简介

[2017-12-14]  机器人学是工程学与科学的交叉学科,包括机械工程,电气工程,计算机科学等。机器人技术涉及机器人的设计、制造、操作和应用,以及用于控制、感官反馈和信息处理的计算机系统。...

本周栏目热点

用中文传话游戏理解RNN

[2018-05-31]  循环神经网络(RNN)是人工神经网络中非常流行的一个版本,其可以很好地处理序列数据类型。该数据类型指的是将一组数据点以特定顺序排列,从而使相关的数据点一个挨着一个,具......

[2016-11-20]   Hopfield网络是 神经网络 发展历史上的一个重要的里程碑。Hopfield 神经网络 是1982年美国物理学家J Hopfield首先提出来的,属于 ...

神经网络和模糊逻辑的工作流

[2016-11-20]   行业观察 神经网络 和模糊逻辑的工作流 null 来源:神州数码erp 发布时间: 2009-10-14 9:06:01 关键词: 工作流,协同,B2B,OA  以下 ...

[2016-11-20]   在感知器和线性 神经网络 的学习 算法 中,理想输出与实际输出之差被用来估计神经元连接权值的误差。当为解决线性不可分问题而引 ...

[2016-11-20]     黄希敏(陕西教育学院 陕西 西安 710061)  BP(Back Propagation) 神经网络 是一种多层前馈 神经网络 ,该网络的主要特点 ...