从一个循环到一个问题陈述
在上一篇指南里,你认识了智能体—环境循环:观察、行动、承受后果、再观察,循环往复。这个循环很生动,但它还不是你能拿来计算的东西。它告诉你强化学习的*节奏*,却没说清智能体究竟在哪些选项之间挑选,也没说「好」到底是什么意思。马尔可夫决策过程(MDP)正是从那个直觉性的循环,通往一份正式问题陈述的桥梁——本阶梯里每一个强化学习算法,真正运作其上的,就是它。
把 MDP 想成一本用数学写就的棋类规则书。国际象棋有一张棋盘、合法的走法、一条「每步之后棋盘变成什么样」的规则,还有一种取胜的方式。MDP 为*任何*带不确定性的决策问题,精确地捕捉下这同一种结构。一旦扫地机器人、国际象棋引擎或投资组合经理被写成 MDP,它们就都成了同一类对象——同一批算法便能拿来啃它们。这种普适性,正是这个框架之所以重要的全部缘由。
五样配料
MDP 把五样东西钉死。状态是智能体可能身处的种种情形——一种棋盘摆布、机器人的位置与传感器读数、蛇梯棋上的一个个格子。动作是每个状态下可用的走法——左转、马走 f3、买进或卖出。转移是「一个动作之后接下来是哪个状态」的规则,这里藏着第一处微妙:这条规则可以是*随机*的。掷一颗骰子,你可能落在六个格子中的任何一个。转移不是「接下来是状态 B」,而是「以六分之一的概率到状态 B」。
第四样配料是[[reward|奖励]]:环境在每步之后递回的一个数字,说明那一步在*当下*有多好。清扫一块新地板+1,撞墙一次-1。奖励不等于「赢」——它是局部的、即时的分数,而智能体的任务,是弄清这些小数字在一盘长局里如何累加起来。第五样配料,[[discount-factor|折扣因子]],恰恰管的就是这种累加,它值得单开一节来谈。
马尔可夫性:为何只有「当下」要紧
「马尔可夫决策过程」里的「马尔可夫」,命名的是一个具体而承重的假设:下一个状态只取决于*当前*的状态与动作——而不取决于你一路如何走到这里的全部历史。在国际象棋里,这是字面成立的。当前棋子的摆布,已足以告诉你选下一步所需的一切;棋子以何种顺序到达此处,毫无分别。当下,是对过往的一份完整总结。
正是这个假设,让数学变得可解。因为智能体永远只需推敲「我现在在哪儿」,而不必推敲「曾经发生过的一切」,问题便保持在可控的规模,你将在接下来几篇指南里遇到的「价值与贝尔曼」机器,也才严丝合缝地各就各位。一旦丢掉马尔可夫性,强化学习核心那个优雅的递归便会土崩瓦解。
回报:智能体真正在玩的那盘长局
一份奖励,是单独一步的分数。但智能体不在乎单独一步——它在乎的是整条轨迹。它试图最大化的那个总量,就是[[return-rl|回报]]:从现在直到终局所收集到的全部奖励之和。正因如此,一个好的智能体会心甘情愿地承受眼下一份*负*奖励——弃一个子、花一笔钱、绕一段远路——只要它能在日后带来多得多的奖励。最大化回报,而非即时奖励,正是「谋划」与「贪婪」的分野。
但「全部奖励之和」有个麻烦。在一个可以永远跑下去的任务里,这个和可能膨胀到无穷大,而无穷大在比较策略时毫无用处——每一种永不终结的策略,得分都一样。折扣因子,通常写作伽马(γ),把这个问题解决了。一步之外的奖励算足额;两步之外的奖励乘上 γ;三步之外,乘 γ 再乘 γ;如此类推,每延迟一步就缩水一分。由于 γ 落在 0 与 1 之间,即便是无尽的奖励之流,也加总成一个有限的、可比较的数。
return = r0 + γ·r1 + γ²·r2 + γ³·r3 + ... γ = 0.9 , reward +100 ten steps away -> 100 · 0.9¹⁰ ≈ 35 (impatient) γ = 0.99, same +100 ten steps away -> 100 · 0.99¹⁰ ≈ 90 (far-sighted)
所以 γ 不只是一道数值上的安全阀——它设定智能体的*性格*。接近 0,智能体目光短浅,只抓眼前能立刻兑现的;接近 1(比如 0.99),它有耐性,肯为多步之后一份更大的奖励,放弃眼下一份小的。而它是*你*选定的旋钮,并非世界告诉你的:设得太低,智能体「看不见」一个遥远的目标,于是永远学不会抵达;设得太高,那些遥远而不确定的总和,又会让学习更嘈杂、更慢才安定下来。
把它拼起来,以及这个框架带给你什么
让我们组装一个微小而完整的 MDP——蛇梯棋——看那五块怎样咬合到一起。它差不多是 MDP 里最干净的一种,因为没有真正的决策要做;它把结构本身单独凸显了出来。
- 状态:你的棋子所在的格子。你曾经走过哪里无关紧要——只看你现在在哪里。(这正是马尔可夫性的具体化身。)
- 动作:掷骰子。(可做的动作只有一种——这正是它不涉及技巧的原因。)
- 转移:骰子落在 1–6 之间(每个点数概率六分之一),你前进相应步数,随后踩到的蛇把你滑下去、梯子把你抬上来。是随机的,却被完全规定了。
- 奖励:走到最后一格的那一刻+1,其余处处为 0。
- 折扣:γ 接近 1,因为早几回合抵达终点,也只比晚些抵达略好一点。
问题这样写下来之后,一个精确的问题便可以提出了:从这个格子出发,我能期望的最佳回报是多少?那个数字——附在每个状态上——就是价值函数,下一篇指南的主题;而把每个状态的价值与它邻居的价值连结起来的那条递归关系,就是贝尔曼方程。在问题成为一个 MDP 之前,这套机器一概用不上。这个框架并非官僚程序;它恰恰是让「靠试错学习」根本变得可计算的那样东西。