[强化学习杂记] 从数学角度理解贝尔曼最优公式为什么是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

参考
相关推荐
王老师青少年编程3 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【哈夫曼贪心】:合并果子
c++·算法·贪心·csp·信奥赛·哈夫曼贪心·合并果子
叼烟扛炮4 小时前
C++第二讲:类和对象(上)
数据结构·c++·算法·类和对象·struct·实例化
天疆说4 小时前
【哈密顿力学】深入解读航天器交会最优控制中的Hamilton函数
人工智能·算法·机器学习
wuweijianlove5 小时前
关于算法设计中的代价函数优化与约束求解的技术7
算法
leoufung5 小时前
LeetCode 149: Max Points on a Line - 解题思路详解
算法·leetcode·职场和发展
样例过了就是过了5 小时前
LeetCode热题100 最长公共子序列
c++·算法·leetcode·动态规划
HXDGCL5 小时前
矩形环形导轨:自动化循环线的核心运动单元解析
运维·算法·自动化
谭欣辰6 小时前
C++ 排列组合完整指南
开发语言·c++·算法
代码中介商6 小时前
银行管理系统的业务血肉 —— 流程、状态机、输入校验与持久化(下篇)
c语言·算法
foundbug9997 小时前
自适应滤除直达波干扰的MATLAB实现
开发语言·算法·matlab