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

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

3天内不再提示

深层神经网络模型的训练:过拟合优化

电子设计 来源:TOMORROW 星辰 作者:TOMORROW 星辰 2020-12-02 14:17 次阅读

·过拟合(Overfitting)

深层神经网络模型的训练过程,就是寻找一个模型能够很好的拟合现有的数据(训练集),同时能够很好的预测未来的数据。

在训练过程中由于模型建立的不恰当,往往所训练得到的模型能够对训练集的数据非常好的拟合,但是却在预测未来的数据上表现得非常差,这种情况就叫做过拟合(Overfitting)。

为了训练出高效可用的深层神经网络模型,在训练时必须要避免过拟合的现象。过拟合现象的优化方法通常有三种,分别是:正则化(Regulation),扩增训练集(Data augmentation)以及提前停止迭代(Early stopping)。

·正则化(Regulation)

正则化方法是指在进行损失函数(costfunction)优化时,在损失函数后面加上一个正则项。

正则化方法中目前常用的有两种方法:L2 正则化和 Dropout 正则化。

L2 正则

L2 正则是基于 L2 范数,即在函数后面加上参数的 L2 范数的平方,即:

其中J0是原损失函数,m 表示数据集的大小。使用下式对参数进行更新:

其中,因此知道 w 在进行权重衰减。在神经网络中,当一个神经元的权重越小时,那么该神经元在神经网络中起到的作用就越小,当权重为 0 时,那么该神经元就可以被神经网络剔除。而过拟合现象出现的原因之一就是,模型复杂度过高。那么,也就是说 L2 正则化后,权重会衰减,从而降低了模型的复杂度,从而一定程度上避免对数据过拟合。

随机失活(Dropout)正则

其实 Dropout 的思路与 L2 的思路是一致的,都是降低模型的复杂度,从而避免过拟合。只是实现的方法有所不同。

Dropout 的做法是,在训练过程中,按照一定的概率随机的忽略掉一些神经元,使其失活,从而就降低了模型的复杂度,提高了泛化的能力,一定程度上避免了过拟合。

常用的实现方法是 InvertedDropout。

使用 Dropout 的小技巧

·1、通常丢弃率控制在 20%~50%比较好,可以从 20%开始尝试。如果比例太低则起不到效果,比例太高则会导致模型的欠学习。

·2、在大的网络模型上应用。当 dropout 用在较大的网络模型时更有可能得到效果的提升,模型有更多的机会学习到多种独立的表征。

·3、在输入层(可见层)和隐藏层都使用 dropout。在每层都应用 dropout 被证明会取得好的效果。

·4、增加学习率和冲量。把学习率扩大 10~100 倍,冲量值调高到 0.9~0.99.

·5、限制网络模型的权重。大的学习率往往导致大的权重值。对网络的权重值做最大范数正则化等方法被证明会提升效果。

·扩增训练集(Data augmentation)

“有时候不是因为算法好赢了,而是因为拥有更多的数据才赢了。”

特别在深度学习中,更多的训练数据,意味着可以训练更深的网络,训练出更好的模型。

然而很多时候,收集更多的数据并不那么容易,要付出很大的代价。那么,为了得到更多的训练数据,我们可以在原有的数据上做一些改动产生新的可用数据,以图片数据为例,将图片水平翻转,放大或者选择一个小角度都可以得到新的图片数据用于训练。

虽然这样的效果没有全新的数据更加好,但是付出的代价却是接近于零的。所以,很多情况下,这是一个非常好的数据扩增方法。

·提前停止迭代(Early stopping)

在训练过程中绘制训练集误差函数的同时也绘制交叉验证集的误差。从下面的图可以看出,训练集误差随着迭代次数增加而不断降低,而验证集误差却是先降低后上升。很明显,在这个模型中,我们希望验证集误差和训练集误差都尽量的小,那么最优点就是在验证集误差的最低点,训练应该在该点处停止,也就是选取该点处的权重值作为神经网络的参数。

但是这种优化方法有很大的缺点。因为提前停止训练,也就是停止优化训练集的误差,通常情况下,在验证集误差达到最小值时,训练集误差还未处于一个足够小的值。从而使得该模型虽然没有出现过拟合现象,却是出现了欠拟合的情况。当然,这种优化方法还是有着表现优异的使用场景的。
编辑:hfy

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

    关注

    42

    文章

    4759

    浏览量

    100456
收藏 人收藏

    评论

    相关推荐

    如何使用经过训练神经网络模型

    使用经过训练神经网络模型是一个涉及多个步骤的过程,包括数据准备、模型加载、预测执行以及后续优化等。
    的头像 发表于 07-12 11:43 785次阅读

    神经网络优化器有哪些

    神经网络优化器是深度学习中用于调整网络参数以最小化损失函数的重要工具。这些优化器通过不同的策略来更新网络权重,以提高
    的头像 发表于 07-11 16:33 475次阅读

    神经网络辨识模型具有什么特点

    神经网络辨识模型是一种基于人工神经网络的系统辨识方法,它具有以下特点: 非线性映射能力 :神经网络能够处理非线性问题,可以很好地拟合复杂的非
    的头像 发表于 07-11 11:12 380次阅读

    怎么对神经网络重新训练

    重新训练神经网络是一个复杂的过程,涉及到多个步骤和考虑因素。 引言 神经网络是一种强大的机器学习模型,广泛应用于图像识别、自然语言处理、语音识别等领域。然而,随着时间的推移,数据分布可
    的头像 发表于 07-11 10:25 407次阅读

    pytorch中有神经网络模型

    当然,PyTorch是一个广泛使用的深度学习框架,它提供了许多预训练神经网络模型。 PyTorch中的神经网络模型 1. 引言 深度学习是
    的头像 发表于 07-11 09:59 609次阅读

    PyTorch神经网络模型构建过程

    PyTorch,作为一个广泛使用的开源深度学习库,提供了丰富的工具和模块,帮助开发者构建、训练和部署神经网络模型。在神经网络模型中,输出层是
    的头像 发表于 07-10 14:57 426次阅读

    人工神经网络模型训练的基本原理

    图像识别、语音识别、自然语言处理等。本文将介绍人工神经网络模型训练的基本原理。 1. 神经网络的基本概念 1.1 神经
    的头像 发表于 07-05 09:16 539次阅读

    神经网络拟合的误差怎么分析

    神经网络拟合误差分析是一个复杂且深入的话题,涉及到多个方面,需要从数据质量、模型结构、训练过程和正则化方法等多个角度进行综合考虑。 引言 神经网络
    的头像 发表于 07-03 10:36 470次阅读

    卷积神经网络训练的是什么

    训练过程以及应用场景。 1. 卷积神经网络的基本概念 1.1 卷积神经网络的定义 卷积神经网络是一种前馈深度学习模型,其核心思想是利用卷积
    的头像 发表于 07-03 09:15 331次阅读

    卷积神经网络和bp神经网络的区别

    不同的神经网络模型,它们在结构、原理、应用等方面都存在一定的差异。本文将从多个方面对这两种神经网络进行详细的比较和分析。 引言 神经网络是一种模拟人脑
    的头像 发表于 07-02 14:24 2615次阅读

    数学建模神经网络模型的优缺点有哪些

    、预测分析等。然而,神经网络模型也存在一些优缺点。本文将详细分析神经网络模型的优缺点。 一、优点 强大的非线性拟合能力
    的头像 发表于 07-02 11:36 780次阅读

    如何训练优化神经网络

    神经网络是人工智能领域的重要分支,广泛应用于图像识别、自然语言处理、语音识别等多个领域。然而,要使神经网络在实际应用中取得良好效果,必须进行有效的训练优化。本文将从
    的头像 发表于 07-01 14:14 381次阅读

    助听器降噪神经网络模型

    抑制任务是语音增强领域的一个重要学科, 随着深度神经网络的兴起,提出了几种基于深度模型的音频处理新方法[1,2,3,4]。然而,这些通常是为离线处理而开发的,不需要考虑实时性。当使用神经网络
    发表于 05-11 17:15

    Kaggle知识点:训练神经网络的7个技巧

    科学神经网络模型使用随机梯度下降进行训练模型权重使用反向传播算法进行更新。通过训练神经网络
    的头像 发表于 12-30 08:27 626次阅读
    Kaggle知识点:<b class='flag-5'>训练</b><b class='flag-5'>神经网络</b>的7个技巧

    如何训练这些神经网络来解决问题?

    神经网络建模中,经常会出现关于神经网络应该有多复杂的问题,即它应该有多少层,或者它的滤波器矩阵应该有多大。这个问题没有简单的答案。与此相关,讨论网络
    发表于 11-24 15:35 689次阅读
    如何<b class='flag-5'>训练</b>这些<b class='flag-5'>神经网络</b>来解决问题?