【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代

目录

一.内容概述

二.值迭代算法(value iteration algorithm)

1.第 1 步:策略更新(policy update)

2.第 2 步:价值更新(value update)

3.流程总结,程序概要,并写成伪代码

4.举例

三.策略迭代算法(policy iteration algorithm)

1.算法介绍

2.policy iteration algorithm 的具体实现

3.例子

(1)例子1

(2)例子2

四.截断策略迭代算法(Truncated policy iteration algorithm)

五.总结


一.内容概述

本节课讲的是 model base 的算法,下节课将会介绍 model-free 算法

  • 值迭代算法(value iteration algorithm)
  • 策略算法(policy iteration algorithm)
  • 截断策略迭代算法(Truncated policy iteration algorithm)

值迭代算法和策略算法是截断策略迭代算法的极端情况

二.值迭代算法(value iteration algorithm)

这是上一节课由收缩映射定理(Contraction mapping theorem)给出的一个算法,这节课给它一个名字,给它两个步骤,正式的介绍出来:

贝尔曼最优公式(矩阵向量形式):

如何求解贝尔曼最优公式?在上一讲中,我们知道收缩映射定理提出了一种迭代算法:只要用下面这个算法就可以求出它的最优策略(optimal policy)和最优的状态值(optimal state value)

其中 v0 可以是任意值。

  • 这种算法最终能找到最优状态值和最优策略。
  • 这种算法称为值迭代(value iteration)!
  • 我们将看到,我们所学的关于 BOE 的数学知识终于得到了回报!
  • 接下来我们将详细剖析值迭代算法,包括编程的时候如何实现。至于这个值迭代算法为什么会设计成这样,为什么能够找到最优策略,它的数学原理上节课已经介绍过了,这节课就不回答了。

算法的矩阵向量形式如下:

可以分解为(be decomposed)两个步骤:

第 1 步:在 vk 给定的情况下进行策略更新(policy update),求解 π。这一步是处理方程右边的优化问题:

其中 vk 是给定的。

第 2 步:价值更新(value update)。把上一步求解出的 πk+1 带入第一个式子,第一个式子中下标的 π 全部变成 πk+1

问题:vk 是状态值(state value)吗?不是,因为不能确保 vk 满足贝尔曼方程。如果上式中,左边是 vk,那它确实是一个贝尔曼公式,那么 vk 就是一个状态值(state value),但是左边并不是 vk,而是 vk+1。所以这里的 vk 就是一个向量,就是一个值,可以是任意的值,并不是状态值(state value)


接下来,我们需要研究元素形式(elementwise form),以便实现算法。

  • 矩阵向量形式(Matrix-vector form)有助于理论分析(theoretical analysis)。
  • 元素形式(elementwise form)有助于实现(implementation)。

1.第 1 步:策略更新(policy update)

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第1张图片

2.第 2 步:价值更新(value update)

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第2张图片

3.流程总结,程序概要,并写成伪代码

   对每一个 s,一开始有个 vk(s),vk 最开始可以从 v0 或者 v1 开始——>从 vk 可以计算得到 qk——>得到 qk 后我知道哪个 qk 是最大的,然后知道它对应的 action 是什么,就可以得到贪婪策略(greedy policy)πk+1——>然后得到 vk+1,vk+1就对应最大的 qk

这个过程可以写成下面的伪代码:

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第3张图片

4.举例

用值迭代算法(value iteration algorithm)为下面的 a 图求解出一个最优的策略,图 b,c 是我们在使用算法进行迭代的过程中,每次我们都会得到一个策略 πk+1,图 b,c 就是得到的策略 πk+1,把它画在图中。

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第4张图片

q 表(q-table): q(s, a) 的表达式(当给出 v 的时候,能求出 q)

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第5张图片

k=0,先选取 v0,可以任意选取,简单起见全选0,然后把 v0 带入刚才的 q-table 当中去:

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第6张图片

先进行策略更新,针对每一个状态,我们去看哪个 qk 是最大的,那么它对应的新的策略就可以求出。对 s1 而言,选取动作 a3 和 a5 对应的 q 最大,所以 policy 可以在最大的 q 里面随便选一个

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第7张图片

再进行价值更新,上面选出的最大的 qk,作为新的 v1 进行下一步的使用

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第8张图片

这个策略绘制出图片就是上面的 b 图,可以看出在 s2 ,s3 和 s4 上都已经达到了最优,可以到达目标。但是在 s1 上还没有达到最优,因为当前策略是原地不动,但是最优策略需要到达目标。再进行下一步迭代:

k=1,把上次迭代得到的 v1 带入刚才的 q-table 当中去:

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第9张图片

这个策略绘制出图片就是上面的 c 图,可以看出在 s1,s2 ,s3 和 s4 上都已经达到了最优,可以到达目标,已经求出来了最优策略。还可以进行下一步迭代,直到达到迭代终止条件:


三.策略迭代算法(policy iteration algorithm)

1.算法介绍

这是这节课新介绍的一个算法,下节课会在这个算法的基础上,得到一个 model free 的 reinforcement learning 的算法

算法描述:

给定随机初始策略 π0(任意给定,可能是不好的策略,之后会迭代找到好的策略)

每次迭代分为两个步骤:

步骤 1:策略评估(PE)(Step 1: policy evaluation (PE))

之前提过,policy evaluation 就是我给定一个策略 πk,可以求解它对应的贝尔曼公式,得到 πk 对应的 state value v_πk,这样的过程就叫策略评估(policy evaluation)

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第10张图片

步骤 2:策略改进 (PI)(Step 2: policy improvement (PI))

上一步求出来了 v_πk,我求解优化问题得到一个新的策略 πk+1,πk+1 比 πk 更好

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第11张图片

最大化是分量式的!


该算法可以得到一个序列,用下面的过程来表示:最开始猜的 π0 肯定是不好的,然后我做 policy evaluation 得到 v_π0,然后做 policy improvement 得到 π1......

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第12张图片

问题

  • 问题 1: 在策略评估(policy evaluation)步骤中,如何通过求解贝尔曼方程得到状态值(state value) vπk?
  • 问题 2: 在策略改进(policy improvement)步骤中,为什么新策略 πk+1 比 πk 更好?
  • 问题 3: 为什么这种迭代算法能最终找到最优的策略?
  • 问题 4: 这种策略迭代算法(policy iteration algorithm)与前一种值迭代算法(value iteration algorithm)之间的关系是什么?

问题 1: 在策略评估(policy evaluation)步骤中,如何通过求解贝尔曼方程得到状态值(state value) vπk?

这个问题之前在介绍贝尔曼公式的时候已经详细介绍了(第二节课第六点),假设给定一个策略(policy)πk,我们可以列出来它的贝尔曼公式( Bellman equation)如下:

有两种方法可以求解这个贝尔曼公式得到状态值(state value):

(1)闭式解为(The closed-form solution is),即状态值(state value)的解析表达式为:

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第13张图片

这个方法我们不太用,因为要求逆矩阵,经常用的是下面的方法

(2)迭代解决(iterative solution)方案是:(v_πk 和 v_πk+1 都是向量,包含了不同时刻的所有状态值)最开始对 v_πk 有一个猜测,不断迭代就可以得到 v_πk

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第14张图片

  • 已在贝尔曼方程讲座中学习过。
  • policy evaluation 是 policy iteration 这个算法的一步,这一步又依赖于一个迭代的算法(即上面的迭代解决(iterative solution)方案)。
  • 策略迭代算法(policy iteration algorithm)是一种迭代算法,在策略迭代算法的策略评估(policy evaluation)步骤中嵌入了另一种迭代算法(iterative solution)(相当于有一个大的迭代算法,里面有一步又嵌入了一个小的迭代算法)

问题 2: 在策略改进(policy improvement)步骤中,为什么新策略 πk+1 比 πk 更好?

πk+1 是求解下面这个(v_πk给定的)式子所得到的,可以证明 v_πk+1 一定大于等于 v_πk,所以 πk+1 比 πk 更好

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第15张图片


问题 3: 为什么这种迭代算法能最终找到最优的策略?

由于每次迭代都会改进策略,我们知道:最优的状态值(state value)是 v*

因此,v_πk 会不断增加并收敛(keeps increasing and will converge)。仍需证明它收敛于 v*:

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第16张图片


问题 4: 这种策略迭代算法(policy iteration algorithm)与前一种值迭代算法(value iteration algorithm)之间的关系是什么?

问题 3 给出的那个定理的证明(就是上面那个定理),即若要证明 policy iteration 的算法是收敛的,实际上用到了 value iteration 算法是收敛的这样的一个结果,所以它是基于 value iteration 算法的一个结果。另外 policy iteration 和 value iteration 实际上是两个极端,是一个更 general 的截断策略迭代算法(Truncated policy iteration algorithm)的两个极端,稍后会介绍。


2.policy iteration algorithm 的具体实现

为了实现,我们要研究它的元素形式(Elementwise form)

步骤 1:策略评估(PE)(Step 1: policy evaluation (PE))

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第17张图片

步骤 2:策略改进 (PI)(Step 2: policy improvement (PI))

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第18张图片

流程伪代码:

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第19张图片


3.例子

(1)例子1

图 b 是最优策略,在 s1 的时候往右走,在 s2 的时候静止不动。图 a 是初始策略,都往左走是不合适的,我们用 policy iteration 的算法得到图 b 这样一个最优策略

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第20张图片

k=0

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第21张图片

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第22张图片

该例子比较简单,该策略在一次迭代后达到最优!在您的程序设计中,应该继续运行,直到满足停止标准为止。
现在你知道了另一种搜索最优策略(optimal policies)的强大算法!现在,让我们应用它,看看能发现什么。


(2)例子2

例子的基本设置:

现在要做的是对这样一个 5×5 的网格,求一个最优策略。下面这些图画的是,我从最开始随便给定的一个策略 π0,求出 v_π0,policy improvement 得到 π0,然后policy evaluation 得到 v_π1,一直下去直到得到 π10 和 vπ10

让我们来看看中间策略和状态值。

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第23张图片

策略和状态值的有趣模式

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第24张图片

  • 可以看到,中间的策略不好,但是策略 π10 已经是一个最优的策略了,从任何一点(图中任何一个状态)出发都能到达目标区域。我们设置的 r_forbidden 比较大,所以会避开障碍。
  • 从图中还能看出一个现象,比较接近目标的状态的策略会先变好(从图中绿色的箭头可以看出),远离目标的状态的策略会后变好。从直观上这是因为,在某一个状态,我选择它的 greedy action,也就是 action 对应的最大的动作值(action value)q_π(s, a)的时候,严重依赖于其他状态的策略,如果其他状态的策略是不好的乱七八糟的,这时候虽然选一个最大的动作值(action value)q_π(s, a) ,但是可能也是没有意义的。 
  • 当这个状态周围没有状态能到达目标区域时,它也不会到达目标区域,当有状态有能够到达目标区域的策略时,这个状态新的策略也能到达目标区域。

四.截断策略迭代算法(Truncated policy iteration algorithm)

这是前两个值迭代算法(value iteration algorithm)和策略迭代算法(policy iteration algorithm)的一般化推广;值迭代算法(value iteration algorithm)和策略迭代算法(policy iteration algorithm)是截断策略迭代算法(Truncated policy iteration algorithm)的特殊情况

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第25张图片

这两种算法非常相似:

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第26张图片

让我们仔细比较一下这些步骤:

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第27张图片

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第28张图片

  • 由上图可知,在第四步中 value iteration 只计算了一步,就得到 v1,而 policy iteration 要计算无穷多步才能得到 v_π1。那么自然能想象到有没有一个中间步,只计算 j 次,把 v_π1(j) 作为一个新的量,把它作为新的值放到下一步计算策略,这样的算法叫截断策略迭代算法(Truncated policy iteration algorithm),之所以是 Truncated,因为从 j 到 ∞ 的这些步骤全都被截断了。
  • 所以截断策略迭代算法(Truncated policy iteration algorithm)是前两个值迭代算法(value iteration algorithm)和策略迭代算法(policy iteration algorithm)的一般化推广。当 j=1,截断策略迭代算法(Truncated policy iteration algorithm)变成了值迭代算法(value iteration algorithm);当 j=∞,截断策略迭代算法(Truncated policy iteration algorithm)变成了策略迭代算法(policy iteration algorithm)
  • 在实际当中策略迭代算法(policy iteration algorithm)不存在,因为不可能计算无穷多步,我们经常做的是判断 v_π1(j) 和 v_π1(j-1) 这两个它们之间的 error 是否足够小,足够小就停止迭代,这样的话它仍然是计算了有限步。所以在实际当中即使我们要计算策略迭代算法(policy iteration algorithm)它也仍然是一个截断策略迭代算法(Truncated policy iteration algorithm)

伪代码:

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第29张图片

因为没有计算无穷多步,所以此时的 vk ≠ v_πk,那么此时的截断是否会带来一些问题呢?比如是否会使整个算法不再收敛?


截断是否会削弱收敛性?下面给出一个定理: 

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第30张图片

刚才这个结果可以通过下图比较好的展示出来,这个图的横轴是 k,即 policy iteration 算法中的迭代次数 iteration 的索引(index) ,纵轴是值,简单起见,state value 只有一维。红线 v* 代表最优状态值(optimal state value),其他曲线是上面三种算法,通过迭代都最终收敛到 v*

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第31张图片

PI 的收敛证明基于 VI 的收敛证明。既然 VI 收敛,我们就知道 PI 收敛。


例子:

设置: 与上一示例相同。以下是初始策略,目标是找一个最优策略

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第32张图片

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第33张图片

  • "截断策略迭代(Truncated policy iteration)-x",其中 x = 1、3、6、100 指的是截断策略迭代算法,其中策略评估步骤(the policy evaluation step)运行 x 次迭代。
  • 每个小图右上角标签上的数字意思是,每次在大的 Truncated policy iteration 中有一个嵌套的迭代的次数(在策略评估那一步 policy evaluation),如果是 value iteration 只迭代一次,如果是 policy iteration 则迭代无穷多次,把那个次数设为 x。当 x=1 时,就是 value iteration,最上面一幅图,要到50多步的时候 vk 到 v* 的误差才小于 0.01;如果 x=3,那么它20多步就小于 0.01 了,可以加快收敛速度;x=6,x=100的时候也可以加快收敛,但是效果越来越不明显。

结论:

  • x 值越大,估计值收敛得越快。
  • 但是,当 x 值越大时,增加 x 值的好处就会迅速减少。
  • 在实际操作中,在策略评估步骤中运行少量的迭代,尽量不要每次计算一步,也不要计算很多步,尽量稍微多计算几步就能有很大收获。

五.总结

【强化学习的数学原理-赵世钰】课程笔记(四)值迭代与策略迭代_第34张图片

你可能感兴趣的:(笔记,机器学习,人工智能,学习)