【深度强化学习】动态规划(Dynamic Programming)

动态规划需要明确 MDP 的所有信息。在实际应用中,很少使用动态规划来解决大规模强化学习问题。动态规划分为两个算法,一个是值迭代,另一个是策略迭代。


1 Introduction

1.1 What is Dynamic Programming?

动态规划就是将一个比较复杂的问题拆解为多个简单的子问题,转而将目标放在解决子问题的一般步骤上,最终结合所有子问题的解即可得到复杂问题的最终解。(刷过leetcode的应该都知道吧)

1.2 Requirements for Dynamic Programming

对于动态规划使用的复杂问题,需要具备以下两个性质:

  • 复杂问题的最优解由子问题的最优解组成
  • 子问题在求解复杂问题中重复出现,子问题的解可以被缓存和重用

马尔科夫决定过程(MDP)具有上述两个属性:

  • Bellman 方程把问题递归为求解子问题
  • 价值函数就相当于存储了一些子问题的解,可以复用

因此,我们可以使用动态规划来求解 MDP。

1.3 Planning by Dynamic Programming

Planning ” :“规划问题”,在完全了解 MDP 结构的情况下,求解最优的 Policy

所谓完全了解 MDP 结构,就是知道 状态行为空间、转换矩阵、奖励等。

“规划” 问题分为两个方面:预测(prediction) 控制(control)。prediction 要解决的是在知道 policy 的前提下,求 value function(评估)。control 要解决的是在 prediction 的基础上,循环不同的 policy,找到最佳 policy。


2 Policy Evaluation

2.1 Iterative Policy Evaluation

我们使用 反向迭代 Bellman 期望方程 的方式去 评估 policy

同步反向迭代:对于第 K+1 次迭代,所有状态的价值 v_{k+1}(s) 使用第 K 次迭代的 v_{k}(s') 来更新,其中,s' 是 s 的后继状态。

 例子:评估小方格世界中的随机策略

上图说明了例子中的条件:

  1. 该 MDP 的衰减因子为1(不衰减);
  2. 具有14个非终止状态,1个终止状态(阴影方块就是终止状态);
  3. 当 action 出界时,不改变状态(出界的行为将原地不动);
  4. 在到达终止状态前,每个 action 的 reward 都是 -1;
  5. 上、下、左、右的 action 的概率相同,都是 1/4。

k = 0(初始)时,所有状态的价值都初始化为0;

k = 1 时,更新每个状态的价值。以蓝色块为例,其向上、下、左、右方向的 reward 都是 -1,且 k = 0 时所有状态价值均为0,故 1/4 * (-1 -1 -1 -1) = -1;

k = 2 时,更新每个状态的价值。以蓝色块为例,括号里前两项【-1+(-1)】指的是 当前reward 和 k = 1 时的后继状态价值,由于 k = 1 时从蓝色块出发,上、下、右的后继状态价值都时1,而左的后继状态价值为0,故括号里最后一项【-1+0】。

以此类推,直至收敛。

2.2 How to Improve a Policy

优化策略的方法很简单:

  1. 首先在一个给定的策略下迭代更新价值函数;
  2. 然后在当前策略的基础上,贪心地选择行为,使得后继价值增加得最多。

在上述例子中,基于给定策略的价值迭代最终收敛得到的就是最佳策略,这并不常见。通常,还需要在改善的策略上继续评估,反复多次。不过这种方法总能收敛至最优策略。

2.3 Policy Iteration

下图很直观的表现出了策略迭代的核心思想,在当前策略上迭代计算 v 值,再根据 v 值贪婪地更新策略,如此反复多次,最终得到 最优策略 和最优状态价值函数。

贪心 指的是仅采取那个(些)使得状态价值得到最大的行为。

2.4 Policy Improvment

下面是策略迭代的理论证明。


3 Value Iteration

3.1 Principle of Optimality

一个最优的策略可以分为两个部分,一个从 状态s 到达 状态 s' 的最佳 action 从 状态 s' 出发采取的最佳 policy

定理:一个策略能够使得 状态s 获得最优价值,当且仅当:对于从 状态s 可以到达的任何 状态s’,该策略能够使得 状态s’ 的价值是最优价值

 3.2 Deterministic Value Iteration

 在 3.1 的定理的基础上,如果我们知道 期望的最终状态的位置 以及 反推需要明确的状态间关系,我们就可以从最终状态出发,进行反推。这就是一个确定性的价值迭代。

例子

Solution 1:Value Iteration

并不确定最终状态在哪里,而是根据 每一个状态 的最优后续状态价值来更新该状态的最佳状态价值。多次迭代最终收敛。这也是根据一般适用性的价值迭代。在这种情况下,就算不知道目标状态在哪里,这套系统同样可以工作。

 Solution 2:Determistic Value Iteration

在已知左上角为最终目标的情况下,我们可以从与左上角相邻的两个方格开始计算,因为这两个方格是可以仅通过1步就到达目标状态的状态,或者说目标状态是这两个状态的后继状态。最短路径可以量化为:每移动一步获得一个-1的即时奖励。为此我们可以更新与目标方格相邻的这两个方格的状态价值为-1。如此依次向右下角倒推,直至所有状态找到最短路径。

3.3 Value Iteration

Solution:从初始状态价值开始同步迭代计算,最终收敛,整个过程中 没有遵循任何策略。 

注意:与策略迭代不同,在值迭代过程中,算法不会给出明确的策略,迭代过程其间得到的价值函数不对应任何策略。


4 Summary

  1. Prediction(预测):根据已知的 policy,求价值函数;
  2. Control(控制):基于 Prediction,求出最优策略;
  3. Control 的两个解决方案:Policy Iteration 和 Value Iteration;
  4. Policy Iteration:policy evaluation + policy improvement 交替执行直到收敛;
  5. Value Iteration:寻找 Optimal value function + 一次 policy extraction,它们不用交替执行,因为值函数最优,策略通常也是最优。

 Reference

  1. David Silver《深度强化学习课程》
  2. https://zhuanlan.zhihu.com/reinforce

おすすめ

転載: blog.csdn.net/weixin_41960890/article/details/119112763