Reinforcement Learning - VI-PI


RL_2Val-Pol-Iter

a Model-Based RL Algorithm

 

 

 

1. Value Iteration

这个算法在 Reinforcement Learning - Basics 4.3 中已经简要介绍过

Bellman Optimality Equation 的 Iterative Solution,目的是寻找 State Value v

即 BOE 的 Unique Fixed Point Solution vπ 满足

vπ=f(vπ)=maxπ[rπ+γPπvπ]

该 Unique Fixed Point 可以用如下方式迭代解得

vk+1=f(vk)=maxπ[rπ+γPπvk]vkvask

本部分,此算法会被用于寻找 Optimal Policy

 

 

1.1 Algorithm

  • Step 0 - Initialization

    需要提供的内容

    1. p(rt+1|st,at),p(st+1|st,at) Probabilistic Environment Models

    2. v0 State Value Initial Guess

  • Step 1 - Policy Update (PU)

    solve with given vk

    πk+1=argmaxπ[rπ+γPπvk]

    以 Elementwise Form 表达

    πk+1(at|st)=argmaxπat{π(at|st)(rt+1[p(rt+1|st,at)rt+1]+γst+1[p(st+1|st,at)vk(st+1)])qk(st,at)}sS

    只需要代入 vk,然后最大化 qk 即可找到符合上式的 Optimal Greedy Policy

    πk+1(at|st)={1at=ak(st)0atak(st)whereak=argmaxatqk(st,at)
  • Step 2 - Value Update (VU)

    find next value vk+1 with

    vk+1=rπk+1+γPπk+1vk

    以 Elementwise Form 表达,则是代入 πk+1(at|st)

    vk+1(st)=at{πk+1(at|st)(rt+1[p(rt+1|st,at)rt+1]+γst+1[p(st+1|st,at)vk(st+1)])qk(st,at)}sS

    由于是 Greedy Policy,所以 Value Update 实际上只需下式即可

    vk+1(st)=maxatqk(st,at)sS

    Policy 为唯一一个能最大化 Action Value 的 at,也就是

    atπk+1(at|st)=1+0+0++0=1

    然后代入 Elementwise Form,你会发现整件寻找 Next Value 的事情与 Policy 是什么无关

    因为 Policy 本身有 Greedy 的特性,只有最大的那个 Action Value 会被留下作为 vk+1

    你可能会觉得 Environment Model 需要 Update,但实际上并不需要

 

 

1.2 Pseudo Code

value iteration pseudo code

 

 

1.3 Example

在下图的场景中

  • 黄色的 s2 为禁区,蓝色的 s4 为目的地

  • Reward 设置

    • rforbid=rbound=1

    • rtarget=1

  • Discount Rate 设置 γ=0.9

  • Action Space 设置 a1,a2,a3,a4,a5= 上, 右, 下, 左, 不动

setup

那么该场景的 Q-Table 为

q table

Assume the initial guess at k=0 is

v0=[v0(s1)v0(s2)v0(s3)v0(s4)]=[0000]

现在演算 Value Iteration

  • At k=0

    qt1

    Q-Table 代入 v0 后得到上表,标红数据为每个 State 最大的 Action Value / Q-Value

    • Policy Update

      π1(a5|s1)=1π1(a3|s2)=1π1(a2|s3)=1π1(a5|s4)=1

      State s1 有两个 Action 可以选,此处采用 Greedy Policy,所以就随便挑一个,比如 a5

    • Value Update

      v1=[v1(s1)v1(s2)v1(s3)v1(s4)]=[0111]
    • Policy Visualized

      pol1

  • At k=1

    qt2

    Q-Table 代入 v1 后得到上表,标红数据为每个 State 最大的 Action Value / Q-Value

    • Policy Update

      π2(a3|s1)=1π2(a3|s2)=1π2(a2|s3)=1π2(a5|s4)=1
    • Value Update

      v2=[v2(s1)v2(s2)v2(s3)v2(s4)]=[0+1×0.91+1×0.91+1×0.91+1×0.9]=[0.91.91.91.9]
    • Policy Visualized

      pol2

显然,迭代两次就已足以找出 Optimal Policy 了

 

 

 

2. Policy Iteration

这是一个只在理论中存在 的算法,可以理解为与 Value Iteration 相对的一个极端,这一点会在 3. Truncated Policy Iteration 中解释

2.1 ALgorithm

  • Step 0 - Initialization

    需要提供的内容:Random Initial Policy π0

  • Step 1 - Policy Evaluation (PE)

    Find State Value vπk given Policy πk

    vπk=rπk+γPπkvπk

    其实就是解个 Bellman Expectation Equation:

    1. Closed-Form Solution

      vπ=(IγPπ)1rπ

      看起来很美好,但是由于需要求 Inverse Matrix,计算麻烦,直接否决

    2. Iterative Solution

      vπk(j+1)=rπk+γPπkvπk(j)where vπk(j)vπk as j

      这个是合适的解法,所以 Policy Iteration 不止本身是一个迭代算法,还嵌套了另一个迭代算法

      以 Elementwise Form 表达

      vπk(j+1)(st)=at{πk(at|st)(rt+1[p(rt+1|st,at)rt+1]+γst+1[p(st+1|st,at)vπk(j)(st+1)])qπk(st,at)}sS

      这一步就是 Policy Iteration 只存在于理论中的原因

      因为按照严格定义,你得真的算到无穷,而不是只算到收敛

  • Step 2 - Policy Improvement (PI)

    Plug in derived vπk, solve for improved policy πk+1

    πk+1=argmaxπ[rπk+γPπkvπk]

    以 Elementwise Form 表达

    πk+1(at|st)=argmaxπat{πk(at|st)(rt+1[p(rt+1|st,at)rt+1]+γst+1[p(st+1|st,at)vπk(st+1)])qπk(st,at)}sS

    将求得的 vπk 代入上式即可解得 Improved Greedy Policy

    πk+1(at|st)={1at=ak(st)0atak(st)whereak=argmaxatqπk(st,at)

    为什么能断言 πk+1 会比 ππ 更好?或者说,为什么能保证 vπk+1vπk

    从定义来看有

    πk+1=argmaxπ[rπk+γPπkvπk]vπk=rπk+γPπkvπkvπk+1=rπk+1+γPπk+1vπk+1

    所以可以确定

    rπk+1+γPπk+1vπk+1rπk+γPπkvπkvπk+1vπk

 

 

2.2 Pseudo Code

policy iteration pseudo code

 

 

2.3 Example 1

在下图的场景中

  • 蓝色的 s2 为目的地

  • Reward 设置

    • rbound=1

    • rtarget=1

  • Discount Rate 设置 γ=0.9

  • Action Space 设置 al,a0,ar= 左, 不动, 右

  • Initial Guess 设置 π0 为全部 al,即初始状态为左图

policy iter ex

现在演算 Policy Iteration

  • At k=0, Policy Evaluation

    方便起见,不用 Iterative Solution 直接解

    {vπ0(s1)=1+0.9×vπ0(s1)vπ0(s2)=0+0.9×vπ0(s2){vπ0(s1)=10vπ0(s2)=9
  • At k=0, Policy Improvement

    该场景的 Q-Table 为

    q table

    代入上一步求得的 vπk 可得

    qt

    标红数据为每个 State 最大的 Action Value / Q-Value,得到的 Improved Policy 为

    π1(ar|s1)=1π1(a0|s2)=1
  • At k=1, Done

    如右图中 Final Optimal Policy 所示,只用了一次迭代就达到了最优

 

 

2.4 Example 2

在下图的场景中

  • 黄色区域为禁区,蓝色区域为目的地

  • Reward 设置

    • rforbid=10

    • rbound=1

    • rtarget=1

  • Discount Rate 设置 γ=0.9

图中的 (a) ~ (h) 展示了 Policy Iteration 改进 Policy 的效果:

  • 未优化 绿色 Action

  • 已优化 粉色 Action

  • 正在被优化 红色方框套绿色 Action

你会发现优化是有顺序的:离目的地越近的 State 越先被优化

ex 2

 

 

 

3. Truncated Policy Iteration

这是一种介于 Value Iteration 和 Policy Iteration 之间的算法,如果对比一下两种算法

iteration compare

你会发现,除了 Policy Iteration 初始化了 π0,两种算法关于 Policy 的步骤都是相同的,即 Step 3 / 5 实际作用相同,都是通过现有的 Value 获取一个更好的 Policy,而区别在于各自使用的 Value 是什么

两种算法关于 Value 的步骤 Step 4 都与 Bellman Expectation Equation 的 Iterative Solution 相关

3 iterations compare

可以看出

  • Value Iteration 要求是 Iterate 一次

  • Policy Iteration 要求是 Iterate 到无穷,在实操中就是迭代到收敛

  • Truncated Policy Iteration 要求是 Iterate 到指定次数

所以 Truncated Policy Iteration 的步骤 / Pseudo Code 和 Policy Iteration (see 2.2) 大体是一样的

只需要改动一下套在最外面的 while 停止条件,让 λ收敛条件变成最大 Iterate 次数即可

while not vπkvπk1<λwhile j<λ

[Question] Truncation 会影响收敛性吗?

不会

可证得在 BEE 的 Iterative Solution 中 vπk(j+1)vπk(j)

因此你迭代 1 次 Value 会变大,迭代 j 次 Value 也会变大,只是收敛速度的问题

convergence rate