深度学习笔记 4 过拟合+欠拟合+解决方案

2023-11-07

目录

1. 偏差与方差

2. 产生原因

3.解决欠拟合(高偏差)的方法

3.1 模型复杂化

3.2 增加更多的特征

3.3 调整参数和超参数

3.4 增加训练数据(效果不明显)

3.5 降低正则化约束

4. 解决过拟合(高方差)的方法

 4.1 增加训练数据数

4.2 使用正则化约束

4.3 批归一化 BN

4.4 使用Dropout

4.5 提前结束训练

4.6 减少特征数

4.7 调整参数和超参数

4.8 降低模型的复杂度

5.正则化 

 5.1 L1、L2正则化(Regularization)

 5.2 正则化为什么能够防止过拟合

 6 Droupout丢弃法

7 数据增强

7.1 线性变换

7.2 标签平滑

 8 对抗训练


1. 偏差与方差

偏差:度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力

方差:度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响

噪声:表达了在当前任务上任何学习算法所能够达到的期望泛化误差的下界,即刻画了学习问题本身难度。

1、训练集的错误率较小,而验证集/测试集的错误率较大,说明模型存在较大方差,可能出现了过拟合

2、训练集和测试集的错误率都较大,且两者相近,说明模型存在较大偏差,可能出现了欠拟合

3、训练集和测试集的错误率都较小,且两者相近,说明方差和偏差都较小,这个模型效果比较好。

2. 产生原因

欠拟合原因:训练样本数量少;模型复杂度过低;参数还未收敛就停止循环。

解决办法:增加样本数量;增加模型参数,提高模型复杂度;增加循环次数;查看是否是学习率过高导致模型无法收敛。

过拟合原因:数据噪声太大;特征太多;模型太复杂。

解决办法:清洗数据;减少模型参数,降低模型复杂度;增加惩罚因子(正则化),保留所有的特征,但是减少参数的大小(magnitude)。

3.解决欠拟合(高偏差)的方法

3.1 模型复杂化

对同一个算法复杂化。例如回归模型添加更多的高次项,增加决策树的深度,增加神经网络的隐藏层数和隐藏单元数等

弃用原来的算法,使用一个更加复杂的算法或模型。例如用神经网络来替代线性回归,用随机森林来代替决策树等。

3.2 增加更多的特征

使输入数据具有更强的表达能力,特征挖掘十分重要,尤其是具有强表达能力的特征,往往可以抵过大量的弱表达能力的特征。

3.3 调整参数和超参数

超参数包括:神经网络中:学习率、学习衰减率、隐藏层数、隐藏层的单元数、Adam优化算法中的β1和β2参数、batch_size数值等。

其他算法中:随机森林的树数量,k-means中的cluster数,正则化参数λ等。

3.4 增加训练数据(效果不明显)

欠拟合本来就是模型的学习能力不足,增加再多的数据给它训练它也没能力学习好

3.5 降低正则化约束

正则化约束是为了防止模型过拟合,如果模型压根不存在过拟合而是欠拟合了,那么就考虑是否降低正则化参数λ或者直接去除正则化项

4. 解决过拟合(高方差)的方法

 4.1 增加训练数据数

发生过拟合最常见的现象就是数据量太少而模型太复杂

过拟合是由于模型学习到了数据的一些噪声特征导致,增加训练数据的量能够减少噪声的影响,让模型更多地学习数据的一般特征。

4.2 使用正则化约束

在代价函数后面添加正则化项,可以避免训练出来的参数过大从而使模型过拟合。使用正则化缓解过拟合的手段广泛应用,不论是在线性回归还是在神经网络的梯度下降计算过程中,都应用到了正则化的方法。

4.3 批归一化 BN

 批量归一化(Batch Normalization,BN)方法,即在模型每次随机梯度下降训练时,通过mini-batch来对每一层卷积的输出做规范化操作,使得结果(各个维度)的均值为0方差为1

4.4 使用Dropout

这一方法只适用于神经网络中,即按一定的比例去除隐藏层的神经单元,使神经网络的结构简单化

4.5 提前结束训练

即earlystopping,在模型迭代训练时候记录训练精度(或损失)和验证精度(或损失),倘若模型训练的效果不再提高,比如训练误差一直在降低但是验证误差却不再降低甚至上升,这时候便可以结束模型训练了。

4.6 减少特征数

欠拟合需要增加特征数,那么过拟合自然就要减少特征数。去除那些非共性特征,可以提高模型的泛化能力。

4.7 调整参数和超参数

4.8 降低模型的复杂度

欠拟合要增加模型的复杂度,那么过拟合正好反过来

5.正则化 

 5.1 L1、L2正则化(Regularization)

在成本函数中加入一个正则化项(惩罚项),惩罚模型的复杂度,防止网络过拟合。简单的模型比复杂的泛化能力好。

网络越大,训练数据学习的速度就越快(使训练损失很快降低),但是也更容易过拟合(导致训练和验证损失之间的巨大差异)。

逻辑回归的参数W数量根据特征的数量而定,那么正则化如下

L1 正则化是权重向量 w 中各个元素的绝对值之和,L1 正则化增加了所有权重 w 参数的绝对值之和逼迫更多 w 为零,也就是变稀疏,稀疏规则的一个关键原因在于它能实现特征的自动选择。L1 正则化实现特征自动选择,它会学习地去掉这些无用的特征,也就是把这些特征对应的权重置为 0。

L2 正则化是权重向量w中各个元素的平方和然后再求平方根。逼迫所有w尽可能趋向零但不为零(L2 的导数趋于零)

L1和L2区别:

L1是模型各个参数的绝对值之和;L2是模型各个参数的平方和的开方值。

L1会趋向于产生少量的特征,而其他的特征都是0;L2会选择更多的特征,这些特征都会接近于0。

 5.2 正则化为什么能够防止过拟合

正则化因子设置的足够大的情况下,为了使成本函数最小化,权重矩阵 W 就会被设置为接近于 0 的值,直观上相当于消除了很多神经元的影响,那么大的神经网络就会变成一个较小的网络。

当λ增大时,偏差增大,方差减小

 6 Droupout丢弃法

Droupout论文地址:http://jmlr.org/papers/volume15/srivastava14a.old/srivastava14a.pdf

Droupout:随机的对神经网络每一层进行丢弃部分神经元操作

对于网络的每一层会进行设置保留概率,即keep_prob。假设keep_prob为0.8,那么也就是在每一层所有神经元有20% 的概率直接失效,可以理解为0.

加入了 dropout 后,输入的特征都存在被随机清除的可能,所以该神经元不会再特别依赖于任何一个输入特征,也就是不会给任何一个输入特征设置太大的权重。 

7 数据增强

数据增强:指通过剪切、旋转/反射/翻转变换、缩放变换、平移变换、尺度变换、对比度变换、噪声扰动、颜色变换等一种或多种组合数据增强变换的方式来增加数据集的大小。

7.1 线性变换

常见的图片数据集增强方法

将训练图像沿着每个方向平移几个像素产生新的图像。

对训练图像进行旋转、翻转或者缩放

对训练图像进行随机裁剪(也可以被认为是预处理步骤)

对训练图像进行颜色抖动:调整饱和度、调整亮度、调整对比度、调整锐度。

对比度:图像画面的明暗反差程度。对比度越高,则图片亮的地方更亮,暗的地方越暗。

亮度:图像的明暗程度。亮度越高,则图像整体越亮。

饱和度:图像颜色种类的多少。饱和度越高,则图像的颜色种类越多,图像越鲜艳。 

锐度:图像的边缘轮廓的锐利程度。锐度越高,则图像的边缘越清晰。

7.2 标签平滑

假设训练数据集中有一些样本的标签是被错误标注的,那么最小化这些样本上的损失函数会导致过拟合.一种改善的正则化方法是标签平滑(Label Smoothing),即在输出标签中添加噪声来避免模型过拟合

 8 对抗训练

对输入点 ,我们搜寻它的附近的一个人眼看起来没有区别、网络预测结果差异很大的样本;输入点来自于训练集,称作原始样本;而是人工构造的,称作对抗样本。

将生成的对抗样本加入到训练集中去,做一个数据增强,让模型在训练的时候就先学习一遍对抗样本。

对抗训练通过鼓励网络在训练数据附近的局部区域保持稳定来限制函数对输入扰动的高度敏感性

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度学习笔记 4 过拟合+欠拟合+解决方案 的相关文章

  • 深度好文:最全的大模型 RAG 技术概览

    本文是对检索增强生成 Retrieval Augmented Generation RAG 技术和算法的全面研究 对各种方法进行了系统性的梳理 涉及了 RAG 流程中的数据拆分 向量化 查询重写 查询路由等等 在做 RAG 的小伙伴一定知道
  • 用通俗易懂的方式讲解:图解 Transformer 架构

    文章目录 用通俗易懂方式讲解系列 1 导语 2 正文开始 现在我们开始 编码 从宏观视角看自注意力机制 从微观视角看自注意力机制 通过矩阵运算实现自注意力机制
  • 【EI复现】基于深度强化学习的微能源网能量管理与优化策略研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 有 无策略奖励 2 2 训练结果1
  • 蒙特卡洛在发电系统中的应用(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 问CHAT很繁琐的问题会不会有答案呢?

    问CHAT 什么已有的基于极值理论的极端温度重现期主要针对极端高温事件 对极端低温事件研究较少 CHAT 回复 为这主要可能是由于以下几个原因 1 气候变化与全球变暖 当前 全球变暖和气候变化的问题备受关注 这导致科研者更加关注极端高温事件
  • socket网络编程几大模型?看看CHAT是如何回复的?

    CHAT回复 网络编程中常见的有以下几种模型 1 阻塞I O模型 Blocking I O 传统的同步I O模型 一次只处理一个请求 2 非阻塞I O模型 Non blocking I O 应用程序轮询调用socket相关函数检查请求 不需
  • 利用CHAT写实验结论

    问CHAT 通过观察放置在玻璃表面上的单个水滴 人们可以观察到水滴充当成像系统 探究这样一个透镜的放大倍数和分辨率 CHAT回复 实验报告标题 利用玻璃表面的单一水滴观察成像系统的放大倍数和分辨率 一 实验目的 通过对比和测量 研究和探索玻
  • 什么是充放电振子理论?

    CHAT回复 充放电振子模型 Charging Reversal Oscillator Model 是一种解释ENSO现象的理论模型 这个模型把ENSO现象比喻成一个 热力学振荡系统 在这个模型中 ENSO现象由三个组成部分 充电 Char
  • 基于java的ssh医院在线挂号系统设计与实现

    基于java的ssh医院在线挂号系统设计与实现 I 引言 A 研究背景和动机 基于Java的SSH医院在线挂号系统设计与实现的研究背景和动机 随着信息技术的迅速发展和应用 医院在线挂号系统已成为医院管理的重要组成部分 传统的挂号方式存在许多
  • 利用CHAT上传文件的操作

    问CHAT autox js ui 上传框 CHAT回复 上传文件的操作如果是在应用界面中的话 由于Android对于文件权限的限制 你可能不能直接模拟点击选择文件 一般来说有两种常见的解决方案 一种是使用intent来模拟发送一个文件路径
  • 扬帆证券:三只松鼠去年扣非净利预增超1.4倍

    在 高端性价比 战略驱动下 三只松鼠 300783 重拾增势 1月15日晚间 三只松鼠发布成绩预告 预计2023年度净赢利为2亿元至2 2亿元 同比增加54 97 至70 47 扣非后净赢利为1亿元至1 1亿元 同比增速达146 9 至17
  • 无人机视角、多模态、模型剪枝、国产AI芯片部署

    无人机视角 多模态 模型剪枝 国产AI芯片部署是当前无人机技术领域的重要研究方向 其原理和应用价值在以下几个方面进行详细讲述 一 无人机视角 无人机视角是指在无人机上搭载摄像头等设备 通过航拍图像获取环境信息 并进行图像处理和分析 这种技术
  • 台积电再被坑,2纳米光刻机优先给Intel和三星,美国太霸道了

    外媒指出今年ASML的10台2纳米光刻机分配已经基本确定了 Intel拿到6台 三星获得3台 台积电只能得到一台 考虑到美国对ASML的强大影响力 外媒的这些消息应该有较高的可信性 Intel在先进工艺制程方面 自从2014年量产14纳米之
  • 手把手教你用 Stable Diffusion 写好提示词

    Stable Diffusion 技术把 AI 图像生成提高到了一个全新高度 文生图 Text to image 生成质量很大程度上取决于你的提示词 Prompt 好不好 前面文章写了一篇文章 一份保姆级的 Stable Diffusion
  • 做大模型也有1年多了,聊聊这段时间的感悟!

    自ChatGPT问世以来 做大模型也有1年多了 今天给大家分享这一年后的感悟 过去一年应该是AI圈最万千瞩目的一年了 大家对大模型 OpenAI ChatGPT AI Native Agent这些词投入了太多的关注 以至于有一年的时间好像经
  • AI-基于Langchain-Chatchat和chatglm3-6b部署私有本地知识库

    目录 参考 概述 部署安装 环境准备 原理和流程图 一键启动 启动WebAPI 服务 启动WebUI服务 Docker部署
  • 开始弃用NeRF?为什么Gaussian Splatting在自动驾驶场景如此受欢迎?(浙江大学最新)...

    点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 今天自动驾驶之心为大家分享浙大刚刚出炉的3D Gaussian Splatting综述 文章首先回顾了3D Gaussian的原理和应用 借着全面比较了3D GS在静态
  • 15天学会Python深度学习,我是如何办到的?

    陆陆续续有同学向我们咨询 Python编程如何上手 深度学习怎么学习 如果有人能手把手 一对一帮帮我就好了 我们非常理解初学者的茫然和困惑 大量视频 书籍 广告干扰了大家的判断 学习Python和人工智能 成为内行人不难 为此 我们推出了
  • 考虑光伏出力利用率的电动汽车充电站能量调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 自动驾驶离不开的仿真!Carla-Autoware联合仿真全栈教程

    随着自动驾驶技术的不断发展 研发技术人员开始面对一系列复杂挑战 特别是在确保系统安全性 处理复杂交通场景以及优化算法性能等方面 这些挑战中 尤其突出的是所谓的 长尾问题 即那些在实际道路测试中难以遇到的罕见或异常驾驶情况 这些问题暴露了实车

随机推荐

  • Python Selenium 基础入门

    本内容主要介绍 Python Selenium 的基础使用方法 1 Python Selenium 简介和环境配置 1 1 Selenium 简介 Selenium 是一个 Web 的自动化测试工具 最初是为网站自动化测试而开发的 Sele
  • matlab如何读取一个文件夹下所有文件,Matlab获取一个文件夹下所有文件

    使用Matlab可以使用dir函数获取指定文件夹下的所有文件名 具体操作如下 首先进入指定的文件夹 例如 folder C Users example Documents 替换为你自己的文件夹路径 cd folder 进入指定文件夹中 然后
  • 10亿级数据量的系统性能优化设计,被惊艳到了!

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 这篇文章 我们来聊一聊在十亿级的大数据量技术挑战下 世界上最优秀的大数据系统之一的Hadoop是如何将系统性能提升数十倍的 首先一起来画个图 回顾一下Hadoop H
  • 水面无人艇局部危险避障算法研究 参考文献

    水面无人艇局部危险避障算法研究 Local Risk Obstacle Avoidance Algorithm of USV 博主 的硕士毕业论文 参考文献 1 Manley J E Unmanned surface vehicles 15
  • Android关于手机和模拟器的区分

    在网上试了很多区分方法感觉都被模拟器破了 只能说一句模拟器太强大了 当我快要放弃的时候 突然想到个方法 方法分为获取手机的短信 获取手机的图片 获取手机的通讯录 一个正常的用户不可能没有这些信息 当然这些需要用户同意授权 所以当这些没用没授
  • 如何利用producer向Kafka发送信息(基于java客户端(Kafka-clients))

    继上一篇Kafka安装以及环境准备文章后 这一小节是讲解如何利用Java客户端kafka clients库进行消息的发送 工程结构 maven工程 maven依赖
  • C++递归算法之2的幂次方表示

    2的幂次方表示 任何一个正整数都可以用2的幂次方表示 例如 137 27 23 20 同时约定方次用括号来表示 即ab可表示为a b 由此可知 137可表示为 2 7 2 3 2 0 进一步 7 22 2 20 21用2表示 3 2 20
  • uni-form动态配置以及表单验证坑

    开发环境 uniapp小程序开发 问题 动态配置uni form表单时 uni easyinput写入默认值不显示 且表单验证 在输入数据后不自动刷新验证的问题 解决方案 源代码 修改后 增加了属性 modelValue formData
  • 单片机数码管显示0到9_单片机数码管显示0~9?

    任务描述 某企业承担了一个LED数码显示设计任务 要求单片机控制一个数码管显示0 1 2 3 4 5 6 7 8 9 每个状态停留1秒 请用单片机设计其控制系统并调试运行 仿真视频 知乎视频 www zhihu com 硬件电路原理图 元件
  • socket绑定指定网卡发包

    socket绑定指定网卡发包 SO BINDTODEVICE 网络编程中有时明明用eth0的地址来bind一个udp套接口 可是发出去的包却是从eht1走的 在网上找到这么一段话解释该问题 在多 IP 网卡主机上 UDP 包 协议会自动根据
  • java使用ssh连接linux服务器执行命令

    可以使用JSch框架来连接SSH服务器并执行命令 JSch是SSH2的一个纯Java实现 它允许你连接到一个sshd服务器 使用端口转发 X11转发 文件传输等等 你可以在pom xml文件中添加以下依赖来引入JSch框架
  • vue3 使用QrCode生成二维码

    官网地址 QrCode官网 第一步 安装 npm install save qrcode vue 第二步 引入并注册 import QrcodeVue from qrcode vue export default defineCompone
  • 层次分析法(AHP)详解+完整代码

    层次分析法 AHP 1 算法简述与原理分析 层次分析法是一种主观赋值评价方法也是一个多指标综合评价算法 常用于综合评价类模型 层次分析法将与决策有关的元素分解成目标 准则 方案等多个层次 并在此基础上进行定性和定量分析 是一种简单 实用的算
  • 移动端修改下拉框背景

    移动端设置 下拉框背景 找到下拉框控件 添加初始化后事件 setTimeout function var dateEditor document getElementById P ORGNAME firstChild dateEditor
  • CentOS 7中安装Nginx 并设置自启动

    在CentOS 7中安装Nginx 当使用以下命令安装Nginx时 发现无法安装成功 yum install y nginx 如果出现没有可用软件包 需要做一点处理 安装Nginx源 执行以下命令 rpm ivh http nginx or
  • git学习(一)设置、修改用户名密码

    设置用户名 密码 点击 Git 选项 然后点击右侧的全局 最后输入用户名和邮箱即可 如下图所示 注 这里的用户名和邮箱 将作为以后提交数据到Git服务端的作者信息 请一定要设置 默认情况下 Git 客户端每次与服务器交互 都需要输入密码 但
  • C++中void和void*指针的含义

    转载 http blog chinaunix net uid 22197900 id 359211 html 转载 http www jb51 net article 36570 htm 对以上两篇文章 我进行了重新地汇总整理 转载请注明
  • 电脑系统提示vcomp100.dll文件缺失该怎么办?提示vcomp100.dll丢失问题怎么解决?

    vcomp100 dll实际上是VC 运行库中的一个动态链接库文件 版本是VC 2010 VC2010 Microsoft Visual C 2010 Redistributable Package 安装 Visual C vc2010 库
  • SSH 免密码登录ssh-keygen&ssh-copy-id&sshpass命令详解

    SSH 免密码登录ssh keygen ssh copy id sshpass命令详解 ssh keygen命令详解 功能 生成ssh密钥验证所需要的私钥与公钥文件 参数 t 指定密钥类型 f 指定生成私钥文件名 P 提供 旧 密语 例子
  • 深度学习笔记 4 过拟合+欠拟合+解决方案

    目录 1 偏差与方差 2 产生原因 3 解决欠拟合 高偏差 的方法 3 1 模型复杂化 3 2 增加更多的特征 3 3 调整参数和超参数 3 4 增加训练数据 效果不明显 3 5 降低正则化约束 4 解决过拟合 高方差 的方法 4 1 增加