[强化学习] 时序差分学习

写在前面

本文主要为学习sutton书中《时序差分学习》章节整理而来。

一、引言

1、蒙特卡洛方法回顾

(1)预测问题

蒙特卡洛的目标是根据策略 π \pi π采样轨迹序列 v π ( s ) v_\pi(s) vπ(s) S 1 , A 1 , R 2 , . . . , S k ∼ π S_1,A_1,R_2,...,S_k \sim \pi S1,A1,R2,...,Skπ

价值函数: v π ( s ) = E ( G t ∣ S t = s ) v_\pi(s) = \mathcal{E}(G_t|S_t=s) vπ(s)=E(GtSt=s)

累积奖励 G t G_t Gt G t = R t + 1 + γ R t + 2 + . . . + γ T − 1 R T G_t = R_{t+1} + \gamma R_{t+2} + ... + \gamma^{T-1}R _T Gt=Rt+1+γRt+2+...+γT1RT

蒙特卡洛策略评估–使用经验奖励的平均来代替期望奖励 V π ( s ) ≈ a v e r a g e ( G t ) V_\pi(s) \approx average(G_t) Vπ(s)average(Gt)(s.t. S t = s S_t=s St=s)

(2)控制问题

蒙特卡洛控制问题则分为两类:on-policy和off-policy。

off-policy:采样轨迹序列的策略和评估/更新的策略相同,如重要性采样算法。
on-policy:采样轨迹序列的策略和评估/更新的策略不同,如 ϵ \epsilon ϵ-greedy算法。

2、蒙特卡洛方法存在的问题

虽然蒙特卡洛可以解决预测和控制的问题,但是蒙特卡洛方法存在以下问题:

蒙特卡洛需要经历一个完整的episode才能够更新价值函数,但一个episode可能耗时过长,甚至有些时候根本无法获取到一个完整的序列。

因此,我们引入时序差分学习(TD)来解决上述问题,与蒙特卡洛方法类似,时序差分学习也主要包括2个问题:预测问题和控制问题。预测问题即求解在给定策略下的价值函数,控制问题即找到一个好的策略来最大化未来的奖励。时序差分学习的特点是:

  • 时序差分学习可以直接从episode的经验中学习。
  • 时序差分学习也是model-free的方法,这点和蒙特卡洛方法一样。
  • 时序差分学习可以从不完整的episode中学习。

2、时序差分预测算法

时序差分预测算法的目标:在策略 π \pi π下,利用episode学习状态价值函数 v π v_\pi vπ

下面通过对比首次访问MC方法来讲解时序差分学习方法:

首次访问MC方法:根据每个episode的实际收益更新状态价值函数: V ( S t ) ← V ( S t ) + α ( G t − V ( S t ) ) V(S_t) \leftarrow V(S_t) + \alpha(\textcolor{red}{G_t} - V(S_t)) V(St)V(St)+α(GtV(St))。其中, α \alpha α是用来控制“保留”历史episode信息的参数。

时序差分学习:根据估计的奖励更新状态价值函数 V ( S t ) ← V ( S t ) + α ( R t + 1 + γ V ( S t + 1 ) − V ( S t ) ) V(S_t) \leftarrow V(S_t) + \alpha(\textcolor{red}{R_{t+1} + \gamma V(S_{t+1})} - V(S_t)) V(St)V(St)+α(Rt+1+γV(St+1)V(St))。其中, R t + 1 + γ V ( S t + 1 ) R_{t+1} + \gamma V(S_{t+1}) Rt+1+γV(St+1)被称为TD目标, δ t = R t + 1 + γ V ( S t + 1 ) − V ( S t ) \delta_t=R_{t+1} + \gamma V(S_{t+1})-V(S_t) δt=Rt+1+γV(St+1)V(St)被称为TD误差。

所以,整体来看,MC算法必须等到一个episode结束之后才能学习,而TD算法在每一步都能学习。MC算法与TD算法比较如下:

  • TD算法能够利用不完整的序列学习,MC算法只能利用完整的序列学习。
  • TD算法能在一个没有终止的环境中学习,MC算法只能用在有终止条件的环境中。

从偏差和方差的角度来说:

MC算法中 G t = R t + 1 + γ R t + 2 + . . . + γ T − 1 R T G_t = R_{t+1} + \gamma R_{t+2} + ... + \gamma^{T-1}R_T Gt=Rt+1+γRt+2+...+γT1RT v π ( S t ) v_\pi(S_t) vπ(St)的无偏估计;真实的TD目标 R t + 1 + γ π V ( S t + 1 ) R_{t+1} + \gamma_\pi V(S_{t+1}) Rt+1+γπV(St+1)也是 v π ( S t + 1 ) v_\pi(S_{t+1}) vπ(St+1)的无偏估计。然而,TD通过Bootstrapping的方法估计TD目标 R t + 1 + γ V ( S t + 1 ) R_{t+1} + \gamma V(S_{t+1}) Rt+1+γV(St+1),即 V ( S t + 1 ) V(S_{t+1}) V(St+1)是估计出来的,不是真实的,因此TD目标是 v π ( S t ) v_\pi(S_t) vπ(St)的有偏估计。但是,TD目标相较于 G t G_t Gt具有较低的偏差,原因为: G t G_t Gt取决于多个episode,因此每次采样波动较大;TD目标只取决于一个episode。单次采样波动较小。

MC算法和TD算法的优缺点总结如下:

  • MC算法偏差为0,但方差较高,其对初值不敏感,但是容易理解。
  • TD算法偏差较高,方差较低,其对初值敏感,但是比MC算法更高效。

3、时序差分控制算法

在MC算法中,on-policy策略的算法为 ϵ \epsilon ϵ-greedy,off-policy策略的算法为重要性采样。在TD算法中,典型的on-policy的算法是Sarsa,off-policy算法是Q-learning。

(1)Sarsa算法

Sarsa算法的Q函数更新公式为:

Q ( S , A ) = Q ( S , A ) + α ( R + γ Q ( S ′ , A ′ ) − Q ( S , A ) ) Q(S,A)=Q(S,A)+\alpha(R + \gamma Q(S',A') - Q(S,A)) Q(S,A)=Q(S,A)+α(R+γQ(S,A)Q(S,A))

其具体流程为:

一个Agent处于某个状态 S S S,根据现有策略产生行为 A A A,与环境交互后,环境收到个体的行为后产生即时奖励 R R R并进入后续状态 S ′ S' S。在状态 S ′ S' S时,再次遵循现有的策略,产生行为 A ′ A' A,根据当前的状态行为价值函数,得到 ( S ′ , A ′ ) (S', A') (S,A)的价值 Q Q Q,根据 Q Q Q值更新前一个状态 S S S的行为价值函数 (行为策略和目标策略相同)

(2)Q-learning算法

MC的重要性采样价值更新公式为:

V ( S t ) ← V ( S t ) + α ( π ( A t ∣ S t ) μ ( A t ∣ S t ) ( R t + 1 + γ V ( S t + 1 ) ) − V ( S t ) ) V(S_t) \leftarrow V(S_t) + \alpha(\frac{\pi(A_t|S_t)}{\mu(A_t|S_t)}(R_{t+1} + \gamma V(S_{t+1})) - V(S_t)) V(St)V(St)+α(μ(AtSt)π(AtSt)(Rt+1+γV(St+1))V(St))

TD也可以借助类似的思想, 与MC不同的是,MC需要一个完整的episode,因此需要多次采样;而TD每一步都能进行更新,因此每次只需要一次采样。

我们同时考虑当前行为策略 μ ( ⋅ ∣ S t ) \mu(\cdot | S_t) μ(St)产生的动作 A ′ A' A及目标策略 π ( ⋅ ∣ S t ) \pi(\cdot | S_t) π(St),则更新公式为:

Q ( S t , A t ) ← Q ( S t , A t ) + α ( R t + 1 + γ Q ( S t + 1 , A ’ ) − Q ( S t , A t ) ) Q(S_t, A_t) \leftarrow Q(S_t, A_t) + \alpha(R_{t+1} + \gamma Q(S_{t+1}, A’) - Q(S_t, A_t) ) Q(St,At)Q(St,At)+α(Rt+1+γQ(St+1A)Q(St,At))

Q-leanring中当前的行为策略是 ϵ \epsilon ϵ-greedy策略;Q-learning中的目标策略是贪婪策略,即 π ( S t + 1 ) = arg max ⁡ a ′ Q ( S t + 1 , a ′ ) \pi(S_{t+1}) = \argmax_{a'}Q(S_{t+1}, a') π(St+1)=aargmaxQ(St+1,a)。于是,Q-learning的TD目标可以简化为:

R t + 1 + γ Q ( S t + 1 , A ′ ) = R t + 1 + γ Q ( S t + 1 , arg max ⁡ a ′ Q ( S t + 1 , a ′ ) ) = R t + 1 + max ⁡ a ′ γ Q ( S t + 1 , a ′ ) \begin{aligned} &R_{t+1} + \gamma Q(S_{t+1}, A') \\ =&R_{t+1} + \gamma Q(S_{t+1}, \argmax_{a'}Q(S_{t+1}, a')) \\ =&R_{t+1} + \max_{a'} \gamma Q(S_{t+1}, a') \end{aligned} ==Rt+1+γQ(St+1,A)Rt+1+γQ(St+1,aargmaxQ(St+1,a))Rt+1+amaxγQ(St+1,a)

Q-learning的具体流程为:

在状态 S S S时,智能体根据 ϵ \epsilon ϵ-greedy选择动作 A A A,进入到状态 S ′ S' S。而后,在状态 S ′ S' S时,使用greedy算法选择动作 A ′ A' A来更新价值函数。(注意:更新价值函数Sarsa使用的是 ϵ \epsilon ϵ-greedy算法。而Q-learning中行为策略和目标策略不同

4、总结

  • 时序差分属于model-free的方法,即不需要知道转移矩阵,可以直接从经验中学习。
  • 相较于蒙特卡洛方法:时序差分不需要完整的episode就可以学习;效率较高;有偏估计但方差较低。

你可能感兴趣的:(Reinforcement,Learning)