【强化学习理论基础-通用】(31)从零开始白话给你讲[数学原理]:值函数近似,目标函数介绍,状态概率分布,及状态转移矩阵回顾

若需观看机器人系列相关博客,请劳驾至:【足式机器人无死角系列之-【强化学习基础-通用】、【仿真及训练环境】、【强化学习】:isaac-gym 与 isaac-lab 从零开始

郑重声明:该系列博客为本人 ( W e n h a i Z h u ) 独家私有 , 禁止转载与抄袭 , 首次举报有谢 , 若有需请私信授权! \color{red}郑重声明:该系列博客为本人(WenhaiZhu)独家私有,禁止转载与抄袭,首次举报有谢,若有需请私信授权! 郑重声明:该系列博客为本人(WenhaiZhu)独家私有,禁止转载与抄袭,首次举报有谢,若有需请私信授权!

回顾: 通过上一篇博客对值函数近似有了一定了解, 知道值函数近似就是空间与精度之间进行衡量取舍的算法,参数存储越多,占用内存空间越大,精度越高;参数存储越少,占用内存空间越少,但是精度可能不达标。具体如何取舍还得根据实际情况而定。该篇博客会在这个基础上,再进行一些细节分析。

本系列博客链接为: {\color{blue}本系列博客链接为:} 本系列博客链接为:【强化学习理论基础-通用】(01)从零开始白话给你讲,简单推导公式,深刻理解,一眼万年!:https://blog.youkuaiyun.com/weixin_43013761/article/details/143168169

本博客编写于: 20250112 ,台式机为 u b u n t u 20.04 , 3090 G e F o r c e R T X 显存 24 G { \color{purple} 本博客编写于:20250112,台式机为 ubuntu 20.04,3090 GeForce RTX 显存24G} 本博客编写于:20250112,台式机为ubuntu20.043090GeForceRTX显存24G:与你现在的代码,或者环境等存在一定差异也在情理之中,故切勿认为该系列博客绝对正确,且百密必有一疏,若发现错误处,恳请各位读者直接指出,本人会尽快进行整改,尽量使得后面的读者少踩坑,评论部分我会进行记录与感谢,只有这样,该系列博客才能成为精品,这里先拜谢各位朋友了。

文末正下方中心提供了本人 联系方式, 点击本人照片即可显示 W X → 官方认证,请备注 强化学习 。 {\color{blue}{文末正下方中心}提供了本人 \color{red} 联系方式,\color{blue}点击本人照片即可显示WX→官方认证,请备注\color{red} 强化学习}。 文末正下方中心提供了本人联系方式,点击本人照片即可显示WX官方认证,请备注强化学习

一、前言

同通过上一篇博客,了解到 值函数近似 \color{purple} \text{值函数近似} 值函数近似 (value function  \color{purple} \text{(value function } (value function  approximate) \color{purple} \text{approximate)} approximate)其引入的主要目的,是处理以下两个问题:

问题1: 如何使用较少的存储空间(内存),记录大量(或无限)的状态价值或者行为价值。

问题2: 观测空间与动作空间连续情况应该如何处理,特别是与连续时间序列相关时。

虽然值函数近似能够解决上诉问题,但是会带来精度下降这个缺点。总的来说,值函数近似就是空间与精度之间进行衡量取舍的算法,参数存储越多,占用内存空间越大,精度越高;参数存储越少,占用内存空间越少,但是精度可能不达标。具体如何取舍还得根据实际情况而定。其还有一个 额外优点: \color{purple} 额外优点: 额外优点:对被访问的状态拟度进行优化时,会传播到其附近的状态,也得到一定的优化,不过距离该状态越远被影响概率越低,甚至没有影响。且能够对从来没有访问过的状态价值进行一定程度上的优化与改善

了解为什么要使用值函数近似之后,就不会那么困惑了,毕竟学习这些算法的目的就是要知道其解决什么问题,而不是仅仅知道其推导过程。下面就来看看,值函数近似是如何进行拟合近似的。

二、目标讨论

推导之前,来讨论一下值函数近似的目标是什么,其实在上一篇博客已经有所提及,不过为了该篇博客的完整性,同时加深印象,这里再进行一次梳理。

拟合的目标,或者说过程就是希望通过对参数 w w w 的调整,使得一个函数 v ^ ( s , w ) \hat{v}(s, w) v^(s,w) 去代替或者说逼近 v ( s ) v(s) v(s),若是该函数对于任意状态 s s s 都有 v ^ ( s , w ) = v ( s ) \hat{v}(s, w)=v(s) v^(s,w)=v(s),通常情况下无法做到,毕竟鱼与熊掌不可兼得。一般来说,是一个近似关系,如下所示:
v ^ ( s , w ) ≈ v ( s ) ,            s ∈ S (01) \color{green} \tag{01} \hat{v}(s, w)\approx v(s),~~~~~~~~~~s\in S v^(s,w)v(s),          sS(01)值得注意的是,当算法建模或者实现方式确定时,只有通过调增参数 w w w 使得拟合效果更优。本质上来说,这就是一个价值评估( policy evaluation \color{purple}\text{policy evaluation} policy evaluation) 问题,因为这里拟合的目标是状态价值。不过后续会对其进行拓展,应用到策略改善 ( policy improvement \color{purple}\text{policy improvement} policy improvement),对动作决策策略进行拟合。

与前面学习 时序差分(Temporal-Difference) 算法系列类似,下面的推导从最简单的状态价值开始,因为该拟合属于一维情况,较为简单。然后再拓展到动作价值,动作价值属于二情况,稍微复杂一下。然后再把 值函数近似 应用到前面学习到的 Sarsa、Expected Sarsa、 n-step Sarsa 以及 Q-learning 算法,最后还会讨论个一个万众瞩目的算法 DQN(Deep Q-learning),该处会正式引入深度学习,不过这些都是后话了。

回到该篇博客需要讲解的内容,核心目标就是如何找到合适的 w w w,使得值函数 v ^ ( s , w ) \hat{v}(s, w) v^(s,w) v ( s ) v(s) v(s) 的拟合效果最好。首先来说需要定义一个 目标函数 \color{red} 目标函数 目标函数,接着就是去优化这个目标函数。

三、目标函定义

首先来说,目标函数就是希望希望拟合效果最好,即对于任意 s ∈ S s\in S sS,尽量满足 v ^ ( s , w ) = v ( s ) \hat{v}(s, w)=v(s) v^(s,w)=v(s),所以优化的目标函数定义如下所示:
J ( w ) = 1 2 E [ ( v π ( S ) − v ^ ( S , w ) ) 2 ] (02) \color{green} \tag{02} J(w)=\frac{1}{2}\mathbb{E}\left[\left(v_{\pi}(S)-\hat{v}(S, w)\right)^{2}\right] J(w)=21E[(vπ(S)v^(S,w))2](02)若是熟悉前面梯度下降系列博客博客,比如:【强化学习理论基础-通用】(20)从零开始白话给你讲[数学原理]:随机梯度下降系列:BGD、SGD、MBGD,深入探讨与对比,那么应该很容易理解上式的目的。总的来说,就是期望所有状态下拟合的状态价值都趋近于真值。上式中大写的 S S S 表示随机变量,目的也是求解与这个随机变量对应状态价值相关的期望。另外,上式还有一个 1 2 \frac{1}{2} 21,其主要是为了后续求导方便。

1.uniform distribution

目标函数 J ( w ) J(w) J(w) 宏观上来理解就是一个关于 w w w 的误差函数,优化的目标就是希望找到合适的参数 w w w,使得该误差值越小越好。上式为期望的形式,根据大数定律,其等价于采样大量的 s s s 样本数据,然后求所有样本数据 ( v π ( s ) − v ^ ( s , w ) ) 2 \left(v_{\pi}(s)-\hat{v}(s, w)\right)^{2} (vπ(s)v^(s,w))2 的均值。通常来说这里的平均,指的是均匀分配:
J ( w ) = 1 2 ∗ E [ ( v π ( S ) − v ^ ( S , w ) ) 2 ] = 1 2 ∗ 1 ∣ S ∣ ∑ s ∈ S ( v π ( s ) − v ^ ( s , w ) ) 2 (03) \color{green} \tag{03} J(w)=\frac{1}{2}*\mathbb{E}\left[\left(v_{\pi}(S)-\hat{v}(S, w)\right)^{2}\right]=\frac{1}{2}*\frac{1}{|\mathcal{S}|} \sum_{s \in \mathcal{S}}\left(v_{\pi}(s)-\hat{v}(s, w)\right)^{2} J(w)=21E[(vπ(S)v^(S,w))2]=21S1sS(vπ(s)v^(s,w))2(03) ∣ S ∣ |S| S 表示采样数据 S S S 的总数,若使用上式求期望,隐式包含了这样一个信息,认为所以采样到的状态 s s s 其重要性都是一致的,或者说状态分布时均匀的,并不侧重于某些状态。该类求期望的方式,归类为 uniform distribution(一致分布)。虽然这种假设虽然直观,但是未必最切合实际。

2.stationary distribution

比如说有的状态离终点状态比较近,那么这些状态有很高的概率被访问到,而有的状态距离终点比较远,可能很少被访问到。显然,前者这些状态更为重要,其价值估算越准确,实际运行过程中误差才会真正意义上的越小。就好比如修路,通常来主干道比较宽敞,而其他的分支则比较窄小,这是因为主干道车流量大,重要性强。先设这样一个变量:
{ d π ( s ) } s ∈ S (04) \color{green} \tag{04} \left\{d_{\pi}(s)\right\}_{s \in \mathcal{S}} {dπ(s)}sS(04)上式总的来说就是表示状态的概率分比,其中 d π ( s ) d_{\pi}(s) dπ(s) 表示具体状态 s s s 的概率,虽然其满足: d π ( s ) ≥ 0  and  ∑ s ∈ S d π ( s ) = 1 (05) \color{green} \tag{05} d_{\pi}(s) \geq 0 \text { and } \sum_{s \in \mathcal{S}} d_{\pi}(s)=1 dπ(s)0 and sSdπ(s)=1(05) 给予上述理论与思想,求得(02)式期望,还可以采用如下大数定律方式: J ( w ) = 1 2 ∗ E [ ( v π ( S ) − v ^ ( S , w ) ) 2 ] = 1 2 ∗ ∑ s ∈ S d π ( s ) ( v π ( s ) − v ^ ( s , w ) ) 2 (06) \color{green} \tag{06} J(w)=\frac{1}{2}*\mathbb{E}\left[\left(v_{\pi}(S)-\hat{v}(S, w)\right)^{2}\right]=\frac{1}{2}*\sum_{s \in \mathcal{S}} d_{\pi}(s)\left(v_{\pi}(s)-\hat{v}(s, w)\right)^{2} J(w)=21E[(vπ(S)v^(S,w))2]=21sSdπ(s)(vπ(s)v^(s,w))2(06) d π ( s ) d_{\pi}(s) dπ(s) 扮演了一个权重的角色。所以说,为在实际应用过程中,这些被经常访问到的状态价值误差更加小,在求期望的时候,应该给予其更大的权重才更加合理。虽然这样会使得概率较小被访问到的状态价值误差可能会较大,但是这没有关系,因为很少访问到。

这里称呼为 stationary distribution,翻译过来叫做稳定分布,貌似合上面的带权重的期望还联系不到一块。这是因为因为 d π ( s ) d_{\pi}(s) dπ(s) 概率分布初始是未知的,采用大数定律统计参数来求其分布,则需要足够多的数据,等状态分布趋向于平稳之后,所谓的概率分布才有意义,前期无法收敛,波动较大,并不能很好的估计出各个状态的概率分布。之所称呼其为稳定分布,表明该分布只有采样足够多,趋向于稳定时,才能确定随机变量的分布。

四、探讨 stationary distribution

因为 stationary distribution 相对来说比较重要,所以这里还需要对其进行更加深入的一些探讨,从(06)式也很容易看出其就是一个加权平均,其核心点就在权重 d π ( s ) d_{\pi}(s) dπ(s)。其还有另外两个称呼,分别为稳态分布( steady-state distribution \color{purple} \text{steady-state distribution} steady-state distribution),或者极限分布 ( limiting distribution ) (\color{purple} \text{limiting distribution}) (limiting distribution)。前者表达的含义与 stationary distribution \color{purple} \text{stationary distribution} stationary distribution 比较类似,就是稳定状态的概率分布,后者表示 limiting \text{limiting} limiting 翻译过来叫极限,就是迭代很多次之后,价值评估趋向于稳定极限时。

下面举个例子来深入体会一下,假设存在一个探索性的 ϵ \epsilon ϵ-greedy 策略 π \pi π,参数 ϵ = 0.5 \epsilon=0.5 ϵ=0.5 , 那么每个 动作(action) 都有一定几率被选中,如下图所示,方格中为十字箭头,箭头越长表示该方向动作被执行的概率越大:
在这里插入图片描述

图一

总的来说,上面的这个策略还是不错的,因为处于任何状态其大概率指向最优的动作方向,处于蓝色方格(终点)时,其指向四周以及原点的概率是一致的。

进一步,采用一个非常长的 episode,也就是说机器人循环与环境进行交互,即时到达终点该回合也不结束,那么显然这个 episode 经验轨迹数据会访问上面四个状态的每个状态很多次,通过如下公式来计算每个状态被访问概率: d π ( s ) ≈ n π ( s ) ∑ s ′ ∈ S n π ( s ′ ) (07) \color{green} \tag{07}d_{\pi}(s) \approx \frac{n_{\pi}(s)}{\sum_{s^{\prime} \in \mathcal{S}} n_{\pi}\left(s^{\prime}\right)} dπ(s)sSnπ(s)nπ(s)(07)其中 n π n_{\pi} nπ 表示策略 π \pi π 决策下,状态 s s s 在 episode 内其被访问的次数,分母 ∑ s ′ ∈ S n π ( s ′ ) \sum_{s^{\prime} \in \mathcal{S}} n_{\pi}\left(s^{\prime}\right) sSnπ(s) 表示 episode 经验数据长度,也等价于每个状态被访问次数。概率分布随着与环境交互的 step 数变化如下:

在这里插入图片描述

图二

由横轴可以看出,该实验共与环境交互 1000 1000 1000 个 step,随着 step 数增加各状态被访问的概率都趋向于稳定。但是初始交互(step)较小时,波动比较剧烈。其中被访问概率最大状态 s 4 s_4 s4,上图使用紫色曲线表示。其对应于 图一 中蓝色终点区域,该为终点位置,无论现在所处于何状态,都有较大概率转移至该状态。

另外值得注意的一点是, s 3 s_3 s3 被访问的概率比 s 2 s_2 s2 略高,这是因为处于 s 1 s_1 s1 转态时,其接下来会以较大概率转移至 s 3 s_3 s3 状态,较少概率转移至 s 2 s_2 s2 状态。

五、状态转移矩阵

接着要讲解一个有意思的点,其与状态转移矩阵相关,有的朋友或许可能对该部分的记忆不是很深刻,那么可以回顾前面博客:【强化学习理论基础-通用】(06)从零开始白话给你讲[数学原理]:贝尔曼(BellmanEquation)升级,向量矩阵方程式,深入浅出状态转移矩阵,其中(04)式有介绍一个矩阵: P π = [ p ( s 0 ∣ s 0 ) p ( s 1 ∣ s 0 ) ⋯ p ( s n ∣ s 0 ) p ( s 0 ∣ s 1 ) p ( s 1 ∣ s 1 ) ⋯ p ( s n ∣ s 1 ) ⋮ ⋮ ⋱ ⋮ p ( s 0 ∣ s n ) p ( s 1 ∣ s n ) ⋯ p ( s n ∣ s n ) ] (08) \color{red} \tag{08} \mathrm P_{\pi}= \begin{bmatrix} \mathrm p(s_0 \mid s_0) & \mathrm p(s_1 \mid s_0) & \cdots& \mathrm p(s_n \mid s_0) \\ \mathrm p(s_0 \mid s_1) & \mathrm p(s_1 \mid s_1) & \cdots& \mathrm p(s_n \mid s_1) \\ \vdots & \vdots & \ddots& \vdots\\ \mathrm p(s_0 \mid s_n) & \mathrm p(s_1 \mid s_n) & \cdots& \mathrm p(s_n \mid s_n) \end{bmatrix} Pπ= p(s0s0)p(s0s1)p(s0sn)p(s1s0)p(s1s1)p(s1sn)p(sns0)p(sns1)p(snsn) (08)其存储每个状态转移到其他状态的概率,且有贝尔曼向量矩阵方程式 v π = r π + γ P v π (09) \color{purple} \tag{09} v_\pi=r_{\pi}+\gamma \mathrm P v_\pi vπ=rπ+γPvπ(09)若已知状态转移矩阵,则可通过下式快速计算出各个状态被访问几率对应的概率分布,注意 d π d_{\pi} dπ 是由 d π ( s ) 构成的向量 d_{\pi}(s) 构成的向量 dπ(s)构成的向量 d π T = d π T P π (10) \color{blue} \tag{10} d_{\pi}^{T}=d_{\pi}^{T} P_{\pi} dπT=dπTPπ(10)原理比较好理解,对其展开即可,直白的说,这就是一个全概率公式矩阵形式,比如说 s 0 s_0 s0 发生的 P ( s 0 ) \mathrm P(s_0) P(s0) 概率,等于所有情况: s 0      s 1      s 3      ⋯      s n (11) \color{green} \tag{11} s_0~~~~s_1~~~~s_3~~~~\cdots~~~~s_n s0    s1    s3        sn(11) 发生 s 0 s_0 s0 概率的总和。还是以 [探讨 stationary distribution] 为例,如果已知状态转移矩阵如下: P π = [ 0.3 0.1 0.6 0 0.1 0.3 0 0.6 0.1 0 0.3 0.6 0 0.1 0.1 0.8 ] (12) \color{green} \tag{12} P_{\pi}=\left[\begin{array}{cccc} 0.3 & 0.1 & 0.6 & 0 \\ 0.1 & 0.3 & 0 & 0.6 \\ 0.1 & 0 & 0.3 & 0.6 \\ 0 & 0.1 & 0.1 & 0.8 \end{array}\right] Pπ= 0.30.10.100.10.300.10.600.30.100.60.60.8 (12)那么可以求得:
d π = [ 0.0345 , 0.1084 , 0.1330 , 0.7241 ] T (13) \color{green} \tag{13} d_{\pi}=[0.0345,0.1084,0.1330,0.7241]^{T} dπ=[0.0345,0.1084,0.1330,0.7241]T(13)上述结果可以前面 图二 进行比较,可以得知他们的结果是比较相近的。

六、总结

该篇博客,首先讨论如何定义值函数近似过程的目标函数,主要目的是使得状态价值评估误差最小化。接着讨论了 stationary distribution,其本上上来说就是稳态下的加权平均。最后又回顾了 态转移矩阵。

不过需要注意的是,通过大数定律介绍如何求得概率分布,其为 mode-free,需通过大量数据进行求解。而后者属于 mode-base,需要知道每个状态转移到其他状态的概率,也就是数学模型。不能说即没有数据,也没有模型,毕竟巧妇难为无米之炊。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江南才尽,年少无知!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值