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

参考
相关推荐
2401_831824961 小时前
基于C++的区块链实现
开发语言·c++·算法
We་ct1 小时前
LeetCode 918. 环形子数组的最大和:两种解法详解
前端·数据结构·算法·leetcode·typescript·动态规划·取反
愣头不青1 小时前
238.除了自身以外数组的乘积
数据结构·算法
人工智能AI酱2 小时前
【AI深究】逻辑回归(Logistic Regression)全网最详细全流程详解与案例(附大量Python代码演示)| 数学原理、案例流程、代码演示及结果解读 | 决策边界、正则化、优缺点及工程建议
人工智能·python·算法·机器学习·ai·逻辑回归·正则化
WangLanguager2 小时前
逻辑回归(Logistic Regression)的详细介绍及Python代码示例
python·算法·逻辑回归
m0_518019482 小时前
C++与机器学习框架
开发语言·c++·算法
一段佳话^cyx2 小时前
详解逻辑回归(Logistic Regression):原理、推导、实现与实战
大数据·算法·机器学习·逻辑回归
qq_417695052 小时前
C++中的代理模式高级应用
开发语言·c++·算法
xiaoye-duck2 小时前
《算法题讲解指南:动态规划算法--路径问题》--5.不同路径,6.不同路径II
c++·算法·动态规划
ambition202423 小时前
最大子数组和算法全解析:从暴力枚举到动态规划优化
数据结构·c++·算法