强化学习二(动态规划)

动态规划 (Dynamic Programming)

动态规划的核心思想是使用价值函数来结构化的组织对最优策略的搜索。
首先,回顾一下贝尔曼最优方程:

  • 最优状态价值函数
    V ∗ ( s ) = max ⁡ a ( R s a + γ ∑ s , ∈ S P s s , a V ∗ ( s , ) ) V^*(s)=\max_a(R^a_s+\gamma\sum_{s^{,}\in{S}}P^a_{ss^,}V^*(s^,)) V(s)=amax(Rsa+γs,SPss,aV(s,))
  • 最优动作状态价值函数
    Q ∗ ( s , a ) = R s a + γ ∑ s , ∈ S P s s , a max ⁡ a , Q ∗ ( s , , a , ) Q^*(s,a)=R^a_s+\gamma\sum_{s^{,}\in{S}}P^a_{ss^,}\max_{a^,}Q^*(s^,,a^,) Q(s,a)=Rsa+γs,SPss,aa,maxQ(s,,a,)

1 策略评估 (Policy Evaluation)

对于一个任意策略 π \pi π,计算其状态价值函数 V π V_{\pi} Vπ的过程,叫做策略评估,也有文章中称为策略预测。
V π ( s ) = ∑ a ∈ A π ( a ∣ s ) Q π ( s , a ) = ∑ a ∈ A π ( a ∣ s ) [ R s a + γ ∑ s , ∈ S P s s , a V π ( s , ) ] \begin{aligned} V_\pi(s)&=\sum_{a\in{A}}\pi(a\vert s)Q_\pi(s,a)\\ &=\sum_{a\in{A}}\pi(a\vert s)[R^a_s+\gamma\sum_{s^{,}\in{S}}P^a_{ss^,}V_\pi(s^,)] \end{aligned} Vπ(s)=aAπ(as)Qπ(s,a)=aAπ(as)[Rsa+γs,SPss,aVπ(s,)]

从上式可知,如果状态集 S \mathcal{S} S中含有 n n n个状态,那么上式就是一个含有 n n n个未知数以及 n n n个等式的线性方程组。
一般地,使用迭代法来求解上述问题。如下所示
V k + 1 ( s ) = ∑ a ∈ A π ( a ∣ s ) [ R s a + γ ∑ s , ∈ S P s s , a V k ( s , ) ] \begin{aligned} V_{k+1}(s)&=\sum_{a\in{A}}\pi(a\vert s)[R^a_s+\gamma\sum_{s^{,}\in{S}}P^a_{ss^,}V_k(s^,)] \end{aligned} Vk+1(s)=aAπ(as)[Rsa+γs,SPss,aVk(s,)]

除了终止状态值必须为0外,初始近似值 V 0 V_0 V0可以任意选取。事实上,在保证 V π V_\pi Vπ存在的条件下,序列 { V k } \{V_k\} {Vk} k k k趋于无穷时将会收敛到 V π V_\pi Vπ。整个过程即迭代策略评估。

2 策略提升 (Policy Improvement)

策略评估的意义在于:通过计算该策略 π \pi π下的状态价值函数 V π V_\pi Vπ来评估该策略的好坏。
假设对于策略 π \pi π,已经通过策略评估得到其状态价值函数 V π V_\pi Vπ。如果从状态 s s s,继续使用策略 π \pi π,则其状态价值为 V π V_\pi Vπ。但是如果换一个策略,结果会怎样?

如果在状态 s s s选择另外的动作 a ≠ π ( s ) a\neq \pi(s) a=π(s)后,继续使用当前策略 π ( s ) \pi(s) π(s),那么根据定义,需要使用到状态动作价值函数来描述在状态 s s s选择另外的动作 a ≠ π ( s ) a\neq \pi(s) a=π(s)以后的期望回报,如下所示。
Q π ( s , a ) = E π [ G t ∣ S t = s , A t = a ] = R s a + γ ∑ s , ∈ S P s s , a V π ( s , ) \begin{aligned} Q_\pi(s,a)&=E_\pi[G_t\vert{S}_t=s,A_t=a]\\ &=R^a_s+\gamma\sum_{s^{,}\in{S}}P^a_{ss^,}V_\pi(s^,) \end{aligned} Qπ(s,a)=Eπ[GtSt=s,At=a]=Rsa+γs,SPss,aVπ(s,)

注:这里的 a a a不是由策略 π ( s ) \pi(s) π(s)产生的,可以认为是别的策略 π , ( s ) \pi^,(s) π,(s)产生的 , a a a也可以使用别的符号代替。
接下来,可以通过比较 V π V_\pi Vπ Q π Q_\pi Qπ的大小来决定动作 a a a在这里是不是比原策略 π ( s ) \pi(s) π(s)产生的动作要好还是劣。
如果 V π V_\pi Vπ Q π Q_\pi Qπ之间存在如下关系:
Q π ( s , π , ( s ) ) ≥ V π ( s ) Q_\pi(s,\pi^,(s))\geq V_\pi(s) Qπ(s,π,(s))Vπ(s)

那么可以认为改进后的策略 π , ( s ) \pi^,(s) π,(s)比原策略 π ( s ) \pi(s) π(s)好,值得说明的是,我们可以这样理解这个不等式,可以认为策略 π , ( s ) = a ≠ π ( s ) \pi^,(s)=a\neq\pi(s) π,(s)=a=π(s),在其他地方 π , ( s ) \pi^,(s) π,(s) π ( s ) \pi(s) π(s)完全相同。
进一步地,就有
V π , ( s ) ≥ V π ( s ) V_{\pi^,}(s)\geq V_\pi(s) Vπ,(s)Vπ(s)

基于上面的原理,对于每一个状态和每一个动作,可以得到一个新的贪心策略 π , ( s ) \pi^,(s) π,(s),如下所示
π , ( s ) = arg max ⁡ a Q π ( s , a ) = arg max ⁡ a [ R s a + γ ∑ s , ∈ S P s s , a V π ( s , ) ] \begin{aligned} \pi^,(s)&=\argmax _aQ_\pi(s,a)\\ &=\argmax _a[R^a_s+\gamma\sum_{s^{,}\in{S}}P^a_{ss^,}V_\pi(s^,)] \end{aligned} π,(s)=aargmaxQπ(s,a)=aargmax[Rsa+γs,SPss,aVπ(s,)]

根据原有策略计算得到状态价值函数获知状态动作价值函数,进而根据计算好的价值函数更新一个新的策略,称作策略提升。

3 策略迭代

策略迭代的整个流程如下
π 0 → V π 0 → π 1 → V π 1 → π 2 → V π 2 → … → π ∗ → V ∗ \pi_0\rightarrow V_{\pi_0}\rightarrow\pi_1\rightarrow V_{\pi_1}\rightarrow\pi_2\rightarrow V_{\pi_2}\rightarrow\dotsc\rightarrow\pi^*\rightarrow V^* π0Vπ0π1Vπ1π2Vπ2πV

π 0 → V π 0 \pi_0\rightarrow V_{\pi_0} π0Vπ0的过程就是前面提到的策略评估过程, V π 0 → π 1 V_{\pi_0}\rightarrow\pi_1 Vπ0π1的过程就是前面提到的策略提升过程。其中每一次策略评估都是一个迭代求解的过程。

策略迭代算法步骤:

  1. 初始化随机策略
  2. 得到随机策略的值函数,即策略评估
  3. 如果不是最优,找到一种新的改进策略,即策略提升
  4. 重复2,3,直到找到最优策略

4 值迭代

策略迭代算法的一个缺点在于在策略评估阶段需要迭代求解状态价值函数直到其收敛。值迭代的思想是在策略评估阶段只对策略评估做一次迭代,可以认为是一边策略评估,一边策略提升。使用更新公式可以表述这个过程。
V k + 1 ( s ) = max ⁡ a Q π ( s , a ) = max ⁡ a [ R s a + γ ∑ s , ∈ S P s s , a V k ( s , ) ] \begin{aligned} V_{k+1}(s)&=\max_aQ_\pi(s,a)\\ &=\max_a[R^a_s+\gamma\sum_{s^{,}\in{S}}P^a_{ss^,}V_k(s^,)]\\ \end{aligned} Vk+1(s)=amaxQπ(s,a)=amax[Rsa+γs,SPss,aVk(s,)]

下面给出值迭代的算法步骤
值迭代算法步骤:

  1. 初始化状态值函数,一般初始化为全零状态值函数
  2. 根据公式 Q π ( s , a ) = R s a + γ ∑ s , ∈ S P s s , a V π ( s , ) Q_\pi(s,a)=R^a_s+\gamma\sum_{s^{,}\in{S}}P^a_{ss^,}V_\pi(s^,) Qπ(s,a)=Rsa+γs,SPss,aVπ(s,)计算状态行为价值函数 Q π ( s , a ) Q_\pi(s,a) Qπ(s,a)
  3. Q π ( s , a ) Q_\pi(s,a) Qπ(s,a)的最大值更新状态价值函数
  4. 重复2,3,直到状态价值函数收敛

异步动态规划

对于状态数目很多的任务,对于每一个状态进行价值迭代更新的话,将会陷入到很庞大状态集的更新中。异步动态规划的思想是:以任意的顺序来更新状态值。就是说,这些状态值的更新不是同步的,即,有的状态已经更新了好几遍了,有的状态很有可能还没有开始更新。但是,需要说明的是,异步动态规划需要设计一个计算节点,来确保计算节点后,该算法不能忽略任何一个状态。异步动态规划是一种更新价值函数和策略的思想,根据不同的文献,会有不同具体可行的更新方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值