强化学习——蒙特卡罗方法
蒙特卡罗方法是一种**无模型(Model-Free)**的强化学习方法,所谓无模型,就是不需要依赖环境动态模型(如转移概率矩阵Ps′∣saP(s′∣s,a)Ps′∣sa和奖励函数RsaR(s,a)Rsa的显式知识)。简单来说,我们前面来说的策略都是通过公式推导出动作价值函数QQQ,而蒙特卡洛可以直接通过观测数据来近似估计QQQ,这样就省略了模型。一个episode(回合/轨迹)是指智能体从状态s出
1. 方法概述
蒙特卡罗方法是一种无模型(Model-Free) 的强化学习方法,所谓无模型,就是不需要依赖环境动态模型(如转移概率函数 P(s′∣s,a)P(s′∣s,a)P(s′∣s,a)和奖励函数R(s,a)R(s,a)R(s,a)的显式知识)。简单来说,我们前面来说的策略都是通过公式推导出动作价值函数QQQ,而蒙特卡洛可以直接通过观测数据来近似估计QQQ,这样就省略了模型。
2. 如何估计Q(si,aj)Q(s_i,a_j)Q(si,aj)
将(si,aj)(s_i,a_j)(si,aj)对应的动作价值函数记作Q(si,aj)Q(s_i,a_j)Q(si,aj),sis_isi状态下做出aja_jaj动作所获得的累计奖励记作Gsi,ajG{s_i,a_j}Gsi,aj。
如果你觉得我的符号命名十分混乱,请听我给你解释一下,我的文章中已经出现过多种 GGG 了。有G,Gt,GS,GS,A,Gst,Gst,atG,G_t,G_{S},G_{S,A},G_{s_t},G_{s_t,a_t}G,Gt,GS,GS,A,Gst,Gst,at
其中 Gt,GS,GS,AG_t,G_{S},G_{S,A}Gt,GS,GS,A是等价的,都是代表某一个随机状态下获得累计奖励的随机变量。的当我们着重讨论 “时间步” 的时候(如贝尔曼公式那一节),我将其记为GtG_tGt;当我我们关注 “状态” 时,我将其记为GSG_{S}GS;当我们关注 “状态-动作对” 时,我将其记为GS,AG_{S,A}GS,A。
其中 GstG_{s_t}Gst 是指确定的某个状态 sts_tst 下获得的累计奖励,有时表示随机变量,有时表示样本。
其中 Gst,atG_{s_t,a_t}Gst,at 是指确定的某个状态sts_tst并且做出某个确定动作ata_tat时获得的累计奖励,有时表示随机变量,有时表示样本。
其中 GGG 是一个笼统的名字,就是单纯的代表 “累计奖励” 这四个字,也可以将其看作是上面的所有的符号的统称。
2.1 什么是episode(回合/轨迹)
一个 episode(回合/轨迹) 是指智能体从状态s出发,采取动作a,然后按照策略π\piπ在环境中进行交互,直到到达终止状态(或达到最大步数)的完整过程。
2.2 使用观测到的Gsi,ajG_{s_i,a_j}Gsi,aj估计Q(si,aj)Q(s_i,a_j)Q(si,aj)
众所周知:
Qπ(s,a)≐Eπ{GS,A∣S=s,A=a}=Eπ{Gs,a} \begin{align*} Q_{\pi}(s,a) &\doteq E_{\pi} \left\{ G_{S,A} \mid S=s, A=a \right\} \\ &=E_{\pi} \left\{ G_{s,a} \right\} \\ \end{align*} Qπ(s,a)≐Eπ{GS,A∣S=s,A=a}=Eπ{Gs,a}
通过一个episode就会获得一个或多个 GGG 值,即 Gsi,ajG_{s_i,a_j}Gsi,aj 。多次采样(得到多个episode)获得足够多的 Gsi,ajG_{s_i,a_j}Gsi,aj ,对多个 Gsi,ajG_{s_i,a_j}Gsi,aj 分别求平均值。随着采样次数的增加,该估计会越来越接近当前轮次下真实的Q(si,aj)Q(s_i,a_j)Q(si,aj)。
例如有一个episode
episode=(s0,a0,r1,s1,a1,r2,…,sT−1,aT−1,rT,sT)episode=(s_0,a_0,r_1,s_1,a_1,r_2,…,s_{T−1},a_{T−1},r_T,s_T)episode=(s0,a0,r1,s1,a1,r2,…,sT−1,aT−1,rT,sT)
自然会得到Gs0,a0,Gs1,a1,Gs2,a2,...,GsT,aTG_{s_0,a_0},G_{s_1,a_1},G_{s_2,a_2},...,G_{s_T,a_T}Gs0,a0,Gs1,a1,Gs2,a2,...,GsT,aT
如果有多个episode,我就可能得到更多Gs0,a0,Gs1,a1,Gs2,a2,...G_{s_0,a_0},G_{s_1,a_1},G_{s_2,a_2},...Gs0,a0,Gs1,a1,Gs2,a2,...,分别对Gsi,ajG_{s_i,a_j}Gsi,aj求平均值,使用这个平均值估计Q(si,aj)Q(s_i,a_j)Q(si,aj)。
当我们获得了一个可用的Q(si,aj)Q(s_i,a_j)Q(si,aj)时,我们就可以使用策略迭代去更新我们的策略了。
以上就是蒙特卡洛方法的大体思想。一下是一些小细节。
3. every-visit方法和first-visit方法
当episode中有多个相同的(si,aj)(s_i,a_j)(si,aj)如
episode=(s0,a0,r1,s1,a1,r2,s0,a0,r3…)episode=(s_0,a_0,r_1,s_1,a_1,r_2,s_0,a_0,r_3…)episode=(s0,a0,r1,s1,a1,r2,s0,a0,r3…)
其中有两个(s0,a0)(s_0,a_0)(s0,a0)
如果是every-visit方法,只要出现一次就收集一次;但是对于first-visit方法,只收集第一次出现的(s0,a0)(s_0,a_0)(s0,a0) 的q值。
every-visit比较直观,但first-visit的设计理念是什么?
- 无偏性:First-visit的估计在理论上是无偏的(即期望值等于真实 Q(s,a))。因为每次 (s,a) 的首次出现都对应一个独立的采样路径(从该状态开始的后续轨迹是独立于之前的历史的)。
- 避免依赖性:如果同一episode中多次使用同一个 (s,a) 的回报,这些回报会共享相同的后续状态和奖励,导致样本间存在相关性,可能引入偏差。
4. ε-greedy策略
为了保证所有的(s,a)都能被遍历到,我们不能使用贪心的策略去选择动作,应当给其他的动作一些“机会”,改用ε-greedy策略,即有较大概率选择当前最好的动作,一较小的概率选择其他动作。
其中,A(s)是s所对应的action的个数,参数ε为一个0~1的数。
更多推荐
所有评论(0)