3. Bellman Optimality Equation
上一篇讨论了固定策略 π 的 Bellman 期望方程:给定策略后,可以计算它的状态价值 vπ。这一篇要解决更进一步的问题:在所有策略中,哪个策略最好,以及怎样计算它?
本文考虑有限状态、有限动作的折扣 MDP,并假设:
0≤γ<1
1. 最优策略与最优价值
如果两个策略 π1 和 π2 满足:
vπ1(s)≥vπ2(s),∀s∈S
那么称 π1 不劣于 π2。如果一个策略 π∗ 不劣于任意其他策略,即:
vπ∗(s)≥vπ(s),∀π, ∀s∈S
则称 π∗ 为最优策略(optimal policy)。最优状态价值函数定义为:
v∗(s)=πmaxvπ(s)
最优动作价值函数定义为:
q∗(s,a)=E[Rt+1+γv∗(St+1)∣St=s,At=a]
展开环境中的奖励和状态转移后:
q∗(s,a)=r∑p(r∣s,a)r+γs′∑p(s′∣s,a)v∗(s′)
它表示:在状态 s 先执行动作 a,之后始终采用最优策略时能够获得的期望回报。
2. 从 Bellman 期望方程到最优方程
固定策略 π 时,Bellman 期望方程为:
vπ(s)=a∑π(a∣s)[r∑p(r∣s,a)r+γs′∑p(s′∣s,a)vπ(s′)]
为了寻找最优价值,需要同时对所有策略进行最大化。先把括号中的部分记作动作价值:
q(s,a)=r∑p(r∣s,a)r+γs′∑p(s′∣s,a)v(s′)
于是,在单个状态 s 上需要求解:
πmaxa∑π(a∣s)q(s,a)
注意 π(a∣s) 是一组概率,所以这个式子只是各动作价值的加权平均。任何加权平均都不会超过其中的最大值:
a∑π(a∣s)q(s,a)≤amaxq(s,a)
只要把全部概率分配给价值最大的动作 a∗,等号就能成立:
a∗(s)∈argamaxq(s,a)
π∗(a∣s)={1,0,a=a∗(s)a=a∗(s)
因此:
πmaxa∑π(a∣s)q(s,a)=amaxq(s,a)
这也说明:对于有限 MDP,至少存在一个确定性的最优策略。若多个动作同时达到最大值,可以任选一个,也可以在这些动作之间随机化。
把 q∗ 的展开式代入,得到 Bellman 最优方程(Bellman Optimality Equation,BOE):
v∗(s)=amax[r∑p(r∣s,a)r+γs′∑p(s′∣s,a)v∗(s′)],∀s∈S
等价地:
v∗(s)=amaxq∗(s,a)
Bellman 期望方程和 Bellman 最优方程的区别是:
- Bellman 期望方程使用 ∑aπ(a∣s),计算一个给定策略的价值;
- Bellman 最优方程使用 maxa,直接选择当前价值最大的动作,计算最优价值。
3. 矩阵形式与 Bellman 最优算子
对于固定策略 π,定义:
[rπ]s=a∑π(a∣s)r∑p(r∣s,a)r
[Pπ]s,s′=a∑π(a∣s)p(s′∣s,a)
它的 Bellman 方程可以写成:
vπ=rπ+γPπvπ
最优方程常简写为:
v∗=πmax(rπ+γPπv∗)
这里的 max 是逐状态取最大值:每个状态都可以选择自己的最优动作,而这些选择合在一起就构成一个策略。定义 Bellman 最优算子 T:
[T(v)]s=amax[r∑p(r∣s,a)r+γs′∑p(s′∣s,a)v(s′)]
于是 Bellman 最优方程就是一个不动点方程:
v∗=T(v∗)
接下来需要回答三个问题:
- 这个不动点是否存在?
- 这个不动点是否唯一?
- 能否通过不断应用 T 找到它?
4. 压缩映射
如果映射 f:X→X 满足:
∥f(x)−f(y)∥≤c∥x−y∥,0≤c<1
那么称 f 为压缩映射(contraction mapping)。压缩映射定理告诉我们:
- f 存在不动点 x∗,使得 f(x∗)=x∗;
- 这个不动点唯一;
- 从任意 x0 出发,迭代 xk+1=f(xk) 都会收敛到 x∗。
下面证明 Bellman 最优算子 T 在无穷范数下是一个压缩映射。
4.1 一个关于最大值的不等式
对任意两组实数 {xa} 和 {ya}:
amaxxa−amaxya≤amax∣xa−ya∣
原因是,设 ax∈argmaxaxa,则:
amaxxa−amaxya=xax−amaxya≤xax−yax≤amax∣xa−ya∣
交换 x 和 y 后可得到反方向的不等式,因此绝对值形式成立。
4.2 Bellman 最优算子的压缩性
在这个证明中,v 和 u 已经被当作两个固定的输入向量。动作 a 只是下面这个最大化中的临时变量
对任意两个价值向量 v 和 u,在状态 s 上有:
∣[T(v)]s−[T(u)]s∣=amax[r∑p(r∣s,a)r+γs′∑p(s′∣s,a)v(s′)]−amax[r∑p(r∣s,a)r+γs′∑p(s′∣s,a)u(s′)]≤amaxγs′∑p(s′∣s,a)(v(s′)−u(s′))≤γamaxs′∑p(s′∣s,a)∣v(s′)−u(s′)∣≤γamaxs′∑p(s′∣s,a)∥v−u∥∞=γamax∥v−u∥∞s′∑p(s′∣s,a)=γamax∥v−u∥∞=γ∥v−u∥∞
再对所有状态取最大值:
∥T(v)−T(u)∥∞≤γ∥v−u∥∞
因为 0≤γ<1,所以 T 是压缩系数为 γ 的压缩映射。由压缩映射定理可知:
Bellman 最优方程存在唯一解 v∗
同时,不论初始价值如何选择,反复应用 T 都会收敛到 v∗。
5. Value Iteration
压缩映射定理直接给出求解 Bellman 最优方程的方法——价值迭代(value iteration):
vk+1(s)=amax[r∑p(r∣s,a)r+γs′∑p(s′∣s,a)vk(s′)]
算法步骤如下:
- 任意初始化 v0(s),例如全部设为 0;
- 对每个状态和动作计算一步前瞻价值;
- 对动作取最大值,得到 vk+1(s);
- 当相邻两次结果足够接近时停止。
伪代码:
value = {state: 0.0 for state in states}
while True:
delta = 0
next_value = {}
for state in states:
action_values = [
expected_return(state, action, value)
for action in actions(state)
]
next_value[state] = max(action_values)
delta = max(delta, abs(next_value[state] - value[state]))
value = next_value
if delta < epsilon:
break
由压缩性可以得到误差界:
∥vk−v∗∥∞≤γk∥v0−v∗∥∞
误差至多按 γk 的速度衰减。因此 γ 越接近 1,未来奖励的影响越大,但通常也需要更多次迭代才能收敛。
6*. 从最优价值恢复最优策略
Bellman 最优方程输出的是最大值,而真正执行策略需要取得最大值的动作。当然,这个策略在迭代过程中可以由代码顺便记录下来,这部分是为了说明:
每个状态都选择 argmax 得到的动作后,这些动作组合成的策略确实能够达到 v∗
求出 v∗ 后,对每个状态进行一次贪心选择:
a∗(s)∈argamax[r∑p(r∣s,a)r+γs′∑p(s′∣s,a)v∗(s′)]
等价地:
a∗(s)∈argamaxq∗(s,a)
定义确定性贪心策略:
π∗(a∣s)={1,0,a=a∗(s)a=a∗(s)
由于 a∗(s) 在每个状态都实现了 Bellman 最优算子的最大值:
v∗=rπ∗+γPπ∗v∗
右边正是策略 π∗ 的 Bellman 算子。固定策略的 Bellman 方程也有唯一解,因此:
v∗=vπ∗
所以该贪心策略确实是最优策略。注意,价值迭代中的中间结果 vk 只是对 v∗ 的近似;只有在收敛后,或者误差已经足够小时,基于它提取的贪心策略才有最优性保证。
7*. 奖励的仿射变换
奖励变换:
r′=ar+b
在无限时域折扣任务中,如果 a>0,并且常数 b 被加到每一步奖励上,那么任意策略的回报变为:
Gt′=k=0∑∞γk(aRt+k+1+b)=aGt+1−γb
因此:
vπ′(s)=avπ(s)+1−γb
正数缩放和统一平移不会改变各策略之间的大小关系,所以最优策略不变。换句话说,在这些条件下,重要的是奖励的相对关系,而不是绝对数值。
这个结论有适用范围:如果 a<0,最大化问题会反转;如果不同策略经历的步数不同,或者常数没有加到终止后的所有时间步上,那么平移奖励也可能改变最优策略
终止后仍把 terminal state 当作吸收状态,才是统一平移,不会改变策略的优劣关系
Summary
Bellman 最优方程把“搜索所有策略”转化成了“在每个状态选择价值最大的动作”:
v∗(s)=amax[r∑p(r∣s,a)r+γs′∑p(s′∣s,a)v∗(s′)]
围绕它可以得到一条完整的求解链路:
Bellman 最优算子是压缩映射⟹唯一不动点 v∗⟹价值迭代收敛⟹对 q∗ 贪心得到 π∗
与上一篇的策略评估相比,核心变化是从固定策略下的加权平均 ∑aπ(a∣s),变成了寻找最优动作的 maxa。