概述
之前讲到,马尔可夫决策过程的直接解法时间复杂度极高,因此强化学习方法的解法采用迭代式解法,迭代方法中最基础方法是动态规划方法。
之前提到解决序列决策问题有两种手段——学习与规划。 当有一个精确的环境模型时,才可以用动态规划去解。 Q learning等方法均由动态规划所推导而来。 动态规划方法利用了贝尔曼期望方程和贝尔曼最优方程。
- 动态:针对序列问题
- 规划:优化,得到策略
能使用动态规划去解决的问题,需具有以下性质:
- 最优子结构: 满足最优性原理,优的解可以被分解成子问题的最优解。
- 交叠式子问题: 子问题的解能够被多次利用
恰好,MDP就满足这两个特性:
- 回顾贝尔曼期望方程,满足递归形式。【当前状态的值函数 = E(当前的奖励+后继状态×衰减系数) 】,可以把问题分解成子问题
- 值函数的解可以重复利用
使用动态规划解决强化学习问题时,要求知道 MDPs 的所有元素。这是因为强化学习问题中最重要的两个过程,策略评价和策略优化,需要满足:
- 对于评价的过程:
- 输入: MDP
和策略
- 输出: 值函数
- 对于优化的过程
- 输入: MDP
- 输出:
- 最优值函数
- 最优策略
策略评价
问题描述
问题: 给定一个策略 π,求对应的值函数 (或者
)。
对于动态规划问题,v 函数和 q 函数是可以相互推导的。
解决方法
直接解:
- 可以直接求得精确解(上一篇文章中)
- 时间复杂度太高
迭代解(√):
->
-> · · · ->
- 利用贝尔曼期望方程迭代求解
- 可以收敛到
利用贝尔曼方程进行迭代式策略评价
贝尔曼方程告诉我们,通过后继状态 的值函数,更新当前状态
的值函数
表示策略
因此可以得到,
- 注意: 这里的 k 表示第 k 次迭代
从一直迭代求到最后(能够收敛),可以得到最终的
同步备份下的迭代式策略评价算法
关键词:
- 备份(backup):
需要用到
。用
更新当前状态状态s的值函数,称为备份状态s。
- 同步(synchronous): 每一次更新,更新所有的状态。
- 策略评价
- 迭代式
为加深理解,引入以下例子:
策略评价例子
- 假设
- 14个普通状态,2个终止状态
- 走出边界的动作会导致状态不变
- 在走到终止状态前,任何动作都会导致-1的奖励
- 给定一个随机策略
策略提升
如何改进策略?
策略提升就是为了改进策略,强化学习的目的就是为了获得最优的策略。
给定一个策略
- 评价策略:求策略对应的值函数
- 策略提升(改进策略):求得值函数
后,根据贪婪的动作改进策略
在每个状态下,都选择能使q函数最大的动作。
,即新的策略优于之前的策略
- 使得更新后的策略不差于之前的策略的过程称为策略提升
- 贪婪动作只是策略提升一种方式
策略提升例子
(接上策略评价例子)
- 通过策略评价和贪婪动作,策略从随机策略变成了最优策略
- 上述的策略比较幸运,策略提升一次就到达了最优
- 一般情况下,可能需要多次迭代(策略评价 + 策略提升)才能到达
策略提升定理
对于两个确定性策略 和
,如果满足
,那么可以得到
其中,
表示在当前状态s下,通过策略
选择第一个动作,之后通过策略
进行动作选择,得到的期望回报值。
策略迭代
什么是策略迭代?
通过不断交替进行
- 策略评价: 求
。使用方法:迭代式策略评价
- 策略提升: 提升策略
。使用方法: 贪婪策略提升
收敛证明
策略提升停止时,当前策略 达到最优策略
:
此时,满足贝尔曼最优方程:
策略迭代算法
策略迭代分为两部分:策略评价和策略提升。 当前的策略评价方法,选用的是迭代式策略评价方法,即通过不断进行迭代,计算出当前策略
的v函数。
利用迭代式策略评价的策略迭代算法为:
一般而言,策略评价需要一直进行迭代求解 。但是策略评价不一定要收敛到
,才能进行策略提升,可以引入提前停止的规则
- 例如:值函数更新的 ∆ 足够小则停止
- 例如:限定迭代式策略评价只迭代 k 次。(当
时,是值迭代)
策略迭代的进一步思考
- 策略迭代分为两个步骤——策略评价和策略提升
- 一般策略评价需要迭代式求解。因此这里存在两个循环(策略迭代和策略评价的迭代)
- 策略评价一定要收敛到
,才能进行策略提升吗?
- 我们是不是可以引入提前停止的规则?
- 例如: 值函数更新的 ∆ 足够小则停止
- 例如:限定迭代式策略评价只迭代 k 次
- 策略评价只迭代一次,就策略提升?(k=1) 值迭代
广义的策略迭代
上述策略迭代方法中,指定了
- 策略评价: 选用迭代式方法
- 策略提升: 选用贪婪动作方法
几乎所有的强化学习算法都可以用广义策略迭代(Generalised Policy Iteration, GPI)来描述,GPI不限定两者的方法
- 策略评价: 任何策略评价方法
- 策略提升: 任何策略提升方法(其他的还有:用一定的概率选择原策略,一定的概率选择贪婪策略)
在策略评价中,值函数v只有符合当前策略的情况下才稳定(稳定即迭代后的值函数不变。如果值函数不符合当前策略,就一定能通过迭代进行改变)
策略提升中,策略只有在当前的值函数下,是贪婪的,才稳定。
因此,稳定状态下,分别收敛到最优的 ,
。
值迭代
强化学习的最优性原理
任何最优的策略都能被分解成两部分
- 最优的初始动作
- 从后继状态
开始沿着最优策略继续进行
一个策略 能够实现从
开始的最优值函数,
,当且仅当 对于任何从状态
开始的后继状态
,
能实现从状态
开始的最优值函数
值迭代
根据最优性原理,只要知道 (后继状态的最优值函数),即可以知道
(当前状态的最优值函数)
我们只需要选择一步动作即可,值迭代:
该式同时进行了策略评价和策略优化,max操作符表示进行了一次策略提升。
相当于从终止状态的值函数(终止状态的值函数就是它的瞬时奖励)出发,递归地求解之前状态的值函数。
- 同步:每次更新所有状态的值函数
例子
- g 为终止状态,瞬时奖励为 0
- 其他所有状态的瞬时奖励都是 -1
- 7次值迭代就导出最优值函数
值迭代和策略迭代的对比
- 值迭代
->
->
-> · · · ->
- 没有显式的策略
- 迭代过程中的值函数可能不对应任何策略
- 效率较高(从最后一个状态的最优值函数往前递推即可)
- 贝尔曼最优方程
贝尔曼最优方程
Saras 和 Q 学习都是值迭代衍生出来的方法
- 策略迭代
->
->
->
-> · · · ->
->
- 有显式的策略
- 迭代过程中的值函数对应了某个具体的策略
- 效率较低(一般要两层循环)
- 贝尔曼期望方程 + 贪婪策略提升
同步备份下的三种算法总结
- 算法都是基于状态值函数(V 函数)
- 如果一共有动作
个,状态
个, 每次迭代的复杂度为
- 上述算法也可以拓展到状态动作值函数(Q 函数)
- 运用到 Q 函数时,每次迭代的复杂度为