《深入浅出强化学习原理入门》学习笔记(四)基于模型的动态规划方法
强化学习的直观目标是找到最优策略,目的是更好地完成任务。回报函数对应着具体的任务,所以强化学习所学到的最优策略是与具体的任务相对应的。从这个意义上来说,强化学习并不是万能的,它无法利用一个算法实现所有的任务。
从广义上讲,强化学习可以归结为序贯决策问题,即找到一个决策序列u0*-u1*-u2*-u3*-----uτ*使目标函数(累计回报的期望值 ∫R (τ)Pπ (τ) dτ)最优。
下图非常经典。
马尔科夫决策过程可以利用元组(S,A,P,r,γ)来描述,根据转移概率P是否已知,可以分为基于模型的动态规划方法和基于无模型的强化学习方法。本节主要学习基于模型的策略迭代算法和值迭代算法。
基于模型的强化学习可以利用动态规划的思想来解决。动态规划中的“动态”蕴含着序列和状态的变化;“规划”蕴含着优化,如线性优化,⼆次优化或者非线性优化。
利用动态规划可以解决的问题需要满足两个条件:⼀是整个优化问题可以分解为多个子优化问题;⼆是子优化问题的解可以被存储和重复利用。
值函数计算
状态s 处的值函数υπ (s),可以利用后继状态的值函数υπ (s′)来表示。但后继状态的值函数υπ (s′)也是未知的,所以这个算法是bootstrapping算法(自举算法)。
对于模型已知的强化学习算法,P,gama,R都是已知数,π(a|s)为要评估的策略也是指定值,方程中唯一的未知数就是值函数,方程为线性方程组,策略评估问题转换为了线性方程组的求解问题,可以用高德-赛德尔迭代算法进行求解。
高德-赛德尔迭代求解值函数线性方程
矩阵形式表示
迭代方程表示
策略评估算法
举例说明,下图为网格世界,其状态空间为S={1,2,…,14},动作空间 为A={东,南,⻄,北},回报函数为r≡-1,需要评估的策略为均匀随机策略:π(东|.)=0.25,π(南|.)=0.25,π(西|.)=0.25,π(北|.)=0.25。
利用值函数进行策略改善,找到最优策略
当已知当前策略的值函数时,在每个状态采⽤贪婪策略对当前策略进⾏改善,即
仍然通过上面的例子来看,状态1时通过贪婪策略得到选择西这个动作。
K=10时,π0均匀策略为
π1贪婪策略为
以第一行第二个的状态1为例,要选择向西的方向。
策略迭代算法
策略迭代伪代码如下
策略迭代算法包括策略评估和策略改善两个步骤。在策略评估中,给定策略,通过值迭代算法不断计算该策略下每个状态的值函数,在值函数收敛之后,利用该值函数和贪婪策略进行策略改善得到新的策略。如此循环下去,最终得到最优策略。这是⼀个策略收敛的过程。
值函数迭代算法
在策略迭代算法中,值函数的收敛往往需要很多次迭代,但还是用之前的例子来看,策略评估迭代10次和迭代⽆穷次所得到的贪婪策略是⼀样的,所以可以评估一次之后就进行策略改善,这样的方法叫值函数迭代算法。
值函数迭代算法伪代码如下
最优控制
基于值函数迭代,需要解决最优控制的问题,有变分法原理、庞特里亚金最大值原理和动态规划的方法。三种方法各有优缺点。
基于变分法的方法是最早的方法,其局限性是无法求解带有约束的优化问题。
基于庞特里亚金最⼤值原理的方法在变分法基础上进行发展,可 以解决带约束的优化问题。
相比于这两种经典的方法,动态规划的方法相 对独⽴,主要是利⽤贝尔曼最优性原理。
最优控制问题是
由贝尔曼最优性原理得到哈密尔顿-雅克比-贝尔曼方程
(3.9)是⼀个偏微分方程,⼀般不存在解析解。对于偏微分方程 (3.9),有三种解决思路:
第⼀种思路是将值函数进行离散,求解方程 (3.9)的数值解,然后利用贪婪策略得到最优控制。这对应于求解微分方程的数值求解方法;
第⼆种思路是利用变分法,将微分方程转化成变分代数方程,在标称轨迹展开,得到微分动态规划DDP;
第三种思路是利用函数逼近理论,对方程中的回报函数和控制函数进行函数逼近,利用优化方法得到逼近系数,这类方法称为伪谱的方法。
前两种方法都是以值函数为中心,思路与值函数迭代类似。
第二种方法的DDP方法伪代码如下。
前向迭代:
给定初始控制序列 ,正向迭代计算标称轨迹。
反向迭代:
由代价函数边界条件VxN ,VxxN 反向迭代计算得到贪婪策略δu* 。
正向迭代新的控制序列: