强化学习笔记-05 蒙特卡罗方法Monte Carlo Method

本文是博主对《Reinforcement Learning- An introduction》的阅读笔记,不涉及内容的翻译,主要为个人的理解和思考。

上一节介绍了通过动态规划法来解决强化Markov decision process MDP环境下的学习问题, 动态规划法假设环境是完全可知,即对于状态动作间的转换概率p(s’,r|s,a)是完全可知,或者说给定状态state和运作action,可以确定性地知道下一状态。

但对于环境不可知的情况下,这时可以用蒙特卡罗方法来解决,其是通过从实际环境中去采样(experience)一系列状态、行动来获得真实奖励,此时状态动作的价值可以通过平均奖励来估计。

整体蒙特卡罗的学习还是基于通用policy两迭代过程(GPI),分为Policy Evaluation (Prediction)和Policy Improvement。Policy Evaluation阶段固定Policy,完成价值函数value function的估计。而在Policy Improvement中,通过价值函数估计来优化policy。对于蒙特卡罗方法,其关键在于价值函数value function的估计。完成价值函数估计后,优化policy便顺理成章了。

1. 蒙特卡罗方法

A. Policy Evaluation

前面分析了价值函数存在状态价值函数和动作价值函数两种,但是对于环境未知的情况下,已知状态的价值函数,却无法推导出Policy函数,因为无法确定当前状态和动作的下一状态。因此蒙特卡罗需要预估的是动作价值函数即q(s,a),其估计值为当前状态和动作下未来收益的平均值:

q(s,a)=mean(G(s,a))

蒙特卡罗方法将训练过程分成多轮,每一轮称为一个episode,在每一轮会从某个初始状态S_o和初始动作A_o开始,并从环境中采样一系列状态、动作、奖励序列:

S_o,A_o,R_1,S_1,A_1,...,S_{T-1},A_{T-1},R_{T},S_{T}

其中G(s,a)表示状态s和动作a首次出现之后的累积收益,即:

G(s=S_t,a=A_t)=\sum^{T}_{i=t}\gamma^{i-t} R_i

B. Policy Improvement

\pi(a|s)=\begin{cases} 1& \text{ if } a= \text{argmax}_a\ q(s,a)\\ 0& \text{ if } a\neq \text{argmax}_a\ q(s,a) \end{cases}

policy函数可以直接根据价值函数q(s,a)来计算,但是因为蒙特卡罗方法根据policy函数来采样一系列状态动作,如果\pi(a|s)太硬,会导致某些状态动作一直没有机会被采样,换而言之,可能丢失探索(explore)最优解的机会,因此一种思路是采用ε-greedy的方法,下式中\Lambda (s)表示状态s下可能采取的动作a的数量。

\pi(a|s)=\begin{cases} 1-\varepsilon +\frac{\varepsilon }{\Lambda (s)}& \text{ if } a= \text{argmax}_a\ q(s,a)\\ \frac{\varepsilon }{\Lambda (s)}& \text{ if } a\neq \text{argmax}_a\ q(s,a) \end{cases}

另一种方法是选择初始状态和动作时,让每一对状态和动作都有一定概率选择,称为exploring starts。

2. off-policy蒙特卡罗方法

前文我们讨论了强化学习方法存在explore和exploit的权衡,一方面需要往更优的方向去寻找,另一方面需要探索新的方向。我们之前方法是根据ε-greedy等方法调整policy函数,来兼顾explore和exploit,这种通过目标policy函数来产出下轮训练数据的方法,称为on-policy方法。

另一种更为直观的方法是将explore和exploit过程分别拆分两个policy函数,其中优化policy函数称为target policy,而另外一个专门用于生成状态和动作对,用于探索的决策函数称为behavior policy,下轮训练数据不通过目标policy函数产出,因此称为off-policy方法。off-policy方法描述了一种更为通用的强化学习方法。

另一个问题是在off-policy中,target policy函数和behavior policy函数会存在分布不一致,这个不一致会带来预估的偏差,因此多数的off-policy策略引入重要性采样,来调整target policy函数和behavior policy函数间的偏差。

A. 重要性采样Importance-sampling

对于蒙特卡罗方法,这个偏差主要在通过policy函数\pi(s|a)产出的采样序列生成概率上不同,假设由初始状态S_t,通过决策函数确定动作A_t,最终生成一系列的序列:

S_t,A_t,R_{t+1},S_{t+1},A_{t+1},...,S_{T-1},A_{T-1},R_{T},S_{T}

其生成概率可以表示为:

P(R_{t+1},S_{t+1},A_{t+1},...,S_{T-1},A_{T-1},R_{T},S_{T}|S_t,A_t\sim \pi)=\Pi^{T-1}_{k=t} \pi(A_k|S_k)P(S_{k+1}|S_k,A_k)

target policy函数\pi_\tau (s|a)和behavior policy函数\pi_b (s|a)间偏差可以表示为:

\rho(A_k,S_k)=\frac{\Pi^{T-1}_{k=t} \pi_\tau (A_k|S_k)P(S_{k+1}|S_k,A_k)}{\Pi^{T-1}_{k=t} \pi_b(A_k|S_k)P(S_{k+1}|S_k,A_k)}=\frac{\Pi^{T-1}_{k=t} \pi_\tau (A_k|S_k)}{\Pi^{T-1}_{k=t} \pi_b(A_k|S_k)}

此时我们修正累积收益的偏差:

G_\rho(A_k,S_k)=\rho(A_k,S_k)G(A_k,S_k)

B. 带权重的重要性采样weighted importance sampling

通过重要性采样,我们会在原有累积收益上乘上了一个偏差因子,这个偏差因子可能会因为target policy函数和behavior policy函数间的偏差而变得很大,从而导致同真实观察reward间的偏差太大,很难帮助target policy函数的学习,因此weighted importance sampling是在计算价值函数时,将偏差因子的也代入:

q(s,a)=\frac{mean(\rho(A_k,S_k)G(A_k,S_k))}{mean(\rho(A_k,S_k))}

但这种方式显示是有偏的,其价值函数估计更偏向于behavior policy,但是其预估更为稳定。

C. behavior policy的函数的选择:

实际上对于蒙特卡罗方法来说,对于behavior policy的函数可以用任何软函数,需要满足两个条件:

  • 可以保证target policy函数收敛
  • 所有状态-动作都有机会被选择

D. 方法

猜你喜欢

转载自blog.csdn.net/tostq/article/details/130689211
今日推荐