强化学习——表格型求解方法

    了解了强化学习的基础概念后,我们知道最优策略就是根据q_{*}(s,a)来贪心地选择状态s下的动作a,那么问题就转变为如何求解q_*(s,a)或者v_*(s)这些最优价值函数了。
    这一篇我们先假设状态空间\mathcal{S}=\{s\}有限离散的,有限代表有终止状态,这样q_*(s,a)或者v_*(s)的值均可以存储在一张表格中,供我们随时修改、选取,这就是表格型求解方法的名称由来,经典的方法有动态规划、蒙特卡洛和时序差分。
    本篇的内容安排是,首先我们会分别简述一下这三个方法是如何求解强化学习中的最优价值函数,接着我们会比较一下三个方法的区别和联系,最后也是最重要的实践部分。
    希望以上两篇内容可以让大家明白原理的同时也可以自己动手实践一个“toy reinforcement learning ”。

一 表格型求解方法

1.1 Dynamic Programing

    动态规划是一种将问题拆分成若干个类似的子问题,再分而治之的方法。其中最重要的就是如何定义子问题,该子问题常常是递推关系。在强化学习——基础概念那篇中我们提到的bellman方程就是一种递推关系,

  • 状态价值函数
    v_{t}(s) = \sum_a \pi(a|s)\sum_{s',r} p(s',r|s,a)(R_{t+1}+\gamma v_{t-1}(s')) \tag{1}
1.1.1 策略迭代

    策略迭代是一种基于动态规划得出的强化学习控制算法。它是一种策略评估、策略改进交替进行的一种方法,从而最后收敛于最优的价值函数和最优策略。

  • 策略评估:策略评估是给定一个策略\pi,我们来求其价值函数v_{\pi}(s)
  • 策略改进:策略改进是基于v_{\pi}(s),我们可以找到一个\pi' \geq \pi
        在策略迭代中,根据策略\pi,策略评估就是根据式(1)进行计算得到v_{\pi}(s)。那么如何基于此进行策略改进呢?还记得基础概念篇中讲的策略改进定理,即q_{\pi}(s,\pi'(s)) \geq v_{\pi}(s),那么\pi' \geq \pi,也就是说我们只需要根据v_{\pi}(s)计算出\pi'(a|s) = \arg\max_a q_{\pi}(s,a),即可得到一个不差于\pi的策略。
        策略迭代这一过程如图所示,每次都先评估出一个不是最优的价值函数v_{\pi}(s),之后再用这一个不完美的价值函数去改进现有的策略\pi,该策略当然也不会是最优的,但是两者都是在向着最优的方向不断改变自己,即使“道路”蜿蜒曲折,最终还是会到达胜利的终点——最优价值函数和最优策略。
  • 算法伪代码


1.1.2 价值迭代

    从策略迭代的算法中可以看到,每次策略评估都需要遍历整个状态空间,使得v_{\pi}(s)收敛,再进行策略改进;而价值迭代在策略改进前只需要进行一步s \in \mathcal S更新,这是一种广义策略迭代(GPI)的思想。
    从另一个角度比较以下策略迭代与价值迭代,策略迭代在策略评估中使用到的递推公式是bellman方程;而价值迭代使用的是bellman最优方程。
v_t(s) = max_a \sum_{s',r} p(s',r|s,a)(R_{t+1} + \gamma v_{t-1}(s'))

  • 算法伪代码


1.2 Monte Carlo

    在动态规划中,无论是使用策略迭代还是价值迭代在估计价值函数的过程中都需要计算p(s',r|s,a),即我们需要知道“环境”在状态s下,agent采取了动作a后下一步环境会给我们多少奖励r以及反馈给我们的下一个状态s'。也就是说使用动态规划需要我们了解“环境”模型,这就大大的限制了动态规划的使用场景。

1.2.1 蒙特卡洛方法

    蒙特卡洛方法就是在不知道“环境”模型的情况下,经过不断的与环境互动进行采样,从而估计价值函数。如估计q_{\pi}(s,a),我们就可以根据下面的一个回溯图,采样得到一个序列,S_T代表一回合的终止,
S_t,A_t,R_{t+1},S_{t+1},A_{t+1},\dots,A_{T-1},R_{T},S_T

    这一回合我们得到的q_{\pi}(s,a)是,
q_{\pi}(s,a) = G_1 = \sum_{k=t+1}^T R_k

    基于一次采样得到的价值函数估计值方差是较大的,所以我们需要不断采样,得到G_1,G_2,\dots,G_N。最后用它们的均值代表价值函数的估计,
q_{\pi}(s,a) = \frac{1}{N} \sum_{n=1}^N G_n
    可以看出采样的好坏对于蒙特卡洛方法的影响是很大的,一个好的采样肯定是可以遍历所有的序列,
\tau=\{S_{t} \in \mathcal S,A_t \in \mathcal A, R_{t+1}\in \mathcal R,S_{t+1}\in \mathcal S,\dots\}
    有两种采样策略,一种是试探性开始,一种是\epsilon-贪婪策略。前者是假设我们每个状态s \in \mathcal S作为初始状态的概率都是大于0的,即都有可能被选为初始状态。后者是强化学习中更常用的方法。

1.2.2 \epsilon-贪婪策略

    我们希望agent在前期尽可能的去探索,从而发现更好的策略,所以我们在基于价值函数选取贪婪动作a^* = \arg \max_a q_{\pi}(s,a)的同时,会以\epsilon的概率去在动作集合\mathcal A中随机的选取一个动作,这样使得agent在采样的过程中更加的多样化,得到更精准的价值函数估计。
\pi(a|s)= \begin{cases} 1-\epsilon +\epsilon/|\mathcal A| &if\ a=a^* \\ \epsilon/|\mathcal A| &if\ a\neq a^* \end{cases}

    最后附上使用了\epsilon-贪婪策略的蒙特卡洛算法的伪代码。

  • 算法伪代码


1.3 Temporal-Difference Learning

    时序差分算法可以说是强化学习的核心算法,不论是表格型求解还是下一篇会讲到的近似求解方法中,时序差分都占到了很大的比重,它是动态规划和蒙特卡洛方法的结合体,不仅利用了动态规划中的自举,还使用到了蒙特卡洛中的采样思想。
    我们知道蒙特卡洛就是采样一个序列直到终止状态,统计多个序列的回报之和G_n,通过计算其平均值来估计价值函数,我们来推导蒙特卡洛的另一种计算方式——增量式,
\begin{align} q_{N}(s, a) =& \frac{1}{N} \sum_{n=1}^{N } G_n \\ =& \frac{1}{N-1} \frac{N-1}{N}(\sum_{n=1}^{N-1} G_n + G_{N}) \\ =&\frac{1}{N-1 } \sum_{n=1}^{N-1} G_n \frac{N-1}{N} +\frac{1}{N-1}G_{N} \\ =& q_{N-1}(s,a)(1-\frac{1}{N}) + \frac{1}{N-1}G_{N}\\ =& q_{N-1}(s,a) + \frac{1}{N}(G_{N} - q_{N-1}(s,a)) \end{align}
    若令\alpha=\frac{1}{N},则蒙特卡洛的更新公式可以变为,
q_{N}(s, a) = q_{N-1}(s,a) + \alpha(G_{N} - q_{N-1}(s,a))
    时序差分算法和这一形式的蒙特卡洛方法类似,不同的是G_{N}被bellman方程中的r+\gamma v_{\pi}(s')给替换了,
q_{t}(s, a) = q_{t-1}(s,a) + \alpha(r+\gamma v_{\pi}(s') - q_{t-1}(s,a))
其中r+\gamma v_{\pi}(s') - q_{t-1}(s,a)被称为TD误差。
    时序差分算法不需要等到回合结束才更新价值函数,它在t时刻,会自举上一时刻已有的\hat q_{t-1}(s,a)来进行更新。
    针对v_{\pi}(s')的取法不同,介绍两种非常有名的TD实践版本,分别是SARSA和Q-Learning。

1.3.1 SARSA

    在SARSA中agent是一个实干家,在状态s'下会真实地选取一个行动a'去估计v_{\pi}(s'),即用q_{t-1}(s',a')去估计v_{\pi}(s'),正是该agent需要经历\{S_t, A_t,R_{t+1},S_{t+1},A_{t+1}\}才能进行一次价值函数更新,所以称其为SARSA算法,下面是SARSA算法的回溯图。


q_{t}(s, a) = q_{t-1}(s,a) + \alpha(r+\gamma q_{t-1}(s',a') - q_{t-1}(s,a))

  • 算法伪代码


1.3.2 Q-Learning

    在Q-Learning中agent是一个想象家,在状态s'下不去行动,而是想象假如自己选取不同的行动哪个会更好,即用max_{a'} q_{t-1}(s',a')来估计v_{\pi}(s'),下面是Q-Learning的回溯图。


q_{t}(s, a) = q_{t-1}(s,a) + \alpha(r+\gamma max_{a'} q_{t-1}(s',a') - q_{t-1}(s,a))

  • 算法伪代码


二 区别和联系

    上面三种任意一种方法其实都是一套强大的学习系统,但是这里我们把他们放在一起进行一个简单的对比,

更新时间 是否使用自举更新 采样or环境模型
Dynamic Programing - 使用 环境模型
Monte Carlo 回合结束时更新 不使用 采样
Temporal-Difference Learning 回合中更新 使用 采样

注:在这里注明一下,自举指的是在t时刻更新价值函数时使用到了t-1时刻的价值函数估计值。

三 实践

    这里的实践是一个非常简单的随机游走的例子,如下图,在一个道路上agent可以向左走也可以向右走,但是只有在道路的最右边有一个宝藏,agent拿到宝藏才有有1的奖励,其他情况的奖励都是0,agent的目标就是得到宝藏。如果agent来到道路最左边即A,且选择了向左走,那么下一个状态agent依然处于A。


    上述方法均可以应用于该简单的环境中,具体的代码可以参看7nic7的github
    下面是Q-Learning在前期的一次学习过程,

    经过了5、6个回合后,agent已经学会了快速地找到宝藏了,


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容