2 表格型方法

2 表格型方法

介绍容易理解的基于表格型方法的求解方式,这个过程中引入的概念对于理解其他方法能起到很大的帮助。

2.1 model-based与model-free

如果在一个问题中,四元组是已知的,也就是说,不仅知道所有可能采取的动作 A A A和所有可能的状态 S S S,还知道在每个状态下采取某一动作的后果(状态转变 P P P和奖励 R R R),那么这个模型就可以完整地建立出来,用于解决这种情况的方法就叫做model-based的方法。

但事实上大多数时候环境的转移概率函数和奖励函数都是未知的,这时采取的方法就叫做model-free的方法,强化学习主要研究的就是这种情况。

2.2 Q Q Q表格

一个最直观的想法就是试图找到每一对状态动作 ( s , a ) (s,a) (s,a)的动作价值函数 Q ( s , a ) Q(s,a) Q(s,a),从而构成了一张表格,一个维度就是状态空间 S S S,另一个维度就是动作空间 A A A。如果能够找到这个表格,那么每次行为前只要根据当前的状态,查询价值最大的行为来执行就好了,这样也就有了策略。

需要注意的是, Q Q Q表格是依赖于策略的,而策略又是查询 Q Q Q表格,这样就形成了一个迭代的形式:先初始化一张 Q Q Q表格,根据它采取行为,得到奖励以后再回来更新 Q Q Q表格的数据。

在详细介绍这个过程之前,先看另一个概念。

2.3 探索与利用 exploration and exploitation

这里介绍一个模型来帮助理解:“K-摇臂赌博机”,一台赌博机有多个摇杆,每个摇杆都对应着不同的奖励分布,目标是在有限次尝试中获得最大的累积奖励。

一方面,我们希望了解每个摇臂对应的奖励分布,另一方面,我们也希望能够获得尽可能多的奖励。

为了了解摇臂的奖励分布,我们应该尽可能地尝试不同的摇杆,由于摇杆的奖励是个分布,尝试得越多,估计得才能越准确。这样的行为就叫做探索。

而为了获得最多的奖励,我们应该尽可能多地使用那个已知奖励最大的摇杆,即使可能还有没有发现的奖励更大的摇杆。这样的行为就叫做利用。

由于尝试的总次数是一定的,因此探索和利用之间有着竞争的关系,探索过多就会失去利用最优的机会,而利用过多可能根本选不到最优的摇杆。

为了要将二者平衡起来,可以采用 ϵ \epsilon ϵ-贪心法。

每一次采取行为时,以 ϵ \epsilon ϵ的概率进行探索,具体来说就是随机选择行为,从而尝试不同的可能; 1 − ϵ 1-\epsilon 1ϵ的概率进行利用,也就是采纳目前已知的当前状态下奖励最大的行为。

通过调整 ϵ \epsilon ϵ的值可以调节策略的倾向性,当奖励的分布较广时,可以相应地采用较大的 ϵ \epsilon ϵ

2.4 时序差分学习 Temporal Difference

现在我们可以开始考虑如何更新 Q Q Q表格了。

交代一下背景,假设在时刻 t t t,Agent处于状态 s 0 s_0 s0,此时的表格记为 Q t Q_t Qt,这时采取行为 a 0 a_0 a0,从环境中得到了奖励 R t + 1 R_{t+1} Rt+1,状态变为 s 1 s_1 s1。按照策略,下一时刻将会采用行为 a 1 a_1 a1

这个时候,我们希望根据已有的数据来把我们的 Q Q Q表格从 Q t Q_t Qt更新到 Q t + 1 Q_{t+1} Qt+1

为了方便,我们把之前的动作价值函数的递推式拿过来:
Q π ( s , a ) = E π ( R t + 1 + γ Q π ( S t + 1 , A t + 1 ) ∣ S t = s , A t = a ) Q_\pi(s,a)=E_\pi(R_{t+1} + \gamma Q_\pi(S_{t+1},A_{t+1})| S_t=s, A_t =a) Qπ(s,a)=Eπ(Rt+1+γQπ(St+1,At+1)St=s,At=a)
下面考虑两种情况:

第一种情况,我们对之前表格中的 Q t ( s t , a t ) Q_t(s_t,a_t) Qt(st,at)数据完全不信任,想要在新的 Q t + 1 Q_{t+1} Qt+1中把它覆盖掉,即
Q t + 1 ( s 0 , a 0 ) = R t + 1 + γ Q t ( s 1 , a 1 ) = Q t ( s 0 , a 0 ) + R t + 1 + γ Q t ( s 1 , a 1 ) − Q t ( s 0 , a 0 ) (1) \begin{aligned} Q_{t+1}(s_0,a_0)&= R_{t+1}+\gamma Q_{t}(s_1,a_1)\\ &=Q_t(s_0,a_0)+ R_{t+1}+\gamma Q_{t}(s_1,a_1)-Q_t(s_0,a_0)\tag{1} \end{aligned} Qt+1(s0,a0)=Rt+1+γQt(s1,a1)=Qt(s0,a0)+Rt+1+γQt(s1,a1)Qt(s0,a0)(1)
这样,新表格中 Q t + 1 ( s 0 , a 0 ) Q_{t+1}(s_0,a_0) Qt+1(s0,a0)就和 Q t ( s 0 , a 0 ) Q_t(s_0,a_0) Qt(s0,a0)完全没有关系了(当然我们还是会使用 Q t ( s 1 , a 1 ) Q_{t}(s_1,a_1) Qt(s1,a1),因此 Q Q Q表格是逐项更新的)。

第二种情况,我们信任每一次的取样(假设已经有 n n n次),希望最终表格中存储的是取样的平均值,也就是说

Q t ( s 0 , a 0 ) = 1 n ∑ i = 1 t Q t i ( s 0 , a 0 ) Q_t(s_0,a_0)=\frac{1}{n}\sum_{i=1}^tQ_t^i(s_0,a_0) Qt(s0,a0)=n1i=1tQti(s0,a0)(用上标 i i i表示第 i i i次取到 ( s 0 , a 0 ) (s_0,a_0) (s0,a0)

那么我们希望 t t t时刻操作以后,依然保持对每次取样平均看待,由此得出
Q t + 1 ( s 0 , a 0 ) = n × Q t ( s 0 , a 0 ) + R t + 1 + γ Q t ( s 1 , a 1 ) n + 1 = ( n + 1 ) × Q t ( s 0 , a 0 ) + R t + 1 + γ Q t ( s 1 , a 1 ) − Q t ( s 0 , a 0 ) n + 1 = Q t ( s 0 , a 0 ) + 1 n + 1 ( R t + 1 + γ Q t ( s 1 , a 1 ) − Q t ( s 0 , a 0 ) ) (2) \begin{aligned} Q_{t+1}(s_0,a_0)&=\frac{n\times Q_t(s_0,a_0)+R_{t+1}+\gamma Q_t(s_1,a_1)}{n+1}\\ &=\frac{(n+1)\times Q_t(s_0,a_0)+R_{t+1}+\gamma Q_t(s_1,a_1)-Q_t(s_0,a_0)}{n+1}\\ &=Q_t(s_0,a_0)+\frac{1}{n+1}(R_{t+1}+\gamma Q_t(s_1,a_1)-Q_t(s_0,a_0)) \tag{2} \end{aligned} Qt+1(s0,a0)=n+1n×Qt(s0,a0)+Rt+1+γQt(s1,a1)=n+1(n+1)×Qt(s0,a0)+Rt+1+γQt(s1,a1)Qt(s0,a0)=Qt(s0,a0)+n+11(Rt+1+γQt(s1,a1)Qt(s0,a0))(2)
对比 ( 1 ) (1) (1) ( 2 ) (2) (2),我们可以归纳出一个通用公式:
Q t + 1 ( s 0 , a 0 ) = Q t ( s 0 , a 0 ) + α [ R t + 1 + γ Q t ( s 1 , a 1 ) ⏟ t a r g e t   Q − Q t ( s 0 , a 0 ) ⏟ c u r r e n t   Q ] ⏟ s o f t   u p d a t e Q_{t+1}(s_0,a_0)=Q_t(s_0,a_0)+\alpha \underbrace{[\underbrace{R_{t+1}+\gamma Q_t(s_1,a_1)}_{target \space Q}-\underbrace{Q_t(s_0,a_0)}_{current\space Q}]}_{soft \space update} Qt+1(s0,a0)=Qt(s0,a0)+αsoft update [target Q Rt+1+γQt(s1,a1)current Q Qt(s0,a0)]
其中 R t + 1 + γ Q t ( s 1 , a 1 ) R_{t+1}+\gamma Q_t(s_1,a_1) Rt+1+γQt(s1,a1)又被称为目标值,也就是在这一步的行为中我们得到的,新的 ( s 0 , a 0 ) (s_0,a_0) (s0,a0)对应的动作价值函数,其中 R t + 1 R_{t+1} Rt+1是试验得到的奖励, Q t ( s 1 , a 1 ) Q_t(s_1,a_1) Qt(s1,a1)是通过查阅旧表得到的。

用目标值减去当前的值,再将差值乘以一个系数 α , α ∈ [ 0 , 1 ] \alpha, \alpha \in [0,1] α,α[0,1],就能用来对当前的 Q Q Q表格进行一次软更新。当 α = 0 \alpha=0 α=0时就是完全不更新,当 α = 1 \alpha=1 α=1时就是完全放弃之前的 Q Q Q值(情况一),此处可以把 α \alpha α理解为学习率。

还可以这么理解,当前值是我们已有的对现实的理解,目标值是我们在实践中得到的真实的认知,学习的目的就是在一次次更新中让当前值去逼近目标值。(为什么不直接用目标值覆盖当前值,即取 α = 1 \alpha = 1 α=1?因为环境的反馈不一定是确定的,而是一个分布,单次试验的目标值并不具有代表性)。

这样的更新方式就是时序差分更新。

2.5 on-policy与off-policy

我们再回顾一下刚才的例子:

在时刻 t t t,Agent处于状态 s 0 s_0 s0,此时的表格记为 Q t Q_t Qt,这时采取行为 a 0 a_0 a0,从环境中得到了奖励 R t + 1 R_{t+1} Rt+1,状态变为 s 1 s_1 s1。按照策略,下一时刻将会采用行为 a 1 a_1 a1

注意其中的“按照策略”,这里的策略指的是哪个策略呢?

前面说过,我们在试验的时候往往会将探索和利用结合起来,也就是说以 ϵ \epsilon ϵ的概率进行随机尝试, 1 − ϵ 1-\epsilon 1ϵ的概率选取目前已知最优的行为,我们把这个策略记为 π \pi π

我们也可以有纯利用的策略,也就是说永远选取已知最优的行为,把这个策略记为 μ \mu μ

在与环境交互的时候,我们采用的是策略 π \pi π,但是,在决定更新 Q Q Q表格采用哪个 a 1 a_1 a1时,我们既可以采用策略 π \pi π,也可以采用策略 μ \mu μ

如果交互的策略和更新学习的策略是一致的,这种方法就被称为on-policy的方法。在on-policy的方法中, Q Q Q表格的更新真实地反映了Agent的行为。

而如果交互的策略和更新学习的策略不一样,这种方法就被称为off-policy的方法。在于环境交互的时候依然采用策略 π \pi π(又被称为行为策略),但在更新的时候采取策略 μ \mu μ(这个策略也叫目标策略),即默认Agent下一步会选取最优的动作来执行,使用 a 1 = a r g m a x a Q ( s 1 , a ) a_1=\underset{a}{argmax}Q(s_1,a) a1=aargmaxQ(s1,a)来更新 Q Q Q表。当然,实际上到了下一时刻,由于探索机制的存在,Agent可能并不会采用 a 1 a_1 a1

on-policy的方法由于要求 Q Q Q表兼顾探索和利用,因此可能会导致 Q Q Q表格的不稳定,最终训练出来的 Q Q Q表格对应的策略也会显得更加保守:在不稳定情况下最终收敛,会把探索带来的随机性考虑进来。

off-policy的方法中,行为策略 π \pi π用于与环境交互产生经验,而目标策略 μ \mu μ用于更新学习最优的策略,这样学出来的 Q Q Q表格对应的策略更具有冒险精神:不考虑随机探索可能带来的风险,只采取最优化的路线。

on-policy具有代表性的算法有SARSA,off-policy具有代表性的有Q-learning。理解了上面的内容,接下来理解这两种算法就十分容易了。

2.6 Sarsa

直接看算法流程:

1 初始化状态为 s 0 s_0 s0,初始化 Q Q Q表格

2 根据 Q Q Q表格,使用 ϵ − g r e e d y \epsilon - greedy ϵgreedy法选择动作 a 0 a_0 a0

3 采取动作 a 0 a_0 a0,转到状态 s 1 s_1 s1,获得奖励 R 1 R_1 R1

4 根据 Q Q Q表格,使用 ϵ − g r e e d y \epsilon - greedy ϵgreedy法选择动作 a 1 a_1 a1

5 使用 s 0 s_0 s0 a 0 a_0 a0 R 1 R_1 R1 s 1 s_1 s1 a 1 a_1 a1更新 Q Q Q表格,更新公式为

Q ( s 0 , a 0 ) = Q ( s 0 , a 0 ) + α [ R 1 + γ Q ( s 1 , a 1 ) − Q ( s 0 , a 0 ) ] Q(s_0,a_0) = Q(s_0,a_0) + \alpha [R_1 + \gamma Q(s_1,a_1) - Q(s_0,a_0)] Q(s0,a0)=Q(s0,a0)+α[R1+γQ(s1,a1)Q(s0,a0)]

6 采取动作 a 1 a_1 a1,转到状态 s 2 s_2 s2,获得奖励 R 2 R_2 R2(这里和第3步一致了,开始循环)

第5步更新时所需要的五个参数正是sarsa名称的由来。

2.7 Q-learning

同样直接看流程吧

1 初始化状态为 s 0 s_0 s0,初始化 Q Q Q表格

2 根据 Q Q Q表格,使用 ϵ − g r e e d y \epsilon - greedy ϵgreedy法选择动作 a 0 a_0 a0

3 采取动作 a 0 a_0 a0,转到状态 s 1 s_1 s1,获得奖励 R 1 R_1 R1

4 使用 s 0 s_0 s0 a 0 a_0 a0 R 1 R_1 R1 s 1 s_1 s1 a ′ a' a更新 Q Q Q表格,其中 a ′ = a r g m a x a Q ( s 1 , a ) a'=\underset{a}{argmax}Q(s_1,a) a=aargmaxQ(s1,a)

更新公式为

Q ( s 0 , a 0 ) = Q ( s 0 , a 0 ) + α [ R 1 + γ Q ( s 1 , a ′ ) − Q ( s 0 , a 0 ) ] Q(s_0,a_0) = Q(s_0,a_0) + \alpha [R_1 + \gamma Q(s_1,a') - Q(s_0,a_0)] Q(s0,a0)=Q(s0,a0)+α[R1+γQ(s1,a)Q(s0,a0)]

5 根据 Q Q Q表格,使用 ϵ − g r e e d y \epsilon - greedy ϵgreedy法选择动作 a 1 a_1 a1,这里和第2步一致了,开始循环)

再解释一下前面提过的所谓保守和冒险。

想象一个走迷宫的场景,训练目的是尽可能快的到达终点,因此每走一步都会有一个负分的奖励,此外还设置了陷阱,掉到陷阱会有极大的负奖励。

假设从起点到终点有两条路,一条路较短,但需要绕过一些陷阱,另一条路没有陷阱,但距离较长。

Sarsa算法由于学习和交互是同一套策略,会将风险考虑进来,也就更倾向于选择较长的那条路;Q-learning将学习和交互分开,学习的是最优的策略,交互时却有一定的随机性,因此Q-learning更倾向于选择较短的那条路(即使它可能会经常不小心掉进陷阱)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值