当前位置: 首页 > news >正文

DIDL3_模型选择、复杂度、过欠拟合的相关概念

模型选择、复杂度、过欠拟合的概念

  • 模型选择
    • 训练误差和泛化误差
    • 验证数据集和测试数据集
      • K-则交叉验证(没有足够多数据时使用)
  • 过拟合和欠拟合
    • 模型容量
      • 模型容量的影响
      • 估计模型容量
    • 控制模型容量
    • 数据复杂度
  • 处理过拟合的方法(1):权重衰退
    • 参数更新法则
  • 处理过拟合的方法(2):丢弃法
    • 无偏差的加入噪音
    • 使用丢弃法
    • 推理(预测)中的丢弃法
    • 总结

模型选择

  • 训练数据集:训练模型参数
  • 验证数据集:选择模型超参数(学习率、批量大小、隐藏大小)
  • 非大数据集上通常使用K-折交叉验证
    通过K折平均误差来判断一个参数的好坏,对每一个超参数都会得到一个交叉验证的平均精度,将最好的精度选出来,作为我们采用的超参数

训练误差和泛化误差

  • 训练误差:模型在训练数据上的误差
  • 泛化误差:模型在新数据上的误差

验证数据集和测试数据集

  • 验证数据集:一个用来评估模型好坏的数据集(不要和训练数据集混在一起,例如拿出50%的训练数据)
  • 测试数据集:只用一次的数据集

K-则交叉验证(没有足够多数据时使用)

算法:

将训练数据分割成K块
For i=1, ..., K使用第i块作为验证数据集,其余的作为训练数据集
报告K各验证集误差的平均

常用:K=5或10

过拟合和欠拟合

在这里插入图片描述
模型容量低——模型简单
模型容量高——模型复杂

模型容量

  • 模型容量指的是拟合各种函数的能力
  • 低容量的模型难以拟合训练数据
  • 高容量的模型可以记住所有的训练数据

模型容量的影响

在这里插入图片描述

估计模型容量

  • 难以在不同的种类算法之间比较(例如树模型和神经网络)
  • 给定一个模型种类,将有两个主要因素:参数的个数参数值的选择范围
    在这里插入图片描述

控制模型容量

使用均方范数作为硬性限制

  • 通过限制参数值的选择范围来控制模型容量
    在这里插入图片描述

  • 冗长不限制偏移b(限不限制都差不多)

  • 小的 意味着更强的正则项

数据复杂度

多个重要因素:

  • 样本个数
  • 每个样本的元素个数
  • 时间、空间结构
  • 多样性

处理过拟合的方法(1):权重衰退

一般来说,不会直接使用“均方范数作为硬性限制”优化函数,因为它优化起来相对麻烦一些。

常用均方范数作为柔性限制
对每个θ,都可以找到λ使得之前的目标函数等价于下面

  • 可以通过拉格朗日乘子来证明
    在这里插入图片描述

超参数λ控制了正则项的重要程度

  • λ = 0 : 无作用
  • λ->∞ , w* -> 0

如果想把模型复杂度控制地比较低,可以通过增加λ来满足,此时λ不再是一个硬性的限制(所有的值都小于某个值),变成了柔性的限制(更平滑)

参数更新法则

在这里插入图片描述

  • 权重衰退通过L2正则项使得模型参数不会过大,从而控制模型复杂度
  • 正则项权重是控制模型复杂度的超参数

处理过拟合的方法(2):丢弃法

效果可能会比权重衰退更好。
动机:

  1. 一个好的模型需要对输入数据的扰动鲁棒
  • 使用有噪音的数据等价于Tikhonov正则(加入数据的噪音,之前是固定噪音,现在是随机噪音,不断地随机加噪音)
  • 丢弃法:在层之间加入噪音(丢弃法,不在输入加噪音,在层之间加入噪音,其实是一个正则的)

无偏差的加入噪音

假设 x 是一层到下一层的输出,我们对x加入噪音得到 x’,虽然加入了噪音但我们希望加入的噪音不改变期望E
在这里插入图片描述
计算xi′x_i'xi的期望,仍然与xxx的期望相同,没有产生变化
E[xi′]=p∗0+(1−p)xi/(1−p)=xiE[x_i'] = p * 0 + (1-p) x_i /(1-p) = x_iE[xi]=p0+(1p)xi/(1p)=xi

使用丢弃法

drop out使用的地方:通常将丢弃法作用在隐藏全连接层的输出上。

  • 假设有第一层(第一个隐藏层):输入xxx✖️权重W1W_1W1➕偏移b1b_1b1,再将其加上激活函数后,得到hhh就是第一个隐藏层的输出;
  • 对于第一个隐藏层,使用drop out,将h中间每一个元素作用dropout,使p趋近于0(p为超参数)
    在这里插入图片描述
  • 第二层,拿到的输入是把前面一层输出的一些元素变成0(如h2h_2h2h5h_5h5变成零)的结果(随机挑选神经元扔出窗外)
    在这里插入图片描述

推理(预测)中的丢弃法

正则项只在训练中使用:他们影响模型参数的更新
在推理过程中,丢弃法直接返回输入
h=dropout(h)h = dropout(h)h=dropout(h)
这样也能保证确定性的输出。

总结:在训练中使用dropout,而在推理(预测过程)中不使用dropout。因为dropout是一个正则项,正则项只在训练中使用,因为它只会对权重产生影响;当我们在预测的时候,权重不需要发生变化,此时不需要正则,在推理中dropout输出的是它本身(对数据没有任何操作)

总结

  • 丢弃法将一些输出项随机置0来控制模型复杂度
  • 常作用在多层感知机的隐藏层输出上
  • 丢弃概率是控制模型复杂度的超参数(如果p=1,就是全部丢掉;p=0,就是没有被丢弃;一般取0.9、0.5、0.1)
http://www.lryc.cn/news/6381.html

相关文章:

  • Android 9.0 去除锁屏界面及SystemUI无sim卡拨打紧急电话控件显示功能实现
  • AntDB-M设计之内存结构
  • 互联网舆情监测公司监测哪些内容,TOOM北京舆情监测公司
  • 一篇文章带你熟练使用Ansible中的playbook
  • HashedWheelTimer
  • OPenCV库移植到ARM开发板子上面配置过程
  • Jenkins实现CI/CD
  • 如何给img标签里的请求添加自定义header
  • Linux系统基本概念操作,用户和文件权限管理
  • 数据库中的单表查询和多表查询
  • 全网详解MyBatis-Plus LambdaQueryWrapper的使用说明以及LambdaQueryWrapper和QueryWapper的区别
  • 暴力破解(new)
  • Android12之apex调试
  • Python - 数字(Number)数据类型常用操作
  • QT(51)-动态链接库-windows
  • [Vivado那些事儿]将自定义 IP (HDL)添加到 Vivado 模块设计(Block Design)
  • 开学必备数码清单,大学生开学必备数码好物分享
  • 【面试题】常见前端基础面试题(HTML,CSS,JS)
  • Vue (4)
  • 静态库和动态库的制作
  • Oracle实现高可用性的工具(负载均衡/故障切换)
  • 图解经典电路之OCL差分功放-三极管分立器件电路分析
  • thymeleaf模板注入学习与研究--查找与防御
  • 第七章:Linux最小化搭建环境解说2
  • 两道链表经典算法题---链表有无环(基础+进阶)
  • 2023/1/14总结
  • Python 之 NumPy 统计函数、数据类型和文件操作
  • 互联网新时代要到来了(一)什么是Web3.0?
  • [Yocto] 直接向deploy/images目录部署binary
  • HarmonyOS Connect原子化服务功能开发(Wi-Fi/Combo)设备控制开发与实现(二)