强化学习(1):贝尔曼方程与贝尔曼最优方程

在贝尔曼方程之前
如果只看公式,贝尔曼方程很容易被理解成一个普通的递推式。但它真正解决的问题,其实来自强化学习最基本的任务:如何在连续决策中评价一个选择到底好不好。
在监督学习里,问题通常是“给定输入,预测输出”。例如给一张图片,判断它属于哪一类;给一段数据,预测一个数值。这类任务的特点是,模型每次只需要对当前输入做一次映射,输出结果本身不会直接改变后续的数据分布。评价标准也比较直接,通常是预测误差是否足够小。
强化学习的问题不同。它研究的是一个智能体(Agent)如何在环境(Environment)中不断行动,并通过与环境的交互逐步改进决策。这里的核心不是“预测一个标签”,而是“在一连串动作中获得尽可能大的长期收益”。也就是说,当前的动作不仅会带来眼前的结果,还会影响下一时刻所处的状态,而下一时刻的状态又会影响之后还能采取什么动作、还能获得什么奖励。于是,一个动作的好坏不再只取决于它立刻带来的结果,还取决于它对未来的影响。
这件事决定了强化学习必须回答一个比监督学习更深一层的问题:怎样衡量一个状态,或者一个动作,从长期来看是否值得。
要回答这个问题,首先需要描述强化学习中最基本的交互结构。通常可以把它概括为下面几个要素。
第一是状态(State)。状态表示智能体在某一时刻对环境的描述。它不是随意记录的信息集合,而应当是足以支持当前决策的信息。如果当前给出的状态已经包含了做决策所需要的关键信息,那么智能体就可以基于它选择动作。
第二是动作(Action)。动作是智能体在某个状态下做出的选择。动作可以是离散的,例如“向左”“向右”“停止”;也可以是连续的,例如机械臂的关节角速度、无人车的转向角和油门大小。
第三是奖励(Reward)。奖励是环境对当前动作结果的反馈。它通常是一个标量,用来表示“这一步做得好不好”。奖励可以理解为设计者给智能体设定的局部目标信号,但要注意,奖励只是局部反馈,不一定直接等于最终任务目标。
第四是状态转移(State Transition)。智能体在状态下采取动作后,环境会转移到新的状态。这个转移可能是确定的,也可能带有随机性。正因为状态会不断变化,所以强化学习本质上是一个序贯决策(Sequential Decision Making)问题,而不是单步分类或回归问题。
如果把这些要素合在一起,就得到强化学习最基本的交互过程:在时刻 $t$,智能体观察到状态 $s_t$,采取动作 $a_t$,环境返回奖励 $r_t$,并转移到下一个状态 $s_{t+1}$。之后这一过程继续重复。
从以上内容可以看出,强化学习真正关心的,不是某一步奖励本身,而是从当前时刻开始,未来一系列奖励综合形成的长期收益。单步奖励只能反映当前动作带来的即时结果,却不能完整说明这一动作对整个决策过程的影响。在序贯决策问题中,动作不仅决定当前得到什么奖励,还会改变下一时刻所处的状态,而后续状态又会继续影响未来的选择空间和收益水平。因此,一个动作是否值得,不能只看眼前反馈,而必须结合它对未来的持续影响来判断。这也是为什么强化学习必须从“单步奖励”进一步过渡到“长期回报”的原因。
这就引出了一个最关键的前置问题:为什么“当前奖励”还不够?
原因很简单。在很多任务中,一个动作的即时结果和长期结果并不一致。某个动作可能立刻带来正奖励,但会把系统带入一个更差的后续状态;另一个动作也许当前没有收益,甚至会带来暂时损失,但却能为后续更大的收益创造条件。因此,如果只用一步奖励评价动作,常常会得到短视的策略。强化学习必须引入一种能够衡量长期效果的量,否则就无法正确地区分“眼前看起来好”和“长期真正更优”这两类情况。
所以,在正式讨论贝尔曼方程之前,逻辑上还差最后一块:如何把未来的一连串奖励合成为一个可计算、可比较的指标。这个指标就是后面要讲的“回报(Return)”。一旦回报被定义出来,状态价值和动作价值才有明确含义,才能自然地导出贝尔曼方程。
本文采用一种常见但并非唯一的记号:在时刻 $t$ 执行动作 $a_t$ 后,环境返回奖励 $r_t$ 并转移到下一状态 $s_{t+1}$。有些教材会把这一步奖励记成 $r_{t+1}$。两种写法本质等价,只是时间下标约定不同。后文会始终保持本文这一套记号不变。
回报:如何刻画长期收益
既然强化学习关心的是长期效果,那么就需要先回答一个基本问题:如何把未来一系列奖励合成为一个统一的量,用来评价当前状态或动作的优劣。这个量通常被称为回报。
从直观上看,回报就是从当前时刻开始,之后所获得奖励的累积结果。假设在时刻 $t$,智能体之后依次获得奖励 $r_t, r_{t+1}, r_{t+2}, \dots$,那么一个最直接的想法是把它们全部加起来:
$$ G_t = r_t + r_{t+1} + r_{t+2} + ⋯ $$这里的 $G_t$ 表示从时刻 $t$ 开始的总收益,也就是当前时刻对应的回报。这样定义的好处很直接:它确实把未来的整体效果纳入了评价范围,而不再局限于单步奖励。
但是,这个最朴素的定义很快会遇到两个问题。
第一个问题是,未来的奖励序列可能很长,甚至没有明确终点。如果任务本身是持续进行的,那么上式中的求和可能会发散,导致回报无法作为一个稳定的数学对象来处理。第二个问题是,即使这个和在数值上可以计算,直接把所有未来奖励等权相加,也未必符合实际需求。在很多任务中,较近的收益通常比较远的收益更确定,也更值得优先考虑。因此,强化学习一般不会直接使用简单求和的形式,而是引入一个折扣因子,对未来奖励进行衰减。
于是,更常见的回报定义写成:
$$ G_t = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \gamma^3 r_{t+3} + \cdots $$其中,$\gamma$ 称为折扣因子(Discount Factor),通常满足
$$ 0 \le \gamma < 1 $$这个定义表示:越靠后的奖励,在总回报中的权重越小。当前奖励的权重是 1,下一步奖励的权重是 $\gamma$,再下一步是 $\gamma^2$,以此类推。
折扣因子的引入有两个直接作用:
- 其一,它使得无限时域下的回报更容易保持有限,从而便于分析和计算。只要单步奖励有界,且 $\gamma < 1$,这个加权和通常就是收敛的。
- 其二,它体现了“越远的未来影响越弱”的思想。这里的“弱”并不意味着未来不重要,而是表示未来的不确定性更大,因此在当前决策中的权重通常会适当降低。
需要注意的是,折扣因子并不是一个纯粹的数学技巧,它还直接影响智能体的决策偏好。如果 $\gamma$ 较小,那么智能体会更关注近期收益,策略往往更偏向短期效果;如果 $\gamma$ 接近 1,那么智能体会更重视长期收益,愿意为了未来更大的回报接受当前较小的收益,甚至暂时的损失。
从这里开始,可以看出强化学习和一般的单步决策有一个根本区别:评价标准不再只是“当前做得怎么样”,而是“当前选择对未来整体过程意味着什么”。回报正是用来表达这种长期影响的基本量。后面要定义的状态价值和动作价值,本质上都是围绕回报展开的:它们关心的都是“在某种条件下,未来回报的期望是多少”。
有了回报之后,仍然还缺少一个关键步骤。因为回报描述的是一条具体轨迹上未来奖励的累积结果,而强化学习中的环境和策略往往都带有随机性。同一个状态下,即使采取相同动作,后续获得的奖励序列也可能不同。因此,只看某一次实际发生的回报还不够,我们还需要进一步讨论:在给定状态或动作的条件下,未来回报的平均水平应该如何定义。这就引出了后面的状态价值和动作价值。
状态价值与动作价值:如何从回报过渡到价值函数
定义了回报之后,还不能直接进入贝尔曼方程。因为回报 $G_t$ 描述的是某一条具体交互轨迹上,从时刻 $t$ 开始累积得到的长期收益,而强化学习中的决策过程通常具有随机性。即使从同一个状态出发,后续采取的动作、环境发生的状态转移、最终得到的奖励序列,都可能不同。因此,单个回报只能反映一次具体经历的结果,却不能稳定刻画一个状态或动作本身的“长期好坏”。
这时就需要引入价值函数(Value Function)。价值函数的核心作用,是把随机的、具体的一次回报,上升为一个更稳定的统计量。最常见的做法是对未来回报取条件期望,也就是讨论:在某个给定条件下,未来长期收益的平均水平是多少。
首先看状态价值(State Value)。
在给定策略(Policy) $\pi$ 的前提下,状态 $s$ 的价值记作
$$ V_\pi(s)=\mathbb{E}_\pi[G_t \mid S_t=s] $$这个定义的意思是:当系统当前处于状态 $s$,并且从这一刻开始一直按照策略 $\pi$ 进行决策时,未来回报 $G_t$ 的期望是多少。这里的下标 $\pi$ 强调,这个价值不是状态本身的绝对属性,而是“在某个具体策略下”得到的结果。换句话说,同一个状态在不同策略下,价值通常是不同的。
从含义上看,状态价值回答的是这样一个问题:如果此刻我处在这个状态,并且以后按某种固定方式行动,那么长期来看我大概能获得多少收益。 因此,状态价值衡量的是“状态在给定策略下的长期好坏”。
接着看动作价值(Action Value)。
在给定策略 $\pi$ 的前提下,状态—动作对 $(s,a)$ 的价值记作
$$ Q_\pi(s,a)=\mathbb{E}_\pi[G_t \mid S_t=s,\;A_t=a] $$它表示:当前处于状态 $s$,并且这一步先执行动作 $a$,之后再按照策略 $\pi$ 继续行动时,未来回报的期望是多少。
这个定义比状态价值更细。状态价值只固定了“当前在哪个状态”,而动作价值不仅固定状态,还固定了“此刻先做哪个动作”。因此,动作价值更适合直接比较不同动作在同一状态下的优劣。
可以把两者的区别表述得更明确一些:
- 状态价值 $V_\pi(s)$ 评价的是:在状态 $s$ 下,按照策略 $\pi$ 行动,整体能有多好;
- 动作价值 $Q_\pi(s,a)$ 评价的是:在状态 $s$ 下,如果先执行动作 $a$,再继续按策略 $\pi$ 行动,整体能有多好。
从这里可以看出,状态价值更偏向对 “状态” 的整体评估,而动作价值更偏向对 “具体决策” 的评估。
进一步地,如果策略 $\pi$ 是随机策略(Stochastic Policy),那么状态价值和动作价值之间还存在一个很自然的关系。因为在状态 $s$ 下,策略会以概率 $\pi(a\mid s)$ 选择动作 $a$,所以状态价值实际上可以看成动作价值在该策略下的加权平均:
$$ V_\pi(s)=\sum_a \pi(a\mid s)\,Q_\pi(s,a) $$这个式子非常直观。一个状态的价值,并不是脱离动作单独存在的;它实际上取决于在这个状态下会如何选动作。如果某个策略倾向于选择高价值动作,那么对应的状态价值就会更高;如果策略经常选择较差动作,那么状态价值就会下降。
这里还需要强调一个容易混淆的点:价值函数讨论的是期望回报,而不是某一次实际获得的回报。比如,在某个状态下,某次尝试最终可能拿到了很高收益,另一次尝试却可能表现很差。这并不矛盾。价值函数关心的是在重复经历类似情况时,平均来看能够达到什么水平。因此,价值函数是一个统计意义上的量,不是单次实验结果。
从逻辑上说,到这里已经完成了三个层次的推进:
- 第一层,只看单步奖励还不够,因为强化学习关注长期效果。
- 第二层,于是定义回报,用来表示从当前开始的长期累计收益。
- 第三层,由于回报具有随机性,再进一步定义价值函数,用期望回报来稳定地衡量状态和动作的优劣。
这样一来,下一步就可以自然提出一个更核心的问题:既然状态价值和动作价值都是由未来回报定义出来的,那么它们之间是否存在某种递推关系?也就是说,当前状态的价值能否由“当前奖励”和“下一状态的价值”表示出来?这正是贝尔曼方程要回答的问题。
到目前为止,价值函数仍然只是从定义层面给出,还没有体现出强化学习最重要的结构特征。真正关键的一步在于,回报本身具有天然的递推形式:从当前时刻开始的长期收益,可以拆分为“当前一步得到的奖励”和“下一时刻开始的长期收益”。一旦把这种递推结构带入价值函数,贝尔曼方程就会自然出现。
从回报的递推形式到贝尔曼方程
前面已经定义了回报和价值函数。接下来要解决的问题是:价值函数虽然定义清楚了,但它看起来仍然依赖整个未来奖励序列,似乎不容易直接计算。贝尔曼方程的重要性就在于,它揭示了价值函数内部存在一种递推结构,使得“长期收益”可以转化为“当前一步 + 下一步”的形式。
这个结构首先来自回报本身的定义。
对于折扣回报,
$$ G_t = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \cdots $$把后面的部分重新整理一下,可以写成
$$ G_t = r_t + \gamma \left(r_{t+1} + \gamma r_{t+2} + \gamma^2 r_{t+3} + \cdots \right) $$括号里的部分恰好就是下一时刻的回报 $G_{t+1}$。因此有
$$ G_t = r_t + \gamma G_{t+1} $$这一步很重要。它说明回报并不是一个必须“从现在一直展开到终点”才能理解的量,而是天然满足一种递推关系:当前回报等于当前奖励加上下一个时刻回报的折扣形式。
有了这个关系,就可以把它代入状态价值函数的定义。回忆前面给出的状态价值定义:
$$ V_\pi(s)=\mathbb{E}_\pi[G_t \mid S_t=s] $$将 $G_t = r_t + \gamma G_{t+1}$ 代入,得到
$$ V_\pi(s)=\mathbb{E}_\pi[r_t + \gamma G_{t+1} \mid S_t=s] $$利用期望的线性性质,可以进一步写成
$$ V_\pi(s)=\mathbb{E}_\pi[r_t \mid S_t=s] + \gamma \mathbb{E}_\pi[G_{t+1} \mid S_t=s] $$这时还差一步。右边第二项里仍然有 $G_{t+1}$,看起来还没有真正变成“价值函数的表达式”。但注意,$G_{t+1}$ 本身就是“从下一状态开始的回报”,因此它和下一状态的价值函数之间有直接关系。也就是说,一旦系统从当前状态 $s$ 经过动作和环境转移到下一状态 $s'$,那么从 $s'$ 开始的期望回报就是 $V_\pi(s')$。将右边两项分别展开,即
$$ \mathbb{E}_\pi[r_t \mid S_t=s] = \sum_a \pi(a \mid s) \sum_{s'} P(s'\mid s,a) r(s,a,s') \\ \gamma \mathbb{E}_\pi[G_{t+1} \mid S_t=s] = \gamma \sum_a \pi(a \mid s) \sum_{s'} P(s'\mid s,a) V_{\pi}(s') $$于是,当前状态的价值就可以写成:对所有可能动作、所有可能下一状态求期望后的结果。其完整形式为
$$ V_\pi(s)=\sum_a \pi(a\mid s)\sum_{s'} P(s'\mid s,a)\Big[r(s,a,s')+\gamma V_\pi(s')\Big] $$这就是状态价值函数的贝尔曼方程(Bellman Equation)。
这个式子表面上只是一个求和公式,但它表达的思想非常清楚:
在给定策略 $\pi$ 下,一个状态的价值,等于在该状态下按策略可能采取的动作,以及这些动作可能导致的状态转移和奖励的加权平均结果;而每一种可能结果中,又都包含“当前奖励”和“下一状态价值”两部分。
也可以把这个式子分层理解:
- 第一层,在状态 $s$ 下,策略 $\pi(a\mid s)$ 决定当前动作如何选择。
- 第二层,给定动作 $a$ 后,环境转移概率 $P(s'\mid s,a)$ 决定系统可能到达哪个下一状态。
- 第三层,一旦到达 $s'$,当前这一步获得即时奖励 $r(s,a,s')$,同时未来还会继续产生价值 $V_\pi(s')$,只不过要乘上折扣因子 $\gamma$。
因此,贝尔曼方程本质上是在表达一种“局部—整体”关系:长期价值虽然定义上依赖整个未来,但在结构上可以递归地由一步展开得到。
类似地,对动作价值函数也可以做同样处理。根据定义,
$$ Q_\pi(s,a)=\mathbb{E}_\pi[G_t \mid S_t=s,\;A_t=a] $$这次当前动作 $a$ 已经固定,因此不需要再对当前动作求和。用同样的方法把回报拆开,就得到
$$ Q_\pi(s,a)=\sum_{s'} P(s'\mid s,a)\Big[r(s,a,s')+\gamma \sum_{a'}\pi(a'\mid s')Q_\pi(s',a')\Big] $$这就是动作价值函数的贝尔曼方程。
它和状态价值形式非常相似,只是逻辑顺序略有不同。因为当前动作已经固定,所以第一层不再是“按策略选当前动作”,而是直接从给定的 $a$ 出发;到了下一状态 $s'$ 后,才根据策略 $\pi(a' \mid s')$ 继续选择后续动作。
这里可以把两种形式的差别概括一下:
- $V_\pi(s)$ 研究的是“当前在状态 $s$ 下,按策略行动的整体价值”;
- $Q_\pi(s,a)$ 研究的是“当前先执行动作 $a$,然后再按策略行动的整体价值”。
因此,前者是对状态的评价,后者是对状态—动作对的评价。
到这里,贝尔曼方程已经正式出现。但还要明确一点:它描述的仍然是给定策略 $\pi$ 下的价值关系,因此更准确地说,它是贝尔曼期望方程(Bellman Expectation Equation)。其中“期望”二字非常关键,因为方程右侧对策略随机性和环境转移随机性都做了平均。它并没有回答“最优情况下价值是多少”,只回答“如果一直按当前策略行动,价值应该满足什么关系”。
从形式上看,贝尔曼方程只是把价值函数写成了一个递推关系;但从方法上看,它提供了计算和分析价值函数的基础。更重要的是,它仍然对应于“给定策略”的情形,只能用于评估某个策略的长期效果。如果问题进一步变成“怎样才能做到最好”,那么就不能只讨论 $V_\pi(s)$ 和 $Q_\pi(s,a)$,而必须引入最优价值函数。由此,贝尔曼方程将进一步发展为贝尔曼最优方程。
从给定策略到最优策略:最优价值函数的引入
前面讨论的 $V_\pi(s)$ 和 $Q_\pi(s,a)$ 都有一个共同前提:策略 $\pi$ 已经给定。也就是说,这些价值函数回答的是同一个问题:如果智能体从现在开始一直按照某个固定策略行动,那么长期来看能够获得多少回报。
这类分析当然是必要的,因为它可以用来评估一个策略的质量。但仅仅做到这一步还不够。强化学习真正关心的,通常不是“某个已知策略表现如何”,而是“在所有可能策略中,哪一种策略最好”。
因此,下一步自然要问的是:对于某个状态 $s$,是否存在一种策略,使得从该状态出发获得的长期收益最大?对于某个状态—动作对 $(s,a)$,是否存在一种后续行动方式,使得从这里开始的总回报达到最大?这就引出了**最优价值函数(Optimal Value Function)**的概念。
首先定义最优状态价值函数:
$$ V_*(s)=\max_\pi V_\pi(s) $$它表示,在所有可能策略中,从状态 $s$ 出发所能达到的最大期望回报。
这个定义的含义很明确。前面的 $V_\pi(s)$ 是“在策略 $\pi$ 下,这个状态值多少”;而现在的 $V_*(s)$ 是“无论采用什么策略,这个状态最多能值多少”。因此,$V_*(s)$ 描述的是状态在最优决策意义下的价值上界。
类似地,定义最优动作价值函数:
$$ Q_*(s,a)=\max_\pi Q_\pi(s,a) $$它表示:当前处于状态 $s$,并且这一步先执行动作 $a$,在此之后允许采用任意最优策略继续行动时,所能获得的最大期望回报。
与 $V_*(s)$ 相比,$Q_*(s,a)$ 的定义多固定了一个当前动作,因此它回答的是一个更具体的问题:如果此刻先做动作 $a$,那么从整体最优角度看,这个选择到底值多少。
到这里需要强调一个逻辑上的变化。
前面在讨论 $V_\pi(s)$ 和 $Q_\pi(s,a)$ 时,策略 $\pi$ 是输入的一部分,价值函数依赖于策略;而在定义 $V_*(s)$ 和 $Q_*(s,a)$ 时,策略不再是预先给定的,而是通过对所有可能策略取最大值得到。因此,最优价值函数本身已经隐含了“最优决策”的结果。
也正因为如此,最优价值函数与最优策略之间存在非常紧密的联系。直观地说,如果我们已经知道每个状态的最优价值,或者已经知道每个状态—动作对的最优价值,那么最优策略也就不难确定。因为策略的本质就是在每个状态下选择动作,而最优价值函数恰好提供了比较不同动作优劣的依据。
例如,如果 $Q_*(s,a)$ 已经知道,那么在状态 $s$ 下,最优动作显然应当选取使 $Q_*(s,a)$ 最大的那个动作。也就是说,最优策略实际上可以由最优动作价值函数直接导出。
进一步地,$V_*(s)$ 和 $Q_*(s,a)$ 之间还满足一个非常自然的关系。对于任意状态 $s$,最优状态价值等于在该状态下所有动作中最优动作价值的最大值,即
$$ V_*(s)=\max_a Q_*(s,a) $$这个式子并不复杂,但很重要。它表明:状态本身的最优价值,并不是脱离动作单独存在的,而是由“在这个状态下能做出的最佳动作”决定的。换句话说,状态之所以有价值,不是因为它自身有什么静态属性,而是因为它提供了怎样的后续决策空间。
同样地,如果知道了最优状态价值,那么也可以反过来理解某个动作的优劣。因为一个动作的好坏,最终取决于两部分:当前这一步带来的即时奖励,以及它把系统带到的下一状态在最优条件下还能带来多少未来收益。
到这里,最优价值函数已经定义清楚了。但还没有给出它满足什么样的递推关系。前面已经知道,给定策略的价值函数满足贝尔曼方程;而最优价值函数既然是对所有策略取最大后得到的,自然也会对应一个更强的递推关系。这个新的关系,就是后面要讲的贝尔曼最优方程(Bellman Optimality Equation)。
贝尔曼方程描述的是给定策略下的价值递推关系,因此它服务于“策略评估”这一类问题。而一旦目标从“评估某个策略”变为“寻找最优策略”,方程右侧的“按策略求期望”就不再足够了,因为此时真正需要的是在每一步都作出最优选择。于是,贝尔曼方程中的策略加权平均将被“对动作取最大值”所取代,这正是贝尔曼最优方程出现的原因。
贝尔曼最优方程:从策略评估走向最优控制
前面已经讨论过,贝尔曼方程描述的是给定策略 $\pi$ 下的价值递推关系,因此它回答的是“如果一直按某个固定策略行动,价值函数应当满足什么关系”。但强化学习更核心的问题不是策略评估,而是最优控制(Optimal Control),也就是:如何在所有可能策略中找到长期回报最大的那一个。
一旦问题转向“最优”,前面的递推关系就必须发生变化。原因在于,给定策略时,当前状态下采取哪个动作是由 $\pi(a\mid s)$ 决定的,因此价值函数右侧体现为对动作的加权平均;而在最优控制问题中,我们不再接受一个预先固定的动作分布,而是希望在每个状态下都选取能够使长期回报最大的动作。于是,贝尔曼方程右侧原本的“求期望”结构,将被“取最大值”替代。
先看最优状态价值函数 $V_*(s)$。根据前面的定义,
$$ V_*(s)=\max_\pi V_\pi(s) $$而 $V_\pi(s)$ 的贝尔曼方程是
$$ V_\pi(s)=\sum_a \pi(a\mid s)\sum_{s'} P(s'\mid s,a)\Big[r(s,a,s')+\gamma V_\pi(s')\Big] $$如果现在不再固定某个策略,而是在状态 $s$ 下直接选择最优动作,那么对动作的加权平均就应当替换为对所有动作取最大值。于是得到
$$ V_*(s)=\max_a \sum_{s'} P(s'\mid s,a)\Big[r(s,a,s')+\gamma V_*(s')\Big] $$这就是最优状态价值函数的贝尔曼最优方程。
这个式子的含义可以分成两部分理解。首先,在当前状态 $s$ 下,要考虑所有可能动作 $a$。对于每个动作,都可以计算它带来的两类收益:一类是当前这一步获得的即时奖励 $r(s,a,s')$,另一类是到达下一状态 $s'$ 之后,未来还能获得的最优长期收益 $\gamma V_*(s')$。然后,对所有可能的下一状态按转移概率求平均,得到“当前选择动作 $a$ 的总价值”;最后,再在所有动作中取最大值。这就对应了最优控制中的基本原则:当前决策不仅要考虑眼前奖励,还要考虑它为未来最优决策留下的空间。
类似地,对最优动作价值函数 $Q_*(s,a)$,也可以得到对应的递推关系。由于当前动作 $a$ 已经固定,因此不需要在当前这一步再对动作取最大;但是到了下一状态 $s'$ 后,后续决策应当继续选择最优动作。因此有
$$ Q_*(s,a)=\sum_{s'} P(s'\mid s,a)\Big[r(s,a,s')+\gamma \max_{a'} Q_*(s',a')\Big] $$这就是最优动作价值函数的贝尔曼最优方程。
和前面的贝尔曼方程相比,这个式子最关键的变化就在于右侧出现了
$$ \max_{a'} Q_*(s',a') $$它表示:当前先执行动作 $a$ 后,到达下一状态时,未来价值不再由某个给定策略决定,而是直接取决于在下一状态下能做出的最佳动作。这一结构正是许多经典强化学习算法的理论基础。后面如果学到 Q-learning,就会看到它的更新目标本质上正是在逼近这个式子。
到这里,可以把贝尔曼方程和贝尔曼最优方程的差别再明确概括一次。
对于给定策略的状态价值函数,有
$$ V_\pi(s)=\sum_a \pi(a\mid s)\sum_{s'} P(s'\mid s,a)\Big[r(s,a,s')+\gamma V_\pi(s')\Big] $$这里动作是按策略 $\pi$ 给出的概率分布来加权平均的,因此它体现的是“在既定策略下会怎样”。
而对于最优状态价值函数,有
$$ V_*(s)=\max_a \sum_{s'} P(s'\mid s,a)\Big[r(s,a,s')+\gamma V_*(s')\Big] $$这里动作不再按某个策略平均,而是直接选择使长期价值最大的动作,因此它体现的是“怎样才能做到最好”。
也就是说,两者的根本区别不是形式上多了一个最大值这么简单,而是它们对应的问题本身不同:
- 贝尔曼方程对应的是策略评估;
- 贝尔曼最优方程对应的是最优控制。
贝尔曼方程通常是线性的,因为在给定策略下,右侧对动作和状态转移都是线性求和;而贝尔曼最优方程由于引入了最大值运算,通常不再是线性的。
到这里,贝尔曼最优方程已经给出了最优价值函数的递推关系。但仅仅知道价值函数的定义和方程形式还不够,更实际的问题是:当 $V_*(s)$ 或 $Q_*(s,a)$ 已知时,如何把它转化为具体的决策规则?换句话说,最优策略应当怎样从最优价值函数中恢复出来?这就是下一节要讨论的内容。
如何由最优价值函数恢复最优策略
在前一节中,已经给出了最优状态价值函数 $V_*(s)$ 和最优动作价值函数 $Q_*(s,a)$ 所满足的贝尔曼最优方程。从理论上说,一旦这些最优价值函数已经知道,最优策略也就可以确定下来。原因并不复杂:策略的本质是在每个状态下选择动作,而最优价值函数恰好提供了比较不同动作优劣的依据。
先看最直接的情形:如果最优动作价值函数 $Q_*(s,a)$ 已知,那么在任意状态 $s$ 下,最优策略应当选择使 $Q_*(s,a)$ 最大的动作。也就是说,
$$ \pi_*(s)=\arg\max_a Q_*(s,a) $$这里的 $\pi_*(s)$ 表示最优策略在状态 $s$ 下所选择的动作。这个式子的意义很直接。因为 $Q_*(s,a)$ 已经表示“当前处于状态 $s$,先执行动作 $a$,然后此后始终按最优方式行动时所能获得的最大期望回报”,所以在所有动作中选取 $Q_*(s,a)$ 最大的那个,自然就对应于最优决策。
这个恢复过程说明了一个重要事实:最优动作价值函数本身已经包含了决策所需的全部信息。换句话说,只要知道每个状态下每个动作的最优长期价值,就不需要再额外设计其他决策准则,直接做最大化选择即可。
如果知道的是最优状态价值函数 $V_*(s)$,也同样能够恢复最优策略,只是形式上要多一步展开。由贝尔曼最优方程,
$$ V_*(s)=\max_a \sum_{s'} P(s'\mid s,a)\Big[r(s,a,s')+\gamma V_*(s')\Big] $$可以看出,在状态 $s$ 下,最优动作就是使右侧达到最大值的那个动作。因此最优策略可以写成
$$ \pi_*(s)=\arg\max_a \sum_{s'} P(s'\mid s,a)\Big[r(s,a,s')+\gamma V_*(s')\Big] $$这个式子表明:如果已经知道了每个状态的最优价值,那么只要逐个比较各动作带来的“即时奖励 + 下一状态最优价值”,就能够恢复最优动作。
和基于 $Q_*(s,a)$ 的恢复方式相比,这种写法更依赖于环境模型。因为它需要显式知道状态转移概率 $P(s'\mid s,a)$ 以及奖励函数 $r(s,a,s')$,然后才能计算每个动作对应的总价值。而如果已经有了 $Q_*(s,a)$,则可以直接比较动作,不必再单独展开环境转移结构。因此在很多实际算法里,动作价值函数往往更适合作为决策依据。
这里还需要说明一个细节。上面的 $\arg\max$ 写法默认每个状态下最优动作是唯一的,但在实际问题中,不同动作可能达到同样的最大值。如果存在多个动作都能实现同样的最优价值,那么严格来说,最优策略不一定唯一。此时可以从这些最优动作中任意选择一个,或者在它们之间构造一个随机策略,只要始终只在最优动作集合中分配概率,该策略依然是最优策略。
这说明一个事实:最优价值函数通常是唯一的,但对应的最优策略未必唯一。不同策略只要在每个状态下都能实现相同的最优价值,它们都可以被称为最优策略。
从理解上说,最优价值函数与最优策略之间的关系可以概括为两句话。
- 第一,最优价值函数告诉我们“在最优条件下,状态或动作到底值多少”。
- 第二,最优策略告诉我们“为了实现这个最优价值,当前应当怎么选动作”。
因此,最优价值函数解决的是“评价”问题,而最优策略解决的是“决策”问题。两者并不是相互独立的:前者为后者提供依据,后者则是前者在控制层面的具体体现。
到这里,贝尔曼最优方程的基本逻辑已经完整了。它先通过最优价值函数给出递推关系,再通过最大化操作恢复最优策略。于是强化学习中的一个核心思路就清楚了:如果能够设法求出或逼近 $V_*(s)$ 或 $Q_*(s,a)$,那么最优控制问题也就相应地转化成了一个价值函数求解问题。
从给定策略的价值函数到最优价值函数,从贝尔曼方程到贝尔曼最优方程,再到由最优价值函数恢复最优策略,这条逻辑链条说明了强化学习中的一个基本思想:最优决策问题可以通过价值函数的递推结构来表达和求解。也正因为如此,贝尔曼最优方程不仅是一个定义性公式,更是后续动态规划、时序差分学习以及 Q-learning 等方法的理论起点。
贝尔曼方程与贝尔曼最优方程的关系梳理
首先,两者研究的对象并不相同。
贝尔曼方程对应的是给定策略 $\pi$ 下的价值函数,即 $V_\pi(s)$ 和 $Q_\pi(s,a)$。它回答的问题是:如果智能体从当前开始一直按照策略 $\pi$ 行动,那么状态或动作的长期价值应当满足什么递推关系。也就是说,它描述的是“固定决策规则下的长期收益结构”。
而贝尔曼最优方程对应的是最优价值函数,即 $V_*(s)$ 和 $Q_*(s,a)$。它回答的问题是:如果智能体在每一步都作出最优选择,那么状态或动作的最大长期价值应当满足什么递推关系。它描述的是“最优决策条件下的长期收益结构”。
从这一点看,两者最根本的区别在于:前者针对的是某个已知策略,后者针对的是所有策略中的最优情况。
再看形式上的差别。
对于状态价值函数,贝尔曼方程写成
$$ V_\pi(s)=\sum_a \pi(a\mid s)\sum_{s'} P(s'\mid s,a)\Big[r(s,a,s')+\gamma V_\pi(s')\Big] $$这里动作的选择由策略 $\pi(a\mid s)$ 决定,因此右侧对动作是一个加权平均。这个平均反映的是:在固定策略下,状态价值取决于该策略在当前状态下会如何分配动作概率。
而贝尔曼最优方程写成
$$ V_*(s)=\max_a \sum_{s'} P(s'\mid s,a)\Big[r(s,a,s')+\gamma V_*(s')\Big] $$这里不再通过策略对动作做平均,而是直接在动作集合中取最大值。这个最大值反映的是:在最优控制问题中,当前动作不是“按某个既定规则随机选”,而是“从所有可选动作中挑出最好的那个”。
因此,两者在形式上的核心区别可以概括为一句话: 贝尔曼方程对动作取期望,贝尔曼最优方程对动作取最大值。
对动作价值函数也同样如此。
贝尔曼方程为
$$ Q_\pi(s,a)=\sum_{s'} P(s'\mid s,a)\Big[r(s,a,s')+\gamma \sum_{a'} \pi(a'\mid s')Q_\pi(s',a')\Big] $$贝尔曼最优方程为
$$ Q_*(s,a)=\sum_{s'} P(s'\mid s,a)\Big[r(s,a,s')+\gamma \max_{a'} Q_*(s',a')\Big] $$可以看到,它们的结构几乎完全平行。差别依然体现在下一时刻动作的处理方式上:前者按策略平均,后者直接取最优动作。
除了形式不同,更重要的是两者在强化学习中的作用不同。
贝尔曼方程服务于策略评估。如果一个策略已经给定,那么通过贝尔曼方程可以分析这个策略到底会产生怎样的长期收益结构。动态规划中的策略评估步骤,本质上就是在求解或逼近这个方程。
贝尔曼最优方程服务于最优控制。它不再停留在“某个策略值多少”这个问题上,而是直接刻画“最优情况下值多少”。因此,价值迭代、Q-learning 等算法,本质上都与贝尔曼最优方程密切相关,因为它们的目标是逼近最优价值函数。
从逻辑关系上说,可以把两者理解成递进关系,而不是并列关系。
贝尔曼方程先给出一个基础结论:在任何给定策略下,价值函数都满足某种递推结构。贝尔曼最优方程则是在这个基础上进一步提出:如果把“按策略行动”替换成“每一步都作出最优选择”,那么对应的价值递推关系就会变成最大化形式。
因此,贝尔曼最优方程并不是脱离贝尔曼方程凭空出现的,它可以看作是后者在“最优控制”意义下的加强版本。
贝尔曼方程中的“期望”体现了环境和策略的随机性。
贝尔曼最优方程中的“最大值”体现了控制目标中的优化性质。
总体来看,贝尔曼方程和贝尔曼最优方程都建立在同一个核心思想上,即长期价值可以递归地分解为“当前奖励 + 下一步价值”。两者的区别不在于是否采用递推结构,而在于递推中的动作选择方式:前者对应给定策略,因此对动作取期望;后者对应最优控制,因此对动作取最大值。前者解决的是策略评估问题,后者解决的是最优控制问题。二者共同构成了强化学习价值函数方法的理论基础。
为了把这种区别看得更直观,可以把两者压缩成下面这张对照表:
| 维度 | 贝尔曼方程 | 贝尔曼最优方程 |
|---|---|---|
| 研究对象 | 给定策略下的价值函数 $V_\pi,Q_\pi$ | 最优价值函数 $V_*,Q_*$ |
| 动作处理方式 | 按策略 $\pi(a\mid s)$ 取期望 | 对动作直接取最大值 |
| 对应任务 | 策略评估 | 最优控制 |
| 结果含义 | “这个策略会怎样” | “最好能做到怎样” |
| 典型联系算法 | 策略评估、策略迭代中的评估步骤 | 价值迭代、Q-learning、DQN |
为什么贝尔曼最优方程重要:它与强化学习算法的关系
从定义上看,贝尔曼最优方程只是给出了最优价值函数应当满足的条件;但从方法上看,它几乎构成了大量强化学习算法的出发点。原因在于,强化学习虽然表面上是在学习策略,实质上往往是在通过某种方式逼近满足贝尔曼方程或贝尔曼最优方程的价值函数。
先看最理想的情况。如果环境的状态转移概率和奖励函数都已知,那么最优控制问题就可以直接转化为一个方程求解问题。此时,动态规划(Dynamic Programming)方法可以利用贝尔曼最优方程反复更新价值函数,直到收敛到最优状态价值函数 $V_*(s)$ 或最优动作价值函数 $Q_*(s,a)$。从这个角度说,贝尔曼最优方程提供的并不只是一个静态结论,而是一个可迭代逼近的目标。
例如,价值迭代(Value Iteration)的基本思想就是反复执行如下更新:
$$ V_{k+1}(s)=\max_a \sum_{s'} P(s'\mid s,a)\Big[r(s,a,s')+\gamma V_k(s')\Big] $$这个更新式实际上就是把贝尔曼最优方程右侧当作一个算子,不断作用在当前价值函数估计上。每更新一次,都相当于让当前估计更接近真正的最优价值函数。因此,价值迭代可以理解为“通过迭代求解贝尔曼最优方程”的过程。
如果进一步把“策略评估”和“策略改进”分开,就得到策略迭代(Policy Iteration)。策略迭代的第一步是固定当前策略,用贝尔曼方程评估 $V_\pi(s)$;第二步是在每个状态下选择使长期收益更大的动作,从而改进策略。不断重复这两步,最终就会逼近最优策略。从这个意义上说,策略迭代同时利用了两类关系:用贝尔曼方程做评估,用“最大化”思想向贝尔曼最优方程靠近。
但在很多实际强化学习问题中,环境模型并不知道,也就是说,状态转移概率 $P(s'\mid s,a)$ 和奖励函数的精确形式无法直接获得。这时,就不能像动态规划那样直接对方程右侧做完整求和,而只能依赖交互样本来近似这些期望。于是,贝尔曼最优方程又成为无模型(Model-Free)方法的目标形式。
以 Q-learning 为例,它的核心更新写成
$$ Q(s_t,a_t)\leftarrow Q(s_t,a_t)+\alpha\Big[r_t+\gamma \max_{a'}Q(s_{t+1},a')-Q(s_t,a_t)\Big] $$这个式子的结构非常清楚: 括号中的目标项
$$ r_t+\gamma \max_{a'}Q(s_{t+1},a') $$正是对贝尔曼最优方程右侧的一步样本近似。也就是说,Q-learning 并不是直接解方程,而是在与环境不断交互的过程中,利用观测到的奖励和下一状态,一步一步把当前的 $Q$ 值推向满足贝尔曼最优方程的方向。
如果把表格形式的 $Q(s,a)$ 换成神经网络近似,就得到 DQN(Deep Q-Network)一类方法。此时虽然具体实现更复杂,例如需要经验回放和目标网络来稳定训练,但核心思想并没有改变:仍然是在让参数化的动作价值函数逐步逼近贝尔曼最优方程给出的目标。
因此,从经典的动态规划,到表格型的 Q-learning,再到基于函数逼近的深度强化学习方法,虽然实现方式差别很大,但它们都共享同一个基本逻辑:通过某种方式逼近满足贝尔曼最优方程的最优价值函数。
这也是为什么贝尔曼最优方程在强化学习中具有基础地位。它的重要性并不只是因为它给出了一个漂亮的递推公式,而是因为它把“最优序贯决策”这个问题,转化成了一个可以计算、可以逼近、可以迭代求解的数学对象。没有这个转化,很多强化学习算法就很难获得统一的理论表达。
总结
贝尔曼方程和贝尔曼最优方程都建立在同一个基本事实之上:长期回报具有递推结构,因此价值函数也可以递归地表示为“当前奖励 + 下一步价值”。在给定策略的条件下,这种关系表现为贝尔曼方程,它用于刻画和评估固定策略下的长期价值;在最优控制的条件下,这种关系进一步表现为贝尔曼最优方程,它通过对动作取最大值来刻画最优价值函数。
从概念链条上看,理解这两个方程需要经过几个步骤:先认识强化学习关注的是长期收益而非单步奖励,再引入回报来刻画长期收益,用价值函数表示期望意义下的长期水平,最后利用回报的递推形式得到贝尔曼方程,并进一步推广到贝尔曼最优方程。这样一来,最优决策问题就被转化为一个价值函数的递推求解问题。
也正因为如此,贝尔曼最优方程并不只是强化学习中的一个理论定义,而是后续大量算法的共同基础。无论是动态规划方法,还是 Q-learning 以及更复杂的深度强化学习方法,其核心目标都可以理解为:以不同方式逼近最优价值函数,从而恢复最优策略。