策略迭代算法和值函数迭代算法

本文深入探讨了强化学习中的策略迭代和值函数迭代算法,介绍了策略评估和策略优化的基本思想。通过举例解释了高斯-赛尔德迭代算法在策略评估中的应用,并阐述了策略迭代和值函数迭代的伪代码。最后提到了最优控制在基于模型强化学习中的作用,以及引导策略搜索算法的应用。
摘要由CSDN通过智能技术生成

策略迭代算法和值函数迭代算法

1. 回顾与引言

大家如果不了解马尔科夫决策过程可以先阅读这篇文章:https://blog.csdn.net/qq_33302004/article/details/115027798
上一篇文章中介绍了马尔科夫决策过程(MDP),也介绍了状态值函数和行为-状态值函数的计算方法。由此我们已经完成了对强化学习问题的建模过程,我们知道强化学习就是寻找一个最优策略 π \pi π,保证一个已知的MDP ( S , A , P , r , γ ) (S, A, P, r, \gamma) (S,A,P,r,γ)的累计回报期望最大,也就是:
π = arg max ⁡ π ∫ R ( τ ) p π ( τ ) d τ \pi = \argmax_\pi \int {R(\tau)p_\pi(\tau)} d\tau π=πargmaxR(τ)pπ(τ)dτ
我们把已知状态转移概率 P P P的问题有模型问题,把未知 P P P的问题叫做无模型问题,由此最优化MDP的方法可分为基于模型的动态规划方法和基于无模型的强化学习方法,如下图所示:
请添加图片描述
由图中可知,这两种方法都包括策略迭代算法、值函数迭代算法、策略搜索算法。本文将介绍基于模型的策略迭代算法值函数迭代算法

2. 思路介绍

先不考虑策略迭代或者值函数迭代的概念,来回顾一下我们要解决的问题。在序贯决策问题中,我们知道全部的状态S、可以采用的全部动作A,还知道在状态S下采用动作A会转移到什么状态S‘(P),以及对应的反馈R和损失因子 γ \gamma γ。我们现在我们需要考虑两个问题:

  1. 如何产生一个策略 π \pi π,也就是: a = π ( s ) a = \pi(s) a=π(s) => 策略优化
  2. 如何评价一个策略 π \pi π。 => 策略评估

我们手上有两个武器,状态值函数和行为-状态值函数:
ν π ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R s a + γ ∑ s ′ ∈ S P s s ′ a ν π ( s ′ ) ) \nu_\pi(s) = \sum_{a\in A} \pi(a|s) \left( R_s^a + \gamma\sum_{s' \in S}P_{ss'}^a\nu_\pi(s') \right) νπ(s)=aAπ(as)(Rsa+γsSPssaνπ(s))
q π ( s , a ) = R s a + γ ∑ s ′ ∈ S P s s ′ a ν π ( s ′ ) q_\pi(s,a) = R_s^a + \gamma\sum_{s' \in S}P_{ss'}^a\nu_\pi(s') qπ(s,a)=Rsa+γsSPssaνπ(s)
通过状态值函数,我们可以评估策略 π \pi π当前的状态价值分布是如何的,通过行为-状态值函数,我们可以知道在当前状态下采用哪种动作更好,从而优化策略 π \pi π

3. 策略评估算法

策略评估算法就是在已知一个策略 π \pi π的情况下,如何计算出每个状态的值函数。解决方案是采用“高斯-赛尔德迭代算法”求解状态值函数的迭代公式:
ν π ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R s a + γ ∑ s ′ ∈ S P s s ′ a ν π ( s ′ ) ) \nu_\pi(s) = \sum_{a\in A} \pi(a|s) \left( R_s^a + \gamma\sum_{s' \in S}P_{ss'}^a\nu_\pi(s') \right) νπ(s)=aAπ(as)(Rsa+γsSPssaνπ(s))
在上面这个式子中出了状态值函数外,所有变量都是已知的,所以本质上就是一个解方程的过程。不理解“高斯-赛尔德迭代算法”的话,可以简单理解为: x = f ( x ′ ) x=f(x') x=f(x),本次的 x x x可以用上一次计算的 x ′ x' x求得,并且通过无限迭代最终会收敛,收敛处的 x x x值就是方程组的解。

策略评估算法的伪代码如下:
请添加图片描述

我们来举个例子,如下图所示为网格世界,其状态空间为S={1,2,…,14},动作空间为A={东,南,⻄,北},回报函数为r≡-1,需要评估的策略为均匀随机策略,也就是东南西北选择的概率都为0.25。
请添加图片描述

迭代0次、1次、2次、3次后每个状态的值函数的值如下图所示:
请添加图片描述

状态1,第二次迭代的值函数的值计算过程如下:
v 2 ( 1 ) = 0.25 ( − 1 − 1 ) + 0.25 ( − 1 − 1 ) + 0.25 ( − 1 − 1 ) + 0.25 ( − 1 − 0 ) = − 1.75 ≈ − 1.7 \begin{aligned} v_2(1) &= 0.25(-1-1)+ 0.25(-1-1)+ 0.25(-1-1)+ 0.25(-1-0) \\ &= -1.75\approx-1.7 \end{aligned} v2(1)=0.25(11)+0.25(11)+0.25(11)+0.25(10)=1.751.7
状态1,第三次迭代的值函数的值计算过程如下:
v 3 ( 1 ) = 0.25 ( − 1 − 1.7 ) + 0.25 ( − 1 − 2 ) + 0.25 ( − 1 − 2 ) + 0.25 ( − 1 − 0 ) = − 2.425 ≈ − 2.4 \begin{aligned} v_3(1) &= 0.25(-1-1.7)+ 0.25(-1-2)+ 0.25(-1-2)+ 0.25(-1-0) \\ &= -2.425\approx-2.4 \end{aligned} v3(1)=0.25(11.7)+0.25(12)+0.25(12)+0.25(10)=2.4252.4

3. 策略优化算法

现在我们来解决如何改善策略的问题。很自然的解决方案是采用贪心的策略来解决这个问题,也就是在每个状态都采用行为-状态值函数最大的动作,如下图所示:
请添加图片描述

4. 策略迭代算法和值函数迭代算法

所谓策略迭代是指先初始化策略、然后在每个策略下计算出收敛的状态值(采用策略评估算法),而后根据计算出的值使用策略优化算法修改策略,如此迭代,直到策略收敛,就作为最优策略,伪代码如下:
请添加图片描述

值函数迭代算法也是先初始化策略,而后在每次更新状态的值的时候,直接采用当前状态下能够产生的最大值更新值(而不是向策略迭代算法中那样采用均值),直到值收敛后,采用一次策略优化获得最终的策略,伪代码如下:
请添加图片描述

5. 代码实现

请添加图片描述请添加图片描述
请添加图片描述
请添加图片描述

6. 强化学习与最优控制

最优控制领域经过几十年的发展有许多的优秀成果,在基于模型的强化学习算法中可以利用这些优秀成果。基于模型的算法中,会先根据数据拟合出一个模型,根据已知的模型,最优控制领域中有很多好的方法可以计算出最优策略解,智能体再根据这些最优控制策略与环境交互,完成进一步优化。

结合最优控制的强化学习算法最典型的应用就是引导策略搜索算法。

  • 7
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值