秃姐学AI系列之:模型选择 | 欠拟合和过拟合 | 权重衰退

news2024/9/30 4:55:05

目录

训练误差

泛化误差

验证数据集和测试数据集

验证数据集 Validation Dataset:

测试数据集:

K-则交叉验证 

总结

过拟合和欠拟合

 模型容量

模型容量的影响 

估计模型容量

数据复杂度 

总结

权重衰退 weight decay

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

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

参数更新法则

 总结


训练误差

        模型再训练数据上的误差

泛化误差

        模型在新数据上的误差,这个其实才是我们关心的重点

E.G.根据模拟考试来预测未来考试的分数

  • 在过去的考试表现得很好(训练误差)不代表未来考试一定会好(泛化误差)
  • 学生A通过背书在模拟考拿到了很好的成绩——>很有可能拿到一个非常高的成绩
  • 学生B直到答案后面的原因——>摸底考试可能不咋地,但是在未来考试中可能会比A考得更好

那我们是如何计算两种误差的呢?通过两种数据集

验证数据集和测试数据集

验证数据集 Validation Dataset:

用来评估模型好坏的数据集

  • 例如拿出50%的训练数据
  • 不要跟训练数据混在一起(常犯错误)

测试数据集:

只用依次的数据集

  • 未来的考试
  • 我出家的房子的实际成交价
  • 用在Kaggle私有排行榜中的数据集 

但是其实这是学术概念,在实际应用中经常处于缺少数据集的状态,于是我们衍生出了下一个概念

K-则交叉验证 

在没有足够多数据时使用(这是常态)

算法:

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

这里可以看出,如果你的数据集非常的大,K应该小一些,不然训练起来会非常的贵 

总结

  • 训练数据集:训练模型参数
  • 验证数据集:选择模型超参数
  • 非大数据集上通常使用K-折交叉验证

过拟合和欠拟合

是一个非常常见的现象

模型容量简单来说就是模型的复杂度,以下是详细定义

 模型容量

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

模型容量的影响 

从图中可以看出,随着模型复杂程度上升,模型的训练误差是可以降到很低的,甚至理论上可以降到0。但并不是所有数据的训练误差都到0就一定是好的,因为这样意味着数据里的噪声也被模型记住了。所以我们看到我们真正关心的泛化误差在下降到一定程度时候,会随着模型复杂程度上升而上升。意味着你的模型其实是被一些无关信息困扰住了。

所以我们会用泛化误差和训练误差之间的差值变化来判断模型过拟合和欠拟合的程度

但过拟合了也不要害怕,过拟合不是一个很可怕的事情。因为首先你模型的容量得够,之后才能去控制模型的拟合程度,这点是整个深度学习最核心的事情。

估计模型容量

  • 我们其实是难以在不同的种类算法之间比较    例如树模型和神经网络
  • 但是如果我们给定一个模型种类,那么模型的容量将有两个主要因素:
    • 参数的个数
    • 参数值的选择范围

数据复杂度 

多个重要因素:

  • 样本个数
  • 每个样本的元素个数
  • 时间、空间结构:比如视频就有时间轴的特征
  • 多样性:数据分几类

总结

  • 模型容量需要匹配数据复杂度,否则可能导致欠拟合和过拟合
  • 实际中一般还是需要靠观察训练误差和验证误差 

权重衰退 weight decay

权重衰退是最常见的处理过拟合的一种方法

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

通过限制参数值的选择范围来控制模型容量

l是损失,我们的目标还是最小化我们的损失。w,b是我们的参数。

加入限制:||w||^{2}\leq\theta,即w每个元素的值的平方都要小于一个固定值。

但其实一般来说不会直接用这个优化函数,略复杂 

        通常不限制偏移 b(限不限制其实都差不多)

        小的 \theta 意味着更强的正则项

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

对于每个 \theta ,都可以找到 \lambda 使得之前的目标函数等价于下面

这两项优化其实和之前那个硬性限制是一样的 

        可以通过拉格朗日乘子来证明

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

         \lambda = 0:无作用

         \lambda -> \infty,w* -> 0

w*是一个最优解权重 

当我想控制模型复杂度,不想要模型太复杂的时候,我可以通过增加 \lambda 来达成我的需求

参数更新法则

 总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1980073.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【八】Zookeeper3.7.1集成Hadoop3.3.4集群安装

文章目录 1.基本原理2.下载并解压ZooKeeper3.配置环境变量4.配置ZooKeeper5.创建数据目录并初始化myid6.启动ZooKeeper7.配置ZooKeeper集成到Hadoop8.重启Hadoop9.ZooKeeper状态检查 1.基本原理 ZooKeeper 是一个分布式协调服务,用于分布式系统中管理配置信息、命名…

51单片机—智能垃圾桶(定时器)

一. 定时器 1. 简介 C51中的定时器和计数器是同一个硬件电路支持的,通过寄存器配置不同,就可以将他当做定时器或者计数器使用。 确切的说,定时器和计数器区别是致使他们背后的计数存储器加1的信号不同。当配置为定时器使用时,每…

vue3 手写日历组件

找了很久vue3的element样式一直没办法修改实现。只能手写日历了。借鉴了一些大佬的代码 调用&#xff1a; 再要使用的地方引入 import calendarelement from ./calendarelement.vue //日历组件 <div > <calendarelement /> //日历</div> 效果&#…

押金原路退回系统在医院中应用,一键操作秒到账 押金+身份证+电子押金单

一、医院押金管理必要性 保障医疗服务的连续性&#xff1a;患者缴纳押金能够确保在治疗过程中&#xff0c;医院有足够的资金来提供必要的医疗服务、药品和设备&#xff0c;不会因为费用问题而中断治疗。例如&#xff0c;在紧急手术或需要持续使用昂贵药物的情况下&#xff0c;…

【Vue3】组件通信之$attrs

【Vue3】组件通信之$attrs 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的…

开发在线客服系统新的宣传推广站【微客客服】

打造一个软件宣传官网&#xff0c;这事儿可不简单。咱们得先搞清楚&#xff0c;这个网站要给谁看&#xff0c;要传达啥信息&#xff0c;需要哪些功能。 我们网站是宣传【在线客服系统】的&#xff0c;所以需要把主要功能展示清楚 在线网址&#xff1a;https://weikefu.com.cn 然…

Python面试宝典第27题:全排列

题目 给定一个不含重复数字的数组nums&#xff0c;返回其所有可能的全排列 。备注&#xff1a;可以按任意顺序返回答案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]] 示例 2&#xff1a; 输…

Qt之Gui

组件依赖关系 应用 #mermaid-svg-GADicZtZJRVVUeiF {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GADicZtZJRVVUeiF .error-icon{fill:#552222;}#mermaid-svg-GADicZtZJRVVUeiF .error-text{fill:#552222;stroke:#…

【Spark计算引擎----第三篇(RDD)---《深入理解 RDD:依赖、Spark 流程、Shuffle 与缓存》】

前言&#xff1a; &#x1f49e;&#x1f49e;大家好&#xff0c;我是书生♡&#xff0c;本阶段和大家一起分享和探索大数据技术Spark—RDD&#xff0c;本篇文章主要讲述了&#xff1a;RDD的依赖、Spark 流程、Shuffle 与缓存等等。欢迎大家一起探索讨论&#xff01;&#xff0…

【Gold菜鸟】Linux知识回忆(8)——进程和计划任务

前言 这部分让我们来继续了解Linux中进程和计划任务的相关知识吧~ 相关技术交流欢迎添加VX: wenjinworkon 目录 进程和内存管理 什么是进程 进程结构 进程相关概念 物理地址空间和虚拟地址空间 用户和内核空间 进程使用内存问题 进程状态 内存淘汰数据机制&#xff1a;…

数学建模评价类—Topsis法

目录 文章目录 前言 切记&#xff1a;以下内容仅用于参考理解&#xff0c;不可用于数模竞赛&#xff01;&#xff01;&#xff01; 一、Topsis的基本原理 二、Topsis的建模过程 1.判断矩阵是否需要正向化 2.原始矩阵正向化 3.矩阵标准化 4.计算距离&#xff0c;给出得…

Can Large Language Models Provide Feedback to Students? A Case Study on ChatGPT

文章目录 题目摘要相关工作方法结果讨论意义 题目 大型语言模型能为学生提供反馈吗&#xff1f;ChatGPT 案例研究 论文地址&#xff1a;https://ieeexplore.ieee.org/abstract/document/10260740 摘要 摘要——教育反馈已被广泛认为是提高学生学习能力的有效方法。然而&#x…

Python | Leetcode Python题解之第322题零钱兑换

题目&#xff1a; 题解&#xff1a; class Solution:def coinChange(self, coins: List[int], amount: int) -> int:dp [float(inf)] * (amount 1)dp[0] 0for coin in coins:for x in range(coin, amount 1):dp[x] min(dp[x], dp[x - coin] 1)return dp[amount] if d…

Python的if语句及其运用

一、条件测试 每条if语句的核心都是一个值为True或False的表达式&#xff0c;这种表达式称为条件测试。如果测试的条件满足if语句则为True&#xff0c;接着执行if里的语句&#xff1b;如果测试的条件不满足if语句则为False&#xff0c;则不执行if里的语句。 1.1、检查是否相等…

C++ | Leetcode C++题解之第322题零钱兑换

题目&#xff1a; 题解&#xff1a; class Solution { public:int coinChange(vector<int>& coins, int amount) {int Max amount 1;vector<int> dp(amount 1, Max);dp[0] 0;for (int i 1; i < amount; i) {for (int j 0; j < (int)coins.size();…

二叉树(真题)

1.用非递归遍历求二叉树结点个数【计学2020】 算法思想:用先序非递归遍历 当前指针不为空或栈不为空进行循环&#xff1b; 当前指针不为空访问当前结点&#xff0c;当前节点入栈&#xff0c;进入左子树 当前指针为空&#xff0c;栈顶元素出栈&#xff08;回溯&#xff09;&…

【kickstart+pxe批量安装linux系统】

目录 一、实验环境准备二、安装kickstart1、kickstart自动安装脚本的制作 三、安装web服务器&#xff0c;提供网络源四、安装dhcp五、安装syslinux&#xff0c;tftp-server六、虚拟机中新建新主机 一、实验环境准备 1、rhel7主机 2、开启主机图形 init 5 开图形 3、配置网络可…

ESP8266 烧录,待坑

ets Jan 8 2013,rst cause:1, boot mode:(7,0)waiting for host 空芯片&#xff0c;未加SPI FLASH 显示 下载模式(IO15 10k下拉 &#xff0c; IO0下拉 &#xff08;直接GND),IO2上拉&#xff08;文档上说是有内部上拉的&#xff0c;先上拉&#xff09;&#xff09; &#xff…

jdbc(mysql)

1.概述 jdbc&#xff1a;java database connection&#xff08;java与数据库连接&#xff09; java可以连接不同数据库&#xff0c;不同数据库连接细节不同&#xff0c;具体细节都由数据库自己实现 由java设计出一系列连接数据库的接口规范&#xff0c;然后由不同的数据库开发…

C语言程序设计26

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 习题2.3 上机运行下面的程序&#xff0c;分析输出结果 代码 //《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 //习题2.3 上机运行下面的程序&#xff0c;分析输出结果#include <stdio.h> int …