通过Sarsa和Q学习理解同轨策略和离轨策略

引言

  强化学习中,当状态-动作空间很小且环境模型精确的时候,我们完全可以通过求解矩阵方程来精确获得某个策略的价值函数的值。
  但是,当状态-动作空间很大的时候,求解矩阵方程的计算量是相当大的,这时候利用环境的精确模型(状态转移函数)进行迭代(自举法)可以求得价值函数的近似解(通过设置略微宽松的迭代终止条件),这就是动态规划算法的基本思想。
  进一步,如果缺少精确的环境模型,我们还可以通过和环境进行交互采样,当采样量足够大的时候,对某个价值函数值进行的更新就会逐渐逼近其真值,这里相当于将环境的状态转移概率信息隐藏在了一次次的采样当中,这就是蒙特卡洛算法的基本思想。
  分别简单说一下动态规划和蒙特卡洛算法的弊端。动态规划的弊端是实际上的环境模型是无法得知的,动态规划的弊端是必须等到终态才能对函数值进行更新,这可能会出现当前迭代的策略 π \pi π无法到达终态因此永远无法更新和进行策略提升的情况。
  因此,时序差分算法将上述两种算法进行了融合,在每一步采样后得到即时奖励 R t + 1 R_{t+1} Rt+1 S t + 1 S_{t+1} St+1,后续的衰减奖励之和将由 V ( S t + 1 ) V(S_{t+1}) V(St+1)的估计值给出,而这些估计值就是迭代出来的。可以看出,时序差分结合了蒙特卡洛的采样方法和动态规划的迭代方法。
  然而,在理解时序差分方法的过程中,千万不能忽略贝尔曼方程的存在,因为时序差分方法是一种自举法,且自举法的依据来源于贝尔曼方程。观察贝尔曼方程可以发现,它是用 V t + 1 V_{t+1} Vt+1来计算 V t V_t Vt、用 Q t + 1 Q_{t+1} Qt+1来计算 Q t Q_t Qt的,这种形式很适合自举。
  下面将结合贝尔曼方程、Sarsa和Q学习,从中提取出同轨策略和离轨策略的区别。

同轨策略和离轨策略

  这里先给出抽象定义,后举例子。

目标策略与行为策略

  目标策略:与环境交互的策略
  行为策略:被评估和提升的策略

同轨策略与离轨策略

  同轨策略:目标策略=行为策略
  离轨策略:目标策略≠行为策略

举例

  拿人的外表和内心来举例。
  对同轨策略而言,它内心怎么想,外表就怎么做,外表做出的事请得到的经验让它内心的经验进行更新,然后继续拿出内心的新鲜经验执行外表的动作,它是“耿直”的。可以发现,这个过程是一个实时的过程,也就是说目标策略变化后,行为策略(=目标策略)也会及时的采取目标策略与环境进行交互。它的数据集必须是当前目标策略生成的,所以它也叫在线策略。
  对离轨策略而言,它内心想一套,外表做一套,外表做出的事请得到的经验让它内心的经验进行更新,然后拿出和学到的知识不同的外表动作与环境进行交互,可以发现它是“狡猾”的。这个过程可以不是实时的,因为反正目标策略不等于行为策略,拿出任何一个行为策略采样到的马尔可夫序列都可以进行目标策略的评估和提升,所以它也叫离线策略。
  现在,通过举例子大概能明白同轨策略和离轨策略的区别了,但是它们如何体现在Sarsa和Q学习中呢?下文将结合贝尔曼方程进行分析。

Sarsa与Q学习

  下面先给出贝尔曼方程、Sarsa算法和Q学习算法的形式,然后通过它们来给出时序差分算法更新的合理性,最后说明同轨策略和离轨策略在两个时序差分算法中的体现。

贝尔曼方程

贝尔曼期望方程

状态价值函数版本:
V π ( s ) = E π [ R t + γ V π ( s ′ ) ∣ S t = s ] = ∑ a ∈ A π ( a ∣ s ) ( r ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) V π ( s ′ ) ) V^\pi(s)=E_\pi[R_t+\gamma V^\pi(s')|S_t=s]\\=\sum\limits_{a\in A}\pi(a|s)(r(s,a)+\gamma \sum\limits_{s'\in S}P(s'|s,a)V^\pi(s')) Vπ(s)=Eπ[Rt+γVπ(s)St=s]=aAπ(as)(r(s,a)+γsSP(ss,a)Vπ(s))
动作价值函数版本:
Q π ( s , a ) = E π [ R t + γ Q π ( s ′ , a ′ ) ∣ S t = s , A t = a ] = r ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) ∑ a ′ ∈ A π ( a ′ ∣ s ′ ) Q π ( s ′ , a ′ ) Q^\pi(s,a)=E_\pi[R_t+\gamma Q^\pi(s',a')|S_t=s,A_t=a]\\=r(s,a)+\gamma \sum\limits_{s'\in S}P(s'|s,a)\sum\limits_{a'\in A}\pi(a'|s')Q^\pi(s',a') Qπ(s,a)=Eπ[Rt+γQπ(s,a)St=s,At=a]=r(s,a)+γsSP(ss,a)aAπ(as)Qπ(s,a)

贝尔曼最优方程

状态价值函数版本:
V ∗ ( s ) = max ⁡ a ∈ A { r ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) V ∗ ( S ′ ) } V^*(s)=\max\limits_{a\in A}\{r(s,a)+\gamma\sum\limits_{s'\in S}P(s'|s,a)V^*(S')\} V(s)=aAmax{r(s,a)+γsSP(ss,a)V(S)}
动作价值函数版本:
Q ∗ ( s , a ) = r ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) max ⁡ a ′ ∈ A Q ∗ ( s ′ , a ′ ) Q^*(s,a)=r(s,a)+\gamma\sum\limits_{s'\in S}P(s'|s,a)\max\limits_{a'\in A}Q^*(s',a') Q(s,a)=r(s,a)+γsSP(ss,a)aAmaxQ(s,a)

Sarsa

Q学习

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值