跳转至

P1-3.3 规则方法与表征学习

Section ID: P1-3.3 Version: v2026.07.23

3.1 看过人直接写规则这种方式的优点与限制,3.2 看过从数据中学习模式的基本结构。这一节不再把整个学习流程再讲一遍,而是把焦点缩到一个点上:输入到底是以什么形式被系统处理的?

核心问题很简单:人直接写规则的方式,和模型从数据中学习表征的方式,究竟有什么不同?

这里不是详细解释深度学习内部,而是先固定 rulefeaturerepresentationparameter 分别在什么位置,避免把它们混在一起。

在 Part 1 中,representationvectoractivationrepresentation learning 的基准含义固定在这一节。examplelabeltraininggeneralization 的基本结构已经在 3.2 中建立,这里只在解释“输入在模型内部会变成什么形式”以及它与规则式方法的差异时按需要重新连接。

这一节整理以下问题:

  • 规则式方法与表征学习,在处理输入方式上到底有什么不同?
  • featurerepresentation 的关系,怎样理解才比较稳妥?
  • “学到的表征很强,但可能更难解释”这句话究竟是什么意思?

这一节先固定规则与表征所在位置的差异。输入、输出、数据、特征和参数的更系统整理,会在紧接着的 Part 1 Chapter 4 继续展开。

区分规则、特征与表征的位置

  • 区分规则式方法与表征学习。
  • 理解特征(feature) 与表征(representation) 的关系。
  • 看清人设计的特征与模型学出来的表征之间的差异。
  • 理解学到的表征很强,但也可能更难解释。
  • 为 Part 1 Chapter 4 里要用到的输入、输出、数据、特征与参数概念做连接。

三个基准

这一节关注的是模型如何处理输入的形式。下面三个点是结构上的基准线。

基准 为什么重要 这一节需要达到的理解程度
规则是 写在外面的标准,表征是 模型内部使用的形式 这样能看见规则式方法与学习式方法所在位置的差异。 区分:规则是可读的,而表征是计算用的内部值。
特征可以由人设计,而模型也可能把它变成更深的表征 这样会自然连到传统机器学习与深度学习的差别。 整理清楚人造线索与模型学到的内部形式并不是同一件事。
学到的表征虽然强,但会让 为什么会这样看 更难读懂 这样会自然连到为什么需要模型解释和评价。 把更广的相似性处理能力与直接可解释性下降联系起来。

rulefeaturerepresentationvectoractivationparameter 是整节里不断重复的核心术语。首先要留下的区分是:rule 是外部标准feature 是从输入里抽出的线索representation 是内部形式vector 是数字束activation 是中间值parameter 是通过学习得到的标准。下面正文会再把这些词绑一次。

先把同一个问题看成两种处理方式

继续用客户咨询分类的例子。假设进来的句子是:

如果明天还收不到配送,我就取消。

如果用规则式方法,某个人会直接写出类似这样的条件。

如果句子里有 “配送” 和 “明天”,就分类为配送咨询。
如果句子里有 “取消”,就标成取消候选。
如果两种条件同时出现,就送去人工复核。

这些规则可以被人阅读,也比较容易追踪“哪个条件导致了哪个结果”。但代价是:人必须一直继续写条件和例外。

学习式模型会走另一条路。正如 3.2 所说,模型会从过去的咨询和分类中训练出来。这一节新增的重点是:模型会先把句子变成内部值,再利用这些内部值计算哪个类别更合理。

sentence -> internal representation -> model computation -> class score

这里真正重要的是 internal representation。模型并不是把句子原样当成和人读到的一样的东西,而是先把句子变成一组可计算的值,再利用它们做预测。

flowchart TD
  Text[咨询文本]
  Rule[人工编写的规则]
  RuleOut[规则输出]

  Rep[内部表征]
  Model[训练好的模型]
  ModelOut[预测输出]

  Text --> Rule --> RuleOut
  Text --> Rep --> Model --> ModelOut

这个图只是在说明:同一个输入可以走两条处理分支。左边是人 заранее 写好的规则直接影响结果,右边则是输入先变成模型能计算的内部表征,然后才产生预测。本节的关键不是 哪一个更好,而是区分判断标准到底是 写在外面,还是 在模型内部被计算出来

这一节的边界:这里看的是表征,不是全部学习流程

3.2 讲的是训练数据、标签、模型、训练和推理的基本结构。3.3 不会把那个结构再重复,而是把问题缩小成:输入在模型内部会变成什么,以及这和人写规则有什么不同。

区分 3.2 的中心 3.3 的中心
问题 从数据中学习模式是什么意思? 把输入变成表征是什么意思?
核心术语 example, label, model, training, inference, generalization rule, feature, representation, parameter
主要风险 记忆、过拟合、数据质量问题 表征不透明、难解释
下一步连接 机器学习的学习结构 把问题转成模型可用形式的过程

规则在外,表征在内

显式规则待在模型外部。它通常以代码、配置、政策文档或知识库的形式存在,人可以直接阅读和修改。

而学到的表征待在模型内部。它们是输入经过模型时产生的中间值,或者说,是输入在已学习参数作用下被改写后的内部形式。

区分 显式规则 学到的表征
位置 代码、配置、知识库、政策文档 模型内部的向量、激活值、参数
形成方式 人直接写出条件和结果 通过数据与训练过程调整出来
优势 易读、易审阅、较易控制 更擅长处理复杂模式与上下文
弱点 例外一多就难维护 很难直接解释为什么做出这种判断
修改方式 增删规则或调整优先级 调整数据、标签、特征、模型或训练过程

representationvectoractivationparameter 一起出现时,它们都可能听起来像某种“内部值”。所以这里先把它们固定成一次基准,后面就可以在这个区分上继续阅读。

术语 极简含义 本节需要记住什么
representation 让输入变得可供模型处理的内部形式 人读到的句子和模型计算的形式可以不同
vector 把多个数字并排放在一起的数值束 表征经常就被装在这种数字束里
activation 模型某一步里实际算出来的中间值 可以把它理解成输入在模型里变化过程中的当前值
parameter 通过学习调整出来的内部值 它影响模型会如何看待同一个输入

首先要留下的区分是:representation 是内部形式,vector 是承载这种形式的数字束,activation 是一步计算中产生的当前值,parameter 则是通过学习被调整的值。

用一个很短的比喻,vector 可以看成承载表征的数字表,而 activation 则是这张数字表在模型某一步实际算出来时的当前数值。比如一句咨询经过一层之后,得到类似 [0.2, 0.8, -0.1, ...] 这样的结果,那么这组数既是向量形式的表征,也是该层的 activation。这里要保留的差别是:vector 是形式,activation 是某个计算时刻的值。

理解了这一层差别之后,再看“AI 自己学出了规则”这种说法,就会更谨慎。模型也许确实学到了内部标准,但那并不等于它自动生成了一份人可直接阅读的规则表。

特征可以由人设计,表征也可以被模型学习出来

3.2 已经把 feature 解释成模型作为输入使用的值。Feature 至少可以有两种来源。

第一种,是由人直接设计出来。

原始输入 人设计的特征
咨询句子 是否出现 refund 这个词
咨询句子 是否出现 delivery 这个词
咨询句子 句子长度
咨询句子 是否出现否定表达
客户信息 最近订单数量

这些特征位于“写规则”和“学更深表征”之间。人决定抽什么出来,但最终判断仍然可以交给学习式模型来完成。在这一节里,这类值会被看成 人设计的输入特征,并和后面出现的 学到的表征 区分开来。

第二种,是由模型自己学习表征。尤其在深度学习里,输入会经过多层处理,在每一层都变成不同的内部形式。所以人设计的 feature 可以成为起点,但在模型内部,这些输入仍然可以被继续变成更抽象的表征。

Stanford Encyclopedia of Philosophy 的 AI 条目曾用人脸图像举例:较低层可能先对 edge 一类线索产生反应,下一层再把它们组合成眼睛、鼻子等部件,更高层则可能对这些特征的组合整体产生反应。这种解释有助于把深度学习和“人把所有特征都直接写出来”的方式区分开。

flowchart TD
  Input[原始输入]
  Low[低层特征]
  Mid[中层表征]
  High[高层表征]
  Output[预测]

  Input --> Low --> Mid --> High --> Output

这个图说明,输入不一定是一开始就被“理解”的。它可能经过多个阶段,逐渐变成不同层次的表征。关键点在于:低层特征 更接近较小的线索,中间表征 更接近多条线索的组合,高层表征 则更接近更抽象的意义束。真实模型内部未必会以这样整齐的名字被存下来,但 输入会逐步变成不同表征 这个结构仍然成立。

如果继续用客户咨询分类来简化,大致可以读成这样。

阶段 人容易理解的说明
原文 “如果明天还收不到配送,我就取消。”
低层线索 配送明天收不到取消
中间表征 配送延迟、时间条件、取消可能性
高层表征 客户在期限条件下请求解决问题
输出 配送咨询或取消相关复核

当然,不能把这个表直接当成真实模型内部一定就是这样“人类可读”地保存下来的结构。它只是为了帮助理解。真正重要的是:输入在模型内部会被改造成可计算的表征,而这些表征会被用来做预测。

表征一变,问题难度也会变

Bengio、Courville 与 Vincent 关于表征学习的综述指出,机器学习算法的成功高度依赖数据是如何被表示的。即便是同一份数据,不同的表示形式也可能让重要因素变得清晰,或者反而把它们藏起来。

例如,在咨询分类里,如果只看原始字符串,下面两句话看起来很不一样。

商品寄来时是坏的。
我昨天收到的东西已经损坏,想请你们再补发一次。

但如果按意义来读,它们都和 已经收到损坏换货或补发可能性 有关。好的表征,会让这些共通结构更容易被模型利用。

表征方式 模型更容易看见什么 可能漏掉什么
原始字符串 完全相同的字面重复 同义但不同写法的表达
人造关键词 重要词有没有出现 语境、否定、条件
学到的表征 多个线索的组合与更广的相似性 人类难以直接读出的内部标准

所以,在机器学习里,重要的问题不只是 该用什么算法?,还包括 输入应该先被变成什么形式?

一个学习用比喻:按意义单位去重新分组

当人快速做判断时,人们可能会想到类似“上下文压缩”的说法。不过在这本书里,这只是一个学习用比喻,并不是标准的神经科学术语。这里的“压缩”更接近于:人会用已经理解的概念和记住的定义,把复杂情境改写成更少的意义单位。

在认知心理学里,可以把这和 chunking、recoding 之类的说法 loosely 连起来。Miller 的经典论文解释过:人会把输入组织成熟悉的单位或块,再把这些块组合成更大的束,从而提升能处理的信息量。这个引用的作用,只是支撑“人如何处理信息”的比喻,而不是证明机器学习模型在像人一样理解。

例如,句子 如果明天还收不到配送,我就取消。 可以不像逐词那样看,而是按意义单位分组。

输入里看得见的表达 被重新分出的意义单位
如果明天还收不到配送 配送延迟与期限条件
我就取消 取消意图或取消可能性
整句话 客户在期限条件下要求解决问题

这个比喻的重要性不在于把表征学习解释成人类式理解,而在于说明:输入里的细节如果被重组进不同单位,判断问题可能会变得更容易,也可能更难。

学到的表征没有规则那么锋利,但可以更宽地处理变化

显式规则很锋利。

如果句子的意思是“改地址”,就送到配送信息修改。

但真实句子往往并不锋利。

我把收件人号码写错了。
如果还没出库,可以改送到别的地方吗?
别送之前那个地址了,改送公司。

这些句子即便不使用完全相同的 地址修改 表达,也都可能和配送信息修改有关。学到的表征在这里有优势,因为模型不只是看一个词,而是能把多条线索共同出现的方式反映到内部值里。

但这种优势同时也是风险。人很难直接看出模型到底把哪条线索看得多重要,而且模型也可能跟着训练数据里的偏差或偶然重复走。因此,使用学到的表征的系统,会更依赖评价、失败案例分析与数据复核。

情境 规则更有优势时 学到的表征更有优势时
法律禁止条件 必须被明确阻断时 只能作为辅助检测信号
审批流程 必须固定谁在什么条件下审批时 适合推荐例外候选
句子分类 关键词边界清楚时 表达变化多且语境重要时
图像识别 简单颜色或尺寸条件就足够时 光照、姿态、背景变化很大时
运营自动化 程序必须原样重复时 适合找异常迹象候选时

规则和表征并不只是彼此竞争

如果只把规则式方法和学习式方法分成 旧方式新方式,就很难理解真实系统。很多系统会把两者一起使用。

例如,一个自动客户咨询分类系统可以像下面这样搭起来。

flowchart TD
  Input[客户咨询]
  Policy[显式业务规则]
  Model[基于学习的分类器]
  Score[分类分数]
  Review[人工复核]
  动作[动作]

  Input --> Policy
  Policy --> Model
  Model --> Score
  Score --> 动作
  Score --> Review
  Review --> 动作

这个图的意思是:前端可以先用政策规则筛掉禁止条件和必选条件,然后 模型再去计算具有表达多样性的分类候选,最后 根据分数或敏感度,再决定自动处理还是转人工复核。换句话说,这个图是为了说明:规则和模型可以在同一个系统里分担不同责任。

一个简短的角色区分练习

看下面这些案例,先判断核心困难更接近 规则设计表征学习,还是 两者组合

案例 第一时间想到的问题 按本节标准作出的第一判断
必须执行类似 如果出现身份证号,就不要存储 这样的禁止条件 这个条件能否被人清楚写成句子? 更接近规则设计
请寄到公司我想改收货地点请修改配送地址 这类不同表述需要被归成同一意图 系统是否必须把不同表面形式看成接近同义? 更接近表征学习
客户咨询需要自动分类,但包含敏感信息的消息要送人工复核 是否必须同时处理政策阻断和语义分类? 更接近两者组合
产品图像中的细小裂纹需要被找出来 人能否把所有有用视觉特征都直接写出来? 表征学习的权重更高
审批规则要求按金额区间决定审批阶段 问题中心是不是显式标准,而不是多样表达? 更接近规则设计

这个练习的重点,不是去问 规则和表征哪个更现代,而是先分清 哪些部分能由人明确写出来哪些部分必须从数据中学习相似性

在这个结构里,规则负责那些必须始终遵守的政策,而模型则负责处理人难以直接写出的表达多样性和相似性。

例如,可以这样分工。

角色 主要处理方式
含有个人信息的咨询不自动回复 显式规则
分类退款、配送、换货等候选意图 使用学到表征的模型
分数低或敏感案例交给人工 规则和模型分数的组合
收集重复失败案例并增强数据集 运营复核与再训练

因此,更重要的问题并不是 规则还是模型?。更好的问题是下面这些。

哪些部分必须由人显式控制?
哪些部分可以让模型从数据中学习表征?
哪些判断应当保留给人工复核?

案例与示例

案例 1. 意图很像,但句子表面总在变化的咨询箱

假设客户因为想修改配送地址而来咨询。有人写 我想改地址,有人写 应该送到公司,也有人会说 我把收件人号码写错了

规则式方法为了捕捉这些表达,会不断增加像 地址修改变更收件人电话号码公司 这样的词和组合规则。这种方式易于人阅读和修改,但只要表达稍微变化,就会出现漏网;一旦再叠加否定句或条件句,规则优先级也会很快变复杂。

表征学习会比单词表更宽地处理这个问题。如果不同句子都能被归到接近 delivery-information change 的内部表征里,那么即使没有完全相同的关键词,模型也可能把它们放到相近意图附近。代价是:这种内部标准不可能像规则表那样直接被人阅读。

这个案例直接展示了 3.3 的核心差异。规则是人在外面写出来的标准,而表征是模型内部计算出来的形式。真实系统往往并不是只选一个,而是让政策固定在规则里,把表达变化的聚类交给模型。

检查清单

  • 我可以解释规则式方法与表征学习的差异。
  • 我可以解释 feature 和 representation 都是在把输入变成模型更容易使用的形式。
  • 我可以区分人设计的特征和模型学出来的表征。
  • 我可以解释学到的表征很强,但也可能难解释。
  • 我可以把规则和模型看成责任分工,而不仅仅是竞争关系。
  • 我可以解释显式规则是人能直接阅读的判断标准,在解释和控制上强,但例外和表达多样性越多,维护越困难。
  • 我可以解释学到的表征是模型内部把输入变成可计算形式后的结果,擅长处理复杂模式和相似性,但不是人能直接阅读的规则清单。

出处与参考资料