深层神经网络过拟合优化
来源:互联网 发布:淘宝月销量怎么变少了 编辑:程序博客网 时间:2024/05/17 08:09
本文来自Second-TOMORROW博客。
原文链接:http://www.second-tomorrow.com/2017/12/04/深层神经网络过拟合优化/
·过拟合(Overfitting)
深层神经网络模型的训练过程, 就是寻找一个模型能够很好的拟合现有的数据(训练集),同时能够很好的预测未来的数据。
在训练过程中由于模型建立的不恰当,往往所训练得到的模型能够对训练集的数据非常好的拟合,但是却在预测未来的数据上表现得非常差,这种情况就叫做过拟合(Overfitting)。
为了训练出高效可用的深层神经网络模型,在训练时必须要避免过拟合的现象。过拟合现象的优化方法通常有三种,分别是:正则化(Regulation),扩增训练集(Data augmentation)以及提前停止迭代(Early stopping) 。
·正则化(Regulation)
正则化方法是指在进行损失函数(cost function)优化时,在损失函数后面加上一个正则项。
正则化方法中目前常用的有两种方法:L2正则化和Dropout正则化。
L2正则
L2正则是基于L2范数,即在函数后面加上参数的L2范数的平方,即:
其中是原损失函数,m表示数据集的大小。使用下式对参数进行更新:
其中,因此知道w在进行权重衰减。在神经网络中,当一个神经元的权重越小时,那么该神经元在神经网络中起到的作用就越小,当权重为0时,那么该神经元就可以被神经网络剔除。而过拟合现象出现的原因之一就是,模型复杂度过高。那么,也就是说L2正则化后,权重会衰减,从而降低了模型的复杂度,从而一定程度上避免对数据过拟合。
随机失活(Dropout)正则
其实Dropout的思路与L2的思路是一致的,都是降低模型的复杂度,从而避免过拟合。只是实现的方法有所不同。
Dropout的做法是,在训练过程中,按照一定的概率随机的忽略掉一些神经元,使其失活,从而就降低了模型的复杂度,提高了泛化的能力,一定程度上避免了过拟合。
常用的实现方法是Inverted Dropout。
使用Dropout的小技巧
·1、通常丢弃率控制在20%~50%比较好,可以从20%开始尝试。如果比例太低则起不到效果,比例太高则会导致模型的欠学习。
·2、在大的网络模型上应用。当dropout用在较大的网络模型时更有可能得到效果的提升,模型有更多的机会学习到多种独立的表征。
·3、在输入层(可见层)和隐藏层都使用dropout。在每层都应用dropout被证明会取得好的效果。
·4、增加学习率和冲量。把学习率扩大10~100倍,冲量值调高到0.9~0.99.
·5、限制网络模型的权重。大的学习率往往导致大的权重值。对网络的权重值做最大范数正则化等方法被证明会提升效果。
·扩增训练集(Data augmentation)
“有时候不是因为算法好赢了,而是因为拥有更多的数据才赢了。”
特别在深度学习中,更多的训练数据,意味着可以训练更深的网络,训练出更好的模型。
然而很多时候,收集更多的数据并不那么容易,要付出很大的代价。那么,为了得到更多的训练数据,我们可以在原有的数据上做一些改动产生新的可用数据,以图片数据为例,将图片水平翻转,放大或者选择一个小角度都可以得到新的图片数据用于训练。
虽然这样的效果没有全新的数据更加好,但是付出的代价却是接近于零的。所以,很多情况下,这是一个非常好的数据扩增方法。
·提前停止迭代(Early stopping)
在训练过程中绘制训练集误差函数的同时也绘制交叉验证集的误差。从下面的图可以看出,训练集误差随着迭代次数增加而不断降低,而验证集误差却是先降低后上升。很明显,在这个模型中,我们希望验证集误差和训练集误差都尽量的小,那么最优点就是在验证集误差的最低点,训练应该在该点处停止,也就是选取该点处的权重值作为神经网络的参数。
但是这种优化方法有很大的缺点。因为提前停止训练,也就是停止优化训练集的误差,通常情况下,在验证集误差达到最小值时,训练集误差还未处于一个足够小的值。从而使得该模型虽然没有出现过拟合现象,却是出现了欠拟合的情况。当然,这种优化方法还是有着表现优异的使用场景的。
参考:http://blog.csdn.net/u010159842/article/details/54138157
本文来自Second-TOMORROW博客。
原文链接:http://www.second-tomorrow.com/2017/12/04/深层神经网络过拟合优化/
- 深层神经网络过拟合优化
- 深层神经网络——过拟合问题
- 神经网络简介-防止过拟合
- [DeeplearningAI笔记]改善深层神经网络1.4_1.8深度学习实用层面_正则化Regularization与改善过拟合
- [DeeplearningAI笔记]改善深层神经网络1.1_1.3深度学习实用层面_偏差/方差/欠拟合/过拟合/训练集/验证集/测试集
- 神经网络优化方法(避免过拟合,提高模型泛化性)
- Dropout Learning - 防止深度神经网络过拟合
- BP神经网络中的过拟合现象
- 关于神经网络中过拟合的问题
- 神经网络如何防止过拟合(总结)
- 卷积神经网络减小过拟合方法
- 神经网络之过拟合(附代码)
- DeepLearing学习笔记-改善深层神经网络(第三周- 将batch-norm拟合进神经网络)
- 模型优化中的过拟合与欠拟合
- 深层神经网络
- 卷积神经网络(CNN)防止过拟合的方法
- 机器学习--神经网络算法系列--过拟合(overfitting)
- 卷积神经网络(CNN)防止过拟合的方法
- SimpleDateFormat结合对象池化工具commons-pool
- 51Nod-2020-排序相减
- python 学习之路(字典)
- 解决多继承三角问题实例(SofaBed)
- ActiveMQ安装
- 深层神经网络过拟合优化
- 图像处理中的数学原理详解(Part1 总纲)
- XGBoost 安装失败最后尝试的一种方法
- Extractive Summarization using Continuous Vector Space Models
- Jzoj4384 Hashit
- Android图片加载框架最全解析(七),实现带进度的Glide图片加载功能
- 【数位DP+莫比乌斯函数】2017计蒜之道复赛A[阿里云秘钥池]题解
- CUDA学习笔记(3) NVRTC编译库
- Matlab 绘图小笔记