第 2 章

机器学习

在前两章中,我们探讨了"智能"的本质与 AI 发展的前世今生。从符号主义到连接主义,从专家系统到深度学习,AI 的每一次飞跃都离不开一个核心引擎——机器学习

接下来,我们将从头开始系统地认识机器学习——从基本概念与三要素,到三大学习范式,再到模型训练、评估与完整工作流程。准备好了吗?让我们一起推开机器学习的大门。

什么是机器学习

要理解机器学习,首先要厘清它与人工智能、深度学习的关系——它们是三个层层递进的概念。

最外层 · 概念

人工智能

Artificial Intelligence
研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的学科。是一个笼统而宽泛的概念,最终目标是使计算机能够模拟人的思维方式和行为。上世纪 50 年代兴起,但受限于数据和硬件,发展缓慢。
中间层 · 方法

机器学习

Machine Learning
人工智能的子集,是实现 AI 的一种途径(但不是唯一途径)。专门研究计算机怎样模拟或实现人类的学习行为,以获取新知识或技能,重新组织已有知识结构以不断改善自身性能。上世纪 80 年代蓬勃发展,诞生了大量数学统计模型。
核心层 · 技术

深度学习

Deep Learning
机器学习的子集,灵感来自人脑,由人工神经网络(ANN)组成。"深度"指神经网络中隐藏层的数量。2012 年以后爆炸式增长,借助大数据与 GPU 算力,广泛应用于计算机视觉、NLP 等领域。
T
Tom Mitchell 1997

"一个程序被认为能从经验 E 学习,解决任务 T,达到性能度量值 P,当且仅当有了经验 E 后,经过 P 评判,程序在处理 T 时的性能有所提升。"

—— 出自经典教材 Machine Learning
🎯
T · Task
任务
需要解决的具体问题,如"判断邮件是否为垃圾邮件"
📚
E · Experience
经验
从历史数据中获取的信息,如"已标注的邮件数据集"
📏
P · Performance
性能
可量化的评估指标,如"分类准确率达到 98%"

为什么强调"适定性"?

Mitchell 的定义暗含了一个深刻的问题:并不是任何事都能通过"积累经验"来学会。只有当 T、E、P 都被精确描述时,我们才能真正谈论"学习是否发生"。

✅ 适定问题
📧 垃圾邮件过滤
T · 任务 判断一封新邮件是否为垃圾邮件
E · 经验 10 万封已标注"垃圾/正常"的历史邮件
P · 性能 准确率 ≥ 98%,或 F1 ≥ 0.95
🎯 T、E、P 全部可量化 → 可以验证"学习是否发生"
⚠️ 不适定陷阱
💬 "让 AI 变聪明"
T · 任务 "变聪明" — 具体指什么任务?
E · 经验 "多学习" — 用什么数据?什么方式?
P · 性能 "更聪明" — 如何量化衡量?
❌ T、E、P 全部模糊 → 无法验证"学习是否发生"

机器学习三要素

一个机器学习系统由三个核心要素构成:数据算法模型。三者缺一不可,共同构成了机器学习的完整框架。我们先来快速认识它们,然后逐一深入。

📊

数据

机器学习的燃料。没有数据,再好的算法也无从学习。数据由样本组成,每个样本包含若干特征和一个(或没有)标签。数据的质量与数量,直接决定了模型能力的上限。
⚙️

算法

学习模型的具体计算方法。基于训练数据,根据学习策略,从假设空间中选择最优模型。通常是一个最优化问题——如何找到使损失函数最小化的模型参数。
🧠

模型

基于数据的假设函数。模型是算法在数据上训练后的产出,它定义了从输入到输出的映射关系。可以是线性函数、决策树、神经网络等各种形式。

三者的关系:数据驱动 算法,算法在数据上训练出 模型,模型用来对新数据进行 预测

在机器学习中,数据不是杂乱无章的——我们有自己的一套"行话"来描述数据。下面用一个「房价预测」的例子来直观理解这些术语。这是一张简化的房价数据表:

📊 房价数据集(示例)
面积 (m²) 卧室 楼层 房龄 (年) 均价 (万)
89 2 12 5 320
120 3 8 10 450
60 1 22 2 210
150 4 5 15 580
← 示例 / 样本 紫色高亮的一整行就是一条样本(Instance),如 (120, 3, 8, 10, 450)
↓ 属性 / 特征 蓝色列头(面积、卧室、楼层、房龄)是描述样本的 4 个特征(Feature),也叫属性
🏷️ 标记 / 标签 粉色列「均价」是我们想预测的目标值,即标记(Label / y)。带标记的样本 = (x, y)
📐 特征向量 一个样本的特征值组合成向量:x = (120, 3, 8, 10),这里是 4 维向量
滚动到这里时加载交互图表
属性空间(3D):每个样本是特征空间中的一个点。此处用面积 (X)、卧室数 (Y)、楼层 (Z) 三个维度展示,颜色越深房价越高。你可以拖拽旋转从任意角度观察。
滚动到这里时加载交互图表
特征向量:样本 x = (120, 3, 8, 10) 在三维特征空间中的位置。从原点 (0,0,0) 到该点的有向线段就是特征向量,虚线投影帮助读取各维度坐标值。

根据数据是否有标签以及反馈方式的不同,机器学习可以划分为三种基本学习范式。下面先用三张卡片快速认识它们的定位,再逐一展开具体的例子和算法。

有标签

监督学习

Supervised Learning
训练数据带有标签,模型学习从输入到输出的映射。就像"有老师带着学"——老师告诉你正确答案,你从错误中不断改进。
无标签

无监督学习

Unsupervised Learning
训练数据没有标签,模型自己从数据中发现隐藏的结构和模式。就像"自学成才"——没有标准答案,全靠自己归纳总结。
延迟反馈

强化学习

Reinforcement Learning
没有现成的数据,智能体通过与环境交互试错来学习,获得延迟的奖励或惩罚。就像"学骑自行车"——摔倒了爬起来,慢慢找到平衡。

📚 监督学习 Supervised Learning

🌰 举例:垃圾邮件分类。收集 10 万封已标注"垃圾/正常"的邮件,提取发件人、标题关键词、链接数量等特征,训练模型对新邮件自动分类。准确率达到 98% 以上即可投入生产。

常见算法

KNN

找最近的 K 个邻居投票,简单直观,适合小数据集。

逻辑回归

二分类的基石,在线性组合上套 Sigmoid 输出概率。

决策树

树形结构做特征判断,可解释性极强。

SVM

寻找最大间隔超平面,核技巧处理非线性问题。

朴素贝叶斯

基于贝叶斯定理,文本分类效果好且速度快。

随机森林

多棵决策树的集成,抗过拟合能力强。

🔍 无监督学习 Unsupervised Learning

🌰 举例:电商客户分群。提取 100 万用户的消费能力、购买频率、品类偏好等特征,K-Means 自动将用户分成高价值忠实型、价格敏感型、冲动消费型、沉默用户等群体,无需任何人工标签。

常见算法

K-Means

最经典的聚类算法,迭代分配样本到最近中心。

DBSCAN

基于密度的聚类,自动识别噪声点,无需预置簇数。

层次聚类

构建聚类树,可在不同粒度观察分群结构。

PCA

线性降维,将数据投影到方差最大的方向上。

t-SNE

非线性降维,擅长将高维数据映射到 2D/3D 可视化。

GMM

高斯混合模型,比 K-Means 更灵活,给出概率归属。

🎮 强化学习 Reinforcement Learning

🌰 举例:AlphaGo 下围棋。Agent(AlphaGo)在棋盘环境中落子,终局赢棋得 +1 奖励,输棋得 -1。通过数百万次自我对弈,学会评估任意棋局的胜率,做出最优决策。

常见算法

Q-Learning

基于价值的经典算法,学习状态-动作的累积回报。

DQN

用深度网络逼近 Q 函数,解决高维状态空间问题。

Policy Gradient

直接学习策略函数,适合连续动作空间。

PPO

近端策略优化,平衡训练稳定性与样本效率。

A3C

异步多 Agent 并行训练,加速收敛。

AlphaZero

不依赖人类棋谱,仅靠自我对弈达到超人类水平。

三种范式各有特色,适用于不同类型的问题。一张对比表快速看清它们的差异:

📚 监督学习

Supervised
  • 标签:✅ 有标签(有老师)
  • 反馈:即时反馈(预测对错立刻知道)
  • 目标:学习从输入到输出的映射
  • 典型应用:分类、回归
  • 数据要求:需要大量标注数据

🔍 无监督学习

Unsupervised
  • 标签:❌ 无标签(自学成才)
  • 反馈:无反馈(自己发现结构)
  • 目标:发现数据内在的分布和结构
  • 典型应用:聚类、降维
  • 数据要求:无需标注,原始数据即可

🎮 强化学习

Reinforcement
  • 标签:⏳ 延迟反馈(没有即时答案)
  • 反馈:稀疏的奖励信号(赢/输)
  • 目标:最大化长期累积奖励
  • 典型应用:游戏 AI、机器人控制
  • 数据要求:通过与环境交互生成数据

三种范式并非彼此孤立——在实际应用中,它们经常融合交叉,产生了许多重要方向:

🔗 半监督学习

少量标注数据 + 大量未标注数据。利用未标注数据的结构信息辅助学习,大幅降低标注成本。

🪞 自监督学习

自己给自己"造"标签。BERT、GPT 等大语言模型的核心训练方法就是自监督学习。

🧬 迁移学习

将在源任务上学到的知识迁移到目标任务。用预训练模型做微调,小数据也能有不错的效果。

🎲 集成学习

组合多个模型提升性能。Bagging 降低方差,Boosting 降低偏差,Stacking 融合不同模型优势。

面对不同的数据和场景,选择正确的学习范式能事半功倍。下面四条决策路径帮你快速定位——

🏷️ 有标签数据?
监督学习

输出是离散类别还是连续数值?这决定了你的具体任务类型。

分类(离散标签) 回归(连续数值)
🔍 无标签数据?
无监督学习

想在数据中发现隐藏结构?根据你的目标选择不同方向。

聚类(发现分组) 降维(压缩与可视化)
🎮 有交互环境?
强化学习

有明确的奖励信号?Agent 能在环境中反复试错?RL 是不二之选。

游戏 AI / AlphaGo 机器人控制 优化调度
💡 标注数据少?
半监督 / 自监督 / 迁移学习

利用未标注数据或预训练模型,大幅降低对人工标注的依赖。

半监督(少量标注 + 大量未标注) 自监督(自己造标签) 迁移学习(预训练微调)

理解了三种学习范式之后,我们来具体看看它们各自能解决什么样的实际问题。机器学习要解决的问题可以归纳为以下几大类:

分类

分类问题

Classification
预测离散的类别标签。模型判断样本属于哪个预定义的类别。
→ 由 监督学习 解决
回归

回归问题

Regression
预测连续的数值。模型根据输入特征输出一个实数值。
→ 由 监督学习 解决
聚类

聚类问题

Clustering
将数据自动分成若干有意义的群组,组内相似、组间相异。
→ 由 无监督学习 解决
降维

降维问题

Dimensionality Reduction
将高维数据映射到低维空间,保留关键结构的同时去除冗余。
→ 由 无监督学习 解决
异常

异常检测

Anomaly Detection
识别偏离正常模式的异常样本。与聚类不同——找出"与众不同"的那个。
→ 可由 无监督/监督 解决
关联

关联分析

Association Rule Learning
发现变量之间的共现关系和关联规则——"当 A 发生时,B 也经常发生"。
→ 由 无监督学习 解决
决策

序贯决策

Sequential Decision Making
在连续步骤中决策,每一步影响未来状态和收益,只有延迟的奖励信号。
→ 由 强化学习 解决

分类是监督学习中最常见的任务——模型根据样本的特征将其归入预定义的类别。根据输出形式的不同,又分为以下几种:

二分类

Binary Classification

输出只有两个互斥类别。🌰 例子:判断一封邮件是垃圾邮件(正)还是正常邮件(负)。这是分类中最基础、应用最广的一类。
多类分类

Multiclass Classification

输出有多个互斥类别,每个样本只能属于其中一类。🌰 例子:手写数字识别(0~9 共 10 类);邮件自动归类为"工作"、"社交"或"促销"。
多标签

Multilabel Classification

每个样本可以同时属于多个类别。🌰 例子:一篇新闻文章可同时标注为"科技"和"AI"两个标签;一张图片可同时包含"猫"和"沙发"。

与分类不同,回归的输出是一个连续数值而不是离散标签。你给它输入特征,它预测一个数值。上一章房价数据表(面积 → 均价)就是一个标准的回归问题。

单变量

简单回归

只有一个输入特征预测一个连续值。🌰 例子:根据房屋面积(单一特征)预测房价。
多变量

多元回归

使用多个输入特征进行预测。🌰 例子:根据面积、卧室数、楼层、房龄等多个特征预测房价。
时序

时序预测

基于历史时间序列数据预测未来值。🌰 例子:根据过去 30 天的气温预测明天的温度;根据历史销量预测下月销售额。

聚类是无监督学习的核心——将数据自动分成若干组(簇),使得同一组内的样本彼此相似,不同组之间的样本差异明显。不需要事先知道有哪些类别,模型自己从数据中发现分组结构。

🌰 电商客户分群:某平台用 K-Means 将 100 万用户自动分成四类——高价值忠实用户(15%)、价格敏感型(30%)、冲动消费型(20%)、沉默用户(35%),然后针对每类用户制定不同的营销策略。整个过程没有任何人工标签。

降维将高维数据映射到低维空间,保留关键结构的同时去除冗余和噪声。高维数据(如 1000 维的图片向量)难以直接观察和计算,降维可以帮我们压缩数据、加速计算、缓解"维度灾难"。

🌰 数据可视化:一个数据集有 50 个特征(50 维),无法直接画图观察。用 PCA 或 t-SNE 将数据压缩到 2 维或 3 维,就可以画在平面上肉眼观察数据的分布结构——哪些样本聚在一起、有没有离群点,一目了然。

异常检测识别数据中显著偏离正常模式的样本。与"聚类"不同——聚类的目标是"分组",将相似的归到一起;异常检测的目标是"找出与众不同的那个"。它可以由无监督学习解决(在无标签数据中发现离群点),也可以由监督学习解决(用已标注的正常/异常数据训练分类器)。

金融

信用卡欺诈检测

从海量交易记录中找出异常的消费行为——比如异地突然大额消费、短时间内频繁小额试探等。
工业

产线缺陷识别

通过产品外观图像或传感器数据,自动标记出有瑕疵的不合格品,替代人工质检。
运维

服务器日志告警

持续监控系统日志,自动发现偏离正常模式的异常请求或故障信号,及时告警。

关联分析从大规模数据中发现变量之间的共现关系,核心是找出"当 A 发生时,B 也经常发生"的关联规则。它是无监督学习的重要分支,在零售和推荐系统中应用极为广泛。

🌰 购物篮分析:超市发现一个有趣的规律——买尿布的顾客中有 60% 也买了啤酒。这就是经典的"啤酒与尿布"故事。基于这种关联规则,超市可以优化商品陈列(将尿布和啤酒放在邻近货架),或设计组合促销策略。常用的算法有 Apriori 和 FP-Growth。

序贯决策是强化学习解决的核心问题——智能体在连续的时间步骤中做出决策,每一步的决策会影响未来的状态和收益。没有标准答案,只有延迟的奖励信号。

Agent

智能体

学习并做出决策的主体,如 AlphaGo 程序本身。
State

状态

环境的当前快照,包含决策所需的所有信息,如当前棋盘局势。
Action → Reward

动作 → 奖励

Agent 选择一个动作(如落子位置),环境返回奖励信号(赢棋 +1,输棋 -1)。

以上归纳了机器学习要解决的核心问题类型。值得留意的是,半监督学习和自监督学习又在传统框架之上拓展了机器学习的边界。接下来先从最经典的线性回归出发,真正拆开模型训练的内部过程,再讨论如何评估模型的好坏。

前面我们已经知道机器学习能解决哪些问题,现在追问最关键的一步:模型到底是怎么“学”出来的? 最适合回答这个问题的起点,是结构最简单、训练逻辑却最完整的线性回归。看懂它,就能顺着同一条主线理解损失函数、梯度下降、学习率,以及深度学习中最常见的 Adam 优化器。

做出预测 Forward
计算损失 Loss
求出梯度 Gradient
更新参数 Optimizer
↺ 不断重复,直到误差足够小

第一步:用一条直线做预测

假设我们想根据房屋面积预测总价。只有一个输入特征时,线性回归会尝试找到一条最合适的直线:

\[ \hat{y}=wx+b \]
$x$ 是输入特征,$\hat{y}$ 是模型的预测值;$w$ 决定直线的斜率,$b$ 决定直线整体上下移动的位置。训练的目标,就是从数据中找到合适的 $w$ 和 $b$。
$w$
权重 Weight

表示输入对结果的影响强度。面积每增加一个单位,预测价格大约变化多少。

$b$
偏置 Bias

表示不依赖输入的基础值,让模型不必被迫经过坐标原点。

$e$
残差 Residual

$e_i=\hat{y}_i-y_i$,也就是预测点与真实点之间的距离。

互动实验

亲手移动直线,观察损失函数如何变化

当前 MSE
数据空间 虚线是每个样本的残差
损失空间 MSE 是关于 w、b 的二元函数
拖动旋转

试着调整两个滑块:左图中的直线越贴近散点,残差越短;右图中的红点就会沿着 $J(w,b)$ 曲面靠近“碗底”。训练模型,本质上就是同时调整多个参数,在损失空间里寻找最低点。

第二步:用损失函数定义“错得有多严重”

模型必须先有一个可计算的评分标准,才知道自己应该往哪个方向改。这个标准就是损失函数(Loss Function)。在线性回归中最常见的是均方误差 MSE:

\[ J(w,b)=\frac{1}{n}\sum_{i=1}^{n}\left(\hat{y}_i-y_i\right)^2 =\frac{1}{n}\sum_{i=1}^{n}\left(wx_i+b-y_i\right)^2 \]
先计算每个样本的预测误差,再平方、求和、取平均。误差平方后不会正负抵消,并且会让较大的错误受到更重惩罚。
回归常用

均方误差 MSE

曲线光滑、方便求导,对大误差惩罚强。线性回归和神经网络回归任务都很常见。

mean((ŷ - y)²)
更抗异常值

平均绝对误差 MAE

直接计算误差绝对值,不会把少数极端误差过度放大,但在零点处不光滑。

mean(|ŷ - y|)
分类常用

交叉熵 Cross-Entropy

衡量预测概率与真实类别之间的差距,是分类网络与大语言模型训练的核心损失。

-log p(正确答案)
为什么损失函数的图像如此重要?

横轴不再是面积,而是模型参数;纵轴是损失。每一组参数都对应“地形”上的一个位置。线性回归的 MSE 通常像一个光滑的碗,最低点就是最优解;深度神经网络的损失地形则扩展到数百万甚至数十亿维,但“往低处走”的思想完全相同。

第三步:损失函数怎么求解

路线 A · 直接计算

解析解 / 最小二乘法

对简单线性回归,可以令导数等于 0,直接算出碗底的位置。矩阵形式常写作:

$\theta=(X^TX)^{-1}X^Ty$

适合特征规模不大、结构简单的问题。实际计算通常使用更稳定的数值分解,而不是直接求逆。

路线 B · 逐步逼近

迭代优化 / 梯度下降

先随机选择一组参数,再根据当前位置的坡度不断向下移动,逐步逼近最低点。

$\theta \leftarrow \theta-\alpha\nabla J(\theta)$

适合数据量大、参数多、模型复杂的场景,也是训练神经网络的基本方式。

第四步:梯度下降——顺着最陡的下坡方向走

梯度可以理解为当前位置最陡的上坡方向,因此在梯度前加一个负号,就得到了下坡方向。在线性回归中,$w$ 和 $b$ 的梯度分别为:

\[ \frac{\partial J}{\partial w}=\frac{2}{n}\sum_{i=1}^{n}(wx_i+b-y_i)x_i, \qquad \frac{\partial J}{\partial b}=\frac{2}{n}\sum_{i=1}^{n}(wx_i+b-y_i) \] \[ w \leftarrow w-\alpha\frac{\partial J}{\partial w}, \qquad b \leftarrow b-\alpha\frac{\partial J}{\partial b} \]
1 初始化参数

先给 $w$、$b$ 一个起点。

2 前向计算

用当前参数得到预测值。

3 计算损失与梯度

判断错多少、往哪边改。

4 更新并重复

让参数朝损失更小的方向移动。

第五步:学习率决定每一步迈多大

更新公式里的 $\alpha$ 叫作学习率(Learning Rate)。它不是模型学到的参数,而是训练前人为设置的超参数。学习率太小,方向虽然正确却走得很慢;太大则可能跨过谷底、来回震荡,甚至越走越远。

学习率模拟器

从同一个起点出发,看看不同步长的结果

合适:快速靠近最低点,并逐渐稳定。
🐢 太小

稳定但收敛慢,训练成本高,也可能在有限轮次内学不充分。

🎯 合适

损失持续下降,较少震荡,在速度和稳定性之间取得平衡。

太大

反复跨过最低点,损失剧烈震荡,严重时直接发散。

从梯度下降到 Adam:优化器是怎样演化来的

深度网络参数极多,不同参数方向的坡度也可能相差巨大。单纯使用固定步长的梯度下降往往不够高效,于是优化器沿着两条思路不断演化:减少梯度噪声,以及为不同参数自动调节步长

完整数据

Batch GD

每更新一步都计算全部样本。方向稳定,但大数据下速度慢、内存压力大。

单个样本

SGD

每看一个样本就更新,速度快但路线抖动明显,有时会错过稳定下降方向。

折中方案

Mini-batch SGD

每次使用一小批数据,兼顾速度、稳定性和并行计算,成为深度学习训练的标准方式。

路线一

记住方向:Momentum

像小球下坡一样积累“惯性”:连续同向的梯度会加速,来回摆动的方向会相互抵消,从而减少震荡。

SGD → Momentum
路线二

调整步长:AdaGrad → RMSProp

AdaGrad 为频繁更新的参数减小步长,但学习率可能衰减过头;RMSProp 改用近期梯度平方的滑动平均,让步长保持活力。

AdaGradRMSProp
融合结果

Adam

同时维护梯度的一阶矩和二阶矩:既拥有 Momentum 的方向惯性,又具备 RMSProp 的自适应学习率。

Momentum + RMSProp
A

Adam = Adaptive Moment Estimation

自适应矩估计:让每个参数都有自己的“方向记忆”和“步长刻度”。

一阶矩 $m_t$

梯度的移动平均,回答“最近总体在往哪个方向走?”

二阶矩 $v_t$

梯度平方的移动平均,回答“这个方向最近波动有多大?”

自适应更新

方向稳定时大胆前进,波动较大时缩小步长。

\[ m_t=\beta_1m_{t-1}+(1-\beta_1)g_t, \qquad v_t=\beta_2v_{t-1}+(1-\beta_2)g_t^2 \] \[ \theta_t=\theta_{t-1}-\alpha\frac{\hat m_t}{\sqrt{\hat v_t}+\varepsilon} \]

Adam 通常是训练新模型时很实用的默认起点,但它并不保证在所有任务中都最好。实际项目仍需结合数据、模型、批大小和学习率调度进行验证。

这条主线如何通向深度学习

线性回归
$\hat y=wx+b$

一个输入经过权重和偏置,输出一个预测值。

增加激活函数 堆叠许多层 用反向传播求梯度
深度神经网络

海量参数共同表达复杂的图像、语音与语言规律。

从线性回归到神经网络,变化的是模型规模与结构;始终不变的是同一个训练闭环:预测 → 计算损失 → 求梯度 → 优化参数。下一章讨论模型评估时,我们将进一步回答:损失下降了,是否就代表模型真的学好了?

前面介绍了三大范式和各种算法,但"能跑起来的模型"不等于"好的模型"。我们需要一套科学的方法来衡量模型的好坏、诊断问题所在、选择最合适的模型。本章就来介绍这些核心技术。

过拟合与欠拟合

模型训练中最常见的问题就两个:过拟合和欠拟合。它们本质上反映了模型复杂度和数据拟合之间的平衡。

📈 学习曲线 观察训练误差与验证误差,如何随训练轮次(Epoch)一路变化
滚动到这里时加载交互图表
训练误差 验证误差(代表泛化能力)
📉

什么是欠拟合

模型太简单,连训练数据里的基本规律都没学到位。

  • 训练误差
  • 验证误差 也高
  • 本质:模型表达能力不足
对策:增加模型复杂度 · 补充特征 · 训练更久
📈

什么是过拟合

模型太复杂,把训练数据里的噪声也“死记硬背”下来,反而学不到真正的规律。

  • 训练误差 极低
  • 验证误差 触底反弹
  • 本质:泛化能力差
对策:正则化 · Dropout · Early Stopping · 扩充数据

过拟合,本质就是泛化能力差——模型在训练集上表现得很好,但在交叉验证集和测试集上表现一般,对未知样本的预测能力差。回到上面的学习曲线,这正是右侧的情形:训练误差一路走低,验证误差却在某个点之后不降反升,说明模型开始“背”噪声了。

那么,如何防止过拟合?常用的方法有:

📏 正则化

在目标函数后添加一个正则化项。L1 正则化(Lasso)基于 L1 范数,倾向于产生稀疏解;L2 正则化(Ridge)基于 L2 范数,倾向于让参数均匀缩小。

📊 数据集扩增

获得更多符合要求的数据(与已有数据独立同分布)。方法:从源头采集更多数据、复制数据并加随机噪声、重采样、使用数据分布参数生成新数据等。

🎲 Dropout

通过修改神经网络本身结构来实现——在训练过程中随机"丢弃"一部分神经元,迫使网络学习更鲁棒的特征表示。

🛑 Early Stopping

在验证集性能不再提升时提前终止训练,防止模型过度学习训练数据中的噪声。

偏差与方差

评估模型性能时,两个关键角度是偏差(Bias)方差(Variance)

📈 高偏差

简单模型(如直线)一组训练的平均模型与真实模型的差距较大。
欠拟合:模型过于简单,无法捕捉数据的真实结构。
→ 特点:训练误差高,测试误差也高。

📉 高方差

复杂模型(如高阶曲线)对数据变动非常敏感,不同训练集产生的模型差异很大。
过拟合:模型过于复杂,记住了噪声而非规律。
→ 特点:训练误差低,测试误差高。

我们希望找到表达能力好(低偏差)且复杂度适当(低方差)的模型——这就是偏差-方差平衡(Bias-Variance Tradeoff)的核心思想。

性能度量指标

性能度量是衡量模型泛化能力的数值评价标准。不同的任务需要不同的指标。

MAE 回归
\(MAE = \dfrac{1}{n}\sum_{i=1}^{n}|y_i - \hat{y}_i|\)
平均绝对误差:所有标签值与预测值偏差的绝对值的平均。直观且对异常值不太敏感。
MSE 回归
\(MSE = \dfrac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2\)
均方误差:预测偏差的平方的平均。对异常值敏感(误差大时惩罚更重)。
RMSE 回归
\(RMSE = \sqrt{MSE}\)
均方根误差:在 MSE 基础上开方,使误差量纲与原始数据一致,更易解释。
MAPE 回归
\(MAPE = \dfrac{100\%}{n}\sum_{i=1}^{n}\left|\dfrac{y_i - \hat{y}_i}{y_i}\right|\)
平均绝对百分误差:对 MAE 的改进,考虑误差相对于真实值的比例。
回归
\(R^2 = 1 - \dfrac{SS_{res}}{SS_{tot}}\)
决定系数:反映模型解释了多少因变量变异。越接近 1,模型解释能力越强。
错误率 分类
\(Error = \dfrac{FP + FN}{TP + TN + FP + FN}\)
分类错误的样本数占样本总数的比例。最基本的分类评估指标。
精确率 分类
\(Accuracy = \dfrac{TP + TN}{TP + TN + FP + FN}\)
分类正确的样本数占样本总数的比例。最直观的模型整体表现指标。
查准率 分类
\(Precision = \dfrac{TP}{TP + FP}\)
模型预测为"正"的结果中,真正正确的比例。衡量模型的"精确性"。
查全率 分类
\(Recall = \dfrac{TP}{TP + FN}\)
在所有真正的"正"样本中,模型正确找出的比例。衡量模型的"覆盖能力"。
F1 分数 分类
\(F1 = \dfrac{2 \cdot P \cdot R}{P + R}\)
查准率与查全率的调和平均。Fβ 可调节对 precision 或 recall 的偏好。
ROC & AUC 分类
\(AUC = \displaystyle\int_{0}^{1} TPR(FPR) \, d(FPR)\)
ROC 曲线以 FPR 为横轴、TPR 为纵轴。AUC 是曲线下面积,衡量排序质量。AUC 越高,模型在低误判率下的识别能力越强。

评估方法

评估的关键在于:测试集必须与训练集互斥,即测试集数据不参与训练过程。常见评估方法有三种:

✂️ 留出法

Hold-out。将原始数据直接划分为训练集和测试集(如 7:3 或 8:2)。简单直接,但对数据划分方式敏感,单次划分可能不够稳定。

🔄 交叉验证法

Cross Validation。将数据分为 k 份,每次用 k-1 份训练、1 份验证,轮流 k 次后取平均结果。k 折交叉验证能有效减少方差,评估结果更稳定。

🎲 自助法

Bootstrap。通过有放回抽样生成大量伪样本,用这些样本估计统计量的分布。在小样本场景下尤其有用,但会引入一定的估计偏差。

我们希望找到对当前问题表达能力好,且模型复杂度较低的模型——

表达力好的模型,可以较好地对训练数据中的规律和模式进行学习;
复杂度低的模型,方差较小,不容易过拟合,有较好的泛化表达

机器学习基本流程

一个完整的机器学习项目,通常遵循以下四个核心步骤。记住这个流程,你就掌握了解决实际问题的基本框架。

1

数据预处理

输入原始数据 + 标签 → 特征处理(缩放、选择、降维、采样)→ 输出训练集 + 测试集

2

模型学习

选择模型、交叉验证、结果评估、超参选择——在训练集上学习模型参数

3

模型评估

使用测试集评估模型性能,了解模型对于数据集的得分与泛化能力

4

新样本预测

将训练好的模型应用于新数据,进行实际的预测或分类任务

优势与局限性

机器学习技术发展至今,既有强大的能力,也面临诸多挑战。客观认识它的优势和局限,能帮助我们更好地应用它。

机器学习的优势
  • 自动特征提取:深度学习可自动从数据中学习多层特征,减少人工干预
  • 广泛适应性:适用于图像、文本、语音、时序等多种数据类型
  • 实时推理能力:训练后的模型可快速推理,支持在线应用
  • 良好的可扩展性:在数据规模增长下仍能保持高性能
⚠️ 机器学习的局限性
  • 对数据依赖强:需大量高质量标注数据,获取成本高
  • 缺乏可解释性:复杂模型难以解释决策过程
  • 偏差与公平性问题:训练数据偏见可能导致不公平决策
  • 计算资源消耗大:深度模型训练需高性能硬件
  • 泛化能力受限:在小样本或分布变化场景下易过拟合

机器学习,尤其是深度学习,正以强大的预测能力和广泛的应用场景改变众多行业。但其对数据和计算资源的高度依赖、模型可解释性不足等问题仍需持续改进。未来的发展需在模型透明性、公平性与资源效率等方面取得突破,以实现更广泛且负责任的应用。

理解了机器学习的基础之后,下一章我们将进入它的核心引擎——
看看“深度学习”是如何让机器真正“看”和“听”的。