文章目录
1. 介绍
前面 第二章主要介绍了如何用MDP去形式化RL问题, 还未涉及到如何去解MDP问题。
动态规划可以帮助找到行业中面临的规划问题的最佳解决方案,前提是环境的具体情况是已知的。 DP 为理解可以解决更复杂问题的 RL 算法提供了一个很好的起点。
第四章和第五章将会介绍如果环境未知 (model-free)如何解。
1.1 DP 定义
Dynamic sequential or temporal component to the problem
Programming optimising a “program”, i.e. a policy c.f. linear programming
DP是一种解决复杂问题的方法, 通过将原问题拆分成子问题:
-
对子问题求解
-
存储子问题的解并合并,找到原问题的解。
1.2 使用动态规划DP的要求
动态规划DP是一种非常通用的求解方法,一般求解的问题有以下两个属性:
- 最优子结构:
- 适用最优性原;
- 最优解可以分解为子问题
e.g.
Fibonacci series Fib(n) = Fib(n-1) + Fib(n-2)
问题中的Fib(n)可以拆分为两个字问题Fib(n-1) 和 Fib(n-2)
- 重叠子问题:
- 子问题多次重复出现;
- 解决方案可以缓存和重用
在斐波那契动态规划数字树表示的情况下,可以看到多个子问题如 fib(4)、fib(3)、fib(2) 等出现多次,我们可以将这些解进行存储。
马尔可夫决策过程满足这两个属性:
- 贝尔曼方程给出递归分解;
- 价值函数存储并重用解决方案
1.2 DP用于planning
DP在MDP中假设环境的情况已知(即给定一个完美的环境马尔可夫决策模型),以寻找最优策略。
- DP 假设整个MDP已知; 用于MDP做计划planning
对于预测问题:
- input M D P < S , A , P , R , γ > MDP<S,A,P,R,\gamma> MDP<S,A,P,R,γ> 和策略 π \pi π
- 或者 M R P < S , P π , R π , γ > MRP<S,P^\pi,R^\pi,\gamma> MRP<S,Pπ,Rπ,γ>
- output: 价值函数 v π v_\pi vπ
对于控制问题:
- input M D P < S , A , P , R , γ > MDP<S,A,P,R,\gamma> MDP<S,A,P,R,γ> 和
- output: 最优价值函数 v π v_\pi vπ和最优策略 π \pi π
DP也可以用来解很多其他的问题:scheduling, 字符串的匹配问题,图算法等。
2. 策略迭代Policy Iteration
第二章 介绍了贝尔曼期望递归和贝尔曼最优递归,这里我们将用贝尔曼期望对策略进行评估(2.1),用贝尔曼最优方程对策略进行迭代(control)寻找最优策略(2.2)
2.1 策略评估 Policy Evaluation (Prediction)
对于已知马尔可夫决策过程,我们考虑入如何去计算 给定任意策略 π \pi π的状态价值函数 v π v_{\pi} vπ,就是策略评估。
??如果MDP未知如何评估策略?
问题:评估一个给定的策略
方法:将贝尔曼期望备份(Bellman expectation backup)进行迭代。
v
1
−
>
v
2
−
>
.
.
.
.
.
v
π
v_1->v_2->.....v_{\pi}
v1−>v2−>.....vπ
如果用同步备份,
- 在每次迭代 k + 1 k+1 k+1时, 对于所有的状态 s s s, 我们都去从 v k ( s ‘ ) v_{k}(s‘) vk(s‘)更新 v k + 1 ( s ) v_{k+1}(s) vk+1(s),
- s ′ s' s′ 是 s s s的后继(下一个)状态。
从
v
k
(
s
′
)
v_{k}(s')
vk(s′)对
v
k
+
1
(
s
)
v_{k+1}(s)
vk+1(s)更新:
(空心节点为状态s,实心节点为动作a)
2.2 策略迭代Policy Iteration
策略迭代包含两个过程:策略评估和策略改进。
- 我们开始于任意一策略 π \pi π,
- 然后对当前策略价值 v π v^\pi vπ进行迭代评估,
- 运用贪婪策略生成比当前策略 π \pi π更好的策略 π ′ \pi' π′
- 持续迭代以上过程,获得最优策略 π ∗ \pi^* π∗
例子:jack’s car rental
状态(state):2个地点,每个地点最多20辆车
动作(action):最多在两个地点之间夜间调运5辆车
奖励(reward):每辆车的租金收益为$10。
转移(transition): 取车和换车是随机的:
- 符合泊松分布,n 次取车/还车的概率为 λ n n ! e − λ \frac{\lambda^n}{n!}e^{-\lambda} n!λne−λ
- 地点1:平均租车 =3,平均还车=3
- 地点2:平均租车 =4,平均还车=2
基于以上信息,我们试图找到最佳策略。
不同策略
π
0
,
π
1
.
.
.
π
4
\pi_0,\pi_1...\pi_4
π0,π1...π4,以及策略
π
4
\pi_4
π4对应的价值函数:y,x分别代表地点1 和地点2 的车辆数(状态值state)。
从任意策略
π
0
\pi_0
π0开始,我们会获取一个价值函数曲面
V
1
V_1
V1(如右下图
V
4
V_4
V4),然后用贪婪的方式获取一个更好的策略
π
1
\pi_1
π1,然后获取最新的
π
1
\pi_1
π1对应的价值函数曲面
V
1
V_1
V1,依次获取
π
2
\pi_2
π2 ->
V
2
V_2
V2,
π
3
\pi_3
π3 ->
V
3
V_3
V3 ,
π
4
\pi_4
π4 ->
V
4
V_4
V4。 从
π
3
\pi_3
π3 到
π
4
\pi_4
π4,策略开始converge。
cla
策略改进
基于一个确定的策略,即
a
=
π
(
s
)
a=\pi(s)
a=π(s), 我们可以通过贪婪的方式提升策略
π
′
(
s
)
=
a
r
g
m
a
x
a
∈
A
q
π
(
s
,
a
)
\pi'(s)=argmax_{a\in A} q_{\pi} (s,a)
π′(s)=argmaxa∈Aqπ(s,a)
该策略通过从任意一状态提升一步的价值,即
q
π
(
s
,
π
′
(
s
)
)
=
m
a
x
a
∈
A
q
π
(
s
,
a
)
≥
q
π
(
s
,
π
(
s
)
)
=
v
π
(
s
)
q_\pi(s,\pi'(s))=max_{a \in A} q_\pi(s,a) \geq q_\pi(s,\pi(s))=v_\pi(s)
qπ(s,π′(s))=maxa∈Aqπ(s,a)≥qπ(s,π(s))=vπ(s)
进而提升价值函数
v
π
′
(
s
)
≥
v
π
(
s
)
v_\pi'(s) \geq v_\pi(s)
vπ′(s)≥vπ(s)
问题:
我们是否需要每次迭代到精确的value值,有没有可能简化这个过程? 通过近似的策略评估的价值而不是精确的策略评估?
修订版策略迭代
该方法是对策略迭代的修改,主要是解决是
- 策略评估过程是否需要收敛到 v π v_\pi vπ?
- 或者我们要不要引入一个停止条件,如 ϵ − c o n v e r g e n c e \epsilon -convergence ϵ−convergence
- 或者直接在k次策略迭代后停止收敛性
- 或者在每次策略迭代后都对策略进行更新?即在k=1次迭代后停止迭代。(该方式等同于下述中的价值迭代)。
3. 价值迭代 Value iteration
3.1 最优策略原则
任何一最优策略可以被拆分成两部分:
- 一个最优的动作 A ∗ A_* A∗
- 和一个从后续状态
S
′
S'
S′的最优策略
一个策略 π ( a ∣ s ) \pi(a|s) π(a∣s)在状态s获取最优的价值, v π ( s ) = v ∗ ( s ) v_{\pi}(s)=v_{*}(s) vπ(s)=v∗(s),当且仅当
- 对于任何的从状态 s s s可到达的状态 s ′ s' s′
- 从 s ′ s' s′, π \pi π都已经达到了最优价值。也就是对于所有的 s ′ s' s′, v π ( s ′ ) = v ∗ ( s ′ ) v_{\pi}(s') = v_*^{}(s') vπ(s′)=v∗(s′) 恒成立.
3.2 确定性价值迭代
如果我们已知子问题
v
∗
(
s
′
)
v_*^{}(s')
v∗(s′) 的解 , 则
v
∗
(
s
)
v_*^{}(s)
v∗(s)可以通过一步前瞻获得
v
∗
(
s
)
←
m
a
x
a
∈
A
R
s
a
+
γ
∑
s
′
∈
S
P
s
s
′
a
v
∗
(
s
′
)
v_*^{}(s)\gets max_{a \in A} R^a_s+\gamma\sum_{s' \in S}P^a_{ss'}v_*^{}(s')
v∗(s)←maxa∈ARsa+γ∑s′∈SPss′av∗(s′) (等价于贝尔曼最优方程)
然后迭代以上步骤。
最短路径问题:
每次迭代选取最优的值,等价于策略迭代中 价值评估时 k=1的迭代。
3.3 价值迭代
问题:寻找最优策略
π
\pi
π
方法:将贝尔曼最优备份(Bellman optimality backup)进行迭代。
v
1
−
>
v
2
−
>
.
.
.
.
.
v
∗
v_1->v_2->.....v_{*}
v1−>v2−>.....v∗
不同与策略迭代, 我们没有确切的策略, 直接作用在价值空间。中间的价值函数可能不对应任何的策略。即
∃
v
i
≠
v
π
,
∀
π
\exist v_i \neq v_{\pi} , \forall \pi
∃vi=vπ,∀π。而在策略迭代中,每一步我们建立价值函数, 该值对应特定的策略。
在这里插入图片描述
从k iteration 迭代到k+1时更新所有的s 从上次迭代的后续状态取最好的action(贝尔曼最优递归)。
DP 算法
目前当前要解决的问题主要是planning 问题 (MDP已知,试图解MDP).包括两种问题, prediction 和control。
-
当前算法基于状态价值函数 v π ( s ) v_\pi(s) vπ(s) 或者 v ∗ ( s ) v_*(s) v∗(s), 该算法每次迭代的复杂度为 O ( m n 2 ) O(mn^2) O(mn2),
对应m个动作,n个状态, 每个状态对应n个后继状态。 -
同样我们也可以用在动作价值函数 q π ( s , a ) q_\pi(s,a) qπ(s,a) 或者 q ∗ ( s , a ) q_*(s,a) q∗(s,a),
但是对应的每次迭代复杂度为 O ( m 2 n 2 ) O(m^2n^2) O(m2n2) ,因为我们要考虑m个动作,n个状态,以及每个状态对应n个后继状态及后继状态的m个动作。
4. DP备份
DP的备份是full-width的意味着每个状态及动作都会被备份,因此对于大规模问题,DP会带来很大的维度灾难问题。后面第四章model-free 会引入采样的概念来降低backup。
[1]: Sutton, R. S., Barto, A. G. (2018 ). Reinforcement Learning: An Introduction. The MIT Press