[强化学习杂记] 从数学角度理解贝尔曼最优公式为什么是greedy?

贝尔曼最优公式

首先先让我们回顾一下贝尔曼最优公式的定义:

假设存在一个确定性策略 π ′ \pi' π′,在任意一个状态 s s s 下
V π ′ ( s ) ≥ V π ( s ) V^{\pi'}(s) \geq V^\pi(s) Vπ′(s)≥Vπ(s)

那么称策略 π ′ \pi' π′ 为贝尔曼方程的最优解。

了解以下定义之后,我们需要思考下面几个问题:

  1. 最优策略是否一定存在?
  2. 最优策略是否唯一?
  3. 最优策略是确定的还是非确定的?
  4. 如何求解最优策略?

在这里,我们先考虑状态价值下的贝尔曼最优公式:
v ∗ ( s ) = max ⁡ π [ r ( s , a ) + γ ∑ s ′ P ( s ′ ∣ s , a ) ⋅ v ( s ′ ) ] v^*(s) = \max_{\pi} \left[ r(s,a) + \gamma \sum_{s'} P(s'|s,a) \cdot v(s') \right] v∗(s)=πmax[r(s,a)+γs′∑P(s′∣s,a)⋅v(s′)]

在之前的笔记中,我写的是
v ∗ ( s ) = max ⁡ a [ r ( s , a ) + γ ∑ s ′ P ( s ′ ∣ s , a ) ⋅ v ∗ ( s ′ ) ] v^*(s) = \max_{a} \left[ r(s,a) + \gamma \sum_{s'} P(s'|s,a) \cdot v^*(s') \right] v∗(s)=amax[r(s,a)+γs′∑P(s′∣s,a)⋅v∗(s′)]

但这两者是等价的,后者描述的是在当前状态下我们选择最优动作然后按照最优策略行动

事实上,贝尔曼最优公式是一个 "包含两个未知数的方程",为了让读者更直观理解,不妨先看下这个例子:

对给定变量 x , a ∈ R x,a∈ R x,a∈R和方程:
x = max ⁡ a [ 2 x − 1 − a 2 ] − − − ① x = \max_{a} [2x - 1 -a^2] ---① x=amax[2x−1−a2]−−−①

求解x的最大值。

首先,这个方程包含两个未知数。首先我们先固定 x x x , 显然, a 2 ≥ 0 a^2 \geq 0 a2≥0,因此,当且仅当 a = 0 时, ①式取最大值。于是方程变为求解
x = 2 x − 1 x = 2x -1 x=2x−1的最大值。于是我们可以求解得到 x = 1

类似的,观察贝尔曼最优公式,对给一个贝尔曼最优公式,我们首先也是需要求解出最优策略 π \pi π, 然后再求解出我们在该策略下所得到的最优状态价值(state value)。

假设对某一状态 s s s下,有以下动作价值 q 1 , q 2 , q 3 {q_1,q_2,q_3} q1,q2,q3,对该状态的下的分布函数,我们可以描述为:
max ⁡ c 1 , c 2 , c 3 c 1 ∗ q 1 + c 2 ∗ q 2 + c 3 ∗ q 3 \max_{c_1,c_2,c_3}c_1 * q_1 + c_2 * q_2 + c_3 * q_3 c1,c2,c3maxc1∗q1+c2∗q2+c3∗q3

其中, c 1 , c 2 , c 3 {c_1,c_2,c_3} c1,c2,c3分别为在状态s下执行各动作的概率,因此我们有
c 1 + c 2 + c 3 = 1 c_1 +c_2 + c_3 = 1 c1+c2+c3=1 , c 1 , c 2 , c 3 ≥ 0 c_1,c_2,c_3 \geq 0 c1,c2,c3≥0

如果我们要求解出该状态下的最优策略 π \pi π(也就是在该状态下让状态价值最大的那个策略),假设已知 q 3 ≥ q 1 , q 2 q_3 \geq q_1,q_2 q3≥q1,q2。则该状态下的最优策略应该为 c 3 ∗ = 1 , c 2 ∗ = c 1 ∗ = 0 c^*_3 = 1, c^*_2 = c^*_1 = 0 c3∗=1,c2∗=c1∗=0 。因为:
q 3 = ( c 1 + c 2 + c 3 ) q 3 = c 1 q 3 + c 2 q 3 + c 3 q 3 ≥ c 1 q 1 + c 2 q 2 + c 3 q 3 q_3 = (c_1 + c_2 + c_3) q_3 = c_1q_3+ c_2q_3 +c_3q_3 \geq c_1q_1 + c_2q_2 +c_3q_3 q3=(c1+c2+c3)q3=c1q3+c2q3+c3q3≥c1q1+c2q2+c3q3

参考
相关推荐
kaikaile19953 小时前
基于拥挤距离的多目标粒子群优化算法(MO-PSO-CD)详解
数据结构·算法
不忘不弃3 小时前
求两组数的平均值
数据结构·算法
leaves falling3 小时前
迭代实现 斐波那契数列
数据结构·算法
珂朵莉MM3 小时前
全球校园人工智能算法精英大赛-产业命题赛-算法巅峰赛 2025年度画像
java·人工智能·算法·机器人
Morwit4 小时前
*【力扣hot100】 647. 回文子串
c++·算法·leetcode
tobias.b4 小时前
408真题解析-2009-13-计组-浮点数加减运算
算法·计算机考研·408考研·408真题
菜鸟233号5 小时前
力扣96 不同的二叉搜索树 java实现
java·数据结构·算法·leetcode
Coovally AI模型快速验证5 小时前
超越Sora的开源思路:如何用预训练组件高效训练你的视频扩散模型?(附训练代码)
人工智能·算法·yolo·计算机视觉·音视频·无人机
千金裘换酒5 小时前
Leetcode 有效括号 栈
算法·leetcode·职场和发展
空空潍5 小时前
hot100-最小覆盖字串(day12)
数据结构·算法·leetcode