机器学习
在前两章中,我们探讨了"智能"的本质与 AI 发展的前世今生。从符号主义到连接主义,从专家系统到深度学习,AI 的每一次飞跃都离不开一个核心引擎——机器学习。
接下来,我们将从头开始系统地认识机器学习——从基本概念与三要素,到三大学习范式,再到模型训练、评估与完整工作流程。准备好了吗?让我们一起推开机器学习的大门。
什么是机器学习
要理解机器学习,首先要厘清它与人工智能、深度学习的关系——它们是三个层层递进的概念。
人工智能
机器学习
深度学习
"一个程序被认为能从经验 E 学习,解决任务 T,达到性能度量值 P,当且仅当有了经验 E 后,经过 P 评判,程序在处理 T 时的性能有所提升。"
为什么强调"适定性"?
Mitchell 的定义暗含了一个深刻的问题:并不是任何事都能通过"积累经验"来学会。只有当 T、E、P 都被精确描述时,我们才能真正谈论"学习是否发生"。
机器学习三要素
一个机器学习系统由三个核心要素构成:数据、算法和模型。三者缺一不可,共同构成了机器学习的完整框架。我们先来快速认识它们,然后逐一深入。
数据
算法
模型
三者的关系:数据驱动 算法,算法在数据上训练出 模型,模型用来对新数据进行 预测。
在机器学习中,数据不是杂乱无章的——我们有自己的一套"行话"来描述数据。下面用一个「房价预测」的例子来直观理解这些术语。这是一张简化的房价数据表:
| 面积 (m²) | 卧室 | 楼层 | 房龄 (年) | 均价 (万) |
|---|---|---|---|---|
| 89 | 2 | 12 | 5 | 320 |
| 120 | 3 | 8 | 10 | 450 |
| 60 | 1 | 22 | 2 | 210 |
| 150 | 4 | 5 | 15 | 580 |
(120, 3, 8, 10, 450)
= (x, y)
x = (120, 3, 8, 10),这里是 4 维向量
x = (120, 3, 8, 10) 在三维特征空间中的位置。从原点 (0,0,0) 到该点的有向线段就是特征向量,虚线投影帮助读取各维度坐标值。根据数据是否有标签以及反馈方式的不同,机器学习可以划分为三种基本学习范式。下面先用三张卡片快速认识它们的定位,再逐一展开具体的例子和算法。
监督学习
无监督学习
强化学习
📚 监督学习 Supervised Learning
🌰 举例:垃圾邮件分类。收集 10 万封已标注"垃圾/正常"的邮件,提取发件人、标题关键词、链接数量等特征,训练模型对新邮件自动分类。准确率达到 98% 以上即可投入生产。
常见算法
KNN
逻辑回归
决策树
SVM
朴素贝叶斯
随机森林
🔍 无监督学习 Unsupervised Learning
🌰 举例:电商客户分群。提取 100 万用户的消费能力、购买频率、品类偏好等特征,K-Means 自动将用户分成高价值忠实型、价格敏感型、冲动消费型、沉默用户等群体,无需任何人工标签。
常见算法
K-Means
DBSCAN
层次聚类
PCA
t-SNE
GMM
🎮 强化学习 Reinforcement Learning
🌰 举例:AlphaGo 下围棋。Agent(AlphaGo)在棋盘环境中落子,终局赢棋得 +1 奖励,输棋得 -1。通过数百万次自我对弈,学会评估任意棋局的胜率,做出最优决策。
常见算法
Q-Learning
DQN
Policy Gradient
PPO
A3C
AlphaZero
三种范式各有特色,适用于不同类型的问题。一张对比表快速看清它们的差异:
📚 监督学习
- 标签:✅ 有标签(有老师)
- 反馈:即时反馈(预测对错立刻知道)
- 目标:学习从输入到输出的映射
- 典型应用:分类、回归
- 数据要求:需要大量标注数据
🔍 无监督学习
- 标签:❌ 无标签(自学成才)
- 反馈:无反馈(自己发现结构)
- 目标:发现数据内在的分布和结构
- 典型应用:聚类、降维
- 数据要求:无需标注,原始数据即可
🎮 强化学习
- 标签:⏳ 延迟反馈(没有即时答案)
- 反馈:稀疏的奖励信号(赢/输)
- 目标:最大化长期累积奖励
- 典型应用:游戏 AI、机器人控制
- 数据要求:通过与环境交互生成数据
三种范式并非彼此孤立——在实际应用中,它们经常融合交叉,产生了许多重要方向:
🔗 半监督学习
🪞 自监督学习
🧬 迁移学习
🎲 集成学习
面对不同的数据和场景,选择正确的学习范式能事半功倍。下面四条决策路径帮你快速定位——
输出是离散类别还是连续数值?这决定了你的具体任务类型。
想在数据中发现隐藏结构?根据你的目标选择不同方向。
有明确的奖励信号?Agent 能在环境中反复试错?RL 是不二之选。
利用未标注数据或预训练模型,大幅降低对人工标注的依赖。
理解了三种学习范式之后,我们来具体看看它们各自能解决什么样的实际问题。机器学习要解决的问题可以归纳为以下几大类:
分类问题
→ 由 监督学习 解决
回归问题
→ 由 监督学习 解决
聚类问题
→ 由 无监督学习 解决
降维问题
→ 由 无监督学习 解决
异常检测
→ 可由 无监督/监督 解决
关联分析
→ 由 无监督学习 解决
序贯决策
→ 由 强化学习 解决
分类是监督学习中最常见的任务——模型根据样本的特征将其归入预定义的类别。根据输出形式的不同,又分为以下几种:
Binary Classification
Multiclass Classification
Multilabel Classification
与分类不同,回归的输出是一个连续数值而不是离散标签。你给它输入特征,它预测一个数值。上一章房价数据表(面积 → 均价)就是一个标准的回归问题。
简单回归
多元回归
时序预测
聚类是无监督学习的核心——将数据自动分成若干组(簇),使得同一组内的样本彼此相似,不同组之间的样本差异明显。不需要事先知道有哪些类别,模型自己从数据中发现分组结构。
🌰 电商客户分群:某平台用 K-Means 将 100 万用户自动分成四类——高价值忠实用户(15%)、价格敏感型(30%)、冲动消费型(20%)、沉默用户(35%),然后针对每类用户制定不同的营销策略。整个过程没有任何人工标签。
降维将高维数据映射到低维空间,保留关键结构的同时去除冗余和噪声。高维数据(如 1000 维的图片向量)难以直接观察和计算,降维可以帮我们压缩数据、加速计算、缓解"维度灾难"。
🌰 数据可视化:一个数据集有 50 个特征(50 维),无法直接画图观察。用 PCA 或 t-SNE 将数据压缩到 2 维或 3 维,就可以画在平面上肉眼观察数据的分布结构——哪些样本聚在一起、有没有离群点,一目了然。
异常检测识别数据中显著偏离正常模式的样本。与"聚类"不同——聚类的目标是"分组",将相似的归到一起;异常检测的目标是"找出与众不同的那个"。它可以由无监督学习解决(在无标签数据中发现离群点),也可以由监督学习解决(用已标注的正常/异常数据训练分类器)。
信用卡欺诈检测
产线缺陷识别
服务器日志告警
关联分析从大规模数据中发现变量之间的共现关系,核心是找出"当 A 发生时,B 也经常发生"的关联规则。它是无监督学习的重要分支,在零售和推荐系统中应用极为广泛。
🌰 购物篮分析:超市发现一个有趣的规律——买尿布的顾客中有 60% 也买了啤酒。这就是经典的"啤酒与尿布"故事。基于这种关联规则,超市可以优化商品陈列(将尿布和啤酒放在邻近货架),或设计组合促销策略。常用的算法有 Apriori 和 FP-Growth。
序贯决策是强化学习解决的核心问题——智能体在连续的时间步骤中做出决策,每一步的决策会影响未来的状态和收益。没有标准答案,只有延迟的奖励信号。
智能体
状态
动作 → 奖励
以上归纳了机器学习要解决的核心问题类型。值得留意的是,半监督学习和自监督学习又在传统框架之上拓展了机器学习的边界。接下来先从最经典的线性回归出发,真正拆开模型训练的内部过程,再讨论如何评估模型的好坏。
前面我们已经知道机器学习能解决哪些问题,现在追问最关键的一步:模型到底是怎么“学”出来的? 最适合回答这个问题的起点,是结构最简单、训练逻辑却最完整的线性回归。看懂它,就能顺着同一条主线理解损失函数、梯度下降、学习率,以及深度学习中最常见的 Adam 优化器。
第一步:用一条直线做预测
假设我们想根据房屋面积预测总价。只有一个输入特征时,线性回归会尝试找到一条最合适的直线:
表示输入对结果的影响强度。面积每增加一个单位,预测价格大约变化多少。
表示不依赖输入的基础值,让模型不必被迫经过坐标原点。
$e_i=\hat{y}_i-y_i$,也就是预测点与真实点之间的距离。
亲手移动直线,观察损失函数如何变化
试着调整两个滑块:左图中的直线越贴近散点,残差越短;右图中的红点就会沿着 $J(w,b)$ 曲面靠近“碗底”。训练模型,本质上就是同时调整多个参数,在损失空间里寻找最低点。
第二步:用损失函数定义“错得有多严重”
模型必须先有一个可计算的评分标准,才知道自己应该往哪个方向改。这个标准就是损失函数(Loss Function)。在线性回归中最常见的是均方误差 MSE:
均方误差 MSE
曲线光滑、方便求导,对大误差惩罚强。线性回归和神经网络回归任务都很常见。
mean((ŷ - y)²)
平均绝对误差 MAE
直接计算误差绝对值,不会把少数极端误差过度放大,但在零点处不光滑。
mean(|ŷ - y|)
交叉熵 Cross-Entropy
衡量预测概率与真实类别之间的差距,是分类网络与大语言模型训练的核心损失。
-log p(正确答案)
横轴不再是面积,而是模型参数;纵轴是损失。每一组参数都对应“地形”上的一个位置。线性回归的 MSE 通常像一个光滑的碗,最低点就是最优解;深度神经网络的损失地形则扩展到数百万甚至数十亿维,但“往低处走”的思想完全相同。
第三步:损失函数怎么求解
解析解 / 最小二乘法
对简单线性回归,可以令导数等于 0,直接算出碗底的位置。矩阵形式常写作:
适合特征规模不大、结构简单的问题。实际计算通常使用更稳定的数值分解,而不是直接求逆。
迭代优化 / 梯度下降
先随机选择一组参数,再根据当前位置的坡度不断向下移动,逐步逼近最低点。
适合数据量大、参数多、模型复杂的场景,也是训练神经网络的基本方式。
第四步:梯度下降——顺着最陡的下坡方向走
梯度可以理解为当前位置最陡的上坡方向,因此在梯度前加一个负号,就得到了下坡方向。在线性回归中,$w$ 和 $b$ 的梯度分别为:
先给 $w$、$b$ 一个起点。
用当前参数得到预测值。
判断错多少、往哪边改。
让参数朝损失更小的方向移动。
第五步:学习率决定每一步迈多大
更新公式里的 $\alpha$ 叫作学习率(Learning Rate)。它不是模型学到的参数,而是训练前人为设置的超参数。学习率太小,方向虽然正确却走得很慢;太大则可能跨过谷底、来回震荡,甚至越走越远。
从同一个起点出发,看看不同步长的结果
稳定但收敛慢,训练成本高,也可能在有限轮次内学不充分。
损失持续下降,较少震荡,在速度和稳定性之间取得平衡。
反复跨过最低点,损失剧烈震荡,严重时直接发散。
从梯度下降到 Adam:优化器是怎样演化来的
深度网络参数极多,不同参数方向的坡度也可能相差巨大。单纯使用固定步长的梯度下降往往不够高效,于是优化器沿着两条思路不断演化:减少梯度噪声,以及为不同参数自动调节步长。
Batch GD
每更新一步都计算全部样本。方向稳定,但大数据下速度慢、内存压力大。
SGD
每看一个样本就更新,速度快但路线抖动明显,有时会错过稳定下降方向。
Mini-batch SGD
每次使用一小批数据,兼顾速度、稳定性和并行计算,成为深度学习训练的标准方式。
记住方向:Momentum
像小球下坡一样积累“惯性”:连续同向的梯度会加速,来回摆动的方向会相互抵消,从而减少震荡。
调整步长:AdaGrad → RMSProp
AdaGrad 为频繁更新的参数减小步长,但学习率可能衰减过头;RMSProp 改用近期梯度平方的滑动平均,让步长保持活力。
Adam
同时维护梯度的一阶矩和二阶矩:既拥有 Momentum 的方向惯性,又具备 RMSProp 的自适应学习率。
Adam = Adaptive Moment Estimation
自适应矩估计:让每个参数都有自己的“方向记忆”和“步长刻度”。
梯度的移动平均,回答“最近总体在往哪个方向走?”
梯度平方的移动平均,回答“这个方向最近波动有多大?”
方向稳定时大胆前进,波动较大时缩小步长。
Adam 通常是训练新模型时很实用的默认起点,但它并不保证在所有任务中都最好。实际项目仍需结合数据、模型、批大小和学习率调度进行验证。
这条主线如何通向深度学习
一个输入经过权重和偏置,输出一个预测值。
海量参数共同表达复杂的图像、语音与语言规律。
从线性回归到神经网络,变化的是模型规模与结构;始终不变的是同一个训练闭环:预测 → 计算损失 → 求梯度 → 优化参数。下一章讨论模型评估时,我们将进一步回答:损失下降了,是否就代表模型真的学好了?
前面介绍了三大范式和各种算法,但"能跑起来的模型"不等于"好的模型"。我们需要一套科学的方法来衡量模型的好坏、诊断问题所在、选择最合适的模型。本章就来介绍这些核心技术。
过拟合与欠拟合
模型训练中最常见的问题就两个:过拟合和欠拟合。它们本质上反映了模型复杂度和数据拟合之间的平衡。
什么是欠拟合
模型太简单,连训练数据里的基本规律都没学到位。
- 训练误差 高
- 验证误差 也高
- 本质:模型表达能力不足
什么是过拟合
模型太复杂,把训练数据里的噪声也“死记硬背”下来,反而学不到真正的规律。
- 训练误差 极低
- 验证误差 触底反弹
- 本质:泛化能力差
过拟合,本质就是泛化能力差——模型在训练集上表现得很好,但在交叉验证集和测试集上表现一般,对未知样本的预测能力差。回到上面的学习曲线,这正是右侧的情形:训练误差一路走低,验证误差却在某个点之后不降反升,说明模型开始“背”噪声了。
那么,如何防止过拟合?常用的方法有:
📏 正则化
📊 数据集扩增
🎲 Dropout
🛑 Early Stopping
偏差与方差
评估模型性能时,两个关键角度是偏差(Bias)和方差(Variance)。
📈 高偏差
简单模型(如直线)一组训练的平均模型与真实模型的差距较大。
→ 欠拟合:模型过于简单,无法捕捉数据的真实结构。
→ 特点:训练误差高,测试误差也高。
📉 高方差
复杂模型(如高阶曲线)对数据变动非常敏感,不同训练集产生的模型差异很大。
→ 过拟合:模型过于复杂,记住了噪声而非规律。
→ 特点:训练误差低,测试误差高。
我们希望找到表达能力好(低偏差)且复杂度适当(低方差)的模型——这就是偏差-方差平衡(Bias-Variance Tradeoff)的核心思想。
性能度量指标
性能度量是衡量模型泛化能力的数值评价标准。不同的任务需要不同的指标。
评估方法
评估的关键在于:测试集必须与训练集互斥,即测试集数据不参与训练过程。常见评估方法有三种:
✂️ 留出法
Hold-out。将原始数据直接划分为训练集和测试集(如 7:3 或 8:2)。简单直接,但对数据划分方式敏感,单次划分可能不够稳定。
🔄 交叉验证法
Cross Validation。将数据分为 k 份,每次用 k-1 份训练、1 份验证,轮流 k 次后取平均结果。k 折交叉验证能有效减少方差,评估结果更稳定。
🎲 自助法
Bootstrap。通过有放回抽样生成大量伪样本,用这些样本估计统计量的分布。在小样本场景下尤其有用,但会引入一定的估计偏差。
我们希望找到对当前问题表达能力好,且模型复杂度较低的模型——
表达力好的模型,可以较好地对训练数据中的规律和模式进行学习;
复杂度低的模型,方差较小,不容易过拟合,有较好的泛化表达。
机器学习基本流程
一个完整的机器学习项目,通常遵循以下四个核心步骤。记住这个流程,你就掌握了解决实际问题的基本框架。
数据预处理
输入原始数据 + 标签 → 特征处理(缩放、选择、降维、采样)→ 输出训练集 + 测试集
模型学习
选择模型、交叉验证、结果评估、超参选择——在训练集上学习模型参数
模型评估
使用测试集评估模型性能,了解模型对于数据集的得分与泛化能力
新样本预测
将训练好的模型应用于新数据,进行实际的预测或分类任务
优势与局限性
机器学习技术发展至今,既有强大的能力,也面临诸多挑战。客观认识它的优势和局限,能帮助我们更好地应用它。
- 自动特征提取:深度学习可自动从数据中学习多层特征,减少人工干预
- 广泛适应性:适用于图像、文本、语音、时序等多种数据类型
- 实时推理能力:训练后的模型可快速推理,支持在线应用
- 良好的可扩展性:在数据规模增长下仍能保持高性能
- 对数据依赖强:需大量高质量标注数据,获取成本高
- 缺乏可解释性:复杂模型难以解释决策过程
- 偏差与公平性问题:训练数据偏见可能导致不公平决策
- 计算资源消耗大:深度模型训练需高性能硬件
- 泛化能力受限:在小样本或分布变化场景下易过拟合
机器学习,尤其是深度学习,正以强大的预测能力和广泛的应用场景改变众多行业。但其对数据和计算资源的高度依赖、模型可解释性不足等问题仍需持续改进。未来的发展需在模型透明性、公平性与资源效率等方面取得突破,以实现更广泛且负责任的应用。
理解了机器学习的基础之后,下一章我们将进入它的核心引擎——
看看“深度学习”是如何让机器真正“看”和“听”的。