跳转至

P1-7.2 启发式到底减少了什么

Section ID: P1-7.2 Version: v2026.07.20

7.1 已经说明:当搜索空间变大时,试图检查所有候选的方法会碰到计算极限。现在问题往前走一步:

如果不能把所有候选都看完,
那么该凭什么先看某些候选、又减少哪些候选?

在 Part 1 里,heuristicheuristic functiongood-enough solution 的基础区分先在这一节固定。7.1 先说明了为什么搜索空间会带来计算负担,这里则专门看“哪些标准能降低这种负担”。启发式、概率模型和学习模型之间更清楚的边界,会在 7.3 继续。

启发式不是保证正确答案的公式,
而是决定“先看哪些候选”的经验性标准。

词源:帮助发现的方法

词源本身就很有帮助。Online Etymology Dictionary 说明,heuristic 来自希腊语 heuriskein,意思是“找到、发现”,也和 eureka 属于同一词根。

所以,更安全的理解不是“已经知道答案的小技巧”,而是:

一种帮助我们找到答案、决定先往哪里看的方法。

这也和 7.1 的搜索自然衔接:当搜索空间太宽时,启发式会把注意力导向那些看起来更有希望的地方。

这背后的想法:人并不会看完所有情况

启发式在 AI 中变得重要,一个历史背景就是“人究竟是怎样解题的”。

Allen Newell 和 Herbert A. Simon 的早期 AI 研究并不把计算机只当成快速计算器,它还试图模拟人的问题求解。ACM 关于 Newell 的资料提到,他接触到 George Pólya 关于数学解题的讲授后,意识到人并没有足够时间和处理能力用完全穷举的方法解决所有问题,而是会用简化规则来做 selective search

Simon 的工作也连到这条线。Nobel Prize 和 ACM 的资料都指出,他认为真实的人和组织并不会总是做“完全最优”的选择,而是在时间和信息有限时接受“足够满意”的答案。

把这条历史线压缩成入门版本,可以先记成:

启发式的想法,
不是浪漫地说“计算机会像人一样思考”,
而是在时间和信息有限时,
为不可能看完所有候选的问题建立选择性标准。

所以,启发式不能只被理解成“瞎猜”或“小窍门”。在早期 AI 里,它是在回答这个问题:

如果完全搜索不现实,
计算机应凭什么标准像人在受限条件下那样减少候选?

这里不会去计算 A*、greedy best-first search、admissible heuristic 或 consistent heuristic 的技术条件。

也不会把启发式解释成和概率模型或学习模型完全相同的东西。它们之间的差异会在 7.3 继续。

这里先固定一个更窄的观点:

当搜索空间太大时,
启发式是用来减少候选数、时间、内存和评估负担的标准。

启发式减少的搜索成本

  • heuristic 理解成“把搜索或判断引向更有希望方向的经验性标准”。
  • 说明启发式怎样减少候选数、时间、内存和评估负担。
  • heuristic function 理解成“给候选附上估计值或分数的方法”。
  • 理解为什么现实中需要 good-enough solution
  • 记住:启发式可以加快判断,但并不保证最优解。

三个基准

基准 为什么重要 本节需要达到的理解程度
启发式不是答案公式,而是决定先看什么的标准 这能避免把启发式误解成“猜答案”的技巧。 理解它即使不保证答案,也能减少搜索。
启发式会减少时间、内存和评估负担 这能把计算极限和现实求解联系起来。 把它看成避免检查所有候选的装置。
现实里“足够好的解”很重要 这能避免把“只有最优解才有价值”当成默认前提。 理解在时间有限时,可用答案往往比完美答案更重要。

先做一个角色分拆:

术语 极短含义 本节里的作用
heuristic 决定先看哪些候选、减少哪些候选的经验性标准 缩减搜索的核心想法
heuristic function 给候选附上“看起来多有希望”的估计值 计算优先级的具体形式
good-enough solution 在有限时间里找到的可用答案 很多现实问题里的实际目标
optimal solution 所有候选中最好的答案 启发式并不总能保证的理想目标
verification 检查启发式可能漏掉什么的步骤 防止过度相信快速判断

启发式就是为了不看完所有候选

Poole 和 Mackworth 说明,人们往往不是为每个问题都找到最优解,而是寻找 good-enough solution。他们也说明,当单纯依靠搜索空间本身还不够时,关于特殊情况的额外知识可以指导搜索方向,这就叫 heuristic knowledge

直觉上,可以先记成:

候选太多时,
启发式是一种让“更有希望的候选”先被检查的标准。

还是拿找路来说。到目的地的直线距离看起来是有帮助的:先朝更接近目的地的方向看,通常比较合理。但真实道路上会有河流、桥梁、山体、施工或单行线。

因此,直线距离可以是好线索,但不能保证真正的最短路径。

视角 说明
它帮助了什么 可以把明显远离目的地的候选往后放
它减少了什么 需要看的候选数、比较时间
它冒的风险 如果忽略真实约束,可能错过更好的路径
需要的态度 不把启发式结果当真理,而是保留验证

启发式到底减少了什么

启发式并不只是“更快地猜一猜”。如果把它减少的东西说清楚,意义会更准确。

被减少的对象 含义 例子
候选数 不再平均地检查所有候选,而是优先看一部分 先推迟那些明显背离目标的道路
搜索深度 过长的路径更早被停掉 一条路线连续失败很多步后改看别的候选
时间 减少比较和计算耗时 先检查看起来最有希望的候选
内存 减少必须保存的中间状态数 不保存每条路径,只保存部分路径
评估负担 减少判断“哪个更好”的成本 用简单分数决定优先级
返工成本 减少后面大改的可能 初稿里先去掉根据薄弱的句子

最重要的区分是:

启发式可以减少搜索,
但并不保证被保留下来的候选里一定有最好的答案。

现代启发式例子

启发式并没有随着现代 AI 消失。只要系统无法看完所有候选,就仍然会出现“应该按什么标准减少或排序候选”的问题。

这些例子并不处于同一个技术层级。有些是人设定的运营标准,有些是模型开发中的搜索策略,有些则是自动化的评估过程。它们的共同点只是:都在缩减候选或确定优先级。

现代场景 像启发式那样起作用的标准 减少了什么 还需要验证什么
分类模型运营 设定分类阈值,把自动处理和人工复核分开 需要人工看的请求数、自动化候选 误报、漏报、阈值变化影响
模型开发 从简单模型开始,先丢掉验证分数差的候选 模型候选、调参时间、实验成本 是否对验证集过拟合
超参数调优 不试完所有组合,而是缩小学习率、模型大小或正则化范围 组合爆炸、训练时间 更好的候选可能在未搜索范围外
生成式 AI 审阅 先删除无依据、越界或重复的句子 需要审查的句子数、重写成本 看起来流畅但缺乏根据的文本
Agent 工作流 决定搜索、读文件、构建、测试的工具顺序 无意义的工具调用、重复工作 顺序错误导致的遗漏
程序搜索 像 FunSearch 那样自动评估程序候选并重复利用高分候选 程序候选、人力比较负担 评估函数是否真的对应目标

Google 的 Machine Learning Glossary 也说明,分类阈值是由人选择的,它会影响 false positive 与 false negative 的数量。这个阈值不是模型学到的参数,而是服务运营里用来决定哪些候选自动处理的标准。

所以,重点不是“现代 AI 消除了启发式”,而是:

现代 AI 并没有取消启发式,
而是把它重新分布到人工规则、验证标准、评估函数和自动搜索流程中。

heuristic function 会给候选附上估计值

AI 教材里常通过 heuristic function 来说明启发式。看到 function 这个词时,不需要先把它想得太难。这里先按下面的基线来读:

它把候选作为输入,
输出一个“这个候选看起来多有希望”的估计值。

用找路来写:

候选 启发式函数给出的估计值示例
路口 A 到目的地直线距离 2km
路口 B 5km
路口 C 9km

这样就可以建立“先看 A,再看 B、C”的策略。但这个数并不是实际到达时间,也不是最终答案。2km 的路可能堵死,5km 的路可能正好是高速通道。

所以,启发式函数更像是“决定搜索顺序的估计函数”,而不是“直接给出答案的函数”。

为什么需要“足够好的解”

在很小的问题里,追求 optimal solution 很自然。但当候选太多或时间有限时,真实系统往往必须接受 good-enough solution

例如要决定配送路线:

目标 说明
optimal solution 所有可能路线里最短或成本最低的那条
good-enough solution 在时间限制内满足服务质量要求的路线

这并不表示最优解永远不重要。在安全、医疗、金融或法律这些高风险场景里,往往需要更强的验证。但在很多运营问题里,“现在就能用、而且经过验证的答案”会比“太晚才得到的完美答案”更重要。

这正是启发式有意义的地方:

它不保证完美,
但能在有限时间和资源里更快接近可用候选。

日常工作里也能看到启发式

启发式不只出现在找路和算法设计里。熟悉的整理工作里,也会出现类似标准。这里的例子只是帮助建立感觉。

写作场景 可以使用的启发式 减少了什么
小节主题开始漂移 一个小节只保留一个中心问题 范围扩张、读者混乱
说明变得过于大胆 没有外部根据的断言先暂缓 错误风险
术语容易误解 学术术语中英并列 意义混淆
内容侵入别的章节 挪到下一节或后面的章节 领域污染
例子堆得过多 只保留能解释核心概念的例子 篇幅膨胀

这些标准并不保证得到“最佳文稿”,但它们会缩小候选空间,让后面的验证更集中。

启发式不会替代验证,
它只是缩小需要认真验证的范围。

启发式的风险

启发式很有用,但它本身也有风险。因为减少搜索,意味着有些候选会被少看甚至不看。

风险 说明 应对
漏掉最优解 更好的候选可能被过早丢弃 抽样回看部分被丢弃候选
偏差 过去经验可能让判断偏向某一方向 和其他标准对照
过度自信 快速判断可能被误当成正确答案 记录失败案例
语境不匹配 一个问题里有效的标准,换环境可能失效 写明适用条件
缺少证据 看起来像真的解释可能被误当成事实 把来源与验证单独区分

启发式会加快思考,但快速思考同样可能出错。启发式用得越多,越需要更明确的验证标准。

启发式不等于规则、概率或学习

启发式很容易和相邻概念混在一起。这里先按下面的基线分开:

区分对象 中心作用 和启发式的差异
rule 按条件显式规定行为 启发式常给出的是方向或优先级,不一定是最终条件
probabilistic model 用数字和分布表达不确定性 启发式分数看起来像数字,但不一定是可校准的概率
optimization 依据目标函数寻找更好的解 启发式可能帮助优化,但本身不等于优化
learning 从数据中调整标准或表征 启发式可以人工制定,也可能借经验形成,但概念不同
model 把输入变成输出的整体结构 启发式可能是系统的一部分,不等于整个模型

这个区分会直接引到 7.3,尤其是“启发式”和“概率模型”的边界。

检查清单

  • 能把 heuristic 说明成用于减少候选、决定优先级的经验性标准。
  • 能说明启发式会减少候选数、时间、内存和评估负担。
  • 能把 heuristic function 说明成给候选附上估计值的标准。
  • 能区分 good-enough solutionoptimal solution
  • 能说明启发式不等于答案、概率模型或学习模型。
  • 能说明启发式越多,越需要明确验证标准。

来源与参考资料