您的位置:首页 > 文旅 > 美景 > 策划师_共享办公室租赁平台_百度后台管理_中国市场营销网

策划师_共享办公室租赁平台_百度后台管理_中国市场营销网

2025/5/1 6:26:03 来源:https://blog.csdn.net/2403_86993842/article/details/144491990  浏览:    关键词:策划师_共享办公室租赁平台_百度后台管理_中国市场营销网
策划师_共享办公室租赁平台_百度后台管理_中国市场营销网

本系列为学习赵世钰老师的《强化学习的数学原理》所作的学习笔记.

本节我们将介绍强化学习中的策略迭代求解方法.

2.2.1 算法步骤

跟值迭代类似, 策略迭代也是一个迭代的方法, 主要分为策略计算(PE)和策略提升(PI)两步.

2.2.1.1 策略计算(PE)

首先在当前策略 π k \pi_k πk的基础上, 计算状态值 v π k v_{\pi_k} vπk, 实际就是求解贝尔曼公式:

v π k = r π k + γ P π k v π k , v_{\pi_k}=r_{\pi_k}+\gamma P_{\pi_k} v_{\pi_k}, vπk=rπk+γPπkvπk,

在1.4.4 贝尔曼公式求解中, 我们介绍了有两种求解方式:解析解和迭代求解. 但是解析解需要求逆矩阵, 所以常采用迭代求解的方式:

v π k ( j + 1 ) = r π k + γ P π k v π k ( j ) , j = 0 , 1 , 2 , … v_{\pi_k}^{(j+1)}=r_{\pi_k}+\gamma P_{\pi_k} v_{\pi_k}^{(j)}, \quad j=0,1,2, \ldots vπk(j+1)=rπk+γPπkvπk(j),j=0,1,2,

它的展开形式为:

v π k ( j + 1 ) ( s ) = ∑ a π k ( a ∣ s ) ( ∑ r p ( r ∣ s , a ) r + γ ∑ s ′ p ( s ′ ∣ s , a ) v π k ( j ) ( s ′ ) ) , s ∈ S v_{\pi_k}^{(j+1)}(s)=\sum_a \pi_k(a \mid s)\left(\sum_r p(r \mid s, a) r+\gamma \sum_{s^{\prime}} p\left(s^{\prime} \mid s, a\right) v_{\pi_k}^{(j)}\left(s^{\prime}\right)\right), \\ \quad s \in \mathcal{S} vπk(j+1)(s)=aπk(as)(rp(rs,a)r+γsp(ss,a)vπk(j)(s)),sS

其中 v π k ( j ) v_{\pi_k}^{(j)} vπk(j)是上一轮迭代的状态值, 初值可以设置为任意值. 直到 ∥ v π k ( j + 1 ) − v π k ( j ) ∥ < e p s i l o n \left\|v_{\pi k}^{(j+1)}-v_{\pi k}^{(j)}\right\|<epsilon vπk(j+1)vπk(j) <epsilon, 则认为已经收敛.

2.2.1.2 策略提升(PI)

有了状态值 v π k v_{\pi_k} vπk之后, 我们求解最优化问题, 得到新的最优策略 π k + 1 \pi_{k+1} πk+1:

π k + 1 = arg ⁡ max ⁡ π ( r π + γ P π v π k ) . \pi_{k+1}=\arg \max _\pi\left(r_\pi+\gamma P_\pi v_{\pi_k}\right) . πk+1=argπmax(rπ+γPπvπk).

π k + 1 \pi_{k+1} πk+1一定优于 π k \pi_{k} πk, 详细证明可以前往书中查看. 展开形式写作:

π k + 1 ( s ) = arg ⁡ max ⁡ π ∑ a π ( a ∣ s ) ( ∑ r p ( r ∣ s , a ) r + γ ∑ s ′ p ( s ′ ∣ s , a ) v π k ( s ′ ) ) ⏟ q π k ( s , a ) , s ∈ S , \pi_{k+1}(s)=\arg \max _\pi \sum_a \pi(a \mid s) \underbrace{\left(\sum_r p(r \mid s, a) r+\gamma \sum_{s^{\prime}} p\left(s^{\prime} \mid s, a\right) v_{\pi_k}\left(s^{\prime}\right)\right)}_{q_{\pi_k}(s, a)}, \\ s \in \mathcal{S}, πk+1(s)=argπmaxaπ(as)qπk(s,a) (rp(rs,a)r+γsp(ss,a)vπk(s)),sS,

之前我们介绍过, 最优策略一定是贪婪确定策略:

π k + 1 ( a ∣ s ) = { 1 , a = a k ∗ ( s ) , 0 , a ≠ a k ∗ ( s ) . \pi_{k+1}(a \mid s)= \begin{cases}1, & a=a_k^*(s), \\ 0, & a \neq a_k^*(s) .\end{cases} πk+1(as)={1,0,a=ak(s),a=ak(s).

并且就是使得动作值 q π k q_{\pi_k} qπk最大的动作 a = a k ∗ ( s ) a=a_k^*(s) a=ak(s):

a k ∗ ( s ) = arg ⁡ max ⁡ a q π k ( s , a ) a_k^*(s)=\arg \max _a q_{\pi_k}(s, a) ak(s)=argamaxqπk(s,a)

2.2.1.3 伪代码

完整的伪代码如图, 算法的策略迭代最终一定会收敛到最优解, 书中也给出了详细证明

v π 0 ≤ v π 1 ≤ v π 2 ≤ ⋯ ≤ v π k ≤ ⋯ ≤ v ∗ v_{\pi_0} \leq v_{\pi_1} \leq v_{\pi_2} \leq \cdots \leq v_{\pi_k} \leq \cdots \leq v^* vπ0vπ1vπ2vπkv

2.2.2 例子1

仿真世界如图所示, 奖励设计如下:

  • 抵达边界的奖励是-1: r boundary  = − 1 r_{\text {boundary }}=-1 rboundary =1
  • 抵达终点的奖励是1: r target  = 1 r_{\text {target }}=1 rtarget =1
  • γ = 0.9 \gamma=0.9 γ=0.9
  • 其他行为奖励是0

我们将初始策略随机设置为图示: 动作都是往左.

2.2.2.1 k=0

(1) 策略计算(PE)

首先求解贝尔曼公式, 因为这个式子非常简单, 我们可以直接求出解析解:

v π 0 ( s 1 ) = − 1 + γ v π 0 ( s 1 ) ⇒ v π 0 ( s 1 ) = − 10 , v π 0 ( s 2 ) = 0 + γ v π 0 ( s 1 ) ⇒ v π 0 ( s 2 ) = − 9. \begin{aligned}& v_{\pi_0}\left(s_1\right)=-1+\gamma v_{\pi_0}\left(s_1\right)\Rightarrow v_{\pi_0}\left(s_1\right)=-10, \\& v_{\pi_0}\left(s_2\right)=0+\gamma v_{\pi_0}\left(s_1\right)\Rightarrow v_{\pi_0}\left(s_2\right)=-9 .\end{aligned} vπ0(s1)=1+γvπ0(s1)vπ0(s1)=10,vπ0(s2)=0+γvπ0(s1)vπ0(s2)=9.

不过一般我们会用迭代方法计算, 过程如下:

{ v π 0 ( 1 ) ( s 1 ) = − 1 + γ v π 0 ( 0 ) ( s 1 ) = − 1 , v π 0 ( 1 ) ( s 2 ) = 0 + γ v π 0 ( 0 ) ( s 1 ) = 0 , { v π 0 ( 2 ) ( s 1 ) = − 1 + γ v π 0 ( 1 ) ( s 1 ) = − 1.9 , v π 0 ( 2 ) ( s 2 ) = 0 + γ v π 0 ( 1 ) ( s 1 ) = − 0.9 , { v π 0 ( 3 ) ( s 1 ) = − 1 + γ v v π 0 ( 2 ) ( s 1 ) = − 2.71 , v π 0 ( 3 ) ( s 2 ) = 0 + γ v π 0 ( 2 ) ( s 1 ) = − 1.71 , . . . \begin{aligned}& \left\{\begin{array}{l}v_{\pi_0}^{(1)}\left(s_1\right)=-1+\gamma v_{\pi_0}^{(0)}\left(s_1\right)=-1, \\v_{\pi_0}^{(1)}\left(s_2\right)=0+\gamma v_{\pi_0}^{(0)}\left(s_1\right)=0,\end{array}\right. \\& \left\{\begin{array}{l}v_{\pi_0}^{(2)}\left(s_1\right)=-1+\gamma v_{\pi_0}^{(1)}\left(s_1\right)=-1.9, \\v_{\pi_0}^{(2)}\left(s_2\right)=0+\gamma v_{\pi_0}^{(1)}\left(s_1\right)=-0.9,\end{array}\right. \\& \left\{\begin{array}{l}v_{\pi_0}^{(3)}\left(s_1\right)=-1+\gamma v v_{\pi_0}^{(2)}\left(s_1\right)=-2.71, \\v_{\pi_0}^{(3)}\left(s_2\right)=0+\gamma v_{\pi_0}^{(2)}\left(s_1\right)=-1.71,\end{array}\right.\end{aligned}\\ ... {vπ0(1)(s1)=1+γvπ0(0)(s1)=1,vπ0(1)(s2)=0+γvπ0(0)(s1)=0,{vπ0(2)(s1)=1+γvπ0(1)(s1)=1.9,vπ0(2)(s2)=0+γvπ0(1)(s1)=0.9,{vπ0(3)(s1)=1+γvvπ0(2)(s1)=2.71,vπ0(3)(s2)=0+γvπ0(2)(s1)=1.71,...

最终的结果也是收敛到: v π 0 ( s 1 ) = − 10 , v π 0 ( s 2 ) = − 9 v_{\pi_0}\left(s_1\right)=-10, v_{\pi_0}\left(s_2\right)=-9 vπ0(s1)=10,vπ0(s2)=9

(2) 策略提升(PI)

这里我们需要计算最优动作值, 因此需要计算出所有的动作值. 这个仿真场景, 完整的计算公式如下:

我们将 v π 0 ( s 1 ) = − 10 , v π 0 ( s 2 ) = − 9 v_{\pi_0}\left(s_1\right)=-10, v_{\pi_0}\left(s_2\right)=-9 vπ0(s1)=10,vπ0(s2)=9 代入到式子中

可以看得出来, 最优动作是:

π 1 ( a r ∣ s 1 ) = 1 , π 1 ( a 0 ∣ s 2 ) = 1 \pi_1\left(a_r \mid s_1\right)=1, \quad \pi_1\left(a_0 \mid s_2\right)=1 π1(ars1)=1,π1(a0s2)=1

因为这个例子非常简单, 显然可以看出来这已经是最优解了.

2.2.3 例子2

这里我们给出了一个更复杂的例子:

仿真世界如图所示, 奖励设计如下:

  • 抵达禁止格或边界的奖励是-1: r boundary  = r forbidden  = − 1 r_{\text {boundary }}=r_{\text {forbidden }}=-1 rboundary =rforbidden =1
  • 抵达终点的奖励是1: r target  = 1 r_{\text {target }}=1 rtarget =1
  • γ = 0.9 \gamma=0.9 γ=0.9
  • 其他行为奖励是0

这里我们将初始策略全部初始化为原地不动, 然后开始迭代. 迭代的过程不再详细描述, 用图片展示每一轮迭代的结果

2.2.4 截断策略迭代

2.2.4.1 值迭代和策略迭代对比

之前我们介绍了这两种迭代方式, 这里我们归纳一下它们的迭代过程:

(1) 策略迭代

π 0 → P E v π 0 → P I π 1 → P E v π 1 → P I π 2 → P E v π 2 → P I … \pi_0 \xrightarrow{P E} v_{\pi_0} \xrightarrow{P I} \pi_1 \xrightarrow{P E} v_{\pi_1} \xrightarrow{P I} \pi_2 \xrightarrow{P E} v_{\pi_2} \xrightarrow{P I} \ldots π0PE vπ0PI π1PE vπ1PI π2PE vπ2PI

  • PE(已知 π k \pi_k πk, 求解 v π k v_{\pi_k} vπk): v π k = r π k + γ P π k v π k . v_{\pi_k}=r_{\pi_k}+\gamma P_{\pi_k} v_{\pi_k} . vπk=rπk+γPπkvπk.
  • PI(已知 v π k v_{\pi_k} vπk, 求解 π k + 1 \pi_{k+1} πk+1): π k + 1 = arg ⁡ max ⁡ π ( r π + γ P π v π k ) . \pi_{k+1}=\arg \max _\pi\left(r_\pi+\gamma P_\pi v_{\pi_k}\right) . πk+1=argmaxπ(rπ+γPπvπk).

(2) 值迭代

v 0 → P U π 1 ′ → V U v 1 → P U π 2 ′ → V U v 2 → P U … v_0 \xrightarrow{P U} \pi_1^{\prime} \xrightarrow{V U} v_1 \xrightarrow{P U} \pi_2^{\prime} \xrightarrow{V U} v_2 \xrightarrow{P U} \ldots v0PU π1VU v1PU π2VU v2PU

  • PU(已知 v k v_{k} vk, 求解 π k + 1 \pi_{k+1} πk+1): π k + 1 = arg ⁡ max ⁡ π ( r π + γ P π v k ) . \pi_{k+1}=\arg \max _\pi\left(r_\pi+\gamma P_\pi v_k\right) . πk+1=argmaxπ(rπ+γPπvk).
  • VU(已知 π k + 1 \pi_{k+1} πk+1, 求解 v k + 1 v_{k+1} vk+1): v k + 1 = r π k + 1 + γ P π k + 1 v k . v_{k+1}=r_{\pi_{k+1}}+\gamma P_{\pi_{k+1}} v_k . vk+1=rπk+1+γPπk+1vk.

2.2.4.2 截断策略迭代

这里通过一个表格展现他们的迭代的过程区别, 可以看到一个比较明显的区别是

值迭代的 v k + 1 v_{k+1} vk+1是直接计算出来的; 但是策略迭代的 v π k v_{\pi_k} vπk是通过一个小迭代算法计算的:

v π 1 ( 0 ) = v 0 v π 1 ( 1 ) = r π 1 + γ P π 1 v π 1 ( 0 ) v π 1 ( 2 ) = r π 1 + γ P π 1 v π 1 ( 1 ) ⋮ 截断策略迭代  ← v ˉ 1 ⟵ v π 1 ( j ) = r π 1 + γ P π 1 v π 1 ( j − 1 ) ⋮ 策略迭代  ← v ˉ 1 ⟵ v π 1 ( ∞ ) = r π 1 + γ P π 1 v π 1 ( ∞ ) \begin{aligned}v_{\pi_1}^{(0)} & =v_0 \\v_{\pi_1}^{(1)} & =r_{\pi_1}+\gamma P_{\pi_1} v_{\pi_1}^{(0)} \\v_{\pi_1}^{(2)} & =r_{\pi_1}+\gamma P_{\pi_1} v_{\pi_1}^{(1)} \\\vdots & \\ \text { 截断策略迭代 } \leftarrow \bar{v}_1 \longleftarrow v_{\pi_1}^{(j)} & =r_{\pi_1}+\gamma P_{\pi_1} v_{\pi_1}^{(j-1)} \\\vdots & \\ \text { 策略迭代 } \leftarrow \bar{v}_1 \longleftarrow v_{\pi_1}^{(\infty)} & =r_{\pi_1}+\gamma P_{\pi_1} v_{\pi_1}^{(\infty)}\end{aligned} vπ1(0)vπ1(1)vπ1(2) 截断策略迭代 vˉ1vπ1(j) 策略迭代 vˉ1vπ1()=v0=rπ1+γPπ1vπ1(0)=rπ1+γPπ1vπ1(1)=rπ1+γPπ1vπ1(j1)=rπ1+γPπ1vπ1()

截断策略迭代就是在策略迭代的基础上, 限制计算 v π k v_{\pi_k} vπk的最大迭代次数; 比如上式中, 迭代 j j j次之后直接结束迭代.

因为限制了小迭代的次数, 求得的 v π k v_{\pi_k} vπk可能并未完全收敛到 v π k ∗ v_{\pi_k}^* vπk附近; 因此阶段策略迭代整体收敛速度, 是慢于策略迭代的, 优于值迭代, 如上图所示.

但是每一次迭代的计算时间, 显然是值迭代<截断策略迭代<策略迭代. 所以算法的整体效率是由两方面决定的.

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com