跳转至

P1-3.2 从数据中学习模式意味着什么

Section ID: P1-3.2 Version: v2026.07.20

3.1 看过人直接写规则这种方式的优势与限制。这一节继续进入下一个问题。如果人很难把每一条有用规则都写出来,系统又怎样才能从数据中获得判断标准?

这里要做的,不是详细解释机器学习算法,而是先理解 learning patterns from data 这句话到底指向什么结构,以及它为什么和规则式系统不同。像线性回归、决策树这样的算法会在 Part 4 回来,神经网络与深度学习结构会在 Part 5 再展开。

这一节围绕 examplefeaturelabelmodeltraininggeneralization 来整理模式学习的基本结构。representation 的内部结构,以及它与规则式方法的对照,会在 3.3 继续说明。

这一节整理以下问题:

  • “从数据中学习模式”到底指向什么结构?
  • examplefeaturelabelmodel 分别扮演什么角色?
  • 为什么模式学习不能被理解成单纯记忆?

这一节先固定 从数据中学习模式 这句话到底指向什么结构。规则式方法与表征学习的差异会在 P1-3.3 继续展开,具体算法会在 Part 4 和 Part 5 继续处理。

区分模式学习、记忆与泛化的基准

  • 理解“从数据中学习模式”这句话背后的基本结构。
  • 区分 example、feature、label 与 model 的角色。
  • 看见 training 与后续实际使用(inference) 的基本差别。
  • 理解为什么模式学习不同于单纯记忆。
  • 看清为什么数据质量与 generalization 很重要。
  • 为 3.3 中规则式方法与表征学习的差异做连接。

三个基准

这一节整理的是机器学习最基本的思维方式。下面三个点是结构上的基准线。

基准 为什么重要 这一节需要达到的理解程度
学习是 在例子中寻找关系,而不是 把所有规则都直接写出来 这样能先看见它和规则式系统的差异。 区分模型是看着输入例子与答案例子来调整标准。
example、feature、label 和 model 处在 不同角色位置 这些是之后阅读 Part 4 机器学习章节需要的最低限度术语。 整理出 feature 是输入线索,label 是答案,model 是计算这种关系的结构。
学习不是 记忆,而是找出也能用在新数据上的模式 这样会自然连到 generalization 和 overfitting。 连接“好的学习”要能处理没见过的输入。

examplefeaturelabelmodeltraininggeneralization 是拖着整节走的核心术语。首先要留下的大区分是:example 是案例feature 是线索label 是答案model 是计算关系的结构training 是调整标准generalization 是这种标准也能在新输入上成立的状态。下面正文会再把这些词重新绑一次。

先用一个小例子来读

如果一开始只用抽象定义,学习模式 这句话会显得很空。所以先看一个小例子:客户咨询分类。

假设客户中心会收到下面这些消息。

咨询句子 人工贴上的类别
“我想退款。” 退款
“可以取消付款吗?” 退款
“配送什么时候到?” 配送
“如果明天还不到我就取消。” 配送
“商品寄来时是坏的。” 换货或补发
“请再寄一次。” 换货或补发
“我想修改地址。” 配送信息修改
“我想修改收件人电话号码。” 配送信息修改

如果用规则来处理,人就必须直接写出类似下面这样的规则。

如果句子里有 “退款” 或 “取消”,就分到退款。
如果句子里有 “配送” 或 “明天”,就分到配送。
如果句子里有 “坏了” 或 “再寄”,就分到换货或补发。
如果句子里有 “地址” 或 “电话号码”,就分到配送信息修改。

一开始这看起来也说得通,但模糊句子很快就会出现。

如果配送晚了,我可以不要退款而改成补发吗?

这句话里同时带着 配送退款补发 这些线索。如果系统只盯着某一个词,就很容易分错。所以学习式方法会把问题换掉。

它不再问“只要出现某个词,就一定该送到哪个类别”,

而是问:看过很多过去的咨询和分类之后, 这条新咨询在结构上最像哪一类?

这一节剩下的说明,都可以围绕这个小例子来理解。这里把 examplefeaturelabelmodeltraininginference 只当成说明训练数据和后续模型使用的最小词汇。特征和表征在模型内部如何不同,会在 3.3 单独整理。

它不是写规则,而是找关系

规则式系统从显式条件开始工作。

if condition A and condition B are satisfied, produce result C

机器学习换掉了这个工作中心。它不是让人把所有条件都直接写出来,而是去找过去数据或例子里输入和输出之间的关系。

example data -> training -> model -> prediction for a new input

如果再回到前面的客户咨询例子,它可以这样来看。

方法 问题 工作
规则式 如果某些词出现,系统应该把咨询送到哪个类别? 由人写词、条件和例外规则
学习式 过去的咨询句子和分类之间,什么关系在重复出现? 收集咨询句子和类别,让模型去学习边界

两种方法都仍然会接收输入、产出输出。差别在于判断标准到底从哪里来。规则式系统让人显式写标准,机器学习模型则让标准通过数据被调整。

flowchart TD
  Rule输入[输入]
  Rules[人工编写的规则]
  RuleOutput[结果]

  Data[示例数据]
  Train[训练]
  Model[训练好的模型]
  New输入[新输入]
  Pred[预测]

  Rule输入 --> Rules --> RuleOutput
  Data --> Train --> Model
  New输入 --> Model --> Pred

这个图让我们并排比较 人直接写标准的流程用例子数据来调整标准的流程。关键对比是:在规则式流程里,标准写在模型外面,而 在学习式流程里,标准是通过数据被调整出来的

模式是一种会重复出现的关系

这一节里的 pattern,不是指旧数据里任何看起来重复的东西,而是指一种到了新数据上仍然有帮助的关系。

放回客户咨询例子里,简单重复看起来可能像这样。

观察 为什么需要小心
取消 常出现在退款咨询中 “如果配送晚了我就取消” 仍然可能主要是配送问题
常出现在补发请求里 “我又登录了一次还是失败” 可能其实是账号问题
地址 常出现在配送信息修改里 “地址填错了所以现在想退款” 也可能主要是退款问题

所以,一个模式更接近于:单词、上下文、句子结构与过去分类一起形成的重复关系,而不是某个孤立词本身。

Fayyad、Piatetsky-Shapiro 与 Smyth 的 KDD 综述论文把从数据中找到的 pattern 描述为一种能解释部分数据的表达或模型,并且默认这种 pattern 在新数据上也应当仍有一定效用。这个视角对于理解机器学习很重要。如果一个关系只对旧数据成立,而在新数据上立刻失效,那么它很难被看成“学到了好的模式”。

例如,下面这种关系表面上也可能很像 pattern。

上个月点击蓝色图标的用户,流失率更低。

但还要继续检查:这个关系到底是偶然的、是因为某个短期活动,还是之后也会重复。机器学习要做的,不只是解释旧数据,还要找到能用在新输入上的关系。

区分 说明
简单重复 可能只是旧数据里偶然同时出现的现象
有用模式 在新数据上也仍有助于预测或分类的关系
overfitting 太紧贴旧数据,到了新数据上就变弱的状态
underfitting 连主要关系都没有学到,因此在训练数据上也弱的状态
generalization 在没见过的新数据上也还能工作得比较合理的状态

这一节只把 overfitting、underfitting 和 generalization 介绍成“学习出来的模式质量如何”的基本状态名称。更详细的评价方法和验证过程会在 Part 4 再展开。

example、feature、label 和 model

从 supervised learning 的角度看,数据通常可以被想成一组 examples。每个 example 里都会同时放着输入信息,以及它要预测的答案。

Google 的机器学习入门材料说明:在 supervised learning 中,example 包含 features 和一个 label。Features 是模型用来预测 label 的值,label 则是模型要猜中的正确答案或目标值。

术语 英文表达 含义
example example 一条观测案例或一行数据
feature feature 模型拿来当输入使用的值
label label 模型想预测的正确答案或目标值
model model 接收 features 并产出预测的计算结构
training training 利用 examples 去调整模型内部值的过程
inference inference 把训练好的模型运行到新输入上以得到输出的过程

这里首先要固定的结构是:一个 example 里会同时包含多个 features 和一个 label。Example 指的是整条案例,features 是模型从这条案例里读取的输入线索,label 则是贴给整条案例的答案。后面几段在继续解释模式学习和 generalization 时,都默认这个结构。

术语 极简含义 在客户咨询例子中的样子
example 一条案例 一句咨询文本加上它的分类结果
feature 模型读取的输入线索 退款配送地址修改 相关的单词或表达线索
label 人给出的答案 退款配送换货或补发
model 计算 feature 与 label 关系的结构 给新咨询打出各类别得分的结构
parameter 训练中会变化的内部值 影响每条线索被看得多重要的值
training 调整内部值的过程 看着过去咨询来校准分类标准的阶段
inference 在实际中使用训练后模型的阶段 新咨询来了之后预测类别的阶段

这一节首先应留下的区分是:example 是案例feature 是线索label 是答案model 是写关系的结构,而 parameter 是在训练里会改变的内部值。

放回客户咨询例子,它会变成下面这样。这里的 features 是为了让初学者理解结构而简化出来的线索,并不等于真实模型最终一定采用的输入表示。

Example Features Label
咨询 1 退款想要 退款
咨询 2 配送什么时候 配送
咨询 3 坏了寄来 换货或补发
咨询 4 地址想修改 配送信息修改

模型会看很多 examples,从中学习 features 和 labels 之间的关系。训练结束之后,它就可以对还没有 label 的新咨询,预测哪个类别更合理。

对初学者来说,这里还有一步很重要。真实工作里,examplefeaturelabel 往往并不是一开始就干净排好的。通常首先存在的是粗糙数据,例如原始咨询文本、处理记录、结果备注。然后才需要决定什么算一条 example,哪一个结果算 label,句子中的什么线索该变成 feature。因此,从数据中学习模式 并不等于把原始数据直接扔进模型,而是也包含把现实记录整理成 可学习的 example 结构 的准备工作。

所以,像 咨询 1咨询 2 这样整句文本才是 example,而像 退款配送坏了 这样的线索是从 example 里取出的 feature。Label 是人对整条 example 贴上的答案,而模型是在很多 examples 中一起学习这些特征组合与 label 之间的关系。

flowchart TD
  Ex[带标签示例]
  特征[特征]
  标签[标签]
  Train[训练]
  模型[模型]
  New[新咨询的特征]
  Output[预测]

  Ex --> 特征
  Ex --> 标签
  特征 --> Train
  标签 --> Train
  Train --> 模型
  New --> 模型 --> Output

这个图帮助我们把 supervised learning 读成 example -> features 和 label -> training -> model -> 新输入预测。重点在于:模型并不是直接记住新输入,而是用从 examples 调整出来的标准去解释新输入。

training 是在调整模型内部标准

在规则式系统里,人通过改规则来修正标准。在机器学习里,训练数据与评价标准会用来调整模型内部的 parameters

Parameter 是模型在把输入变成输出时所使用的可调内部值。在线性模型中,系数(coefficient) 可以是 parameter;在神经网络里,权重(weights) 可以是 parameter。这里不会深讲公式,只需要先把 parameter 理解成 训练过程中会变化的内部值

如果把 training 简化,它大致是这样的。

  1. 模型先看输入并做出预测。
  2. 计算预测和正确答案之间的差异。
  3. 调整内部值,让这个差异变小。
  4. 在很多个例子上重复这个过程。

把它放成表格,与规则式系统的对照就会更清楚。

区分 规则式系统 学习式模型
谁来创造标准 人写规则 数据和训练过程调整参数
如何修正 新增、删除或调整规则优先级 通过训练数据、目标与算法来调整内部值
如何处理错误 看是哪条规则错了 看数据、特征、评价标准或模型结构哪里出了问题
结果解释 相对容易追踪所应用的规则 依模型而异,解释可能更困难

正因为这个差异,机器学习模型虽然能够处理复杂模式,但它的复核方式也和规则式系统不同。仅仅读规则已经不够,还需要连同数据质量、评估结果与失败案例一起看。

学习不是记忆

如果把 从数据中学习 理解成 把旧案例存起来,然后原样拿出来,就会产生误解。机器学习的目标不是原样记住旧数据,而是找到也能用在新数据上的关系。

再回到客户咨询例子。

输入句子 Label
“我想退款。” 退款
“配送什么时候到?” 配送
“商品寄来时是坏的。” 换货或补发
“我想修改地址。” 配送信息修改

如果模型只是记住了这四句,它遇到下面这种句子就会很困难。

我昨天收到的商品已经损坏,希望重新寄一份。

好的模型应该即使在字面表述和训练句子不完全相同的时候,也能通过 损坏重新寄 以及它们所在上下文,判断这更接近换货或补发意图。

所以,学习的目标不是去回答:

我以前有没有见过这句完全一样的话?

而是去回答:

这句话和我以前见过的哪一类问题结构更相似?

状态 说明
记忆 在训练数据本身上能对,但措辞稍微变化就会错
generalization 即使新输入和训练数据措辞不同,但结构相似时仍能应对
overfitting 连训练数据里的偶然细节也学进去了,所以对新数据反而弱
underfitting 没学到足够关系,因此连训练数据上也不强

Overfitting 和 underfitting 可以看成两个相反方向的失败。Overfitting 是“贴得太紧”的问题,underfitting 是“学得不够”的问题。这里先记住:从数据中学习模式 的意思,是 找出也能用于新数据的关系

一个简短的区分练习

看下面这些情况,先判断它更接近 记忆generalization,还是 数据问题

情况 先问什么问题 本节里的第一判断
对训练时见过的完全一样句子表现很好,但措辞稍变就常常出错 它是不是只记住了见过的句子? 可能更接近记忆
学会 “我想退款。” 后,也能把 “可以取消付款吗?” 正确分成退款 它是不是抓住了单词不同但意图相同这件事? 可能更接近 generalization
对某个地区的咨询很好,但对另一地区的表达方式表现差 训练数据的多样性是不是不够? 先怀疑数据覆盖问题
在训练数据上经常出错,在新数据上也出错 它是不是根本没学到足够关系? 先怀疑 underfitting
在训练数据上几乎完美,但上线后性能明显下滑 它是不是过于贴合训练数据? 先怀疑 overfitting

这个练习的重点,不只是问 模型有没有答对,而是从数据和 generalization 的角度问 它为什么会答对或答错

scikit-learn 关于 overfitting 与 underfitting 的示例,展示的也是同一个观点:过于简单的模型可能连训练数据都解释不好,而过于复杂的模型则可能连训练数据里的噪声都学进去,导致对新数据变弱。

数据质量限制模型质量

学习式模型是从数据中获得标准的。因此,如果数据狭窄、带偏差、标签错误,或者和真实使用环境不一致,模型也会继承这些限制。

Google 的机器学习入门材料说明,数据集的大小(size) 与多样性(diversity) 会影响模型性能与 generalization。即使数据集很大,只要多样性不足,也可能不能充分代表真实环境;反过来,即使数据类型很多,但例子太少,也会很难找到稳定模式。

数据问题 模型里可能出现的问题
例子太少 模型可能把偶然关系误认成真正模式
多样性不足 在某些场景里表现好,但换个场景就变弱
标签不准确 模型会拿错误答案当标准来学习
重要特征缺失 模型看不到判断所需的关键信息
与真实使用环境不一致 上线后性能可能明显下降

例如,只用夏天数据来做降雨预测模型,它对冬天降水模式就可能较弱。只用某一个地区的客户咨询来训练模型,它对别的地区的表达、商品与物流政策就可能较弱。所谓“从数据中学习”,也意味着模型会跟随数据所携带的世界观。

所以,在机器学习项目里,重要的问题并不只是 该用什么模型?

收集了什么数据?
选择了什么作为 label?
哪些 feature 被当成输入?
训练数据和真实使用数据有多相似?
在新数据上性能是否还成立?

它如何连接到表征问题

到目前为止,这一节先看了训练数据、label、model 和 generalization 的基本结构。但如果想识别“意思相近的句子”,输入到底以什么形式进入模型也会变得重要。因为同一个意思可以用不同词来表达,而同一个词也会因为上下文不同而拥有不同意思。

例如,词 取消 并不总是表示取消请求。像 如果不取消的话,什么时候会到? 这样的句子里,它的意义会随着条件、否定与上下文一起变化。这个问题会在 3.3 继续,引向规则式方法(rule-based approach) 与表征学习(representation learning) 之间的差异。

模式学习会连接到概率式判断

现实数据并不会干净地切开。同样的词可以带着不同意图,类似的行为也可能对应不同结果。因此,学习式模型很多时候输出的并不是固定规则,而是得分(score)、概率(probability) 或排序(ranking)。

例如,一个咨询分类模型可能会这样判断。

候选标签 模型得分
配送咨询 0.62
订单取消 0.24
退款 0.09
其他 0.05

这些分数表示的是 模型这样算出来了,并不等于它自动就是真实答案。所以在真实学习式系统里,模型输出后面经常还会接上阈值(threshold)、人工复核,或者规则式安全层。

flowchart TD
  Input[新输入]
  Model[训练好的模型]
  Score[分数或概率]
  Rule[业务规则]
  Human[人工复核]
  动作[动作]

  Input --> Model --> Score
  Score --> Rule
  Rule --> 动作
  Rule --> Human
  Human --> 动作

这个结构会重新连回 3.1 的结论。规则式系统与机器学习不是只有替代关系。模型负责找出人难以直接写成规则的模式,而规则负责管理必须执行的程序与安全条件。

案例与示例

案例 1. 为什么咨询分类规则会越写越多

假设一个客户中心要把咨询分成 退款配送换货信息修改。如果人直接写规则,一开始可能很简单:只要出现 退款 就是退款,只要出现 配送 就是配送。

但真实咨询很快就会混在一起。像 配送晚了所以我想退款不要退款,请重寄一次我想改地址,但先告诉我是不是已经发货 这样的句子,会在一行里塞进多个线索。人写的规则越多,例外与优先级问题也会一起增长。

学习式方法会把问题从 继续补更多词规则 变成 在过去咨询和分类之间寻找反复出现的关系。这样,即使相同意图换了一种表达方式,模型也可能仍然把它们归到同一类模式里。

这个案例说明,为什么 3.2 会紧接在 3.1 后面。不是因为规则式分类错了,而是因为人难以直接写出的模式越来越多,所以从数据里学习关系的方法变得必要。

检查清单

  • 我可以把 从数据中学习模式 解释成“寻找也能用在新数据上的关系”的过程。
  • 我可以区分 example、feature、label、model、training 和 inference 的角色。
  • 我可以解释 training 是调整模型内部 parameters 的过程。
  • 我可以解释为什么学习不同于记忆,以及为什么 generalization 很重要。
  • 我可以解释数据规模、多样性与 label 质量会影响模型性能。
  • 我可以解释输入表示方式为什么会连到下一节的表征学习问题。
  • 我可以解释模型输出可能是分数或概率,以及为什么真实系统常需要规则与复核程序一起存在。
  • 我可以解释“从数据中学习模式”不是原样记住过去案例,而是寻找输入与输出之间的关系,并尝试把这种关系用于新数据。
  • 我可以解释理解学习式 AI 时不能只看模型,还要一起看数据如何被制作、按什么标准训练,以及如何在新数据上验证。

出处与参考资料