news 2026/4/23 12:17:04

人工智能之核心基础 机器学习 第十六章 模型优化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
人工智能之核心基础 机器学习 第十六章 模型优化

人工智能之核心基础 机器学习

第十六章 模型优化


文章目录

  • 人工智能之核心基础 机器学习
    • 16.1 过拟合与欠拟合
      • 🎯 定义(用“考试”比喻)
      • 🔍 表现与原因
    • 16.2 解决过拟合的方法
      • ✅ 五大核心策略
        • 1. **正则化(Regularization)**
        • 2. **交叉验证(Cross-Validation)**
        • 3. **早停(Early Stopping)**
        • 4. **增加数据量**
        • 5. **数据增强(Data Augmentation)**
    • 16.3 超参数调优
      • 🔧 三大主流方法
      • 📜 调优流程(标准实践)
    • 16.4 模型融合
      • 🤝 为什么融合有效?
      • 1. 简单融合
        • 投票法(分类)
        • 平均法(回归)
      • 2. 进阶融合:堆叠(Stacking)
    • 16.5 半监督/自监督模型优化技巧
      • 🔑 三大关键优化点
        • 1. **伪标签筛选策略**
        • 2. **自监督前置任务调优**
        • 3. **无标签数据利用率提升**
    • 16.6 模型选择策略
      • 🧭 选型决策树
      • 📊 模型选择对照表
      • 💡 半监督/自监督 vs 传统范式
    • 🎯 本章总结:泛化能力提升 Checklist
  • 资料关注

16.1 过拟合与欠拟合

🎯 定义(用“考试”比喻)

状态训练表现测试表现比喻
欠拟合“课本都没看懂,考试自然不会”
理想状态“真正学会了知识,举一反三”
过拟合极好“死记硬背考题答案,换题就不会”

🔍 表现与原因

问题典型表现根本原因
欠拟合- 训练误差高- 模型太简单(如线性模型拟合非线性)- 模型容量不足- 特征太少/质量差
过拟合- 训练误差≈0- 验证误差远高于训练误差- 模型复杂度高- 数据量少- 模型太复杂- 噪声多

💡可视化诊断

importmatplotlib.pyplotasplt plt.plot(train_losses,label='训练损失')plt.plot(val_losses,label='验证损失')plt.legend()ifval_loss starts risingwhiletrain_loss keeps falling → 过拟合!

16.2 解决过拟合的方法

✅ 五大核心策略

1.正则化(Regularization)
  • L1正则(Lasso):$ \text{Loss} + \lambda \sum |w_i| $ → 自动特征选择
  • L2正则(Ridge):$ \text{Loss} + \lambda \sum w_i^2 $ → 权重衰减,防过大
fromsklearn.linear_modelimportLogisticRegression# L2正则(默认)lr_l2=LogisticRegression(penalty='l2',C=1.0)# C越小,正则越强# L1正则lr_l1=LogisticRegression(penalty='l1',solver='liblinear',C=0.1)
2.交叉验证(Cross-Validation)
  • 防止模型评估“运气好”
  • K折交叉验证:数据分K份,轮流做验证集
fromsklearn.model_selectionimportcross_val_score scores=cross_val_score(model,X,y,cv=5)# 5折print(f"平均准确率:{scores.mean():.2%}±{scores.std():.2%}")
3.早停(Early Stopping)
  • 训练时监控验证损失,不再下降时停止
# PyTorch示例best_val_loss=float('inf')patience=5counter=0forepochinrange(100):train(...)val_loss=validate(...)ifval_loss<best_val_loss:best_val_loss=val_loss counter=0save_model()else:counter+=1ifcounter>=patience:break# 早停
4.增加数据量
  • 最根本的解决方法!但成本高
  • 半监督/自监督可缓解此问题
5.数据增强(Data Augmentation)
  • 人工扩充数据多样性
  • 图像:旋转、裁剪、颜色抖动
  • 文本:同义词替换、随机删除
  • 表格:加噪声、SMOTE(少数类过采样)
# 图像增强(用于训练)fromtorchvisionimporttransforms train_transform=transforms.Compose([transforms.RandomHorizontalFlip(),transforms.RandomRotation(10),transforms.ToTensor()])

⚠️注意:测试时不要数据增强!


16.3 超参数调优

🔧 三大主流方法

方法原理优点缺点
网格搜索遍历所有组合全面计算爆炸(维度灾难)
随机搜索随机采样组合高效,常优于网格可能漏掉最优
贝叶斯优化基于历史结果智能采样最高效实现复杂

📜 调优流程(标准实践)

fromsklearn.model_selectionimportRandomizedSearchCVfromscipy.statsimportuniform,randint# 定义参数空间param_dist={'n_estimators':randint(50,200),'max_depth':[3,5,7,None],'learning_rate':uniform(0.01,0.3)}# 随机搜索 + 交叉验证fromxgboostimportXGBClassifier model=XGBClassifier()random_search=RandomizedSearchCV(model,param_dist,n_iter=50,cv=5,scoring='accuracy',random_state=42,n_jobs=-1)random_search.fit(X_train,y_train)print("最佳参数:",random_search.best_params_)print("最佳得分:",random_search.best_score_)

💡进阶工具Optuna,Hyperopt(支持贝叶斯优化)


16.4 模型融合

🤝 为什么融合有效?

“三个臭皮匠,顶个诸葛亮” —— 不同模型犯错方式不同,融合可互补!


1. 简单融合

投票法(分类)
  • 硬投票:多数表决
  • 软投票:平均预测概率
fromsklearn.ensembleimportVotingClassifierfromsklearn.linear_modelimportLogisticRegressionfromsklearn.ensembleimportRandomForestClassifierfromsklearn.svmimportSVC clf1=LogisticRegression()clf2=RandomForestClassifier()clf3=SVC(probability=True)voting=VotingClassifier(estimators=[('lr',clf1),('rf',clf2),('svc',clf3)],voting='soft'# 使用概率)voting.fit(X_train,y_train)
平均法(回归)
pred=(model1.predict(X)+model2.predict(X)+model3.predict(X))/3

2. 进阶融合:堆叠(Stacking)

  • 基模型:多个不同模型(如LR、RF、SVM)
  • 元模型:学习如何组合基模型的输出
fromsklearn.ensembleimportStackingClassifier stacking=StackingClassifier(estimators=[('lr',lr),('rf',rf),('svc',svc)],final_estimator=LogisticRegression(),# 元模型cv=5# 用5折生成元特征)stacking.fit(X_train,y_train)

效果:通常比单一模型提升1~3%准确率!


16.5 半监督/自监督模型优化技巧

🔑 三大关键优化点

1.伪标签筛选策略
  • 动态阈值:初期阈值高(如0.95),后期降低
  • 课程学习:先学简单样本(高置信度),再学难样本
  • 一致性正则:对同一无标签样本做两次增强,预测应一致
# 动态阈值示例initial_threshold=0.95final_threshold=0.8threshold=initial_threshold-(initial_threshold-final_threshold)*(epoch/max_epochs)high_conf=proba.max(axis=1)>threshold
2.自监督前置任务调优
  • 掩码比例:图像MAE常用75%,文本BERT用15%
  • 增强强度:对比学习中,增强太弱→学不到东西,太强→两个视角无关
  • 损失函数:SimSiam用余弦相似度,MAE用MSE
3.无标签数据利用率提升
  • 分批加入:先用高质量无标签数据,再逐步扩大
  • 置信度加权:高置信伪标签权重高,低置信权重低
  • 对抗训练:让模型对输入扰动鲁棒

16.6 模型选择策略

🧭 选型决策树

大量全标注

少量标签+大量无标签

完全无标签

发现结构

预训练特征

有多少标签数据?

监督学习

半监督学习

目标任务是什么?

无监督学习

自监督学习


📊 模型选择对照表

场景推荐模型理由
表格数据 + 少量标签XGBoost + 伪标签树模型抗噪,伪标签简单有效
图像 + 无标签MAE / SimSiam 预训练视觉自监督SOTA
文本 + 少量标签BERT微调 + 半监督利用预训练语言知识
高维稀疏数据PCA + Logistic Regression降维去噪,线性模型稳定
非球形簇 + 无标签DBSCAN捕捉任意形状簇

💡 半监督/自监督 vs 传统范式

维度监督学习半监督自监督
数据需求大量标注少量标注+大量无标注仅无标注
开发成本高(标注)低(但需设计任务)
适用阶段成熟业务探索期/标注瓶颈预训练/冷启动
典型产出直接可用模型改进版监督模型通用特征提取器

实践
冷启动阶段:自监督预训练
有少量标注后:半监督微调
标注充足后:纯监督精调


🎯 本章总结:泛化能力提升 Checklist

问题解决方案工具
过拟合正则化、早停、数据增强sklearn, 手动实现
欠拟合增加模型复杂度、特征工程更深网络、新特征
超参数不佳随机搜索、贝叶斯优化RandomizedSearchCV,Optuna
单模型不稳定模型融合VotingClassifier,StackingClassifier
半监督效果差优化伪标签策略、一致性正则动态阈值、增强一致性
自监督特征弱调整前置任务、增强策略掩码比例、对比学习温度

📘建议

  1. 先保证数据质量(第15章)
  2. 从简单模型开始(如逻辑回归)
  3. 用交叉验证评估
  4. 逐步引入复杂技术(正则→融合→半监督)

🌟提醒
泛化能力不是靠一个神奇算法,而是系统性工程——数据、模型、训练、评估缺一不可!

资料关注

公众号:咚咚王
gitee:https://gitee.com/wy18585051844/ai_learning

《Python编程:从入门到实践》
《利用Python进行数据分析》
《算法导论中文第三版》
《概率论与数理统计(第四版) (盛骤) 》
《程序员的数学》
《线性代数应该这样学第3版》
《微积分和数学分析引论》
《(西瓜书)周志华-机器学习》
《TensorFlow机器学习实战指南》
《Sklearn与TensorFlow机器学习实用指南》
《模式识别(第四版)》
《深度学习 deep learning》伊恩·古德费洛著 花书
《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》
《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen)》
《自然语言处理综论 第2版》
《Natural-Language-Processing-with-PyTorch》
《计算机视觉-算法与应用(中文版)》
《Learning OpenCV 4》
《AIGC:智能创作时代》杜雨+&+张孜铭
《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》
《从零构建大语言模型(中文版)》
《实战AI大模型》
《AI 3.0》

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 15:26:36

虚拟串口与OPC UA网关协同工作:深度剖析

虚拟串口与OPC UA网关协同工作&#xff1a;工业通信的“旧桥新路” 在一座老化工厂的控制室内&#xff0c;一台运行了近二十年的PLC仍在默默采集着反应釜的温度和压力数据。它通过一根RS-485线缆&#xff0c;以Modbus RTU协议缓慢地传输着字节流——这是典型的工业“哑设备”&…

作者头像 李华
网站建设 2026/4/17 22:00:24

企业数据治理实战:用MGeo完成千万级地址库实体对齐

企业数据治理实战&#xff1a;用MGeo完成千万级地址库实体对齐 1. 引言&#xff1a;地址数据治理的挑战与MGeo的价值 在企业级数据治理场景中&#xff0c;地址数据是客户主数据、供应链管理、物流调度等核心系统的重要组成部分。然而&#xff0c;由于中文地址存在表述多样、缩…

作者头像 李华
网站建设 2026/4/18 13:14:24

UI-TARS-desktop入门指南:插件开发基础教程

UI-TARS-desktop入门指南&#xff1a;插件开发基础教程 1. UI-TARS-desktop简介 Agent TARS 是一个开源的多模态 AI Agent 框架&#xff0c;致力于通过融合视觉理解&#xff08;Vision&#xff09;、图形用户界面操作&#xff08;GUI Agent&#xff09;等能力&#xff0c;并与…

作者头像 李华
网站建设 2026/4/18 12:32:27

想试Llama3怕花钱?云端按需付费,几块钱就能全面体验

想试Llama3怕花钱&#xff1f;云端按需付费&#xff0c;几块钱就能全面体验 你是不是也和我一样&#xff0c;最近被 Llama3 这个开源大模型刷屏了&#xff1f;朋友圈、技术群、创业论坛都在聊它——性能接近 GPT-3.5&#xff0c;还完全免费开放。作为创业者&#xff0c;看到这…

作者头像 李华
网站建设 2026/4/17 18:34:32

EldenRingSaveCopier终极指南:3分钟完成艾尔登法环存档无损迁移

EldenRingSaveCopier终极指南&#xff1a;3分钟完成艾尔登法环存档无损迁移 【免费下载链接】EldenRingSaveCopier 项目地址: https://gitcode.com/gh_mirrors/el/EldenRingSaveCopier 还在为《艾尔登法环》存档迁移而烦恼吗&#xff1f;EldenRingSaveCopier这款免费开…

作者头像 李华
网站建设 2026/4/18 12:38:51

haxm is not installed怎么解决:图解说明下载与安装步骤

解决“HAXM is not installed”&#xff1a;从零开始图解安装与避坑指南 你是否在启动 Android 模拟器时&#xff0c;突然弹出一条令人头疼的提示&#xff1a; “HAXM is not installed. To improve performance, install the Intel x86 Emulator Accelerator (HAXM).” 别急…

作者头像 李华