【机器学习】机器学习基础_过拟合与正则化_L1_L2_Dropout详解
文章目录一、过拟合训练集优秀真实场景翻车二、欠拟合模型连训练集都没学好三、偏差-方差为什么太简单或太复杂都不好四、用一个小实验看过拟合五、验证集发现过拟合的基本工具六、L2 正则化不要让权重太大七、L1 正则化鼓励稀疏八、Dropout训练时随机关闭一部分神经元九、Early Stopping在验证集变差前停下十、数据增强和数据清洗也是正则化十一、大模型微调中的过拟合风险十二、训练曲线怎么读十三、常见误区十四、你应该记住的最小心智模型总结大模型视角下一篇摘要模型在训练集上表现很好不代表上线后也好。过拟合指模型把训练数据里的偶然噪声、样本偏差甚至标注错误也学进去导致验证集和真实场景表现变差。正则化的目标不是让模型“少学习”而是让模型学到更稳定、更可泛化的规律。本文从训练/验证曲线讲起解释过拟合、欠拟合、偏差-方差、L1、L2、Weight Decay、Dropout、Early Stopping、数据增强和大模型微调中的过拟合风险并用小实验演示复杂模型如何把噪声也拟合进去。前置知识第 5 篇梯度下降第 7 篇损失函数阅读时间约 65 分钟代码环境Python 3.10numpy 1.24torch 2.0入门导读先抓住主线机器学习真正关心的是泛化模型在没见过的数据上表现如何。训练时我们能看到训练集 loss但产品面对的是新用户、新文档、新问题、新分布。如果模型只记住训练样本训练 loss 会很低但真实效果会很差。过拟合的典型现象训练 loss 持续下降 验证 loss 先下降后上升 训练指标很好 验证/线上指标变差正则化就是一组降低过拟合风险的方法。读完先达到这个程度就够了能区分过拟合和欠拟合能看懂训练集/验证集曲线能解释 L1、L2、Weight Decay 的直觉差异能理解 Dropout 训练和推理行为不同能知道 Early Stopping 和验证集为什么重要能理解大模型微调时为什么也会过拟合。带着这 3 个问题读为什么训练 loss 越低有时验证效果反而越差L1、L2、Dropout 分别在约束什么大模型已经很强为什么小数据微调仍然容易过拟合一、过拟合训练集优秀真实场景翻车过拟合指模型对训练数据拟合得太细学到了训练集中特有的噪声和偶然模式。例如你训练一个垃圾邮件分类器训练集中很多垃圾邮件都包含某个推广词。模型可能学到只要出现这个词就判垃圾邮件如果真实场景里正常邮件也会出现这个词模型就会误判。过拟合不是模型“学太多知识”而是学到了不该泛化的细节。常见信号训练 loss 很低验证 loss 高训练 accuracy 很高验证 accuracy 低模型对训练样本回答很准对新样本不稳小数据集上训练很多 epoch 后效果变差。二、欠拟合模型连训练集都没学好欠拟合是另一端模型能力不足或训练不充分连训练集规律都学不好。常见原因模型太简单特征不足训练时间太短学习率太小或优化失败正则化太强数据标签噪声太大loss 或输入处理有问题。判断训练 loss 高 验证 loss 也高 训练和验证都不好过拟合和欠拟合的处理方向不同。现象可能措施欠拟合增大模型、训练更久、减弱正则、改特征过拟合增加数据、加强正则、早停、降低模型容量不要一看到验证差就加正则。先看训练集有没有学好。三、偏差-方差为什么太简单或太复杂都不好偏差和方差是理解泛化的经典框架。高偏差模型太简单学不到真实规律训练和验证都差。高方差模型太灵活对训练数据变化很敏感训练好但验证差。直觉欠拟合偏差高 过拟合方差高正则化通常是在降低方差但可能增加偏差。也就是说正则化太弱会过拟合正则化太强会欠拟合。调参就是在表达能力和泛化能力之间找平衡。四、用一个小实验看过拟合我们用多项式拟合带噪声的数据。低阶多项式可能欠拟合高阶多项式可能过拟合。importnumpyasnp np.random.seed(0)xnp.linspace(-3,3,20)ynp.sin(x)0.2*np.random.randn(len(x))fordegreein[1,3,12]:coeffnp.polyfit(x,y,degdegree)prednp.polyval(coeff,x)msenp.mean((pred-y)**2)print(fdegree{degree}, train_mse{mse:.4f})你会看到高阶多项式训练误差可能更低但它可能是在拟合噪声。如果你在更密集的新点上观察曲线高阶模型可能剧烈抖动。这就是过拟合直觉训练集上看起来很好但学到的是不稳定模式。五、验证集发现过拟合的基本工具为了判断模型是否泛化需要把数据拆成训练集 train用于更新参数 验证集 validation用于调参和早停 测试集 test最终报告效果训练集 loss 只能说明模型对训练数据越来越熟。验证集 loss 才能更接近“没见过的数据”表现。典型曲线欠拟合train loss 高val loss 高 正常训练train loss 降val loss 也降 过拟合train loss 继续降val loss 开始升如果没有验证集你很难发现模型什么时候开始记噪声。注意数据泄漏如果验证集内容出现在训练集中验证指标会虚高。六、L2 正则化不要让权重太大L2 正则在 loss 里加入权重平方和L o s s t o t a l L o s s t a s k λ ∑ i w i 2 Loss_{total} Loss_{task} \lambda \sum_i w_i^2Losstotal​Losstask​λi∑​wi2​它鼓励权重不要过大。直觉如果模型需要非常大的权重才能拟合训练集可能是在追逐噪声。L2 会让模型偏向更平滑、更稳定的解。NumPy 示例importnumpyasnp wnp.array([0.5,-2.0,3.0])lambda_0.01l2_penaltylambda_*np.sum(w**2)print(l2_penalty)L2 正则和 Weight Decay 是同一件事吗不完全是。严格地说L2 正则是在 loss 里显式加一项λ ∑ i w i 2 \lambda\sum_i w_i^2λ∑i​wi2​让梯度下降顺便把权重推小Weight Decay是优化器每步更新时直接把参数乘以( 1 − λ ⋅ l r ) (1-\lambda\cdot lr)(1−λ⋅lr)与 loss 的梯度解耦。在普通 SGD中这两种写法数学上等价所以历史上常被混用。但在Adam/AdamW这类自适应优化器中L2 正则项也会被 Adam 的一阶/二阶动量估计缩放导致大权重反而衰减不动AdamW 把 weight decay 从梯度里拆出来直接作用在参数上这样才有稳定的衰减效果。因此大模型训练里推荐用AdamW 的 decoupled weight decay。PyTorchoptimizertorch.optim.AdamW(model.parameters(),lr3e-4,weight_decay0.01,)七、L1 正则化鼓励稀疏L1 正则加入权重绝对值和L o s s t o t a l L o s s t a s k λ ∑ i ∣ w i ∣ Loss_{total} Loss_{task} \lambda \sum_i |w_i|Losstotal​Losstask​λi∑​∣wi​∣L1 的特点是鼓励一部分权重变成 0从而得到稀疏模型。稀疏的好处特征选择模型更简单某些场景更可解释。但 L1 在深度学习大模型训练中不如 L2/weight decay 常见。它更常见于线性模型、特征选择或希望显式稀疏的场景。代码l1_penaltylambda_*np.sum(np.abs(w))print(l1_penalty)L1 和 L2 都是在 loss 中加入额外约束但它们偏好的参数形态不同L1 偏稀疏L2 偏小而平滑。八、Dropout训练时随机关闭一部分神经元Dropout 在训练时随机把一部分神经元输出置 0。直觉不要让模型过度依赖某几条路径。PyTorchimporttorchimporttorch.nnasnn xtorch.ones(8)dropoutnn.Dropout(p0.5)dropout.train()print(train:,dropout(x))dropout.eval()print(eval:,dropout(x))训练时输出会随机有 0推理时不会随机关闭。PyTorch 使用inverted dropout训练时会把保留下来的值除以保留概率( 1 − p ) (1-p)(1−p)使期望不变。这样推理时就不需要额外缩放。可以用下面的代码直观感受这个 scalingimporttorchimporttorch.nnasnn torch.manual_seed(0)xtorch.ones(10)dropoutnn.Dropout(p0.5)# 训练时约一半置 0保留下来的乘 1/(1-0.5)2dropout.train()outdropout(x)print(train 输出:,out)# 未被丢弃的位置值是 2.0不是 1.0print(train 均值:,out.mean().item())# 均值仍然接近 1.0期望不变dropout.eval()print(eval 输出:,dropout(x))# 全 1不做缩放关键点inverted dropout 把补偿缩放提前放在训练时因此推理阶段.eval()后 forward 完全等价于没有 Dropout也就无需在部署时改动模型结构。Dropout 常用于小数据或过拟合明显的场景。但大模型预训练中Dropout 不一定很大有些模型甚至使用很小的 dropout。因为大规模数据本身已经提供了强正则效果。九、Early Stopping在验证集变差前停下Early Stopping 是非常实用的正则化方法。做法每隔一段时间评估验证集保存验证指标最好的 checkpoint如果验证指标长时间不提升就停止训练。伪代码best_val_lossfloat(inf)patience3bad_epochs0forepochinrange(100):train_one_epoch()val_lossevaluate()ifval_lossbest_val_loss:best_val_lossval_loss save_checkpoint()bad_epochs0else:bad_epochs1ifbad_epochspatience:breakEarly Stopping 的关键是验证集可靠。如果验证集太小、噪声太大或和真实场景不一致早停判断也会不可靠。十、数据增强和数据清洗也是正则化正则化不只在公式里。增加数据、多样化数据、清洗噪声本质上也能改善泛化。常见方法图像裁剪、翻转、颜色扰动文本回译、同义改写、模板扩充语音加噪、变速代码不同实现方式、单测增强大模型 SFT增加任务多样性、去除低质量样本。如果训练集和真实场景差异很大单靠 L2 或 Dropout 很难解决问题。数据分布匹配往往比调正则更重要。十一、大模型微调中的过拟合风险大模型参数很多即使只做 LoRA 微调也可能在小数据集上过拟合。常见表现训练集回答越来越像标注格式但泛化差模型开始机械复述训练样本对训练集中常见模板依赖过强验证集 loss 不再下降原模型通用能力下降出现灾难性遗忘。常见缓解使用高质量、多样化数据控制 epoch不要反复刷小数据降低学习率使用 weight decay使用 dropout 或 LoRA dropout做 early stopping保留通用指令数据混合训练用独立验证集评估。对于大模型微调数据质量通常比数据量更关键。少量高质量数据可能比大量低质量模板数据更好。十二、训练曲线怎么读可以用这张表快速判断训练 loss验证 loss可能问题方向高高欠拟合增大模型、训练更久、减弱正则低高过拟合加强正则、更多数据、早停不降不降学习率/数据/loss 问题先排查训练流程震荡震荡学习率过大或数据噪声降学习率、增 batch、检查数据训练降验证先降后升典型过拟合保存最佳 checkpoint不要只看最终一个数。曲线形状能告诉你模型经历了什么。十三、常见误区误区 1训练集效果越好模型越好。真正关心的是泛化。训练集太好但验证差往往是过拟合。误区 2正则化就是让模型学得少。正则化是让模型学更稳定的规律而不是记住噪声。误区 3L1、L2、Weight Decay 都一样。L1 鼓励稀疏L2 鼓励小权重AdamW 的 weight decay 是解耦衰减工程行为不同。误区 4Dropout 推理时也随机关闭。推理时应model.eval()Dropout 关闭随机行为。误区 5大模型不会过拟合。大模型在小数据微调、低质量数据、重复模板数据上非常容易过拟合。误区 6验证集可以反复调到最好后当测试集。验证集被反复用于调参后也会被间接过拟合。最终评估应保留独立测试集。十四、你应该记住的最小心智模型过拟合和正则化可以这样记欠拟合训练集都学不好 过拟合训练集很好新数据不好 正则化限制模型记噪声提升泛化常见正则手段L2/Weight Decay限制权重过大 L1鼓励稀疏 Dropout减少路径依赖 Early Stopping在验证集变差前停止 数据增强/清洗让训练分布更接近真实场景判断优先看train loss 和 val loss 的相对走势总结过拟合是模型在训练集上表现很好但在验证集或真实场景中表现变差。欠拟合则是模型连训练集都没学好。正则化通过限制模型复杂度、约束权重、随机扰动训练路径、早停和改善数据分布帮助模型学到更可泛化的规律。L2/Weight Decay 鼓励权重不要过大L1 鼓励稀疏Dropout 减少神经元之间的过度依赖Early Stopping 用验证集防止训练过头。大模型微调同样会过拟合尤其是在小数据、重复模板和低质量标注上。第一遍记住一句话训练集表现证明模型记住了数据验证集表现才更接近模型是否学到了规律。大模型视角后续你看 SFT、LoRA、DPO、RAG 评估时过拟合都会出现。大模型不是越训越好尤其是微调阶段训练太久或数据太窄会损害泛化和通用能力。高质量验证集和早停是大模型工程里非常现实的安全线。下一篇批归一化与层归一化为什么大模型选 LayerNorm—— 正则化关注泛化归一化关注训练稳定。下一篇看 BatchNorm、LayerNorm、RMSNorm 如何稳定深层网络。

相关新闻

前端面试代码输出题核心考点解析

前端面试代码输出题核心考点解析

1. 面试代码输出题的核心考察点前端面试中的代码输出题绝非简单的语法测试,而是对候选人综合能力的立体考察。这类题目通常具有以下典型特征:代码片段短小精悍(通常不超过20行)涉及JavaScript核心机制而非框架API要求候选人预测执…

2026/8/25 7:01:07 阅读更多 →
ComfyUI集成MiniMax H3插件:一站式AI视频生成节点部署与测试指南

ComfyUI集成MiniMax H3插件:一站式AI视频生成节点部署与测试指南

这次我们来看一个能大幅简化AI视频生成流程的工具:MiniMax H3导演台插件。这个插件专为ComfyUI设计,核心卖点是把复杂的文生视频、图生视频、参考视频生成等多个功能,集成到了一个节点里。对于已经在用ComfyUI做AI图像或视频的用户来说&#…

2026/8/25 7:01:07 阅读更多 →
基于MCP协议扩展AI编程助手能力:从聊天编程到代理编程的实践

基于MCP协议扩展AI编程助手能力:从聊天编程到代理编程的实践

如果你正在使用 Claude Code 或 Claude Desktop,并且希望让 AI 助手不只是帮你写代码,而是能真正理解你的项目结构、运行你的测试、甚至帮你调试和优化整个开发流程,那么你很可能已经遇到了一个核心瓶颈:AI 助手的能力被“锁”在了…

2026/8/25 7:01:07 阅读更多 →

最新新闻

SpringBoot实现简单邮件发送(代码+注释)

SpringBoot实现简单邮件发送(代码+注释)

1.让自己的邮箱变成客户端(以网易云邮箱为例&#xff0c;qq邮箱也一样的操作) 1.开启服务2.它会给你一串乱码做授权码 2.添加依赖<!-- mail 依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-sta…

2026/8/25 7:43:27 阅读更多 →
MATLAB数据拟合实战:从原理到应用的全流程指南

MATLAB数据拟合实战:从原理到应用的全流程指南

1. 项目概述&#xff1a;数据拟合的“灵魂”与MATLAB的“画笔”在工程、科研和数据分析的日常里&#xff0c;我们手里常常攥着一堆散乱的数据点&#xff0c;它们像夜空中的星星&#xff0c;看似无序&#xff0c;背后却可能隐藏着一条优美的规律曲线。数据拟合&#xff0c;就是找…

2026/8/25 7:43:27 阅读更多 →
MATLAB数据拟合实战:从cftool交互到编程实现与光谱分析

MATLAB数据拟合实战:从cftool交互到编程实现与光谱分析

1. 从一次失败的预测说起&#xff1a;为什么我们需要数据拟合&#xff1f;几年前&#xff0c;我接手了一个电机温升预测的项目。当时手头有一堆在不同负载、不同环境温度下测得的电机外壳温度数据&#xff0c;散点图看起来乱糟糟的。我的第一反应是&#xff0c;找个看起来“顺眼…

2026/8/25 7:43:27 阅读更多 →
Docker生态工具:Watchtower、slim、ctop、Kitematic、Shipyard、DockerUI、docker-gc、Dockhand、Dry

Docker生态工具:Watchtower、slim、ctop、Kitematic、Shipyard、DockerUI、docker-gc、Dockhand、Dry

Docker生态工具&#xff08;管理、可视化&#xff09;系列文章&#xff1a; Docker生态工具&#xff1a;Watchtower、slim、ctop、KitematicDocker生态工具&#xff1a;Portainer、LazyDocker、Dockge、App2DockerDocker生态&#xff1a;Arcane、Dockly、Docker-Socket-Proxy、…

2026/8/25 7:43:27 阅读更多 →
mysql的自我总结

mysql的自我总结

什么Mysql的底层索引要用BTree 那就要先说二叉树 : 二叉树以第一个插入的数据作为根节点,假设特定情况他就变成了一个单项链表&#xff0c;查询效率极慢。 其次就是平衡二叉树 平衡二叉树在数据量大的情况下&#xff0c;树会很高&#xff0c;那么我们的检索效率还是不高。 然后…

2026/8/25 7:42:27 阅读更多 →
memcpy深度解析:从内存安全到ARM NEON性能优化实战

memcpy深度解析:从内存安全到ARM NEON性能优化实战

1. 项目概述&#xff1a;一次由memcpy引发的深度排障之旅在嵌入式开发和底层系统编程的世界里&#xff0c;memcpy这个函数就像空气一样无处不在&#xff0c;却又常常被我们习以为常地忽略。它负责将一块内存区域的数据复制到另一块区域&#xff0c;看似简单直接&#xff0c;以至…

2026/8/25 7:42:27 阅读更多 →

日新闻

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子&#xff0c;从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/25 0:00:34 阅读更多 →
Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战&#xff1a;零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run &#x1f917; Transformers directly in your browser, with no need for a server! 项目地址: https:/…

2026/8/25 0:00:34 阅读更多 →
数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

1. 项目概述&#xff1a;从“会做”到“会写”的竞赛核心跃迁“全国大学生数学建模竞赛”&#xff0c;这个名字对理工科学生来说&#xff0c;分量极重。每年&#xff0c;无数团队在三天三夜的时间里&#xff0c;为一个开放性问题绞尽脑汁&#xff0c;从建立模型、求解算法到编程…

2026/8/25 0:00:34 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态&#xff0c;宏观上观察到的光是由无数个微观的光量子组成的&#xff0c;每个光子在产生的瞬间&#xff0c;其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前&#xff0c;在微观层面&#xff0c;每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”&#xff0c;而是SIP会话的动态重定向你有没有遇到过这样的场景&#xff1a;客服坐席A正在和客户通电话&#xff0c;突然需要把这通对话无缝转给专家坐席B&#xff0c;客户完全感知不到中间的断连——既没听到忙音&#xff0c;也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack&#xff1f;如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法&#xff0c;那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/24 20:22:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →