搜索、规则与试错。这三种「老式」AI 至今仍在你的导航软件、下棋程序和游戏角色里工作,而且它们是理解后面所有内容的必要背景。

这一讲对应《Hello, AI》第 3 章《不只是神经网络》。主线约 8 分钟的阅读量,展开讲一节课。
本章要回答的问题:不靠「学习」的 AI 是怎么工作的?它们今天还有用吗?
一秒钟之内,它从几千万个路口和路段里,
给出一条总代价最小的路线。
开场的目的是打掉一个默认假设:学生这几年听到的 AI 几乎全是「学出来的」,所以会以为凡是聪明的软件都在学习。
可以现场问:你觉得地图给你规划路线,用的是不是神经网络?多数人会说是。
补一句:预测这段路要堵多久,确实可能用模型;但找路本身不需要。任务和方法要分开看——这是第一章那个定义的直接应用。
这一章讲三种不靠学习的 AI:
搜索、规则、试错。
它们是第一章那张图上最外圈的居民。新闻很少提它们,但它们无处不在——
而且今天最强的系统,恰恰是把它们和神经网络组合起来的结果。
回到第一章那张六个圈的图,指一下最外圈。这一章就住在那里。
强调「组合」二字:本章不是讲历史遗迹,是讲现代系统的一半骨架。
这三张卡片就是本章的三节。课末会回到这一页,加上第四张:神经网络——「从数据里得到一个好的判断」。
很多看起来需要智能的问题,本质上都是「在大量可能性里找一个好的」。难点从来不是不会找,而是可能性太多。
状态是你所在的格子,动作是四个方向,目标是出口。
状态是已排好的部分课表,动作是再放一门课,目标是不冲突。
状态是当前局面,动作是一步合法走法,目标是赢。
状态是机器人的位姿,动作是一次移动,目标是拿到杯子。
搜索算法的思路很朴素:从起点出发,一步步展开可能的下一步,直到碰见目标。
让学生自己再补两个例子(解数独、拼图、导航、排考场)。能把一个问题翻译成「状态 + 动作 + 目标」,就已经会用搜索的语言思考了。
组合爆炸:可能性的数量随问题规模指数增长。这不是「计算机不够快」,是增长的速度压倒了任何硬件的进步。
所以聪明的搜索,全部力气都花在「不去看大多数分支」上。
六百万亿这个数字可以换算一下:就算一秒钟能看十亿个局面,也要两万年。
这一页是为了让下一页的两个技巧显得必要,而不是显得巧妙。
早早判断某个分支不可能更好,就不再展开它。省下来的不是一个节点,是它下面的整棵子树。
下棋程序里,这一步就能把要看的局面砍掉几个数量级。
用一个便宜的估计告诉算法「往哪边走更有希望」,优先展开最有希望的那个。
地图上的估计就是直线距离:算起来几乎不花时间,却足以指方向。
「便宜」是关键词:如果估计本身和真答案一样贵,那就没有意义了。启发式的艺术在于用很低的代价换来一个大致靠谱的方向。
现场演示:在网格上画几堵墙,跑一遍 A*,让学生看展开的范围。再把启发式关掉(h 恒为零),对比探索面积——这一下对比比讲十分钟都有效。
关掉启发式之后的 A*,就是 1959 年的 Dijkstra 算法:仍然正确,但把各个方向都均匀探索一遍。
从起点到这个节点已经确定的代价。这是事实,不是估计。
从这个节点到目标的估计代价。在地图上就是直线距离。
f = g + h。算法每次都展开 f 最小的那个节点,其余的先放着。
请把 g 和 h 的性质说清楚:一个是已知的事实,一个是猜的。A* 的全部聪明之处,就在于把「已知」和「猜测」加在一起排序。
只要估计 h 从不高估真实的剩余代价,A* 找到的第一条通往目标的路,就一定是最短的。
术语叫「可采纳」(admissible)。直线距离在地图上显然满足:两点之间没有比直线更短的路。
这是本章唯一需要一点推理的地方,讲不讲取决于班级。核心直觉一句话就够:因为估计永远偏保守,所以没有被低估的好路会被提前放弃。
仍然正确,但各个方向均匀探索,慢得多。1959 年的算法,至今仍在网络路由里跑。
几乎不浪费一步。估计越接近真实,搜索越省力。
失去最优性保证,换来速度。工程上常常故意这样做。
第三张卡片值得多说一句:这不是偷懒,是有意识的权衡。用户宁要一秒钟给出的九十五分答案,也不要一分钟给出的满分答案。
这个「用一个便宜的估计引导昂贵的搜索」的思想,是后面 AlphaGo 的核心,也是今天推理模型「先想一想再回答」的远亲。
| 算法 | 展开顺序 | 用估计吗 | 保证最优 | 典型用途 |
|---|---|---|---|---|
| 广度优先 | 离起点近的先 | 否 | 是(步数意义上) | 小迷宫、社交网络里的「几度人脉」 |
| 深度优先 | 一条路走到黑再回头 | 否 | 否 | 拼图、排课这类「找一个可行解」 |
| Dijkstra | 已走代价最小的先 | 否 | 是 | 路网、网络路由 |
| A* | 已走代价 + 估计剩余最小的先 | 是 | 是(估计不高估时) | 导航、游戏寻路、机器人规划 |
| 束搜索 | 每层只保留最好的几个 | 是 | 否 | 机器翻译和语言模型解码 |
| 蒙特卡洛树搜索 | 随机模拟多的分支先 | 是(用模拟结果) | 否 | 围棋、复杂博弈 |
不要求记表,要求看懂两列:展开顺序和用不用估计。整个家族的差别就在这两件事上。
加粗的两行是后面的伏笔:束搜索通向第八章的语言模型解码,蒙特卡洛树搜索通向本章最后的 AlphaGo。
语言模型生成一句话,
本质上也是在一棵树上搜索。
状态是已经写出的部分,动作是下一个词,束搜索是它常用的一种策略。
搜索从来没有离开过 AI,它只是换了个名字藏在「生成」里。
这一页请务必讲,它把本章和第八章缝在一起。学生读到「大模型在生成」时,脑子里应该有一棵正在被剪枝的树。
它没有「学」过任何东西。每一分能力都是人设计和算力堆出来的。
这块缺口,二十年后由神经网络补上——本章最后一节。
深蓝是第一次浪潮那套思路的迟到胜利。它证明了在结构清晰、评估可写的问题上,搜索加算力可以打败人类顶尖。
也正因为如此,它的失败边界特别清楚:评估函数写不出来的地方,这条路立刻走不通。
第二章讲过它作为「专家系统」的兴衰。这一节讲它今天以什么形态活着——而且活得比很多人以为的好。
如果学生连续三次作业未交,
且最近一次测验低于六十分,
则标记为需关注。
几百条这样的规则串在一起,配一个推理引擎按顺序匹配,就是一个规则系统。
这两个词请写在黑板上:透明、可控。它们是神经网络至今最欠缺的两样东西,也是规则系统在高风险场景里的护身符。
反欺诈的第一道防线。
合规检查与申报校验。
用药冲突提醒。
调度约束与安全检查。
这些地方需要的不是「大概率正确」,而是每一个决定都能解释、都能审计。
问学生:如果银行的风控完全交给一个神经网络,客户被拒贷时,柜员该怎么解释?这就是规则系统存在的理由。
这份规则集是真实风格的。请学生盯着它想一分钟,然后问两个问题:它好在哪里?它会在哪里出问题?下一页给出对照。
右边第三条是重点:规则只能捕捉被想到过的模式。真正危险的信号,往往是没人想到要写进规则里的那一类。
模型负责发现,
规则负责边界。
机器学习模型在上百个特征上学出一个「风险概率」;
规则系统在它上面决定什么时候通知谁、什么情况必须人工复核、哪些学生绝不能被自动标记。
「模型认为这笔交易 95% 正常,但金额超阈值且发生在凌晨,规则要求人工复核。」
这是本节最该带走的一句话。第十二章你会看到智能体被要求「执行删除操作前必须确认」——那就是规则在给神经网络系安全带。
它不搜索,也不靠人写规则。让一个智能体在环境里反复尝试,做对了得奖励,做错了受惩罚,慢慢学会在每种情况下该做什么。
学习的过程,就是把奖励沿着走过的路一点点往回传,让早期的正确决定也分到功劳。
「往回传」这个动作是理解强化学习的关键,也是下一张图要画的东西。可以在黑板上画一条走廊,从出口往回标 100 / 80 / 64 / 51…
第三条呼应第一章「四种能力」里的决策:前三种能力错了可以重来,决策错了世界已经变了。
稳定,但会困在一个平庸的解里。旁边那条更短的路,它永远不会发现。
见识广,但永远拿不到稳定的回报。
监督学习没有这个问题:数据是给定的,模型只负责从中拟合规律。人的一生也在做这个权衡,只是我们不用这个词。
可以举一个学生自己的例子:每次去食堂是点那份已知好吃的,还是试试没吃过的?完全不试,你就永远吃不到最好的那家。
请学生留意颜色是从出口往回蔓延的,不是从起点往前。这和人的直觉相反,却是强化学习最本质的机制。
智能体维护一张表 Q(s, a):在状态 s 下采取动作 a,长远来看值多少。开始时全是零。
Q(s,a) ← Q(s,a) + α [ r + γ·max Q(s′,a′) − Q(s,a) ]
括号里是「实际得到的」减去「原来以为的」,也就是这一步的意外。
漂亮的性质:只要每个状态动作对被试够多次,表格最终会收敛到最优策略,不管智能体一开始有多笨。
公式不必推,讲清「意外」这个词即可:学习就是不断修正预期,修正的幅度由 α 决定。这与第四章的梯度下降是同一种精神。
解决办法不是把表做大,而是不再用表——用一个神经网络去近似这个 Q 函数。
DeepMind 让一个卷积网络直接看着屏幕像素学会了几十种雅达利游戏:同一个网络、同样的超参数。
它证明了强化学习可以直接从原始感知输入学习,不需要人手工设计状态。这就是「深度强化学习」,也是 AlphaGo 的前奏。
这一页是本章两条线的交汇点:老方法(强化学习)+ 新工具(神经网络)。后面 AlphaGo 是同一个配方的放大版。
TD-Gammon 值得多讲一句:1992 年就证明了「自我对弈 + 神经网络」可行,当时几乎没人注意。好想法早于它的时代,是这个领域反复出现的故事。
| 强化学习的词 | 在迷宫里 | 在语言模型里 |
|---|---|---|
| 状态 | 老鼠所在的格子 | 到目前为止的对话(问题 + 已写出的部分) |
| 动作 | 往四个方向之一走一步 | 写下一个 token |
| 一局 | 从入口到奶酪 | 从问题开始到回答结束 |
| 奖励 | 奶酪,自动出现 | 这个回答好不好——要有人定义 |
做法:先请人对不同回答排序,训练一个「奖励模型」学会像人一样打分,再让它给语言模型的每一局打分。
最后一行是关键差异:迷宫里奶酪自己在那儿,语言里「好」是人定义的。整个对齐问题的难度都来自这一格。
智能体学到的是怎样拿到奖励,
而不是奖励想表达的那个东西。
迷宫里的老鼠如果发现「原地打转也能拿到一点奖励」,它就会打转。
语言模型如果发现「写得长、语气肯定、多用『当然可以』」能拿高分,它就会这样写——不管内容是否更好。
这叫奖励破解,是第九章「对齐」阶段最头疼的问题之一。
请学生举一个身边的奖励破解例子:为分数而学、为 KPI 而工作——凡是用指标衡量的地方,都会出现优化指标而非目标的行为。
很多报道把它写成「神经网络的胜利」。更准确的说法是:它是本章三种方法与神经网络的合流。
如果时间允许,可以提一句第二局第 37 手:一步人类棋手判断为「错误」的棋,后来被认为是全局的关键。它来自自我对弈,而不是人类棋谱。
每一步向前推演几十步,评估各种走法的后果。
把一个只会模仿人类棋谱的网络,练成超越人类的棋手。
搜索时判定合法走法和胜负的硬约束。
策略网络告诉搜索先考虑哪几步,价值网络告诉搜索谁占优。
请把第四张卡片和前面深蓝那一页对上:人写不出的评估函数,这一次是从数据和自我对弈里学出来的。搜索的框架本身一点没变。
如果机器不需要人类的经验也能变强,
那么在哪些领域,人类的经验反而是一种限制?
这个问题适合留给课堂讨论。提示一个方向:人类经验在规则明确、可以自我对弈的领域最容易被超越;在规则模糊、无法大量试错的领域(教育、医疗、政策)则仍然是主要依靠。
语言模型给出候选动作,
搜索和规则约束执行,
环境反馈作为奖励。
这就是第十二章那个会调用工具的智能体的骨架。
本章讲的「老方法」并没有过时,它们换了一种形式,藏在最新的系统里。
这一页是本章通向第十一、十二章的桥。学生读到「智能体」时,应该能认出这三样东西。
真正的系统,需要它们全部。
神经网络解决「怎样从数据里得到一个好的判断」;
搜索解决「怎样在大量可能性里高效地找」;
规则解决「怎样保证某些事一定或一定不发生」;
强化学习解决「怎样在有后果的行动中学会决策」。
回到本章第三页那三张卡片,现在补上第四张。这四句话可以贴在整门课的墙上:以后看到任何系统,先问它用了哪几样。
地图软件的路线规划,为什么不用神经网络?
先让学生回答,再按右键展开答案。这道题考的是第一章的框架:先问任务是什么,再问方法该用哪种。
启发式函数「从不高估」这个条件,为什么对 A* 这么重要?
为什么强化学习必须处理「探索与利用」的矛盾,而监督学习不需要?
第三题可以延伸到推荐系统:如果只推你已经点过的类型,你的兴趣会被越圈越窄——这是探索与利用在产品里的真实后果。
AlphaGo 里的神经网络,具体替代了深蓝方法中的哪个部分?
这道题如果全班答对,本章的核心就到位了:新旧方法不是替代关系,是补位关系。
继续读
正文与「深入」段落:ai4edu.sjtu.edu.cn/helloai/read/beyond-neural-networks/
下一章:第 4 章 规则不是写出来的,是学出来的
留三到五分钟做本页的回顾,让学生用自己的话复述其中一条。
鼠标移到屏幕底部会显示控制条;页码记在地址栏的 # 后面,刷新不会丢。
手机上:竖着拿会自动把版面转过来(底下那条里的「转向」可以切回去),点右半边或往上滑翻页。