内容纲要

欢迎转载,作者:Ling,注明出处:强化学习教程: 03-Policy Iteration and Value Iteration

本章主要内容

  • 动态规划:Dynamic Programming
  • 迭代策略评估:Iterative Policy Evaluation,Prediction
  • 策略迭代: Policy Iteration,Control
  • 值迭代: Value Iteration,Control

概述

前一章我们讲到,所有强化学习,都可以转化成MDP问题,而解MDP问题,就是要解Bellman最优方程,它可以通过Policy Iteration和Value Iteration获得,所以本章主要内容将围绕这两个问题展开。

动态规划

动态规划是一种很重要的算法了,它可以解决很多的问题,包括矩阵连乘问题,最长公共子序列问题等等。

要想使用动态规划来解决问题,首先问题得先具备几个特点:

  • 最优子问题。也就是说问题可以分解成很多的子问题
  • 重叠子问题。要求不仅可以分解为子问题,而且子问题重复出现很多次,解决方法因此可以被保存和重复利用

对于一般得Bellman最优方程,很难直接求解, 比如矩阵求逆之类的,因此我们采用动态规划来求解。MDP正好满足线性规划的要求:

  • 最优子问题。MDP可以用贝尔曼方程来表示,而贝尔曼方程就是一种递归的分解
  • 重叠子问题。价值函数正好存储了解决方法,而且可以重复使用

迭代策略评估:Iterative Policy Evaluation

也就是Prediction,求值函数

举例:我们先从要给例子出发,看看如何通过该方法求得值函数

迷宫

RL_03_001

状态和Reward

  • 1-14状态是非终点,向每个方向的Reward都是-1
  • 两个阴影是终点,到了就停止,所有没有下一步,Reward都是0

Action:Action可以向四个方向

γ:γ值为1,即没有Discount

Π:Agent采用uniform random policy

RL_03_002

迭代策略评估:即告诉你如何更新v(s)

 RL_03_003

 RL_03_004

先看左边列

  • k表示第几次迭代
  • 每次迭代在每个非终点状态,采取的策略都是四个方向等概率1/4
  • 在终点状态,到了它就停止,所以没有下一步,该点的v(0,0)=v(3,3)= reward = 0,切始终为0
  • 当k=0时每个状态的v都是0
  • 当k=1时,

坐标为(0,1)状态value从0->-1

公式

RL_03_005

计算:

RL_03_006 

其他值和不同迭代值变化都类似

再看右边列

  • 右边是在第k次迭代时,已经更新v值情况下,每个状态的最佳策略更新情况
  • K=0时,任何状态向任何一个方向走,获得的value都一样,所以每个状态最佳策略四个方向都一样
  • k=1时,s(0,1)向西走可以获得最佳value,所以最佳策略仅剩下向西的策略

其他同理

总结

  • 再策略评估中,每次value更新,都是采取四个方向概率一样的策略,不会将学习得到的最优策略,应用于V更新中
  • 经过多次迭代后,最优策略不再改变

问题

现在我们每次value更新,采用策略都一样,假如我们将最优策略更新也考虑进来,是否可以加快value值更新,从而更快得到最优策略

策略迭代: Policy Iteration,将策略更新加入value迭代,每次选择最佳策略对value进行更新,然后真正按你选的策略进行迭代

RL_03_007 

  • 通过随机策略,更新value
  • 根据更新的value,计算最佳策略
  • 根据最佳策略,更新value
  • 根据更新value,计算最佳策略
  • 如此反复,直到策略或者value不再更新,都到达最佳状态

图示:

RL_03_008 

关于收敛性证明:了解即可

RL_03_009 

RL_03_010 

问题

value是否有必要更新到value收敛的最优值?

没必要,因为再value更新到最优值之前,策略已经到了最优,如图中的k=3的时候已经到了最新

扩展策略迭代

引入一个带阈值的value function,只要两次更新,value变化足够小了就停止

k次迭代之后就停止

值迭代: Value Iteration,每次以让值最大为目标,通过不同策略,选择值最大的更新当前值,但是下一步是否采取最大值对应的策略,不一定,而是根据你选择策略的的方式决定,比如:ε-greed策略选择法,一般大概率选择最大值对应的策略,小概率会选择其他策略

举例:我们通过一个例子,看看如何通过值迭代找到最佳策略

 RL_03_011

s(0,0) 是终点,其他是非终点状态

终点Reward是0,其他非终点Reward是-1

k=1时,就是v1,所有状态都是0

k=4时,就是v4

v(1,1)计算:

RL_03_012

总结:

value迭代就是根据上次迭代的value,选择分值最高的value,求本次的value,直到value值不再更新

依据时Bellman等式:

RL_03_013

同步动态规划迭代更新算法总结:

RL_03_014

注: 无论Policy iteration还是Value iteration都可以对v或者q进行更新,如果是对v更新,叫v policy iteration和v value iteration,如果是对q进行更新,则q policy iteration和q value iteration

其他动态规划更新方法

Asynchronous Dynamic Programming

  • In-place dynamic programming
  • Prioritised sweeping
  • Real-time dynamic programming

Full-Width Backups

Sample Backups

Approximate Dynamic Programming