当前位置: 首页 > news >正文

强化学习的数学原理-04章 策略评估与策略优化

前情回顾

在强化学习数学原理的第三章中,我们介绍了在最优策略下的贝尔曼方程,也叫贝尔曼最优方程,它是贝尔曼方程的一种特殊情况,但无论如何,我们的目标都是解出贝尔曼最优方程,从而得到最优策略下的状态值,并根据状态值求解最优策略。具体细节可见强化学习的数学原理-03章 贝尔曼最优公式。在本章节中,我们会系统地介绍值迭代算法(Value Iteration)和策略迭代算法(Poilcy Iteration)。

值迭代算法(Value Iteration)

在前面的章节,我们得到了如下的贝尔曼最优方程:
v=max⁡π(rπ+γPπv)\mathbf{v} = \max_\pi(\mathbf{r_\pi} + \gamma \mathbf{P_\pi v})v=πmax(rπ+γPπv)
它是一个与策略无关的方程组。由于 max⁡π(rπ+γPπv)\max_\pi(\mathbf{r_\pi} + \gamma \mathbf{P_\pi v})maxπ(rπ+γPπv)是一个收缩映射,所以我们可以用迭代的方式求解方程的解,也就是不动点。因此基于此思路,我们便得到了值迭代算法。其实值迭代的过程很简单清晰,但是其本质是对最优策略下的状态值分布进行随机近似拟合,在后面随机近似的章节我们会逐渐熟知这一点。
值迭代算法有三个步骤,第一个步骤是状态价值初始化,在这一步我们用随机的值来初始化每个状态的state value,通常用 0 进行初始化。
第二个步骤,即代入 max⁡π(rπ+γPπv)\max_\pi(\mathbf{r_\pi} + \gamma \mathbf{P_\pi v})maxπ(rπ+γPπv)中求解当前的“最优策略”,即对每一个状态,选择动作价值最大的那个动作,并赋予概率1作为权重,其他的Action赋予概率0。值得注意的是,动作价值基于以下公式计算:
qπ(st,at)=rˉ+γ∑st+1p(st+1∣st,at)vπ(st+1)q_\pi(s_t,a_t) = \bar{r} + \gamma \sum_{s_{t+1}} p(s_{t+1} \mid s_t,a_t)v_\pi(s_{t+1})qπ(st,at)=rˉ+γst+1p(st+1st,at)vπ(st+1)
第三个步骤,基于以下公式更新状态值:
vπ(st)=max⁡π(∑atπ(at∣st)qπ(st,at))=max⁡at(qπ(st,at))v_\pi(s_t) = \max_\pi( \sum_{a_t} \pi(a_t \mid s_t) q_\pi(s_t,a_t)) = \max_{a_t}(q_\pi(s_t,a_t)) vπ(st)=πmax(atπ(atst)qπ(st,at))=atmax(qπ(st,at))
所以只需对每个状态计算其最大的action value并利用其更新state value,然后反复执行,直到每个状态的state value都几乎不再发生改变。具体案例可以见强化学习的数学原理-03章 贝尔曼最优公式的最末尾部分内容。

策略迭代(Policy Iteration)

策略迭代与值迭代比较相似,都是基于迭代的算法。策略迭代在开始的时候先随机初始化一个策略,然后通过迭代的方法逐步计算每个状态在该策略下的状态值,直到收敛。接着,在策略更新阶段,通过状态值计算每个Action的Action Value, 并将每个状态的状态值更新为其所有Action的Action Value中最高的Action Value。通常人们将这两个步骤分别叫做策略评估和策略改进。
我们将通过一个example来详细说明一下这个过程:
图4.1

图4.1 一个描述策略迭代的example,左边是初始化策略,右边是求解得到的最优策略

假定走入target area的奖励为1,边界惩罚为-1,折扣系数γ\gammaγ为0.9。
因此我们可以计算初始策略的贝尔曼方程:
vπ(s1)=−1+0.9vπ(s1)vπ(s2)=0+0.9vπ(s1)\begin{align} v_\pi(s_1) &= -1 + 0.9v_\pi(s_1) \notag \\ v_\pi(s_2) &= 0 + 0.9v_\pi(s_1) \notag \end{align}vπ(s1)vπ(s2)=1+0.9vπ(s1)=0+0.9vπ(s1)
因此我们可以直接求得 vπ(s1)=−10,vπ(s2)=−9v_\pi(s_1) = -10,v_\pi(s_2) = -9vπ(s1)=10,vπ(s2)=9,此时我们可以求解出每个状态每个Action 的Action Value。
因此对于 s1s_1s1而言,其最大的action value为向右走 a2a_2a2,实际计算也会发现 qπ(s1,a2)q_\pi(s_1,a_2)qπ(s1,a2)s1s_1s1的所有action value中是最大的,具体计算如下:
qπ(s1,a2)=1+0.9vπ(s2)=−7.1vπ(s2,a5)=1+0.9vπ(s2)=−7.1\begin{align} q_\pi(s_1,a_2) &= 1 + 0.9v_\pi(s_2) = -7.1 \notag \\ v_\pi(s_2,a_5) &= 1 + 0.9v_\pi(s_2) = -7.1\notag \end{align}qπ(s1,a2)vπ(s2,a5)=1+0.9vπ(s2)=7.1=1+0.9vπ(s2)=7.1
于是可以更新每个状态的状态值为-7.1,然后再通过求解贝尔曼方程或基于不动点迭代求解的方法获得更新策略后的状态值,从而反复计算直到状态值收敛。

策略迭代与值迭代的差异性

我们已经很清楚了策略迭代算法与值迭代的计算过程,直观上都是找到最大的 qπ(st,at)q_\pi(s_t,a_t)qπ(st,at),并采取那个Action,同时更新" vπ(st)v_\pi(s_t)vπ(st) ", 这里之所以加引号是因为在值迭代中的"vπ(st)v_\pi(s_t)vπ(st)“并非状态值,而只是一个估计值。这也是值迭代和策略迭代最大的不同,在其他过程,包括初始化,值迭代和策略迭代本质上是相同的。我们将详细地说明这一点:
值迭代初始化时随机初始化了一个” vπ(st)v_\pi(s_t)vπ(st) "表示对状态值的近似。但问题在于,状态值的含义是对一个策略好坏的客观评估,但值迭代并没有初始化任何策略,所以我们可以理解为,这个初始化的 vπ(st)v_\pi(s_t)vπ(st)实际上是值迭代初始化了一个隐式策略,并求解出了基于该隐策略的状态值,这就相当于策略迭代第一个迭代回合所做的事情。所以在初始化上值迭代和策略迭代是完全一样的。
差异出在了策略迭代的第二个迭代回合,首先我们看看策略迭代是怎么做的。策略迭代通过迭代的方法逼近贝尔曼优化算子的不动点:
vπ1(st)=rˉ+γPvπ0(st+1)vπ2(st)=rˉ+γPvπ1(st+1)⋯vπk+1(st)=rˉ+γPvπk(st+1)⋯∞\begin{align} v_\pi^{1}(s_t) &= \bar{r} + \gamma \mathbf{P}v_\pi^{0}(s_{t+1}) \\ v_\pi^{2}(s_t) &= \bar{r} + \gamma \mathbf{P}v_\pi^{1}(s_{t+1}) \\ \cdots \notag \\ v_\pi^{k+1}(s_t) &= \bar{r} + \gamma \mathbf{P}v_\pi^{k}(s_{t+1}) \tag{k+1} \\ \cdots \notag \\ \infty \notag \end{align}vπ1(st)vπ2(st)vπk+1(st)=rˉ+γPvπ0(st+1)=rˉ+γPvπ1(st+1)=rˉ+γPvπk(st+1)(k+1)
策略迭代通过迭代无穷步先找到了真实的状态值 vπ(st)v_\pi(s_t)vπ(st),然后才用真实的状态值计算Action Value,由于策略更新使得第一个迭代回合的Action会选择Action Value最大的Action,这里假定是 amaxa_{max}amax,所以在计算第二轮迭代的Action Value时有:
qπ(st,at)=rˉ+γ∑st+1vπ(st+1)p(st+1∣st,at)q_\pi(s_t,a_t) = \bar{r} + \gamma \sum_{s_{t+1}}v_\pi(s_{t+1})p(s_{t+1}|s_t,a_t) \notagqπ(st,at)=rˉ+γst+1vπ(st+1)p(st+1st,at)
所以这里是有用到刚刚迭代无穷步计算出的状态值的。
再来看看值迭代是怎么做的,首先值迭代随机初始化了一个隐策略,并计算出了隐策略下的状态值,然后基于隐策略选择了具有最大动作价值的Action,此时策略更新了,然后按策略迭代的话此时应该计算新策略下的状态值,但值迭代选择直接代入 max⁡π(rπ+γPπv)\max_\pi(\mathbf{r_\pi} + \gamma \mathbf{P_\pi v})maxπ(rπ+γPπv)中,注意此时 max⁡π\max_\pimaxπ已经由刚刚的策略更新求解出来了,所以实际上值迭代做的是以下操作:
vπ(st)=rˉ+γPvπ(st+1)v_\pi(s_t) = \bar{r} + \gamma\mathbf{P}v_\pi(s_{t+1})vπ(st)=rˉ+γPvπ(st+1)
那不就相当于在策略迭代中的迭代法求解状态值的第一步吗,因为原来的 vπ(st)v_\pi(s_{t})vπ(st)也是不准确的,现在只代入一次求解出来的vπ(st)v_\pi(s_{t})vπ(st)肯定也是不准的,算法要求这里代入无穷多次才能找到真实的 vπ(st)v_\pi(s_{t})vπ(st)。所以我们知道了,原来值迭代是在策略迭代求解状态值的时候“偷了一点懒”。那这样的“偷懒”会不会导致值迭代收敛速度(即更新策略的次数)比策略迭代慢呢? 实时上,答案是肯定的。
我们从一个例子来解释这一点,首先我们必须明确的是,策略迭代和值迭代的底层原理都是基于不动点理论和收缩映射来逼近不动点的,所以收敛性和唯一性都有保证。我们举一个收缩映射的例子, x=f(x)=0.5xx = f(x) = 0.5xx=f(x)=0.5x;不难想到,这个方程的不动点是x = 0,那么我们其实可以观察到这样一个现象,如果初始的x越靠近不动点,那么收敛的速度越快,这是很直观的,因为收敛的速度都是相同的指数级(这里是0.5),那么当前就与起始点的选取有关了。现在再回到策略迭代这里,由于策略迭代对于状态值的估计是准确的,所以策略迭代时的策略更新一定是更优的,而值迭代由于在状态值估计里面只迭代了一次,所以值迭代算法对状态值的估计是不准确的,这也就导致值迭代算法的策略更新可能不是更优的,所以在相同的初始情况下,策略迭代算法中更新的策略一定是优于或等价于值迭代算法的,所以策略迭代算法中更新策略是更加靠近最优策略的,那么其状态值自然也就更加靠近最优策略,进而不动点收敛的步数(即策略更新的次数)自然就是要少于值迭代算法的
可是策略迭代为了逼近真实的state value,需要迭代无穷次才能找到真实解,这在实际情况下显然是不可行的,虽然真实做法是当state value的变化小于一个极小的常数,我们就认为收敛,但这个问题也引申出了策略迭代与值迭代的折中,n-step策略迭代。
从名称就能知道,n-step策略迭代就是在状态值的估计这里迭代n步。于是我们可以写出该算法的执行步骤:

  1. 随机初始化0时刻下的策略 π0\pi_0π0
  • 策略评估
  1. 对于t时刻的策略 πt\pi_tπt,通过以下方法迭代n步求解当前策略下的状态值:
    vπ1(st)=rˉ+γPvπ0(st+1)vπ2(st)=rˉ+γPvπ1(st+1)⋯vπn(st)=rˉ+γPvπn−1(st+1)\begin{align} v_\pi^{1}(s_t) &= \bar{r} + \gamma \mathbf{P}v_\pi^{0}(s_{t+1}) \notag \\ v_\pi^{2}(s_t) &= \bar{r} + \gamma \mathbf{P}v_\pi^{1}(s_{t+1}) \notag \\ \cdots \notag \\ v_\pi^{n}(s_t) &= \bar{r} + \gamma \mathbf{P}v_\pi^{n-1}(s_{t+1}) \notag \\ \end{align}vπ1(st)vπ2(st)vπn(st)=rˉ+γPvπ0(st+1)=rˉ+γPvπ1(st+1)=rˉ+γPvπn1(st+1)
  2. 通过 vπn(st)v_\pi^{n}(s_t)vπn(st)求解出每个状态s的每个Action的Action Value。
  • 策略改进
  1. 对于每个状态s,赋予Action Value最大的Action概率1,其他Action概率0 。
  2. 循环执行策略评估与策略改进,直到状态值收敛。
http://www.dtcms.com/a/419008.html

相关文章:

  • 广州网站建设 .超凡科技新网网站登录不上
  • week 3
  • 建设网站 课程设计怎样用手机做网站
  • 图文讲解k8s中Service、Selector、EndpointSlice的运行原理
  • 菊风智能双录+质检+可视化回溯,组合拳助力金融合规数字化升级
  • k8s中的kubelet
  • 精读C++20设计模式——结构型设计模式:适配器模式
  • 如何用visual做网站十大国际贸易公司排名
  • 网站建设 仿站什么是电商?电商怎么做
  • 2025数据治理平台品牌TOP16榜单:技术突破与选型指南
  • 网站快速收录平台dede做的网站打不开
  • LeetCode 230. 二叉搜索树中第 K 小的元素
  • 优秀的平面设计网站国内做的比较好的旅游网站
  • 设计模式(C++)详解——中介者模式(2)
  • MySQL 8.0 “复杂类型”实战
  • 将0~3V电压分区间放大,减法器的使用
  • 2025年11月PgMP认证报名、考试安排!
  • 百度C++实习生面试题深度解析(下篇)
  • Memblock-2
  • 从芯片发布看未来AI发展趋势与前景
  • 【案例教程】生态碳汇涡度通量数据质量控制、缺失插补、可视化分析、光敏感性分析、温度敏感性分析、数据风浪区分析
  • 牛商网 做的p2p网站公司名称变更通知函
  • 音视频学习(六十七):音视频像素格式
  • XCSSET新变种:专攻苹果macOS用户,实现窃密+勒索
  • 在线教育网站有什么程序做wordpress加标题
  • LeetCode-Hot100 最小栈实现
  • flutter 详细解读
  • 开县做网站汉中网络推广
  • C# TCP - 串口转发
  • 广州 济南网站建设公司 网络服务江苏网站备案流程图