本节摘要:把智能体放进分类体系,才能谈「我该用哪一种」。本节按三个维度分类——智能程度(简单反射→基于模型→基于目标→基于效用)、架构思想(符号主义/连接主义/混合)、环境特性(静态/动态、确定/随机等)——并给出每类的能力边界与选型建议,最后用基于目标的智能体代码框架演示分类如何落到实现。
阅读完本节,你应当能够:
回到 1.1 节的恒温器。我们知道它是智能体,但它是最「笨」的一种。现在问题来了:如果任务升级——让机器人清理整栋楼的房间、规划充电顺序、在有人时绕行——恒温器那种「感知→直接映射动作」的架构还够用吗?
显然不够。差在哪?一是没有记忆(不知道哪个房间扫过),二是没有模型(不知道房间布局),三是没有目标(「清理整栋楼」无法拆成一条条 if-else),四是没有权衡(时间不够时先扫客厅还是先扫卧室?)。这四个「差」正好对应四类智能体的能力递进。分类不是学术游戏,它直接回答工程问题:任务复杂度到了哪一档,就该升级哪一层的架构。
SOURCE 原文把这条线讲得很清楚,每一档都是在前一档基础上加一块:
用一张表把四档的能力边界列清楚:
| 类型 | 记忆/模型 | 目标 | 效用 | 优势 | 短板 |
|---|---|---|---|---|---|
| 简单反射 | 无 | 无 | 无 | 快、简单 | 呆板、无前瞻 |
| 基于模型 | 有 | 无 | 无 | 能处理部分观测 | 无目标导向 |
| 基于目标 | 有 | 有 | 无 | 能规划多步 | 无偏好权衡 |
| 基于效用 | 有 | 有 | 有 | 能权衡取舍 | 最复杂、最贵 |
这个分类与「按智能程度分类」是正交的——反应式智能体可以做成基于模型、基于目标的版本,符号主义也可以包含目标与效用。两者是「内部实现方式」和「能力层次」两个维度的交叉。
把 1.2 节的环境六维属性转成智能体类别:静态环境智能体、动态环境智能体、确定性环境智能体、非确定性环境智能体、完全可观测环境智能体、部分可观测环境智能体、离散/连续环境智能体、单/多智能体环境智能体。这个分类的实际用途是触发设计要求:比如「部分可观测」要求智能体具备状态估计与推理,「动态」要求更高的反应性与重规划能力,「连续」要求连续控制算法,「多智能体」要求交互与协作机制。
基于效用智能体与前几档最本质的区别,是它把「偏好」显式化了。目标智能体只会问「这个状态是不是目标状态」,效用智能体还要问「这个状态有多好」。SOURCE 原文给了一个很好的直觉化例子:效用函数把状态映射成分数——highly_desirable_state 值 10,desirable_state 值 5,neutral_state 值 0,其余状态负 5。决策器(DecisionMaker)遍历候选动作,预测每个动作后的状态,算效用,挑分数最高的那个。
这个机制在真实世界里有大量对应:无人驾驶在「安全到达」和「尽快到达」之间权衡时,就是在比效用;投资智能体在「收益」和「风险」之间选组合,也是在比效用。工程上的难点有两个:一是效用函数的构造——谁来定「到达目标值 10、绕路值 5」这种尺度?二是模型不确定性下的期望计算——预测状态本身有误差,效用是「期望效用」而非「确定效用」。理解了这两点,就知道为什么效用智能体是四档里最贵的:它把「设计者的权衡」翻译成了「可计算的偏好」,代价是设计成本和计算成本都高。
符号主义、连接主义、行为主义(强化学习、进化算法这条支线)经常被讲成互相竞争,实际上它们在智能体里各管一段。SOURCE 原文点出:连接主义擅长感知和学习,符号主义擅长推理和规划,行为主义擅长通过与环境的试错交互获得智能。今天被热议的「神经符号 AI」(Neuro-Symbolic AI)就是把符号主义的推理能力和连接主义的感知能力缝合起来——用神经网络把图像翻译成符号事实,再用符号引擎做推理。这跟混合型智能体是同一个思路的两个说法。
再往深看一步,这三个流派的「分界」本身就是历史产物。1956 年达特茅斯会议之后的三十年里,符号主义统治了主流;80 年代连接主义崛起;而行为主义(罗德尼·布鲁克斯的「行为机器人」)提醒大家智能可以来自与环境交互的涌现,不必全塞进大脑里。今天的智能体,几乎都是三者的拼装:感知用神经网络,决策用规则或搜索,学习用强化学习。所以选型时不要问「我该皈依哪个流派」,而要问「我任务的感知、推理、学习三块,各需要哪个流派来填」。
SOURCE 原文给了基于目标智能体的 Python 骨架,核心是引入了 Goal 和 Planner 两个对象:
class GoalBasedAgent: def __init__(self, model, goal, planner): self.model = model self.goal = goal self.planner = planner self.action_sequence = [] def perceive(self, environment_state): self.model.update_model(environment_state) return environment_state def act(self, environment_state): if not self.action_sequence: self.action_sequence = self.planner.plan( environment_state, self.goal, self.model) if self.action_sequence: return self.action_sequence.pop(0) return "ignore"
要点:action_sequence 是「规划—执行」解耦的关键——规划一次生成整个序列,执行时逐个弹出,不用每步重新规划;目标达成后规划器返回空序列,智能体自动退回空闲。真实项目里 Planner 里的占位实现会换成 A*、分层任务网络(HTN)等真实规划算法——这正是第 2 章规划决策节的延伸。
| 任务特点 | 推荐类别 | 理由 |
|---|---|---|
| 单一条件响应、实时要求高 | 简单反射 | 快、省资源 |
| 环境有遮挡、需状态补全 | 基于模型 | 用模型补感知 |
| 多步任务、有明确终点 | 基于目标 | 规划器负责路径 |
| 多目标、要权衡代价收益 | 基于效用 | 效用函数做取舍 |
| 输入是高维感知(图像/语音) | 连接主义/混合 | 神经网络擅感知 |
| 需解释决策过程 | 符号主义/混合 | 规则可读可查 |
选型还受资源约束:嵌入式设备算力有限,通常只能跑简单反射或轻量规则;云端大模型驱动的智能体(如第 4 章 LangChain 的 Agent)本质上是「基于目标的混合型智能体」——语言模型做感知与推理,工具调用做行动。把类型学透,再看这类新框架,你会发现它们并没有跳出这个分类体系。
⚠️ 常见坑:一上来就上最复杂的「基于效用」。多数任务用简单反射或基于目标就能解决,效用函数的设计和求解成本很高,是「最后的手段」而非「默认配置」。
💡 关键直觉:分类的演进方向就是「记忆→模型→目标→效用」的叠加。遇到新任务先问自己:它需要哪几样?缺哪样补哪样,不要一次性全上。
四类智能体的能力其实正好是第 2 章五大核心能力的「切片」:简单反射只用感知+行动,基于模型加知识表示,基于目标加规划决策,基于效用加学习与权衡。所以本节既是第 1 章的概念收口,又是第 2 章的地图——后续读 2.1 到 2.5 时,随时可以回到这张分类表对照「这一类主要靠哪些能力」。
下一节补上最后一块预备知识:写智能体需要哪些数学和编程基础。