若需观看机器人系列相关博客,请劳驾至:【足式机器人无死角系列之-【强化学习基础-通用】、【仿真及训练环境】、【强化学习】:isaac-gym 与 isaac-lab 从零开始
郑重声明:该系列博客为本人 ( W e n h a i Z h u ) 独家私有 , 禁止转载与抄袭 , 首次举报有谢 , 若有需请私信授权! \color{red}郑重声明:该系列博客为本人(WenhaiZhu)独家私有,禁止转载与抄袭,首次举报有谢,若有需请私信授权! 郑重声明:该系列博客为本人(WenhaiZhu)独家私有,禁止转载与抄袭,首次举报有谢,若有需请私信授权!
回顾: 到目前为止,对于时序差分(Temporal-Difference) 算法的讲解可以说是十分全面了,该篇博客主要是对这些算法进行总结,分析他们之间的共同点与差异点。且再次回顾一下这一系列算法在解决一个什么样的数学问题。 |
本系列博客链接为: {\color{blue}本系列博客链接为:} 本系列博客链接为:【强化学习理论基础-通用】(01)从零开始白话给你讲,简单推导公式,深刻理解,一眼万年!:https://blog.youkuaiyun.com/weixin_43013761/article/details/143168169
本博客编写于: 20250105 ,台式机为 u b u n t u 20.04 , 3090 G e F o r c e R T X 显存 24 G { \color{purple} 本博客编写于:20250105,台式机为 ubuntu 20.04,3090 GeForce RTX 显存24G} 本博客编写于:20250105,台式机为ubuntu20.04,3090GeForceRTX显存24G:与你现在的代码,或者环境等存在一定差异也在情理之中,故切勿认为该系列博客绝对正确,且百密必有一疏,若发现错误处,恳请各位读者直接指出,本人会尽快进行整改,尽量使得后面的读者少踩坑,评论部分我会进行记录与感谢,只有这样,该系列博客才能成为精品,这里先拜谢各位朋友了。
文末正下方中心提供了本人 联系方式, 点击本人照片即可显示 W X → 官方认证,请备注 强化学习 。 {\color{blue}{文末正下方中心}提供了本人 \color{red} 联系方式,\color{blue}点击本人照片即可显示WX→官方认证,请备注\color{red} 强化学习}。 文末正下方中心提供了本人联系方式,点击本人照片即可显示WX→官方认证,请备注强化学习。
一、前言
首先需要回顾一下,时序差分(Temporal-Difference)这一些列算法都讲解了那些内容,因为该系列博客的内容确实太多,若不回顾一下,个人感觉知识点可能串不起来。
首先通过 【强化学习理论基础-通用】(22)从零开始白话给你讲[数学原理]:时序差分(Temporal-Difference) - state values(基础版本) 之 公式推导,对 TD-SV 算法进行了推导,其主要基于状态价值的贝尔曼公式。
了解时序差分的算法基本原理之后,通过 【强化学习理论基础-通用】(24)从零开始白话给你讲[数学原理]:时序差分(Temporal-Difference) - action values(Sarsa),从行为价值出推导出了最简版本的 Sarsa 算法,该算法特点是使用五个数据 { s t , a t , r t + 1 , s t + 1 , a t + 1 } \{s_t,a_t,r_{t+1},s_{t+1},a_{t+1}\} {st,at,rt+1,st+1,at+1} 即可完成一次迭代优化。
后续发现 Sarsa 有改进空间,故 【强化学习理论基础-通用】(25)从零开始白话给你讲[数学原理]:时序差分(Temporal-Difference) Expected Sarsa 搭配 Epsilon Greedy 学习了 Expected Sarsa 算法,原理也比较简单,就价值评估策略迭代过程中 E [ q k ( s t + 1 , A t + 1 ) ] \mathbb{E}[q_{k}(s_{t+1}, A_{t+1})] E[qk(st+1,At+1)] 代替了 q k ( s t + 1 , a t + 1 ) q_{k}(s_{t+1}, a_{t+1}) qk(st+1,at+1)。这样迭代优化过程相对来说更加稳定,不过需要知道 A t + 1 A_{t+1} At+1 动作被执行的概率分布,所以依赖于 Epsilon Greedy 才能正常运转。
接着在 【强化学习理论基础-通用】(26)从零开始白话给你讲[数学原理]:时序差分(Temporal-Difference) n-step Sarsa,极端体现(MC-蒙特卡洛) 中推导出了 n-step Sarsa 算法,且证明 Sarsa 与 MC-蒙特卡洛 分别是该算法在 n = 1 n=1 n=1 与 n → ∞ n \to \infty n→∞ 时的极端表现形式。
然后通过 【强化学习理论基础-通用】(27)从零开始白话给你讲[数学原理]:时序差分(Temporal-Difference) Q-learning 初探,on-policy 与 off-policy 详解,初步引入 Q-learning 算法,且通过图示的方式对 on-policy 算法进行示例讲解。
最后为了加深对 Q-learning 算法以及 on-policy 与 off-policy 的了解,通过 【强化学习理论基础-通用】(28)从零开始白话给你讲[数学原理]:时序差分算法 --> Q-learning 伪代码(on-policy 与 off-policy),示例对比说明 ,使用 Q-learning 算法同时实现 on-policy 与 off-policy,形成鲜明对比,以便深入了解 on-policy 与 off-policy 区别。
要点: 以上推导的算法:TD-SV、Sarsa、Expected Sarsa、 n-step Sarsa 以及 Q-learning,其都是动作决策策略价值评估算法。其本质主要作用是评估一个动作决策策略 π 的好坏,辅助或指导动作决策策略 π 的优化方向。 即该系列算法只负责策略评估,而不负责策略改善 |
二、统一形式
其实TD算法有一个统一的形式,无论 TD-SV、Sarsa、Expected Sarsa、 n-step Sarsa 以及 Q-learning 都可以使用一个统一形式进行表示,如下所示: q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − q ˉ t ] (01) \color{blue} \tag{01} q_{t+1}\left(s_{t}, a_{t}\right)=q_{t}\left(s_{t}, a_{t}\right)-\alpha_{t}\left(s_{t}, a_{t}\right)\left[q_{t}\left(s_{t}, a_{t}\right)-{\color{red} \bar{q}_{t}}\right] qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−qˉt](01)通过前面的学习,已经很熟悉 q ˉ t \color{red} \bar{q}_{t} qˉt 就是迭代优化过程中的目标,该值越稳定,那么收敛过程就越稳定,该值波动越大,则收敛过程波动越大,针对于算法不同 q ˉ t \color{red} \bar{q}_{t} qˉt 表现形式则不同:
上图给出来的是一个汇总,各个细节以及推导过程这里就不再赘述,若是忘记的朋友可以回顾一下前面对应博客。不过这里需要对 Monte Carlo 提及一下,首先要知道其评估的价值为状态价值,理想状态下状态价值计算方式如下:
v t ( S t ) = E [ R t + 1 + R t + 2 + ⋯ ] (02) \color{green} \tag{02} v_t(S_t)=\mathbb{E}[R_{t+1}+R_{t+2}+\cdots] vt(St)=E[Rt+1+Rt+2+⋯](02) 当进行一次经验轨迹采样时,计算的他的状态价值为: v t ( s t ) = g t = r t + 1 + r t + 1 + ⋯ (03) \color{green} \tag{03} v_t(s_t)=g_t=r_{t+1}+r_{t+1}+\cdots vt(st)=gt=rt+1+rt+1+⋯(03) 显然(02)式为理想形式,而(03)式为偏差形式,不过在 【强化学习理论基础-通用】(26)从零开始白话给你讲[数学原理]:时序差分(Temporal-Difference) n-step Sarsa,极端体现(MC-蒙特卡洛) 中谈及到 MC-蒙特卡洛 算法时详细说明过,当回合(轨迹经验数据)较多时,使用 RM 虽然迭代进行优化, v t ( s t ) v_t(s_t) vt(st) 会在 v t ( S t ) v_t(S_t) vt(St) 附近波动,另外 n-step Sarsa 极端 n → N = ∞ n \to N=\infty n→N=∞ 形式如下所示:
q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − ( r t + 1 + γ r t + 2 + ⋯ + γ N − 1 r t + N ) ] (04) \color{green} \tag{04} \begin{aligned} q_{t+1}\left(s_{t}, a_{t}\right)= q_{t}\left(s_{t}, a_{t}\right) & -\alpha_{t}\left(s_{t}, a_{t}\right)\left[q_{t}\left(s_{t}, a_{t}\right)-{\color{blue}\left(r_{t+1}+\gamma r_{t+2}+\cdots+\gamma^{N-1} r_{t+N}\right)}\right] \end{aligned} qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−(rt+1+γrt+2+⋯+γN−1rt+N)](04)若想完全转换为 MC-蒙特卡洛,还需令: q t ( s t , a t ) = 0 α t ( s t , a t ) = 1 (05) \color{green} \tag{05} q_t(s_t,a_t)=0~~~~~~~~~~~~~~~~~~~~\alpha_{t}(s_t,a_t)=1 qt(st,at)=0 αt(st,at)=1(05)这样(04)式就装换成下式,求与(03)式是一致的:
q ( s t , a t ) = r t + 1 + γ r t + 2 + ⋯ + γ N − 1 r t + N (06) \color{green} \tag{06} q(s_t,a_t)=r_{t+1}+\gamma r_{t+2}+\cdots+\gamma^{N-1} r_{t+N} q(st,at)=rt+1+γrt+2+⋯+γN−1rt+N(06)
三、数学问题
除了了解上述 TD-SV、Sarsa、Expected Sarsa、 n-step Sarsa 以及 Q-learning 算法迭代过程中的统一形式,另外还需要深刻理解每个算法在数学上是求解什么问题,比如说期望、贝尔曼公式、亦或者贝尔曼最优公式等等:
上式各个算法在数学上的期望形式,实际就是(01)式迭代过程中
q
ˉ
t
\color{red} \bar{q}_{t}
qˉt 的理想形式,随着迭代此时的增加,价值评估策略
q
t
+
1
q_{t+1}
qt+1 会越来越逼近上表格中
q
π
q_{\pi}
qπ。需要注意的一点是,除了 Q-learning 算法是解决贝尔曼最优公式问题外,其余算法都是解决常规的贝尔曼公式。另外需要注意的一点是,上述价值期望都是基于动作价值,而非状态价值,不过 Monte Carlo 算法特殊一点,其等价于状态价值。
四、额外回顾
这里再额外的回顾一下 【强化学习理论基础-通用】(22)从零开始白话给你讲[数学原理]:时序差分(Temporal-Difference) - state values(基础版本) 之 公式推导,该篇博客开通部分,介绍了三个例子,其都是对 RM 算法的应用,最终知道若想求得一个期望: w = E [ R + γ v ( X ) ] (07) \color{green} \tag{07} w=\mathbb{E}[R+\gamma v(X)] w=E[R+γv(X)](07)若不知道随机变量的概率分布,但是可以进行大量实际采样,则可以通过如下迭代公式: w k + 1 = w k − α k [ w k − ( r k + γ v ( x k ) ) ] (11) \color{blue} \tag{11} w_{k+1}=w_{k}-\alpha_{k}\left[w_{k}-\left(r_{k}+\gamma v\left(x_{k}\right)\right)\right] wk+1=wk−αk[wk−(rk+γv(xk))](11)求的 w w w,因为在迭代次足够多,即 k + 1 → ∞ {k+1} \to \infty k+1→∞ 时, w k + 1 w_{k+1} wk+1 会趋向于 w = E [ R + γ v ( X ) ] w=\mathbb{E}[R+\gamma v(X)] w=E[R+γv(X)]。后续一系列求解随机变量期望相关问题,都是利用该公式,或者其推广公式求解的。
五、预告
有的朋友可能有注意到,该系列博客博客学习到现在没有很正式引入深度学习与神经网络,虽然略有提及,但是没有深入的进行讨论,比如说如何设计,如何使用,为何这样设计等等。另外还有一点就是,无论贝尔曼公式、MC(蒙特卡洛)、Epsilon Greedy、Sarsa、Q-learning 等算法,以及迷宫游戏示例,其都是基于离散系统的。比如说状态、动作这两个核心量都是离散的。这种离散系统可以通过表格方式来表示 状态-动作 对,下面一篇博客会进行详细分析。
接下来会继续介绍时序差分(Temporal-Difference) 相关算法,不过是基于连续系统,而非离散,另外还会比较正式的引入神经网络,将深刻领悟到深度学习在强化学习中的地位与作用。