热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

(深度学习快速入门)第三章第三节5:深度学习必备组件之欠拟合和过拟合

文章目录一:什么是欠拟合和过拟合二:正则化技术(1)加入正则项①:L1正则项②:L2正则项&#x


文章目录


  • 一:什么是欠拟合和过拟合
  • 二:正则化技术
    • (1)加入正则项
      • ①:L1正则项
      • ②:L2正则项

    • (2)Dropout(暂退法)



我们训练模型的目的是为了让模型真正发现一种泛化模式,而不是说只是简简单单的记住了训练数据,只有这样,模型在遇到全新的数据时,也能成功预测


一:什么是欠拟合和过拟合

欠拟合(underfitting):训练误差和验证误差都很严重,他们之间仅有一点差距。这意味着,模型可能过于简单,也即表达能力差

过拟合(overfitting)(最为常见):模型的训练误差要明显低于验证误差。当然注意,即便是最好的预测模型,它在训练数据上的表现往往⽐在验证数据上好得多。最终,我们通常更关⼼验证误差,⽽不是训练误差和验证误差之间的差距

在这里插入图片描述

前面也说过,在进行模型选择时,不能一味地认为训练误差越小的模型越好,因为此时可能已经到达过拟合状态,此时它在测试数据上误差反而会变大,所以要选择损失函数刚刚收敛时的模型作为最佳模型

在这里插入图片描述


二:正则化技术

正则化:正则化旨在减少泛化误差而不是训练误差,也就是说,正则化的目的是为了防止模型过拟合,降低泛化误差,从而提高泛化能力

正则化技术在深度学习中主要用于了抑制过拟合,主要有四种


  • 加正则项(惩罚项):使用最为广泛,通常只对权重做惩罚而不对偏置做正则惩罚,最常用的是L1和L2
  • Dropout(暂退法)
  • 数据增广
  • 早停法:配合日志

(1)加入正则项


①:L1正则项

L1正则项 在原损失函数后面加入L1范数(非零元素的绝对值之和)








J



︿



(


ω


;


X


,


y


)


=


J


(


ω


;


X


,


y


)


+


α








ω









1




\mathop{J}\limits^{︿}(\omega;X,y) = J(\omega;X, y) + \alpha||\omega||_{1}


J︿(ω;X,y)=J(ω;X,y)+α∣∣ω1

计算梯度后,




ω



\omega


ω
的更新公式为






ω





ω





ξ


α


s


i


g


n


(


ω


)





ξ






ω



J


(


ω


;


X


,


y


)



\omega \leftarrow \omega - \xi\alpha sign(\omega)-\xi \nabla_{\omega}J(\omega;X,y)


ωωξαsign(ω)ξωJ(ω;X,y)

可以看出,L1正则化会使得




@


w



@w


@w
向0靠近,使网络中的权重尽可能为0,使网络中某些神经元失效,以此防止过拟合







  • ω


    >


    0



    \omega>0


    ω>0
    时,梯度下降时更新后的




    ω



    \omega


    ω
    变小





  • ω


    >


    <


    0



    \omega><0


    ω><0
    时&#xff0c;梯度下降时更新后的




    ω



    \omega


    ω
    变大

特点


  • 特征选择器
  • 模型稀疏性

②&#xff1a;L2正则项

L2正则项&#xff1a; 在原损失函数后面加入L2范数&#xff08;向量元素的平方和再开平方&#xff09;








J



︿



(


ω


;


X


,


y


)


&#61;


J


(


ω


;


X


,


y


)


&#43;



α


2




ω


T



ω



\mathop{J}\limits^{︿}(\omega ;X,y) &#61; J(\omega;X, y)&#43;\frac{\alpha}{2}\omega^{T}\omega


J︿(ω;X,y)&#61;J(ω;X,y)&#43;2αωTω

**计算梯度后&#xff0c;




ω



\omega


ω
的更新公式为






ω





(


1





ξ


α


)


ω





ξ






ω



J


(


ω


;


X


,


y


)



\omega \leftarrow (1-\xi\alpha)\omega - \xi \nabla_{\omega}J(\omega;X, y)


ω(1ξα)ωξωJ(ω;X,y)

可以看到&#xff0c;在每次执行梯度更新前&#xff0c;先会收缩权重向量&#xff08;权重衰减&#xff09;&#xff0c;因此L2正则化可以让权重变得更小

特点


  • 连续可导
  • 易于训练

&#xff08;2&#xff09;Dropout&#xff08;暂退法&#xff09;

Dropout&#xff08;暂退法&#xff09;&#xff1a;对于Dropout算法&#xff0c;在模型训练时&#xff0c;它会以下概率丢弃神经元

在这里插入图片描述

在这里插入图片描述







推荐阅读
  • 本文详细记录了一位求职者在搜狐进行的两次面试经历,包括面试的具体时间、面试流程、技术问题及个人感受。通过本次面试,作者不仅获得了宝贵的经验,还成功拿到了搜狐的录用通知。 ... [详细]
  • 前端技术分享——利用Canvas绘制鼠标轨迹
    作为一名前端开发者,我已经积累了Vue、React、正则表达式、算法以及小程序等方面的技能,但Canvas一直是我的盲区。因此,我在2018年为自己设定了一个新的学习目标:掌握Canvas,特别是如何使用它来创建CSS3难以实现的动态效果。 ... [详细]
  • 探索CNN的可视化技术
    神经网络的可视化在理论学习与实践应用中扮演着至关重要的角色。本文深入探讨了三种有效的CNN(卷积神经网络)可视化方法,旨在帮助读者更好地理解和优化模型。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • 使用TabActivity实现Android顶部选项卡功能
    本文介绍如何通过继承TabActivity来创建Android应用中的顶部选项卡。通过简单的步骤,您可以轻松地添加多个选项卡,并实现基本的界面切换功能。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 本周三大青年学术分享会即将开启
    由雷锋网旗下的AI研习社主办,旨在促进AI领域的知识共享和技术交流。通过邀请来自学术界和工业界的专家进行在线分享,活动致力于搭建一个连接理论与实践的平台。 ... [详细]
  • 知识图谱与图神经网络在金融科技中的应用探讨
    本文详细介绍了融慧金科AI Lab负责人张凯博士在2020爱分析·中国人工智能高峰论坛上的演讲,探讨了知识图谱与图神经网络模型如何在金融科技领域发挥重要作用。 ... [详细]
  • 龙蜥社区开发者访谈:技术生涯的三次蜕变 | 第3期
    龙蜥社区的开发者们通过自己的实践和经验,推动着开源技术的发展。本期「龙蜥开发者说」聚焦于一位资深开发者的三次技术转型,分享他在龙蜥社区的成长故事。 ... [详细]
  • 解决PHP项目在服务器无法抓取远程网页内容的问题
    本文探讨了在使用PHP进行后端开发时,遇到的一个常见问题:即在本地环境中能够正常通过CURL获取远程网页内容,但在服务器上却无法实现。我们将分析可能的原因并提供解决方案。 ... [详细]
  • 本文详细探讨了Spring框架中遇到的NoSuchBeanDefinitionException异常,具体涉及com.thinkplatform.dao.UserLogDao Bean未定义的问题,并提供了相应的解决方案。 ... [详细]
  • 本打算教一步步实现koa-router,因为要解释的太多了,所以先简化成mini版本,从实现部分功能到阅读源码,希望能让你好理解一些。希望你之前有读过koa源码,没有的话,给你链接 ... [详细]
  • 岭回归及其应用
    本文介绍了岭回归的基本原理,并通过Python中的sklearn库实现了岭回归模型。岭回归通过在代价函数中加入L2正则项,有效解决了多重共线性问题。 ... [详细]
  • PHP 5.5.31 和 PHP 5.6.17 安全更新发布
    PHP 5.5.31 和 PHP 5.6.17 已正式发布,主要包含多个安全修复。强烈建议所有用户尽快升级至最新版本以确保系统安全。 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
author-avatar
grafopenshaw_460
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有