🏠 总目录📚 本教程 03 · 任务环境 ← →
📑 本页目录(点开跳转)

03 · 任务环境

⏱ 34 分钟 | ⭐ PEAS 加六个维度:任务描述清楚了,该用哪类算法基本就定了


🎯 一句话

换算法之前先换描述。 把任务写成 PEAS(性能度量 / 环境 / 执行器 / 传感器)再按六个维度打勾, 你会发现算法的选择几乎完全由环境类型决定,而不是由「你会哪个」决定。


🧩 一、为什么不能直接冲上去写算法

同样一句「找一条路」,在三种环境里是三套完全不同的东西:

环境 该用什么
地图已知、不会变 一次性搜出最优路径(第 5–6 章的 A*)
地图已知、路况随时在变 走一段重规划一段,算法必须随时能给出当前最好答案
地图未知、要边走边猜 先靠感知推断,或者干脆用强化学习试出来

⚠️ 三种情形下目标一模一样、代码完全不同。所以正式开工前,先把任务描述成一个统一的、可比较的形式。


📋 二、PEAS:一个 agent 的四件事

⭐ PEAS = Performance measure(性能度量)· Environment(环境)· Actuators(执行器)· Sensors(传感器)。 写清这四样,一个任务就算定义完了。

P 性能度量 E 环境 A 执行器 S 传感器
国际象棋 胜 1 / 和 ½ / 负 0 棋盘、棋子 把某子移到某格 每格上是什么子
自动驾驶出租车 安全、准点到达、利润、守法、乘客舒适 街道、高速、车流、行人、天气、乘客 转向、加速、刹车、喇叭、语音提示 摄像头、雷达、加速度计、GPS、里程表
Wumpus World 带金子回起点 +1000、死亡 −1000、每走一步 −1、射箭 −10 4×4 网格,含坑、金子、Wumpus 左转、右转、前进、抓取、射箭、爬出 微风、闪光、臭味、撞墙、惨叫

⭐ 四个里面 P 最难写,因为它定义了「赢」

看 Wumpus 那行的 −1 每步。它看着是个小数字,其实决定了整个 agent 的性格:

💀 性能度量写歪了,agent 就会一丝不苟地优化歪的东西。 OpenAI 在 2016 年报告过一个赛船游戏的例子:奖励给的是分数而不是名次, 结果 agent 学会了在一个小水湾里绕圈撞可重生的道具刷分,得分比人类玩家高约 20%, 却一次终点都没到过,还不停撞船起火。 ⚠️ 它没有出 bug,它精确地做到了你要求的事。 这正是上一章 ELIZA 那个坑的现代版本。


🕳️ 三、Wumpus World:把一个任务真正形式化

这个 4×4 的小世界是全课程贯穿的例子,后面讲逻辑、讲不确定性都会回到它。规则很短:

⭐ 因为有朝向,agent 的位置状态是 16 格 × 4 个朝向 = 64 种,再乘上「金子拿没拿」「箭射没射」。

行4 行3 行2 行1 列1 列2 列3 列4 臭味 微风 坑 Wumpus 臭味 微风 闪光 金子 坑 微风 臭味 微风 起点 微风 坑 微风 微风 = 上下左右有坑  臭味 = 上下左右有 Wumpus 闪光 = 同格有金子  空白 = 什么都感知不到
标准 Wumpus World:Wumpus 在 (1,3),坑在 (3,1)(3,3)(4,4),金子在 (2,3)。agent 一开始只知道自己在 (1,1)。

🔨 纸上推一遍:三步定位一个你从没见过的格子

⭐ 这一段是本板块的招牌。不用任何数据、不用任何训练,只靠三条感知规则做交叉推理。

步 你在哪 感知到 能推出什么
1 (1,1) 没有微风、没有臭味 四邻里的 (2,1) 和 (1,2) 既没坑也没怪 → 两格都安全
2 (2,1) 有微风、没有臭味 微风说 (2,2) 或 (3,1) 里有坑(先都标上问号);没臭味说 (2,2)、(3,1) 都没有 Wumpus
3 退回去走 (1,2) 没有微风、有臭味 没微风 → (2,2)、(1,3) 都没坑;有臭味 → Wumpus 在 (1,1)、(2,2)、(1,3) 三者之一

现在把三步的结论并起来:

⭐ 这就是这个板块存在的理由。 三条规则加三次观察,把两个看不见的东西的位置证明了出来 —— 不是估计,不是概率,是证明。 换成「学一个模型来预测哪格有坑」,你需要成千上万局带标注的历史数据,而且仍然只能给概率。

⚠️ 但请注意这条推理链必须记住第 1 步和第 2 步的感知。 一个只看当前感知的 agent 走到 (1,2) 时,手上只有「没风、有臭味」,推不出任何东西。 这就是下一章第一种 agent 的死穴。


🎚️ 四、环境的六个维度

维度 分界线在哪 ⭐ 这决定了你能用什么
完全可观测 / 部分可观测 感知是否包含所有相关信息 部分可观测 ⇒ agent 必须有内部状态(记忆),否则连上面那条推理都做不了
确定性 / 随机 当前状态是否唯一决定下一状态 确定性 ⇒ 可以规划一条动作序列;随机 ⇒ 必须规划一个策略(每个状态该干嘛)
片段式 / 序贯 每个动作是否被独立评价 片段式 ⇒ 每次决策互不影响,分类问题就是片段式的;序贯 ⇒ 必须往前看
静态 / 动态 你思考的时候环境会不会变 动态 ⇒ 有实时约束,算法必须随时能交出当前最好的答案
离散 / 连续 状态、感知、动作是否可数 连续 ⇒ 没法枚举后继,要么离散化成栅格、要么用连续方法(第 7 章运动规划)
单 agent / 多 agent 有没有别的决策者 多 agent ⇒ 对方会针对你调整,需要博弈树和极小化极大(第 10、11 章)

还有两个也很常用,其中第一个直接划出了本板块的边界:

维度 说明
⭐ 已知 / 未知 游戏规则、环境的物理规律,你知不知道。搜索假设你知道,强化学习假设你不知道、要试出来。 这就是本板块和《强化学习基础》的分界线
模拟 / 具身 环境是另一个程序喂给你感知,还是你有个真身体、要处理重力和噪声

⚠️ 三个最容易搞混的地方

  1. 「随机」和「部分可观测」不是一回事。 骰子是真随机但大家都看得见;扑克里别人的牌早就定死了、只是你看不见。 ⭐ 用固定种子的伪随机数发生器掷骰子,严格说是确定性 + 部分可观测。
  2. 「多 agent」的判据是:对方的行为会不会依赖你的行为。 高速上的其他车会;下雨不会(只是随机环境)。
  3. 半动态:环境不变但你的分数在变 —— 带时钟的比赛棋。

📊 五、把几个任务按维度打一遍勾

⭐ 这张表是本章的重点。从上往下读,你会看到难度是怎么一格一格加上去的。

任务 可观测 确定性 片段/序贯 静态/动态 离散/连续 单/多 agent
数独 / N 皇后 完全 确定 序贯 静态 离散 单
图像分类 完全 确定 ⭐ 片段式 静态 连续 单
国际象棋 完全 确定 序贯 半动态 离散 多
西洋双陆棋 完全 随机 序贯 静态 离散 多
Wumpus World 部分 确定 序贯 静态 离散 单
自动驾驶 部分 随机 序贯 动态 连续 多
推荐系统 部分 随机 序贯 动态 混合 多

每加一项「难」的,就得换一类方法:

⭐ 最后一行值得单独说:推荐系统为什么比下棋难得多

维度 推荐系统的实际情况
部分可观测 你看不见用户的真实意图,只看得见点击。⚠️ 更糟的是没被曝光的物品你永远拿不到反馈
随机 同一个人、同一个位置、同一个物品,点不点是概率性的
序贯 今天推什么会改变明天用户的兴趣,⚠️ 短期指标涨不代表长期好
动态 你在算的时候候选池在变、热点在变、库存在变
多 agent ⭐ 广告位上有别的广告主在竞价;内容侧有创作者在针对推荐算法调整发布策略

⭐ 六个维度里,推荐系统占了五个「难」的一侧,国际象棋一个都不占。 这就是为什么一套能下赢世界冠军的算法,搬到推荐系统上一点用都没有 —— 它们根本不是同一类问题,尽管两者都叫「AI」。


🧊 六、⚠️ 维度是你选的描述层,不是客观事实

同一个任务,换个抽象层就换一组勾:

⭐ 所以正确的问法不是「这个环境是什么类型的」,而是「我打算在哪一层描述它」。 描述层选定了,能用的算法也就定了 —— 这是你在整个项目里最早、也最便宜的一个决策。


🔗 这一章连到哪里

去哪 为什么
04 · 四种 Agent 架构 第三节那条三步推理要求记住之前的感知,而下一章第一种 agent 恰好没有记忆。⭐ 它的失败就是第二种 agent 的理由
强化学习基础 02 · MDP ⭐ 本章「已知 / 未知」那一维就是两个板块的分界:搜索假设转移和代价都已知,RL 假设你不知道、要试出来。那一章的 MDP 是「随机 + 序贯」环境的标准形式化
推荐算法 13 · 冷启动与E&E ⭐ 本章说推荐系统「没被曝光的物品永远拿不到反馈」,那一章就是专门解这个问题的
推荐算法 15b · 广告:从推荐到竞价 ⭐ 推荐系统「多 agent」那一格的实证:广告位上真的有别人在同时出价
模型上线之后 15 · 长期效应与代理指标 ⭐ 本章 💀 那个赛船刷分的工业版本 —— 序贯环境里短期指标涨不代表长期好

✅ 检查点

  1. PEAS 是哪四个词?为什么说四个里面 P 最难写?
  2. Wumpus World 的「每步 −1」去掉会怎样?这一个数字把什么概念写进了问题定义?
  3. Wumpus World 的三条感知规则分别是什么?「相邻」指几格、含不含对角线?
  4. 在 (1,1) 无感知、(2,1) 有微风、(1,2) 有臭味之后,你能确定哪三件事?这条链为什么必须有记忆?
  5. 环境的六个维度是什么?「部分可观测」和「动态」各自逼出了什么算法要求?
  6. 「随机」和「部分可观测」的区别是什么?固定种子掷骰子的游戏属于哪一类?判断多 agent 的判据是什么?
  7. 推荐系统在六个维度里占了几个「难」的一侧、国际象棋占几个?为什么说「维度是你选的描述层,不是客观事实」?
👀 答案
  1. Performance measure、Environment、Actuators、Sensors。P 最难写是因为它定义了「赢」,写歪了 agent 会一丝不苟地优化歪的东西(💀 赛船:奖励给分数不给名次,得分比人类高约 20% 却从没到过终点)。
  2. 没有它,agent 可以无限磨蹭、把 16 格全探一遍再动手。有了它,多探一格降风险但要付 1 分 —— 这一个数字把「探索还是利用」写进了问题定义。
  3. 坑的上下左右四格有微风;Wumpus 的上下左右四格有臭味;金子所在那一格有闪光。⚠️ 相邻指上下左右四格、不含对角线,而且不告诉你方向。
  4. Wumpus 在 (1,3)、(3,1) 是坑、(2,2) 安全:(2,1) 有风无臭 → 坑在 (2,2) 或 (3,1)、两格都没怪;(1,2) 无风有臭 → (2,2)(1,3) 没坑、怪在 (1,1)/(2,2)/(1,3) 之一;合并后 (1,1) 站过、(2,2) 两边都被排除,两个位置就都钉死了。必须有记忆,是因为结论要同时用到三步的感知 —— 只看当前感知的 agent 站在 (1,2) 手上只有「没风、有臭味」,什么都推不出。
  5. 完全/部分可观测、确定性/随机、片段式/序贯、静态/动态、离散/连续、单/多 agent。部分可观测 ⇒ 必须有内部状态(记忆);动态 ⇒ 随时要能交出当前最好的答案。
  6. 随机是「当前状态不唯一决定下一状态」(骰子大家都看得见);部分可观测是「信息早定死了但你看不见」(扑克里别人的牌)。固定种子掷骰子严格说是确定性 + 部分可观测。多 agent 的判据是 对方的行为会不会依赖你的行为 —— 其他车会,下雨不会。
  7. 推荐系统占五个,国际象棋占零个:部分可观测(⚠️ 没曝光的物品永远拿不到反馈)、随机、序贯、动态、多 agent(广告主竞价、创作者针对算法调整)。说维度是描述层,是因为换个抽象层就换一组勾:Wumpus 不动才算确定性 + 单 agent,让它会追人就变成动态 + 多 agent。⚠️ 「随机」往往只是「我们决定不去建模的那部分」的另一个名字。

🛑 可以停在这里

⚡ 走神救援

⭐ 这一章的口号是「换算法之前先换描述」。 PEAS——性能度量、环境、执行器、传感器——写清这四样,一个任务就定义完了。

⭐ 四个里 P 最难写,因为它定义了「赢」:Wumpus 那个「每步扣一分」看着微不足道,去掉它 agent 就会无限磨蹭、把整张图探完再动手——一个数字就把「探索还是利用」写进了问题定义。💀 那个赛船游戏是同一件事的贵价版:奖励给分数不给名次,agent 学会绕圈刷可重生道具,分比人高却一次终点都没到——它没出 bug,它精确地做到了你要求的事。

⭐ 招牌手推的价值在结论的性质:把三步感知合起来,能定出怪在哪、哪格是坑、哪格安全——⭐ 而你从没去过那一格,也没有任何一条感知直接说过它安全,这是证出来的不是估出来的。

⚠️ 但这条链必须记住前面几步的感知,只看当前感知的 agent 在半路就什么都推不出来——这就是下一章反应式 agent 的死穴。

六个维度真正要记的是每一条推出什么:部分可观测 ⇒ 必须有记忆、随机 ⇒ 规划的是策略不是动作序列、动态 ⇒ 随时要能交出当前最好答案、多 agent ⇒ 对方会针对你调整。另加「已知/未知」——⭐ 这就是本板块和强化学习的分界。

⚠️ 两个易混:固定种子掷骰子严格说是确定性加部分可观测;多 agent 的判据是「对方行为会不会依赖你的行为」(其他车会,下雨不会)。

⭐ 打勾表最关键的一行是推荐系统:它占了五个「难」的一侧,而国际象棋一个都不占——这就是为什么能下赢世界冠军的算法搬到推荐系统上一点用都没有。 ⚠️ 最后:维度是你选的描述层,不是客观事实。

下一节 👉 04-四种Agent架构.md

打卡记录保存在你的浏览器里,首页能看到总进度