§ 2.2 · Section

机器学习 · ML

Machine Learning

机器学习(Machine Learning)是 AI 大圈里的一个具体流派,也是今天几乎所有"看起来智能"的产品的底子。它的核心思想只有一句:不写规则,让机器从数据里自己找规律。这句话听起来平淡,实际上是软件工程史上最激烈的一次范式反转——过去六十年程序员的核心工作是"把规则写清楚",机器学习把这份工作外包给了数据。这一节要讲清五件事:这个反转具体反转了什么、学习有哪几种范式、经典算法各自的性格、"特征工程"为什么曾经是这行的全部、以及一套能保证你的模型不是在自欺欺人的实验流程。

生活场景
🍉 你去菜市场挑西瓜

你第一次挑西瓜完全靠猜。挑了 100 个瓜,每次回家切开,你记下:敲起来闷响 + 底部黄 + 瓜蒂卷——大概率甜。慢慢地,下一次你不用切就能挑出好瓜。

整个过程里:100 个瓜的经验是"数据",你脑子里那套规律是"模型",能挑出没切过的新瓜是"泛化能力"。

先把术语翻译成人话

机器学习的名词有一个共同特点:听着玄,其实全是你早就会的常识换了个说法。先把本节核心名词一次性摆出来,换成大白话再各配一个生活里的对应物:

术语换成大白话生活里对应什么
ML(Machine Learning,机器学习——不写规则,让机器从例子里自己总结规律的程序)不教它怎么做,只给它看足够多的例子厨师没背菜谱,切了三百斤菜之后自己知道该多厚
特征(Feature——喂进模型的每一个观测维度)你拿来做判断的那几条线索挑西瓜时看的"响声、颜色、瓜蒂"
标签(Label——你希望模型学会给出的正确答案)切开之后那个"甜/不甜"的结论考试卷背面的标准答案
参数(Parameter——训练过程中被自动调出来的那一大堆数)网络里那一大堆可以拧的旋钮,机器自己拧洗衣机里的水位、转速,只不过这些旋钮是它自己边洗边调
超参数(Hyperparameter——训练之前由人手动定下的设置)你自己拧的那几个外部旋钮,机器不动它你按下的那个"标准/快洗/强力"模式键
训练(Training——反复调参让预测和答案更接近的过程)一遍遍改,直到差距缩到最小练一道题练二十遍,每遍对一次答案改一次做法
泛化(Generalization——在没见过的新样本上也管用)不是背会了,而是真会了会做没做过的新题,而不只是会做作业上那几道
过拟合(Overfitting——把训练集里的噪音也当规律背下来)把答案连错别字一起背了学生把例题答案全背下来,一换数字就废
欠拟合(Underfitting——连训练集都学不好)它连例题都没听懂上课全程走神,笔记一个字没记
损失(Loss——预测和真实答案之间的差距,越小越好)扣了多少分考完试的错题总扣分
梯度下降(Gradient Descent——沿着最陡的下坡方向一小步一小步走)闭着眼下山,每次朝脚下最陡的方向挪一小步停电了摸黑找楼梯,靠脚感一级一级往下探
数据泄漏(Data Leakage——答案的线索混进了特征里)考卷里夹了答案,成绩当然漂亮模拟考试用的是原题,一到真考就崩
概念漂移(Concept Drift——世界变了,旧规律不再成立)规律本身会过期去年那家菜市场的摊位排布,今年全变了

这张表最该盯住的是"参数"和"超参数"这一对,因为它们后面会反复出现。参数是机器自己拧的旋钮,超参数是你替它拧的旋钮——简单说:机器负责微调水位,你负责选模式。剩下那些词,说白了都在描述同一件事的不同侧面:怎么从例子里榨出规律,以及怎么确认你榨出来的规律不是自己骗自己。

打个比方把"训练"这件事彻底落地。想象一下你在一间黑漆漆的屋子里找门:你看不见全局,只能用脚试——哪个方向地面往下斜,你就往那儿挪一小步,挪完再试一次。挪的那一步有多大,是你自己定的(学习率,属于超参数);你实际站到了哪个位置,是一步步试出来的(参数)。这就是梯度下降的全部内容:不需要知道门在哪,只需要每一步都朝当下最陡的下坡走。步子太大会在两侧来回弹永远到不了底,步子太小则天亮了还在原地——其实就是这么朴素的一件事,只不过在真实模型里这个"屋子"有几十亿个方向。

所以整套机器学习本质上就是三个动作循环:猜一次 → 看差多少 → 照着差距挪一小步它每天干的活儿就是把这三步重复几万到几百万遍,直到差距缩到不能再缩。后面所有听起来复杂的技术名词,都是在这三步里的某一步上做优化。

ML 和传统编程的最大区别:一次输入输出的对调

传统编程机器学习
输入数据 + 规则数据 + 答案
输出结果规则(模型)
规则来源程序员写机器自己找
擅长逻辑清晰、规则明确的问题规则模糊、样本丰富的问题

把这张表念一遍容易,理解它有多颠覆则需要一个具体例子。假设任务是识别手写数字。传统编程的做法:你得写规则去描述"8"——上下两个闭合圈、腰部有交叉点;描述"1"——一条近乎竖直的笔画。真动手写你会立刻绝望:有人的 7 带横杠,有人的 4 是开口的,有人的 9 尾巴拖得像 g。你写到第两百条规则时,新规则开始和旧规则互相打架,而准确率卡在 70% 上不去。

机器学习的做法:拿 MNIST 数据集里 6 万张标好数字的手写图片,喂进一个模型,让它自己去找"什么样的像素组合对应 8"。你一条规则都不用写,几分钟训练后准确率就能到 98% 以上。你交出去的不是知识,而是判断的权力——这是这个范式最迷人也最危险的地方:模型可能学到你完全没想到的正确规律,也可能学到你完全没想到的错误捷径。

关于"错误捷径",有个被反复引用的真实教训:早年有研究者训练模型区分哈士奇和狼,准确率很高,事后用可解释性工具一看,模型根本没看动物,它学的是"背景里有雪就是狼"——因为训练集里狼的照片大多在雪地拍的。同类问题在医学影像里也出现过:模型靠"图像上有没有某家医院的标尺水印"来判断病变,因为重症病人集中在那家医院。这就是范式反转的代价:你不写规则,就等于不完全知道它在用什么规则。

传统编程:   规则(人写) + 数据  ──程序──▶  答案
机器学习:   数据 + 答案(人给)  ──训练──▶  规则(模型)
                                            │
                        新数据 ─────────────┴──▶ 预测答案
           ↑ 注意:第二行的"规则"跑到了右边,这就是"范式反转"

顺带说一句常被引用的定义。1959 年,IBM 的塞缪尔(Arthur Samuel)写出了会下西洋跳棋且能通过自我对局越下越强的程序,他把机器学习定义为"让计算机不需要被显式编程就能学习的研究领域"。1997 年米切尔(Tom Mitchell)给出了更工程化、至今写在所有教材第一页的版本:一个程序从经验 E 中学习任务 T,如果它在 T 上由指标 P 衡量的表现随 E 增加而提升,就说它在学习。这个定义的价值是把"学习"变成了可测量的东西——你必须先说清 T(任务)、P(指标)、E(经验)三者,才算真的在做机器学习,而不是在做玄学。

机器学习的四大流派

01

监督学习 · Supervised

你给:数据 + 标准答案。
它学:输入 → 输出的映射。
例:垃圾邮件识别、房价预测、看片诊断。

02

无监督学习 · Unsupervised

你给:只有数据,没有答案。
它学:数据里的结构、群体、异常。
例:用户分群、异常检测、话题聚类。

03

强化学习 · Reinforcement

你给:一个环境 + 奖励/惩罚。
它学:在环境里"怎么做能得高分"。
例:下棋 AI、机器人控制、自动驾驶。

04

自监督学习 · Self-Supervised

你给:只给数据,自己造答案。
它学:数据的深层表征。
例:大语言模型的预训练(今天的主流)。

监督学习是这行的绝对主力,工业界九成以上的落地项目属于它。它内部还分两支:预测离散类别叫分类(这封邮件是不是垃圾、这个用户会不会流失),预测连续数值叫回归(这套房值多少钱、明天订单量是多少)。它的门槛也非常现实——标注数据贵得惊人。ImageNet 为了给 1400 多万张图片打标签,用了亚马逊众包平台上数万名工人、耗时约两年半;医学影像的标注更贵,必须是有资质的医生逐张勾画病灶轮廓,一张片子可能耗掉专家十几分钟。所以"有没有高质量标注数据"往往是一个 AI 项目能否启动的真正门槛,而不是算法。

无监督学习不需要标签,因此数据便宜,但代价是没有客观的对错。你把用户聚成 5 群还是 8 群,没有标准答案,只能靠业务解释力来判断好坏。它的典型价值在三处:聚类(K-Means 把客户分群做差异化营销)、降维(PCA 把 200 个指标压成 10 个主成分,便于可视化和加速)、异常检测(信用卡盗刷、工厂设备故障——因为异常样本天生稀少,很难凑够标签,反而适合"学正常长什么样,偏离就报警"的思路)。

强化学习的设定完全不同:没有现成数据集,只有一个能反复试错的环境和一个奖励信号。它要处理两个监督学习没有的难题——延迟奖励(下棋走第 30 步的好坏要到第 120 步才知道,功过如何分摊?)和探索与利用的权衡(该继续用已知得分高的招,还是冒险试新招?)。它的战绩很硬:2013 年 DeepMind 用 DQN 玩 Atari 游戏、2016 年 AlphaGo 以 4:1 胜李世石、2017 年 AlphaGo Zero 零人类棋谱自我对弈三天超越前代。它的短板同样硬:极其吃试错次数——在游戏里可以随便重开一万局,在真实工厂或真实病人身上不行。这也是它落地远慢于监督学习的原因。

自监督学习是这几年最重要的一支,因为它一举解决了"标签太贵"这个瓶颈。它的把戏是从数据自己身上造标签:把一句话的最后一个词遮住,让模型预测它——这个词本来就在原文里,等于标签是免费的。互联网上的万亿级文本因此在一夜之间全部变成了"带标签的训练数据"。这就是 GPT 系列预训练的全部秘密,也是 2018 年之后 NLP 突飞猛进的根本原因。它在视觉上也有对应版本(遮住图像块让模型补全,即 MAE;或者拉近同一张图两种增强视角的表示,即对比学习)。严格说自监督是监督学习的一个变种——损失函数、反向传播都一样,唯一的区别是标签不是人给的,是从数据结构里挖出来的。

Analogy · 四种老师

监督学习:老师每题都给标答,你对着改。
无监督学习:老师不给答案,只把一堆卷子放你面前,让你自己分类。
强化学习:老师不讲课,只在你做对时说"好"、做错时说"不好",你自己摸索。
自监督学习:老师撕掉一半试卷让你补全另一半——不需要额外标注,就能从原文本里"自问自答"。

把这个类比推到底还能看出各自的"教学成本":监督学习最省学生的力,但最费老师的力(每题都得批改);无监督学习老师最省力,但学生学到的东西没法验收;强化学习老师只需要说"好/不好",可学生要试上几百万次才摸到门道;自监督学习则是老师彻底下岗,学生拿一本书自己出题自己答——这就是为什么它能扩展到"整个互联网"这种数据量级,而其他三种都不行。

机器学习的四步流程

1. 准备数据

收集样本、清洗噪音、划分训练集和测试集。数据决定天花板,模型只是逼近。

2. 选一个模型

线性回归、决策树、神经网络——本质都是"一个带参数的函数"。参数就是模型要学的东西。

3. 训练

把训练数据喂进去,让模型不断修正参数,让预测和答案的差距(损失)尽可能小。

4. 评估

拿测试集打分。考得好说明"泛化"了;只在训练集上好叫过拟合——死记硬背而已。

这四步在真实项目里的时间分配非常不直观:第 1 步通常吃掉 60%–80% 的工时,第 3 步往往只占几个百分点。多份行业调查都指向同一个结论——数据科学家把大部分时间花在找数据、洗数据、对齐口径上,真正"调模型"的时间少得可怜。理解这一点能帮你避开新手最常见的心态错误:以为这行的核心竞争力是会用哪个算法。

第 3 步的内部机制值得单独说一句,因为它是所有现代 ML 的公共引擎。训练就是一个下山的过程:模型的参数决定了它在"损失曲面"上的位置,损失越低越好;算法计算出当前位置最陡的下坡方向(梯度),朝那个方向走一小步(步长叫学习率),然后重复几万次。学习率太大会在山谷两侧来回弹跳永不收敛,太小则慢到训不完——这类"不是学出来而是人调出来"的参数叫超参数,它们是这行最耗人的手工活。

三个必须知道的术语

过拟合还有个孪生兄弟叫欠拟合(Underfit),二者构成了这行最核心的一对矛盾——偏差与方差的权衡。欠拟合是模型太笨,连训练集都学不好(相当于学生连例题都没听懂);过拟合是模型太"聪明",把训练集里的噪音也当成规律背下来了(相当于学生把例题答案连错别字一起背了)。判断哪一种,只需看两个数字:

训练集表现测试集表现诊断该怎么救
欠拟合(高偏差)换更复杂的模型、加特征、训练更久
过拟合(高方差)加数据、正则化、Dropout、早停、简化模型
健康上线,然后持续监控数据漂移
数据划分或代码有 bug先查数据泄漏,这种情况几乎不正常

再补三个每天都会遇到的词。参数 vs 超参数:参数是训练中自动学出来的(比如权重),超参数是你训练前手动定的(学习率、树的深度、层数)。准确率不等于有用:如果 1000 个交易里只有 1 笔是欺诈,那么一个"永远预测不欺诈"的模型准确率高达 99.9%,却毫无价值——这就是为什么要用精确率(报警的里面有几个真的)、召回率(真的坏人里抓到了几个)以及二者的调和平均 F1数据泄漏(Data Leakage):不小心把答案的线索混进了特征,比如用"是否已退款"去预测"是否会退货",模型在测试集上分数漂亮,上线立刻崩——这是新手最常踩且最难自查的坑。

特征工程:深度学习之前,这行的全部功夫

有句在业内流传多年的话:"数据和特征决定了机器学习的上限,模型和算法只是逼近这个上限。"在 2012 年之前,一个 ML 项目的成败几乎完全由特征工程决定——因为经典模型(逻辑回归、SVM、树模型)本身不会"理解"原始数据,你必须把原始数据加工成它能吃的形状。

举个具体例子。要预测一家外卖店明天的订单量,原始数据只有一张订单流水表。直接把"日期"这个字符串丢进模型是没用的,你得手工造出这些特征:星期几(周末和周三完全不同)、是否节假日前 7 天订单均值(近期趋势)、去年同期同比(年周期)、当日降雨量(下雨订单暴涨)、是否有平台补贴。这六个特征凝结的全是业务常识,模型自己一辈子也从"2026-08-01"这个字符串里想不出"下雨天点外卖的人更多"。

常见的特征工程手法可以归成几类:清洗(缺失值填补、异常值截断)、编码(把"北京/上海/广州"这类类别变量做 One-Hot 或目标编码)、缩放(把"年龄 0–100"和"收入 0–1000000"归一化到同一量级,否则距离类算法会被大数字主导)、构造(用"身高、体重"造出 BMI;用"总金额、订单数"造出客单价)、筛选(去掉相关性极高的冗余特征)。

那么深度学习是不是让特征工程消失了?只在特定领域是。在图像、语音、文本上,深度网络能自动从原始像素和字符里学出特征,手工特征基本被淘汰。但在结构化表格数据(银行、保险、电商、广告的主战场)上,特征工程至今仍是胜负关键——这也是 XGBoost 这类树模型二十年不倒的根本原因。换句话说,特征工程没有被消灭,它是被从一部分领域赶走了。

经典算法的性格:五个各有脾气的选手

在深度学习火起来之前,机器学习的主力是一批更"轻量"的经典算法——今天在很多工业场景里仍然是首选(数据不够、要求可解释、算力有限时用这些):

算法擅长今天用在哪
线性回归 / 逻辑回归简单预测和分类信用评分、风控基线
决策树 / 随机森林可解释的规则金融风控、医学辅助诊断
SVM 支持向量机中等规模分类文本分类、生物识别
K-Means 聚类把数据自动分群用户分群、图片压缩
XGBoost / LightGBM结构化数据王者Kaggle 比赛、推荐、广告

光看表格记不住,逐个说清它们的"性格"你就再也不会混:

训练集、验证集、测试集:一套防止自欺欺人的制度

初学者最容易犯的错是用同一批数据训练又评估,然后欢天喜地地宣布准确率 99%。这就像让学生把答案抄一遍再考同一张卷子。所以这行有一套近乎仪式化的数据切分制度,它存在的唯一目的是让你无法骗自己

数据集典型占比用途能看几次
训练集 Train60%–80%让模型调整参数(拟合)无限次
验证集 Validation10%–20%调超参数、选模型、决定何时早停多次,但每次都在轻微"污染"它
测试集 Test10%–20%最终验收,模拟真实世界理想情况只看一次

为什么验证集和测试集必须分开?因为只要你根据某份数据的分数做过决定,这份数据就不再"干净"了。如果你反复用测试集调参,试了三十组超参数挑出分数最高的那组,你其实是在把测试集的信息偷偷训进了模型,最后那个漂亮分数是虚的。这种现象叫"在测试集上过拟合",它是学术圈刷榜和工业落地效果落差的主要来源之一。

数据不多时(比如只有几千条),单独切出验证集太浪费,就用 K 折交叉验证:把数据均分成 5 份,轮流拿其中 1 份当验证集、其余 4 份训练,跑 5 次取平均。这样每条数据都当过一次验证样本,结论稳得多。

还有两个必须记住的切分纪律。第一,时间序列绝不能随机切分:预测明天的股价,如果训练集里混进了后天的数据,那就是"用未来预测过去",线下分数会好得离谱,上线立刻打脸。正确做法是按时间切——用 1 月到 9 月训练,10 月验证,11 月测试。第二,切分必须在特征工程之前做:如果你先用全量数据算出"收入的平均值"再拿去填缺失值,那测试集的统计信息已经泄漏进了训练流程。

时间序列的正确切法(不能打乱!)
  ├──── Train ────┤├─ Val ─┤├─ Test ─┤
  1月 ────────── 9月 ── 10月 ── 11月 ──▶ 时间

随机打乱后的错误切法(未来信息泄漏)
  ▓░▓▓░▓░░▓▓░▓  ← 训练集里混进了测试期之后的样本
Analogy · 三个人一起管一家餐厅的后厨

训练集、验证集、测试集这套制度,用一家餐厅的三道品尝关就能全说明白。
训练集 = 厨师自己在厨房里试做。他可以做一百遍、尝一百遍、改一百遍配方,想尝多少次都行——这就是"训练集能看无限次"。
验证集 = 店长每天来尝一口,决定用哪版配方。店长不参与做菜,但他要在三版配方里挑一版、要决定辣度调到几档。这一口一口地尝下来,配方其实是照着店长的口味在偏——这就是为什么说"验证集每被用一次就被轻微污染一次"
测试集 = 开业那天进门的第一批真客人。你不能提前让他们试吃,不能根据他们的反馈改配方再让他们重来一遍。他们的评价之所以值钱,恰恰因为你没机会照着他们的口味调过
那么"用测试集反复调参"错在哪?好比你把开业第一批客人叫回来试吃三十次,每次照他们的口味改一改,最后那份满分评价其实是你自己给自己打的。翻译成人话就是:一份数据只要你照着它的分数做过决定,它就不再是"外部考官",而变成了你的私人教练。
这个类比还能顺手解释时间序列不能随机切相当于你拿这个月的客流去"预测"上个月的备货量——数字一定漂亮,因为你在用未来的账本填过去的表,而真开店那天你手里没有明天的账本。

ML 与统计学:两个亲兄弟为什么长得不像

机器学习的数学工具几乎全部来自统计学——最小二乘法、极大似然、贝叶斯定理,没有一个是 ML 发明的。但两个领域的目标不一样,导致气质差别很大。统计学关心解释:这个变量对结果的影响是否显著,置信区间多宽,模型的假设是否成立。机器学习关心预测:只要在新数据上准,模型是不是黑箱、参数有没有含义都可以不管。

维度统计学机器学习
首要目标解释与推断预测精度
关心的问题"X 是否真的影响 Y""能不能准确猜出 Y"
模型偏好简单、假设明确、可写成公式复杂无妨,能提分就行
核心指标p 值、置信区间、拟合优度测试集准确率、AUC、F1
数据规模习惯几十到几千条,样本珍贵几万到几十亿条
术语差异自变量 / 因变量 / 估计特征 / 标签 / 学习

2001 年统计学家布雷曼(Leo Breiman,随机森林的作者)写了一篇著名论文《统计建模:两种文化》,把这个分歧点破得很透:一派人假设数据由某个确定的随机模型生成,任务是把模型参数估出来;另一派人认为真实机制根本不可知,任务只是找一个预测得准的算法。机器学习是第二派的胜利。但这胜利有代价——预测准不等于理解因果,这也是为什么医学、政策、经济这些必须回答"为什么"的领域至今更信统计学。

什么问题适合用机器学习

这一节最实用的一段。判断一个需求该不该用 ML,套下面五个条件,缺一个就要非常谨慎:

还要提醒一个最容易被忽略的环节:模型上线不是结束,而是维护的开始。真实世界会漂移——用户口味变了、竞品改了策略、疫情来了,昨天还准的模型今天开始悄悄退化。所以成熟团队一定会做三件事:监控(跟踪线上预测分布和真实结果的偏差)、定期重训(用新数据刷新模型)、影子部署(新模型先并行跑一段时间只看不用,确认更好再切流量)。机器学习产品是活的,它会因为世界变化而变差,而传统软件不会。

Recap · 收束

机器学习的核心是"给经验,学规律,用规律"。今天再复杂的 AI(包括大模型),底子上都是这三个字:··

七条要点收束这一节:(1) 它的本质是范式反转——规则从"输入"变成了"输出",代价是你不再完全知道模型在用什么规则;(2) 四大范式按"标签从哪来"划分:人给(监督)、不给(无监督)、环境给(强化)、数据自己给(自监督);(3) 经典算法各有脾气,先跑逻辑回归做基线,表格数据上 XGBoost 至今难敌;(4) 特征工程决定上限,深度学习只在图像语音文本上替代了它,表格数据上它依然是胜负手;(5) 训练/验证/测试三分是防止自欺欺人的制度,时间序列绝不能随机切;(6) 它和统计学同源不同志——一个要解释,一个要预测;(7) 五个适用条件缺一不可,且上线只是维护的开始记住一句话:数据决定天花板,模型只负责逼近它。

☰ 主页
Xue Hai Wu Ya · § 2.2 · ML