强化学习(四)用蒙特卡罗法(MC)求解

    在强化学习(三)用动态规划(DP)求解中,我们讨论了用动态规划来求解强化学习预测问题和控制问题的方法。但是由于动态规划法需要在每一次回溯更新某一个状态的价值时,回溯到该状态的所有可能的后续状态。导致对于复杂问题计算量很大。同时很多时候,我们连环境的状态转化模型$P$都无法知道,这时动态规划法根本没法使用。这时候我们如何求解强化学习问题呢?本文要讨论的蒙特卡罗(Monte-Calo, MC)就是一种可行的方法。

    蒙特卡罗法这一篇对应Sutton书的第五章和UCL强化学习课程的第四讲部分,第五讲部分。

1. 不基于模型的强化学习问题定义

    在动态规划法中,强化学习的两个问题是这样定义的:

    预测问题,即给定强化学习的6个要素:状态集$S$, 动作集$A$, 模型状态转化概率矩阵$P$, 即时奖励$R$,衰减因子$\gamma$,  给定策略$\pi$, 求解该策略的状态价值函数$v(\pi)$

    控制问题,也就是求解最优的价值函数和策略。给定强化学习的5个要素:状态集$S$, 动作集$A$, 模型状态转化概率矩阵$P$, 即时奖励$R$,衰减因子$\gamma$, 求解最优的状态价值函数$v_{*}$和最优策略$\pi_{*}$ 

    可见, 模型状态转化概率矩阵$P$始终是已知的,即MDP已知,对于这样的强化学习问题,我们一般称为基于模型的强化学习问题。

    不过有很多强化学习问题,我们没有办法事先得到模型状态转化概率矩阵$P$,这时如果仍然需要我们求解强化学习问题,那么这就是不基于模型的强化学习问题了。它的两个问题一般的定义是:    

    预测问题,即给定强化学习的5个要素:状态集$S$, 动作集$A$, 即时奖励$R$,衰减因子$\gamma$,  给定策略$\pi$, 求解该策略的状态价值函数$v(\pi)$

    控制问题,也就是求解最优的价值函数和策略。给定强化学习的5个要素:状态集$S$, 动作集$A$, 即时奖励$R$,衰减因子$\gamma$, 探索率$\epsilon$, 求解最优的动作价值函数$q_{*}$和最优策略$\pi_{*}$ 

    本文要讨论的蒙特卡罗法就是上述不基于模型的强化学习问题。

2. 蒙特卡罗法求解特点

     蒙特卡罗这个词之前的博文也讨论过,尤其是在之前的MCMC系列中。它是一种通过采样近似求解问题的方法。这里的蒙特卡罗法虽然和MCMC不同,但是采样的思路还是一致的。那么如何采样呢?

    蒙特卡罗法通过采样若干经历完整的状态序列(episode)来估计状态的真实价值。所谓的经历完整,就是这个序列必须是达到终点的。比如下棋问题分出输赢,驾车问题成功到达终点或者失败。有了很多组这样经历完整的状态序列,我们就可以来近似的估计状态价值,进而求解预测和控制问题了。

    从特卡罗法法的特点来说,一是和动态规划比,它不需要依赖于模型状态转化概率。二是它从经历过的完整序列学习,完整的经历越多,学习效果越好。

3. 蒙特卡罗法求解强化学习预测问题

    这里我们先来讨论蒙特卡罗法求解强化学习控制问题的方法,即策略评估。一个给定策略$\pi$的完整有T个状态的状态序列如下:$$S_1,A_1,R_2,S_2,A_2,...S_t,A_t,R_{t+1},...R_T, S_T$$

    回忆下强化学习(二)马尔科夫决策过程(MDP)中对于价值函数$v_{\pi}(s)$的定义:$$v_{\pi}(s) = \mathbb{E}_{\pi}(G_t|S_t=s ) = \mathbb{E}_{\pi}(R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3}+...|S_t=s)$$

    可以看出每个状态的价值函数等于所有该状态收获的期望,同时这个收获是通过后续的奖励与对应的衰减乘积求和得到。那么对于蒙特卡罗法来说,如果要求某一个状态的状态价值,只需要求出所有的完整序列中该状态出现时候的收获再取平均值即可近似求解,也就是:$$G_t =R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3}+...  \gamma^{T-t-1}R_{T}$$ $$v_{\pi}(s) \approx average(G_t), s.t. S_t=s$$

    可以看出,预测问题的求解思路还是很简单的。不过有几个点可以优化考虑。

    第一个点是同样一个状态可能在一个完整的状态序列中重复出现,那么该状态的收获该如何计算?有两种解决方法。第一种是仅把状态序列中第一次出现该状态时的收获值纳入到收获平均值的计算中;另一种是针对一个状态序列中每次出现的该状态,都计算对应的收获值并纳入到收获平均值的计算中。两种方法对应的蒙特卡罗法分别称为:首次访问(first visit) 和每次访问(every visit) 蒙特卡罗法。第二种方法比第一种的计算量要大一些,但是在完整的经历样本序列少的场景下会比第一种方法适用。

    第二个点是累进更新平均值(incremental mean)。在上面预测问题的求解公式里,我们有一个average的公式,意味着要保存所有该状态的收获值之和最后取平均。这样浪费了太多的存储空间。一个较好的方法是在迭代计算收获均值,即每次保存上一轮迭代得到的收获均值与次数,当计算得到当前轮的收获时,即可计算当前轮收获均值和次数。通过下面的公式就很容易理解这个过程:$$\mu_k = \frac{1}{k}\sum\limits_{j=1}^k x_j = \frac{1}{k}(x_k + \sum\limits_{j=1}^{k-1}x_j) =  \frac{1}{k}(x_k + (k-1)\mu_{k=1}) = \mu_{k=1} +  \frac{1}{k}(x_k -\mu_{k-1})$$

    这样上面的状态价值公式就可以改写成:$$N(S_t) = N(S_t)  +1 $$ $$V(S_t) = V(S_t)  + \frac{1}{N(S_t)}(G_t -  V(S_t) )$$

    这样我们无论数据量是多还是少,算法需要的内存基本是固定的 。

    有时候,尤其是海量数据做分布式迭代的时候,我们可能无法准确计算当前的次数$N(S_t)$,这时我们可以用一个系数$\alpha$来代替,即:$$V(S_t) = V(S_t)  + \alpha(G_t -  V(S_t) )$$

    对于动作价值函数$Q(S_t,A_t)$,也是类似的,比如对上面最后一个式子,动作价值函数版本为:$$Q(S_t, A_t) = Q(S_t, A_t) +\alpha(G_t -  Q(S_t, A_t) )$$

    以上就是蒙特卡罗法求解预测问题的整个过程,下面我们来看控制问题求解。

4. 蒙特卡罗法求解强化学习控制问题

    蒙特卡罗法求解控制问题的思路和动态规划价值迭代的的思路类似。回忆下动态规划价值迭代的的思路, 每轮迭代先做策略评估,计算出价值$v_k(s)$,然后基于据一定的方法(比如贪婪法)更新当前策略$\pi$。最后得到最优价值函数$v_{*}$和最优策略$\pi_{*}$。

    和动态规划比,蒙特卡罗法不同之处体现在三点:一是预测问题策略评估的方法不同,这个第三节已经讲了。第二是蒙特卡罗法一般是优化最优动作价值函数$q_{*}$,而不是状态价值函数$v_{*}$。三是动态规划一般基于贪婪法更新策略。而蒙特卡罗法一般采用$\epsilon-$贪婪法更新。这个$\epsilon$就是我们在强化学习(一)模型基础中讲到的第8个模型要素$\epsilon$。$\epsilon-$贪婪法通过设置一个较小的?值,使用$1-\epsilon$的概率贪婪地选择目前认为是最大行为价值的行为,而用$\epsilon$ 的概率随机的从所有m 个可选行为中选择行为。用公式可以表示为:$$\pi(a|s)= \begin{cases} \epsilon/m + 1- \epsilon & {if\; a^{*} = \arg\max_{a \in A}Q(s,a)}\\ \epsilon/m & {else} \end{cases}$$

    在实际求解控制问题时,为了使算法可以收敛,一般$\epsilon$会随着算法的迭代过程逐渐减小,并趋于0。这样在迭代前期,我们鼓励探索,而在后期,由于我们有了足够的探索量,开始趋于保守,以贪婪为主,使算法可以稳定收敛。这样我们可以得到一张和动态规划类似的图:

5. 蒙特卡罗法控制问题算法流程

    在这里总结下蒙特卡罗法求解强化学习控制问题的算法流程,这里的算法是在线(on-policy)版本的,相对的算法还有离线(off-policy)版本的。在线和离线的区别我们在后续的文章里面会讲。同时这里我们用的是every-visit,即个状态序列中每次出现的相同状态,都会计算对应的收获值。

    在线蒙特卡罗法求解强化学习控制问题的算法流程如下:

    输入:状态集$S$, 动作集$A$, 即时奖励$R$,衰减因子$\gamma$, 探索率$\epsilon$

    输出:最优的动作价值函数$q_{*}$和最优策略$\pi_{*}$

    1. 初始化所有的动作价值$Q(s,a) = 0$, 状态次数$N(s,a) = 0$,采样次数$k=0$,随机初始化一个策略$\pi$

    2. k=k+1, 基于策略$\pi$进行第k次蒙特卡罗采样,得到一个完整的状态序列: $$S_1,A_1,R_2,S_2,A_2,...S_t,A_t,R_{t+1},...R_T, S_T$$

    3. 对于该状态序列里出现的每一状态行为对$(S_t, A_t)$,计算其收获$G_t$, 更新其计数$N(s,a)$和行为价值函数$Q(s,t)$:$$G_t =R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3}+...  \gamma^{T-t-1}R_{T}$$$$N(S_t, A_t) = N(S_t, A_t)  +1 $$$$Q(S_t, A_t) = Q(S_t, A_t) + \frac{1}{N(S_t, A_t)}(G_t -  Q(S_t, A_t) )$$

         4. 基于新计算出的动作价值,更新当前的$\epsilon-$贪婪策略:$$\epsilon = \frac{1}{k}$$$$\pi(a|s)= \begin{cases} \epsilon/m + 1- \epsilon & {if\; a^{*} = \arg\max_{a \in A}Q(s,a)}\\ \epsilon/m & {else} \end{cases}$$

    5. 如果所有的$Q(s,a)$收敛,则对应的所有$Q(s,a)$即为最优的动作价值函数$q_{*}$。对应的策略$\pi(a|s)$即为最优策略$\pi_{*}$。否则转到第二步。

6.  蒙特卡罗法求解强化学习问题小结

    蒙特卡罗法是我们第二个讲到的求解强化问题的方法,也是第一个不基于模型的强化问题求解方法。它可以避免动态规划求解过于复杂,同时还可以不事先知道环境转化模型,因此可以用于海量数据和复杂模型。但是它也有自己的缺点,这就是它每次采样都需要一个完整的状态序列。如果我们没有完整的状态序列,或者很难拿到较多的完整的状态序列,这时候蒙特卡罗法就不太好用了, 也就是说,我们还需要寻找其他的更灵活的不基于模型的强化问题求解方法。

    下一篇我们讨论用时序差分方法来求解强化学习预测和控制问题的方法。

(欢迎转载,转载请注明出处。欢迎沟通交流: [email protected])

原文地址:https://www.cnblogs.com/pinard/p/9492980.html

时间: 2024-10-08 07:36:56

强化学习(四)用蒙特卡罗法(MC)求解的相关文章

深度强化学习(Deep Reinforcement Learning)入门:RL base & DQN-DDPG-A3C introduction

转自https://zhuanlan.zhihu.com/p/25239682 过去的一段时间在深度强化学习领域投入了不少精力,工作中也在应用DRL解决业务问题.子曰:温故而知新,在进一步深入研究和应用DRL前,阶段性的整理下相关知识点.本文集中在DRL的model-free方法的Value-based和Policy-base方法,详细介绍下RL的基本概念和Value-based DQN,Policy-based DDPG两个主要算法,对目前state-of-art的算法(A3C)详细介绍,其他

[Reinforcement Learning] 强化学习介绍

随着AlphaGo和AlphaZero的出现,强化学习相关算法在这几年引起了学术界和工业界的重视.最近也翻了很多强化学习的资料,有时间了还是得自己动脑筋整理一下. 强化学习定义 先借用维基百科上对强化学习的标准定义: 强化学习(Reinforcement Learning,简称RL)是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益. 从本质上看,强化学习是一个通用的问题解决框架,其核心思想是 Trial & Error. 强化学习可以用一个闭环示意图来表示: 强化学习四元素

强化学习(五)用时序差分法(TD)求解

在强化学习(四)用蒙特卡罗法(MC)求解中,我们讲到了使用蒙特卡罗法来求解强化学习问题的方法,虽然蒙特卡罗法很灵活,不需要环境的状态转化概率模型,但是它需要所有的采样序列都是经历完整的状态序列.如果我们没有完整的状态序列,那么就无法使用蒙特卡罗法求解了.本文我们就来讨论可以不使用完整状态序列求解强化学习问题的方法:时序差分(Temporal-Difference, TD). 时序差分这一篇对应Sutton书的第六章部分和UCL强化学习课程的第四讲部分,第五讲部分. 1. 时序差分TD简介 时序差

强化学习(八)价值函数的近似表示与Deep Q-Learning

在强化学习系列的前七篇里,我们主要讨论的都是规模比较小的强化学习问题求解算法.今天开始我们步入深度强化学习.这一篇关注于价值函数的近似表示和Deep Q-Learning算法. Deep Q-Learning这一篇对应Sutton书的第11章部分和UCL强化学习课程的第六讲. 1. 为何需要价值函数的近似表示 在之前讲到了强化学习求解方法,无论是动态规划DP,蒙特卡罗方法MC,还是时序差分TD,使用的状态都是离散的有限个状态集合$\mathbb{S}$.此时问题的规模比较小,比较容易求解.但是假

【强化学习】马尔可夫决策过程(MDP)基本原理

\1. 马尔可夫模型的几类子模型 大家应该还记得马尔科夫链(Markov Chain),了解机器学习的也都知道隐马尔可夫模型(Hidden Markov Model,HMM).它们具有的一个共同性质就是马尔可夫性(无后效性),也就是指系统的下个状态只与当前状态信息有关,而与更早之前的状态无关. 马尔可夫决策过程(Markov Decision Process, MDP)也具有马尔可夫性,与上面不同的是MDP考虑了动作,即系统下个状态不仅和当前的状态有关,也和当前采取的动作有关.还是举下棋的例子,

深度强化学习泡沫及路在何方?

一.深度强化学习的泡沫 2015年,DeepMind的Volodymyr Mnih等研究员在<自然>杂志上发表论文Human-level control through deep reinforcement learning[1],该论文提出了一个结合深度学习(DL)技术和强化学习(RL)思想的模型Deep Q-Network(DQN),在Atari游戏平台上展示出超越人类水平的表现.自此以后,结合DL与RL的深度强化学习(Deep Reinforcement Learning, DRL)迅速

强化学习杂谈

目录 强化学习从入门到放弃 杂谈 MDP MP MRP MDP Planning by Dynamic Programming iterative policy evaluation policy iteration value iteration 蒙特卡洛 and TD Monte-Carlo Policy Evaluation TD:Temporal-Difference Learning MODEL FREE control GLIE MC Control Updating Action-

&lt;强化学习&gt;基于采样迭代优化agent

前面介绍了三种采样求均值的算法 ——MC ——TD ——TD(lamda) 下面我们基于这几种方法来 迭代优化agent 传统的强化学习算法 || ν ν 已经知道完整MDP——使用价值函数V(s) 没有给出完整MDP——使用价值函数Q(s,a) 可见我们的目标就是确定下来最优策略和最优价值函数 | |——有完整MDP &&  用DP解决复杂度较低 |     ====>  使用贝尔曼方程和贝尔曼最优方程求解 |——没有完整MDP(ENV未知) or 知道MDP但是硬解MDP问题复杂

【基础知识十六】强化学习

一.任务与奖赏 我们执行某个操作a时,仅能得到一个当前的反馈r(可以假设服从某种分布),这个过程抽象出来就是“强化学习”. 强化学习任务通常用马尔可夫决策过程MDP来描述: 强化学习任务的四要素 E = <X, A, P, R> E:机器处于的环境 X:状态空间 A:动作空间 P:状态转移概率 R:奖赏函数 学习目的: “策略”:机器要做的是不断尝试学得一个“策略” π,根据状态x就能得到要执行的动作 a = π(x) 策略的评价: 长期累积奖赏,常用的有“T步累积奖赏” 强化学习与监督学习的