【机器学习】(21)—— 模型复杂度与损失曲线
模型复杂度与损失曲线L2、早停与过拟合信号文章目录模型复杂度与损失曲线L2、早停与过拟合信号1. 复杂模型2. 什么是模型复杂度3. 两个目标拟合好又要尽量简单4. L2 正则化把权重往零拉4.1 公式回顾与加深4.2λ \lambdaλ与学习率的拉扯4.3 训练损失上升不一定是坏事5. 早停另一种限制复杂度6. 损失曲线怎么读四种常见形态6.1 震荡Oscillating6.2 突然尖峰Sharp spike6.3 训练降、验证升Divergence6.4 中途变乱Chaotic6.5 和分类指标一起看7. 反过拟合工具箱8. 动手多项式阶数、Ridge 与损失曲线9. 能力边界与常见误区9.1 适用边界9.2 常见误区10. 关键术语速查11. 延伸阅读12. 小结摘要第 18 篇讲了泛化与三分法上一篇第 20 篇讲了类别不平衡但模型侧还有一个旋钮复杂度。复杂模型往往在训练集上更漂亮在测试集上却更差。本文讲清什么是模型复杂度、损失与复杂度的权衡、L2 正则化与早停如何压住过拟合以及四种常见损失曲线该怎么读。与之前的第 7 篇衔接并加深贯穿汽车重量–MPG 示例。1. 复杂模型第 18 篇用「弯弯曲曲的分界线」比喻过拟合训练集上几乎全对测试集上大面积翻车。反过来一条过于简单的直线又可能欠拟合。经验规律可以记成模型训练集测试 / 新数据过于复杂往往更好往往更差过拟合恰到好处够好也够好过于简单也差也差欠拟合奥卡姆剃刀在机器学习里的白话版能解释数据的简单模型优先于复杂模型——不是简单一定对而是复杂要付出泛化代价。新项目上之前写的第 14 篇也建议特征从 13 个强特征起步正是为了避免一上来维度爆炸。2. 什么是模型复杂度复杂度不是抽象玄学在权重模型里常落到来源例子效应参数多 / 权重大高次多项式、很多 One-Hot 维决策边界更「扭」特征多重量 排量 交叉 平方项维度诅咒空间稀疏难泛化训练过久迭代太多开始背训练噪声线性回归y ′ b w 1 x 1 w 2 x 2 y b w_1 x_1 w_2 x_2y′bw1​x1​w2​x2​里∣ w ∣ |w|∣w∣很大意味着输入微小变化会引起输出剧烈变化——对训练点「贴得太紧」对新点就不稳。逻辑回归同理第 07 篇无正则时w ≈ − 4.28 w \approx -4.28w≈−4.28重车概率可贴到 0.02 附近加 L2 后∣ w ∣ |w|∣w∣缩小概率不再极端是同一机制。3. 两个目标拟合好又要尽量简单训练其实在解一个矛盾min ⁡ 损失 vs min ⁡ 复杂度 \min \ \text{损失} \quad \text{vs} \quad \min \ \text{复杂度}min损失vsmin复杂度只压损失复杂度往往上升只追求简单损失又下不去。工程上要找折中点。正则化Regularization就是把复杂度写进目标函数强迫模型「别太复杂」min ⁡ Loss ⏟ 拟合数据 λ ⋅ Complexity ⏟ 惩罚复杂 \min \ \underbrace{\text{Loss}}_{\text{拟合数据}} \underbrace{\lambda \cdot \text{Complexity}}_{\text{惩罚复杂}}min拟合数据Loss​​惩罚复杂λ⋅Complexity​​λ \lambdaλlambda是正则化率越大越偏向简单越小越放任拟合训练集。第 07 篇在 Log Loss 上加λ ∑ w j 2 \lambda\sum w_j^2λ∑wj2​就是 L2 正则化的标准形式。4. L2 正则化把权重往零拉4.1 公式回顾与加深逻辑回归总损失L total − 1 N ∑ i [ y i log ⁡ p i ( 1 − y i ) log ⁡ ( 1 − p i ) ] ⏟ Log Loss λ ∑ j w j 2 ⏟ L2 复杂度 L_{\text{total}} \underbrace{-\frac{1}{N}\sum_i \left[y_i\log p_i (1-y_i)\log(1-p_i)\right]}_{\text{Log Loss}} \underbrace{\lambda \sum_j w_j^2}_{\text{L2 复杂度}}Ltotal​Log Loss−N1​i∑​[yi​logpi​(1−yi​)log(1−pi​)]​​L2复杂度λj∑​wj2​​​λ \lambdaλ权重典型形态风险0$w适中$w过大w → 0 w \to 0w→0模型变钝欠拟合偏置b bb一般不正则化——它只平移决策边界不放大输入波动。L1 正则λ ∑ ∣ w j ∣ \lambda\sum|w_j|λ∑∣wj​∣倾向稀疏部分w ww恰为 0适合顺带做特征筛选L2 更平滑工程里更常见。第 07 篇已对比过本篇放在「泛化单元」里强调调λ \lambdaλ要在验证集上看不是训练 Log Loss 越低越好。4.2λ \lambdaλ与学习率的拉扯学习率η \etaη大梯度步长大权重容易被推离 0。λ \lambdaλ大惩罚项把权重往 0 拽。两者像拔河λ \lambdaλ相对η \etaη太大→ 权重太弱欠拟合λ \lambdaλ相对η \etaη太小→ 权重太强过拟合改学习率后往往要重新搜λ \lambdaλ——第 04 篇的超参思维在这里仍然适用。一个实用口诀先固定学习率到能稳定下降再在验证集上网格搜索λ \lambdaλ或 sklearn 的C CC。汽车 7 车玩具数据上λ 0.01 \lambda0.01λ0.01让w ww从 -4.28 收到 -2.33属于「边界形状变化不大、置信度不再贴死」——这种温和化往往就是 L2 在帮泛化。4.3 训练损失上升不一定是坏事加上 L2 后训练 Log Loss 可能反而变高——因为你多了一项复杂度惩罚。课程里的 playground 练习也强调关键看测试 / 验证损失是否下降。别为了把训练曲线压到最低而关掉正则那常常是在用泛化换漂亮曲线。5. 早停另一种限制复杂度早停Early Stopping不直接算复杂度而是在验证损失开始变差时停止训练相当于限制「能拟合多久」。手段控制什么L2限制权重大小早停限制训练轮次减特征 / 降阶限制模型结构第 18 篇泛化曲线里「训练降、验证升」的分叉点就是早停的天然候选。实践里 L2 早停常一起用。注意早停监控的是验证集损失不是训练集训练损失还能继续降的时候验证可能已经抬头了。6. 损失曲线怎么读四种常见形态理想曲线是训练、验证损失平稳下降后收敛。现实里常遇到以下模式6.1 震荡Oscillating损失上下剧烈抖动。常见原因学习率过大→ 先试减小η \etaη第 04 篇数据里有坏样本、NaN → 对照第 19 篇做清洗可先用极小可信子集试收敛再逐步加数据6.2 突然尖峰Sharp spike某一步损失暴涨。优先查输入是否出现NaN除零、log(0)某个 batch 是否堆满离群点第 16 篇一般不要靠加大学习率来「冲过去」6.3 训练降、验证升Divergence训练损失继续改善验证损失掉头向上——过拟合的经典信号第 18 篇。可尝试减特征、降多项式阶数增大λ \lambdaλ加数据、检查训练/验证分布是否一致第 19 篇早停6.4 中途变乱Chaotic一度正常之后毫无规律。常见线索训练集未充分打乱例如先 100 张狗再 100 张猫batch 组成剧烈变化划分后务必shuffle时间序列任务则按时间切分而非乱切第 19 篇边界。6.5 和分类指标一起看损失曲线是优化过程的体温计业务还要对照第 10、11 篇的 Precision / Recall / AUC。尤其第 20 篇的不平衡场景验证 Log Loss 在降少数类 Recall 仍可能不够——说明光盯一条损失曲线不够要在工作阈值上再看混淆矩阵。7. 反过拟合工具箱把本单元串起来数据侧1820 模型侧本篇 第07篇 ───────────────── ───────────────────── 三分法 / 同分布 控制复杂度特征数、阶数 清洗 / 去重 / 标签可信 L2 调 lambda 不平衡用对指标与 class_weight 早停盯验证损失汽车示例用重量预测 MPGdegree8多项式在 7 个点上训练 MSE 可接近 0验证却爆炸——第 18 篇代码已演示加Ridge线性回归的 L2或降回degree1验证往往恢复正常。分类任务则在LogisticRegression(C1/lambda)上调C CC或λ \lambdaλ配合第 20 篇的class_weight。若你只有一两个强特征如重量先把模型做简单往往比堆十来个交叉特征更稳——这和第 17 篇「交叉维数爆炸」、本篇「维度诅咒」是同一条警告线的两面。8. 动手多项式阶数、Ridge 与损失曲线importnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.model_selectionimporttrain_test_splitfromsklearn.preprocessingimportPolynomialFeatures,StandardScalerfromsklearn.linear_modelimportLinearRegression,Ridgefromsklearn.pipelineimportPipelinefromsklearn.metricsimportmean_squared_error rngnp.random.default_rng(0)weightrng.uniform(2.2,4.6,120)mpg34-4.6*weightrng.normal(0,1.5,120)Xweight.reshape(-1,1)ympg X_train,X_val,y_train,y_valtrain_test_split(X,y,test_size0.25,random_state0)defmake_model(degree,alpha0.0):lrRidge(alphaalpha)ifalpha0elseLinearRegression()returnPipeline([(poly,PolynomialFeatures(degreedegree,include_biasFalse)),(scaler,StandardScaler()),(model,lr),])fordegin[1,5,12]:mmake_model(deg)m.fit(X_train,y_train)print(fdeg{deg:2d}train{mean_squared_error(y_train,m.predict(X_train)):.3f}f val{mean_squared_error(y_val,m.predict(X_val)):.3f})# Ridge on high degreem_ridgemake_model(12,alpha1.0)m_ridge.fit(X_train,y_train)print(deg12 Ridge alpha1.0 val,round(mean_squared_error(y_val,m_ridge.predict(X_val)),3))# 记录每轮不可直接用于 sklearn 的闭式解模型逻辑回归可用 warm_start 画曲线fromsklearn.linear_modelimportLogisticRegressionfromsklearn.datasetsimportmake_classification Xc,ycmake_classification(n_samples800,n_features12,random_state1)Xt,Xv,yt,yvtrain_test_split(Xc,yc,test_size0.25,random_state0)train_losses,val_losses[],[]clfLogisticRegression(max_iter1,warm_startTrue,C0.1,solverlbfgs)for_inrange(80):clf.fit(Xt,yt)fromsklearn.metricsimportlog_loss train_losses.append(log_loss(yt,clf.predict_proba(Xt)))val_losses.append(log_loss(yv,clf.predict_proba(Xv)))best_epochint(np.argmin(val_losses))print(best epoch by val log_loss:,best_epoch)预期deg12训练 MSE 很低、验证很高deg1或Ridge高压下验证更稳。best epoch给出早停参考——不必跑满 80 轮。9. 能力边界与常见误区9.1 适用边界L2 / 早停主要约束权重类模型树模型用深度、叶子数等别的方式控复杂度。正则化救不了「数据完全不代表真实世界」——第 19 篇的数据问题要先解决。训练损失因加了正则项而上升是正常的关键看验证 / 测试。9.2 常见误区误区正解训练损失越低越好对照验证曲线λ \lambdaλ一次调好永久用换学习率、换特征后要重调早停 随便少训几轮盯验证损失最低点特征越多越好维度诅咒先小后大只有模型复杂才会过拟合数据泄漏、重复样本也会「假泛化」验证升了只加数据同时减复杂度、加正则复杂度和数据泄漏无关重复样本、全表标准化也会造成「假好」曲线「曲线好看」的三问训练/验证是否同步改善测试集是否只用过一次线上分布是否仍接近训练10. 关键术语速查术语一句话解释模型复杂度模型拟合数据的「弯曲/敏感」程度正则化训练时惩罚复杂模型L2 正则化惩罚∑ w j 2 \sum w_j^2∑wj2​权重趋向变小λ \lambdaλ/ C正则强度sklearn 里C ≈ 1 / λ C \approx 1/\lambdaC≈1/λ早停验证损失变差前停止训练损失曲线损失随 epoch 变化的曲线泛化曲线训练与验证损失画在一起维度诅咒特征多时空间稀疏难学习11. 延伸阅读资源适合看什么sklearn Ridge线性回归 L2sklearn LogisticRegression C分类中的 L2 强度专栏第 07 篇Log Loss L2 公式与梯度专栏第 18 篇泛化曲线与三分法专栏第 04 篇学习率与调参流程12. 小结过拟合不只有「数据没弄好」一种原因模型太复杂、训太久同样致命。记住两个旋钮L2λ \lambdaλ限制权重大小早停限制训练长度用验证损失曲线决定何时停、λ \lambdaλ取多大。看 train/val 曲线 → 判断过/欠拟合 → 调 lambda / 特征 / 早停 → 测试集终验本篇收束「数据集、泛化与过拟合」单元的模型侧主线下一篇做本单元总复盘从特征工程到划分、不平衡、正则化的一条检查清单再衔接后续进阶主题。系列导航上一篇【机器学习】20—— 类别不平衡下一篇预告数据集与泛化单元复盘从特征到验收的检查清单如果本篇对你有帮助欢迎点赞、收藏、关注博主机器学习专栏持续更新中下次更新不迷路。

相关新闻

RedisInsight终极指南:如何用可视化工具轻松管理Redis数据库

RedisInsight终极指南:如何用可视化工具轻松管理Redis数据库

RedisInsight终极指南:如何用可视化工具轻松管理Redis数据库 【免费下载链接】RedisInsight Redis GUI by Redis 项目地址: https://gitcode.com/GitHub_Trending/re/RedisInsight RedisInsight是Redis官方推出的现代化GUI管理工具,它彻底改变了开…

2026/7/28 0:46:19 阅读更多 →
Adapt Intent Parser调试与优化:解决意图识别准确率的3个关键技巧

Adapt Intent Parser调试与优化:解决意图识别准确率的3个关键技巧

Adapt Intent Parser调试与优化:解决意图识别准确率的3个关键技巧 【免费下载链接】adapt Adapt Intent Parser 项目地址: https://gitcode.com/gh_mirrors/ada/adapt Adapt Intent Parser作为Mycroft AI生态系统中的核心自然语言处理工具,专门用…

2026/7/26 21:54:56 阅读更多 →
终极Android离线人脸识别SDK:5分钟集成,数据隐私100%安全

终极Android离线人脸识别SDK:5分钟集成,数据隐私100%安全

终极Android离线人脸识别SDK:5分钟集成,数据隐私100%安全 【免费下载链接】FaceAISDK_Android Android on_device Face Recognition 、 Liveness detection and 1:N & M:N Face Search SDK 端侧可离线人脸识别 活体检测 以及1:N M:N 人脸搜索SDK …

2026/7/28 2:27:49 阅读更多 →

最新新闻

树莓派3安装OSMC媒体中心:从零搭建家庭影音系统

树莓派3安装OSMC媒体中心:从零搭建家庭影音系统

1. 项目缘起:为什么选择OSMC作为树莓派媒体中心如果你手头有一台闲置的树莓派3,想把它变成一个功能强大、界面美观、资源占用低的家庭媒体中心,那么OSMC绝对是一个绕不开的选项。我最初接触OSMC,是因为厌倦了市面上那些臃肿的智能…

2026/7/28 3:20:53 阅读更多 →
利用Arduino将电容触摸板改造为USB HID输入设备

利用Arduino将电容触摸板改造为USB HID输入设备

1. 项目概述:从一块触摸板到USB输入设备最近在整理工作室的物料时,翻出了一块闲置的电容触摸板。这玩意儿通常出现在一些旧笔记本上,或者作为独立的模块出售。看着它,我就在想:能不能把它变成一个独立的USB输入设备&am…

2026/7/28 3:20:53 阅读更多 →
vSAN集群SSD磁盘寿命耗尽安全更换完整实操流程

vSAN集群SSD磁盘寿命耗尽安全更换完整实操流程

vSAN集群内SSD磁盘使用寿命即将耗尽,安全无损更换流程分为三大核心阶段:第一阶段在vCenter管理界面对该SSD执行磁盘撤离、移除操作,vSAN自动将该磁盘上所有数据迁移至集群内其他健康磁盘;第二阶段全程监控集群数据重建rebuild进度…

2026/7/28 3:20:53 阅读更多 →
DataHub数据质量监控终极指南:5步构建企业级数据治理体系

DataHub数据质量监控终极指南:5步构建企业级数据治理体系

DataHub数据质量监控终极指南:5步构建企业级数据治理体系 【免费下载链接】datahub The Context Platform for your Data and AI Stack 项目地址: https://gitcode.com/GitHub_Trending/da/datahub DataHub作为现代数据栈的元数据平台,为企业提供…

2026/7/28 3:20:53 阅读更多 →
SpringBoot宠物医院管理系统开发实践与优化

SpringBoot宠物医院管理系统开发实践与优化

1. 项目背景与核心价值宠物医疗行业近年来呈现爆发式增长,根据《2023年中国宠物医疗行业白皮书》显示,全国宠物医院数量已突破2.3万家,年复合增长率达18.7%。这种快速增长背后存在着三个典型痛点:纸质记录效率低下:传统…

2026/7/28 3:20:52 阅读更多 →
基于Arduino与AMG8833的简易热成像仪制作全攻略

基于Arduino与AMG8833的简易热成像仪制作全攻略

1. 项目概述:从零开始打造你的桌面热成像仪几年前,我第一次接触到工业级热成像仪,那动辄上万元的价格和复杂的操作界面让我望而却步。但作为一个热衷于用Arduino捣鼓各种传感器的爱好者,我一直在想,能不能用更亲民的方…

2026/7/28 3:19:52 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/27 4:33:59 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/27 6:31:56 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/27 4:01:12 阅读更多 →

月新闻