强化学习——蒙特卡罗方法

1. 方法概述

蒙特卡罗方法是一种无模型(Model-Free) 的强化学习方法,所谓无模型,就是不需要依赖环境动态模型(如转移概率函数 P ( s ′ ∣ s , a ) P(s′∣s,a) P(ss,a)和奖励函数 R ( s , a ) R(s,a) R(s,a)的显式知识)。简单来说,我们前面来说的策略都是通过公式推导出动作价值函数 Q Q Q,而蒙特卡洛可以直接通过观测数据来近似估计 Q Q Q,这样就省略了模型。

2. 如何估计 Q ( s i , a j ) Q(s_i,a_j) Q(si,aj)

( s i , a j ) (s_i,a_j) (si,aj)对应的动作价值函数记作 Q ( s i , a j ) Q(s_i,a_j) Q(si,aj) s i s_i si状态下做出 a j a_j aj动作所获得的累计奖励记作 G s i , a j G{s_i,a_j} Gsi,aj

如果你觉得我的符号命名十分混乱,请听我给你解释一下,我的文章中已经出现过多种 G G G 了。有 G , G t , G S , G S , A , G s t , G s t , a t G,G_t,G_{S},G_{S,A},G_{s_t},G_{s_t,a_t} G,Gt,GS,GS,A,Gst,Gst,at
其中 G t , G S , G S , A G_t,G_{S},G_{S,A} Gt,GS,GS,A是等价的,都是代表某一个随机状态下获得累计奖励的随机变量。的当我们着重讨论 “时间步” 的时候(如贝尔曼公式那一节),我将其记为 G t G_t Gt;当我我们关注 “状态” 时,我将其记为 G S G_{S} GS;当我们关注 “状态-动作对” 时,我将其记为 G S , A G_{S,A} GS,A
其中 G s t G_{s_t} Gst 是指确定的某个状态 s t s_t st 下获得的累计奖励,有时表示随机变量,有时表示样本。
其中 G s t , a t G_{s_t,a_t} Gst,at 是指确定的某个状态 s t s_t st并且做出某个确定动作 a t a_t at时获得的累计奖励,有时表示随机变量,有时表示样本。
其中 G G G 是一个笼统的名字,就是单纯的代表 “累计奖励” 这四个字,也可以将其看作是上面的所有的符号的统称。

2.1 什么是episode(回合/轨迹)

一个 episode(回合/轨迹) 是指智能体从状态s出发,采取动作a,然后按照策略 π \pi π在环境中进行交互,直到到达终止状态(或达到最大步数)的完整过程。

2.2 使用观测到的 G s i , a j G_{s_i,a_j} Gsi,aj估计 Q ( s i , a j ) Q(s_i,a_j) Q(si,aj)

众所周知:
Q π ( s , a ) ≐ E π { G S , A ∣ S = s , A = a } = E π { G s , 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,AS=s,A=a}=Eπ{Gs,a}
通过一个episode就会获得一个或多个 G G G 值,即 G s i , a j G_{s_i,a_j} Gsi,aj 。多次采样(得到多个episode)获得足够多的 G s i , a j G_{s_i,a_j} Gsi,aj ,对多个 G s i , a j G_{s_i,a_j} Gsi,aj 分别求平均值。随着采样次数的增加,该估计会越来越接近当前轮次下真实的 Q ( s i , a j ) Q(s_i,a_j) Q(si,aj)
例如有一个episode
e p i s o d e = ( s 0 , a 0 , r 1 , s 1 , a 1 , r 2 , … , s T − 1 , a T − 1 , r T , s T ) 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,,sT1,aT1,rT,sT)
自然会得到 G s 0 , a 0 , G s 1 , a 1 , G s 2 , a 2 , . . . , G s T , a T G_{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,我就可能得到更多 G s 0 , a 0 , G s 1 , a 1 , G s 2 , a 2 , . . . G_{s_0,a_0},G_{s_1,a_1},G_{s_2,a_2},... Gs0,a0,Gs1,a1,Gs2,a2,...,分别对 G s i , a j G_{s_i,a_j} Gsi,aj求平均值,使用这个平均值估计 Q ( s i , a j ) Q(s_i,a_j) Q(si,aj)
当我们获得了一个可用的 Q ( s i , a j ) Q(s_i,a_j) Q(si,aj)时,我们就可以使用策略迭代去更新我们的策略了。
以上就是蒙特卡洛方法的大体思想。一下是一些小细节。

3. every-visit方法和first-visit方法

当episode中有多个相同的 ( s i , a j ) (s_i,a_j) (si,aj)

e p i s o d e = ( s 0 , a 0 , r 1 , s 1 , a 1 , r 2 , s 0 , a 0 , r 3 … ) 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)

其中有两个 ( s 0 , a 0 ) (s_0,a_0) (s0,a0)

如果是every-visit方法,只要出现一次就收集一次;但是对于first-visit方法,只收集第一次出现的 ( s 0 , a 0 ) (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的数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值