如何求强化学习最优解

在一篇文章强化学习与马尔可夫决策中,介绍了使用马尔可夫决策过程对强化学习的过程进行建模。通过建模可以得出,只要求解最优价值函数,即可得到对应的最优策略。那么如何求解最优价值函数呢?本篇文章将介绍一些最优价值函数的求解算法。

predict和control

首先介绍一下强化学习的两个基本问题,预测和控制。

predict

在已知状态集S,动作集A,模型状态转化概率矩阵P,即时奖励R,衰减因子\gamma的条件下,给定策略\pi,预测该策略的状态价值函数v(\pi)。这一过程一般称为策略评估。

control

在已知状态集S,动作集A,模型状态转化概率矩阵P,即时奖励R,衰减因子\gamma的条件下,求解最优的状态价值函数v_*和最优策略\pi_*

从mode-based的方面去看这两个问题其实更好理解,在了解模型机制的基础上,预测所有可能的状态价值函数,然后基于预测的值,来选取最优价值函数和最优策略,这个过程被称为策略迭代。

动态规划

动态规划是一种可以求解强化学习两个基本问题的一种方式,其理论依据是贝尔曼方程。状态价值函数的贝尔曼方程如下:

v_\pi=\sum_{a\epsilon A}\pi(a|s)(R_a^s+\gamma\sum_{{s'}\epsilon S}P_{ss'}^av_\pi(s'))

通过这个公式可以看出,当前迭代周期某状态s的状态价值,可以通过上一个迭代周期内的状态价值来计算更新。这就满足了使用动态规划的两个条件,问题的最优解可以由子问题的最优解构成且可以通过较小的子问题状态递推出较大子问题的状态。

策略评估

结合贝尔曼方程,预测问题求解的过程如下:

v_{k+1}^\pi(s)=\sum_{a\epsilon A}\pi(a|s)(R_s^a+\gamma\sum_{{s'}\epsilon S}P_{ss'}^av_k^\pi(s'))

其中v_k(s)表示第k轮状态s的价值函数。

策略迭代

控制问题的求解一般可以使用greedy策略。对于当前状态s_t,选择后续所有可能转移到的状态集合S_{t+1}中,状态价值最大的那个状态对应的策略\pi

整个策略迭代过程可以理解为以下两个过程:

  1. 使用当前策略\pi评估计算当前策略的状态价值v(s)

  2. 根据状态价值v(s)根据一定的方法(比如贪婪法)更新策略\pi

重复迭代以上两个过程,最终得到收敛的策略\pi_*和状态价值v_*

蒙特卡洛法

蒙特卡洛法是一种通过采样近似求解问题的方法。与动态规划不同,蒙特卡洛法不需要考虑交互过程中的状态转化,其通过采样若干完整的交互状态序列来估计状态的真实值。

完整的交互状态序列指的是从开始到终点的交互序列,可以在迭代的过程中产生。通过多组完整的交互状态序列进行来近似的估计状态价值,之后便可以求解预测和控制问题了。

由于蒙特卡洛法是通过采样的方式来估计状态价值,不需要考虑交互过程中状态的转化,因此属于mode-free的强化学习求解方法。反观动态规划,由于考虑状态的转化,因此属于mode-based的强化学习求解方法。

策略评估

使用蒙特卡洛法进行策略评估的理论依据是状态价值函数的定义:

v_\pi(s)=E_\pi(G_t|S_t=s)=E_\pi(R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}+...|S_t=s)

从公式上可以看出,每个状态的价值函数,等于其后续所有的奖励与对应的衰减乘积求和的期望。

因此,对于一个策略\pi,如果采样得到的完整的T个交互状态序列如下:

S_1,A_1,R_2,S_2,A_2,...,S_t,A_t,R_{t+1},...,R_T,S_T

那么对于t时刻的状态价值函数可以通过下面的方式进行求解:

\begin{gathered} 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 \end{gathered}

如此一来,就简单的解决了预测问题,不过还可以进行进一步的优化。在上式中,计算状态价值函数需要使用到后续所有奖励的均值,这意味着必须存储相关的所有奖励的值,而且其存储量会随着采样数量的增加而增加。

为了解决这个问题,引入了累计更新平均值的方法,即下面这个公式:

\begin{aligned} \mu_k&=\frac{1}{k}\sum_j^kx_j\\ &=\frac{1}{k}(x_k+\sum_j^{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}) \end{aligned}

其中\mu_k表示第k轮迭代的均值,\mu_{k-1}表示第k-1轮迭代的均值。

参考这个公式,我们可以将状态价值公式的计算改写为:

\begin{gathered} N_k(S_t)=N_{k-1}(S_t)+1\\ V_k(S_t)=V_{k-1}(S_t)+\frac{1}{N_k(S_t)}(G_t-V_{k-1}(S_t)) \end{gathered}

这样一来,只需要保存上一轮的次数和对应的收获,即可求解当前轮次的均值。如果数据量过大,以至于N_k(S_t)无法准确的计算,还可以使用一个系数\alpha来代替,将更新公式改为:

V_k(S_t)=V_{k-1}(S_t)+\alpha(G_t-V_{k-1}(S_t))

根据状态价值函数的求解公式,同时可以类推出动作价值函数的求解公式:

Q_k(S_t,A_t)=Q_{k-1}(S_t,A_t)+\alpha(G_t-Q_{k-1}(S_t,A_t))

策略迭代

与动态规划不同,蒙特卡洛法的目标是得到最优动作函数q_*而不是最优价值函数v_*。同时,蒙特卡洛法在进行策略选取的时候,使用的也不是greedy法,而是\epsilon-greedy法。

\epsilon-greedy的区别是增加了一个参数\epsilon。在进行策略选择时,使用1-\epsilon的概率选择当前最大的动作函数对应的动作,\epsilon的概率随机在m个动作中选取一个动作。用公式表示如下:

\pi(a|s)= \begin{cases} \epsilon/m+1-\epsilon &\text{if } a^*=\arg\max_{a\epsilon A}Q(s,a)\\ \epsilon/m &\text{else} \end{cases}

一般来说\epsilon的取值一般比较小,且在实际使用中会随着训练的不断迭代而减小。在强化学习训练的过程中,通过这种随机选取动作的方式,可以增加样本的多样性,探索到更多的样本空间。

完整的算法流程如下:

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

  2. k=k+1, 基于策略进行第k次蒙特卡罗采样,得到一个完整的状态序列:

    S_1,A_1,R_2,S_2,A_2,...,S_t,A_t,R_{t+1},...,R_T,S_T

  3. 对于该状态序列里出现的每一状态行为对,计算其收获, 更新其计数和行为价值函数:

    \begin{gathered} 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)) \end{gathered}

  4. 基于新计算出的动作价值,更新当前的\epsilon-greedy策略:

    \begin{gathered} \epsilon=\frac{1}{k}\\ \pi(a|s)= \begin{cases} \epsilon/m+1-\epsilon &\text{if } a^*=\arg\max_{a\epsilon A}Q(s,a)\\ \epsilon/m &\text{else} \end{cases} \end{gathered}

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

时序差分TD

时序差分法与蒙特卡洛法一样,都是model-free强化学习问题的求解方法。区别在于,时序差分法是在没有采样到完整的交互序列的情况下,通过部分的状态序列去估计状态的价值。

策略评估

考虑状态价值函数的另一种形式:

v_\pi(s)=E_\pi(R_{t+1}+\gamma{v_{\pi}(S_{t+1})}|S_t=s)

时序差分法用R_{t+1}+\gamma{v_{t+1}(s)}来近似的代替收获G_t,使得只需要两个连续的状态和对应的奖励,即可求解。R_{t+1}+\gamma{V(S_{t+1})}一般称为TD目标值,R_{t+1}+\gamma{V(S_{t+1})}-V(S_t)称为TD误差,用TD目标值近似代替收获的过程称为引导(bootstrapping)。

因此,时序差分G(t)的表达式为:

G(t)=R_{t+1}+\gamma V(S_{t+1})

时序差分的价值函数迭代式为:

\begin{gathered} V_k(S_t)=V_{k-1}(S_t)+\alpha(G_t-V_{k-1}(S_t))\\ Q_k(S_t,A_t)=Q_{k-1}(S_t,A_t)+\alpha(G_t-Q_{k-1}(S_t,A_t)) \end{gathered}

其中\alpha是一个值为[0,1]之间的数。

策略迭代

对于时序差分,也可以用\epsilon-greedy来进行价值迭代,和蒙特卡罗法的区别主要只是在于收获的计算方式不同。

n步时序差分

普通的时序差分主要关注的是当前时刻以及下一时刻的状态价值,可以理解为向前一步来近似求解。n步时序差分的意思是向前n步来进行求解,其收获G_t^{(n)}的表达式如下:

G_t^{(n)}=R_{t+1}+\gamma R_{t+2}+...+\gamma^{n-1}R_{t+n}+\gamma^nV(S_{t+n})

当n趋于无穷大时,即覆盖到完整的交互序列时,n步时序差分也就变成了蒙特卡洛。与普通的时序差分相比,n步时序差分因为考虑了向前n步,所以会更加精确一些。

TD(\lambda)

在使用n步时序差分的时候,这个n是一个超参数,需要通过不断的优化去选择一个最优的值。这一过程比较繁琐,为了解决这个问题,引入了一个值为[0,1]的参数\lambda。定义\lambda-收获是n从1到\infty所有步的收获乘以权重的和,每一步的权重是(1-\lambda)\lambda^{n-1}

这样\lambda-收获可以表示为:

G_t^\lambda=(1-\lambda)\sum_{n=1}^\infty\lambda^{n-1}G_t^{(n)}

迭代函数可以表示为:

\begin{gathered} V(S_t)=V(S_t)+\alpha(G_t^\lambda-V(S_t))\\ Q(S_t,A_t)=Q(S_t,A_t)+\alpha(G_t^\lambda-Q(S_t,A_t)) \end{gathered}

从上面的式子可以看出,当\lambda等于0时,算法就变成了普通的时序差分,当\lambda等于1时,则变成了蒙特卡洛。因此,TD(\lambda)就是在两者之间作了一个平衡。

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

推荐阅读更多精彩内容