分享

强化学习(五)基于时序差分法 TD 的求解

 netouch 2024-09-16 发布于北京

在《强化学习(四)基于蒙特卡罗算法 Monte-Calo 的求解》的文末中提到,利用蒙特卡罗算法采样近似地求解强化学习问题,尽管该方法非常灵活,适用于连续和非连续问题,以及不需要知道环境的状态转化概率模型,但该方法要基于完整的状态序列,如果无法获取完整的状态序列,蒙特卡罗算法将不适用。而本文将介绍的时序差分法(Temporal-Difference,TD)则是一种可以不使用完整状态序列求解强化学习问题的方法

1. 时序差分法简介

时序差分法(Temporal-Difference,TD)和蒙特卡罗法都是不依赖于模型的求解方法,但前者相比后者的使用条件更加宽松,提高了算法的适应性但容易损失估计价值的准确性。

如下再回顾一遍,免模型的强化学习问题的两个基本问题:

  1. 预测问题(策略评估)。给定强化学习的状态集 S S S,动作集 A A A,采取动作的即时奖励 R R R,奖励衰减因子 γ \gamma γ,以及给定策略 π \pi π,在这些条件下(状态转移概率 P P P 未知),求解策略 π \pi π 的状态价值函数 v ( π ) v(\pi) v(π);
  2. 控制问题(策略迭代)。给定强化学习的状态集 S S S,动作集 A A A,采取动作的即时奖励 R R R,奖励衰减因子 γ \gamma γ,探索率 ϵ \epsilon ϵ,求解最优的状态价值函数 v ∗ v_* v 和最优策略 π ∗ \pi_* π

对于蒙特卡罗方法而言,迭代动作价值函数 Q Q Q 是通过平均所有采样的完整序列中出现的所有状态动作对的价值,而对于每个完整状态序列,在状态 s s s 下动作 a a a 的价值等于做出该动作后的即时奖励加上后续的期望状态价值,因此,每次迭代计算状态动作对的估计价值,需要先计算状态动作的后续状态价值 G t G_t Gt,可以通过奖励衰减因子 γ \gamma γ,后续每个动作的即时奖励 R t R_t Rt,以及结束状态的状态价值,通过如下式子倒推得到:

G t = R t + γ R t + 1 + γ 2 R t + 2 . . . γ T − t R T G_t=R_t+\gamma R_{t+1}+\gamma^2R_{t+2}...\gamma^{T-t}R_T Gt=Rt+γRt+1+γ2Rt+2...γT−tRT

这里有些资料会写成 G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 . . . γ T − t − 1 R T G_t=R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}...\gamma^{T-t-1}R_T Gt=Rt+1+γRt+2+γ2Rt+3...γT−t−1RT,认为这个即时奖励是做出动作之后获得的,因此下标将奖励视作是下一阶段的,而本人习惯认为即时奖励是当前阶段的,两种写法下标有所不同,但式子含义相同。

而时序差分法TD,顾名思义,就是通过延申部分状态序列的差值信息来预测(近似)未知的信息。对于不完整状态序列,由于不确定结束状态是什么,因此也不知道各个状态与结束状态之间的距离,无法像蒙塔卡罗方法那样,从结束状态倒推出各个状态的价值。时序差分法就是在这样的背景下,采用连续状态之间的差分进行估计出各个状态价值,递推关系如下:

G t = R t + γ v ( S t + 1 ) G_t=R_t+\gamma v(S_{t+1}) Gt=Rt+γv(St+1)

这里有一个关键点是,如果在不完整序列当中,某状态没有后续状态,则将该状态的后续状态估计价值设为 0 0 0。因此基于该式子,可以得到各个不完整状态序列中的状态动作对的估计价值。另一个与蒙塔卡罗方法有差异的地方是,蒙特卡罗方法由于采样的都是完整的状态序列,因此可以明确每种状态序列下必然出现的状态次数,最终在计算状态的平均估计价值时,可以准确地知道状态的所有出现时价值的平均值。然而对于不完整状态序列,统计状态的出现次数地意义并不大,而是通过学习了率 α \alpha α 来替代蒙特卡罗方法中的 1 / N 1/N 1/N,值迭代式子如下:

v ( s ) = v ( s ) + α ( G t − v ( s ) ) Q ( s , a ) = Q ( s , a ) + α ( G t − Q ( s , a ) ) v(s)=v(s)+\alpha \left( G_t-v(s)\right)\\ Q(s,a)=Q(s,a)+\alpha (G_t-Q(s,a)) v(s)=v(s)+α(Gtv(s))Q(s,a)=Q(s,a)+α(GtQ(s,a))

总的而言,时序差分法为了支持不完整状态序列的计算,采用了前后连续状态价值之间关系来计算各个状态价值;以及用 α \alpha α 替代了状态出现次数的倒数。接着将会以一个简单的案例,演示时序差分法的计算过程。

2. 利用时序差分法求解最优价值函数

时序差分法 TD 基于的是状态序列当中连续的状态的估计价值之间的关系迭代计算的。对于每个状态序列而言,最后的状态并不确定是否是结束状态,即使在所有的状态序列中都是以某个状态作为结尾,使用的也是 TD 公式。从这里可以看出,时序差分的方法相比蒙特卡罗方法的灵活性更高,不需要确认状态序列是否为完整序列都可以直接计算,因此目前绝大部分的强化学习以及深度强化学习的求解问题的方法都是以时序差分的思想为基础的。

2.1 策略评估(预测)

2.1.1 单步时序差分

接下来先通过一个策略评估的简单案例对比 MC 方法和 TD 方法之间的区别,具体案例如下:假设强化学习的状态空间有 { A , B , C , D } \{ A,B,C, D \} { A,B,C,D} 三个状态,基于已知策略,模拟采样获得以下若干完整序列:

  1. A 2 → B 1 → C 1 → D 1 A_2\rightarrow B_1\rightarrow C_1\rightarrow D_1 A2B1C1D1
  2. B 0 → C 2 → D 2 B_0\rightarrow C_2 \rightarrow D_2 B0C2D2
  3. A 3 → C 0 → D 0 A_3\rightarrow C_0 \rightarrow D_0 A3C0D0

其中,状态的下标表示该状态下,基于已有策略采取动作之后获得的即时奖励。先基于蒙特卡罗方法计算,每个状态序列中状态的收获通过: G t = R t + γ R t + 1 + γ 2 R t + 2 . . . γ T − t R T G_t=R_t+\gamma R_{t+1}+\gamma^2R_{t+2}...\gamma^{T-t}R_T Gt=Rt+γRt+1+γ2Rt+2...γT−tRT 计算后,再求平均,令 γ = 1 \gamma=1 γ=1,可得:

v ( A ) = 4 , v ( B ) = 3.5 , v ( C ) = 2 , v ( D ) = 1 v(A)=4,v(B)=3.5,v(C)=2,v(D)=1 v(A)=4,v(B)=3.5,v(C)=2,v(D)=1。

基于时序差分法计算,每个状态的收获是根据后续状态的预估价值计算的,先计算没有后续状态的状态 D D D,可得 v ( D ) = 1 v(D)=1 v(D)=1,接着按照式子 G t = R t + γ v ( S t + 1 ) G_t=R_t+\gamma v(S_{t+1}) Gt=Rt+γv(S

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多