强化学习个人笔记——Muse

一、对强化学习的初步认知

1、从生活中理解“强化学习”

无论是JoyRL Book [1] 中提到的蚯蚓实验,还是宠物狗的行为训练,均是经过不断地尝试和试错使得蚯蚓与狗狗学习到了对自身有利并符合实验员目的的正确策略。在生活中这种带有鲜明强化学习“味道”的一点一滴,都有着共同的特点:

  • 决策:采取一系列动作或行为来尝试解决问题或实现目标。
  • 结果:每次决策的后果,无论是积极的还是消极的,都会对下一次尝试产生影响。消极影响可能由于环境的不确定导致,也可能是自身不当理解导致。
  • 学习:通过多次的决策并出现消极结果,自身会逐渐积累经验,了解哪些动作或行为会产生有利的结果,从而在下一次尝试中做出更加明智的选择。

其中,每次决策(decision)得到的积极结果便称为奖励(reward),相反便称为惩罚(punishment)。最终通过一次次的决策来实现目标,这个目标通常是以最大化累积的奖励来呈现的,这个过程就是序列决策( sequential decision making )过程。强化学习就是解决序列决策问题的有效方法之一。换句话说,如果想要应用强化学习解决现实问题,便需要将现实问题转化成序列决策问题。

2、强化学习的应用

应用领域具体应用
游戏AlphaGo、AlphaStar、AlphaZero...
机器人NICO、BD-1
大模型ChatGDP、星火

自动驾驶、推荐系统...

...

3、强化学习方向

①、多智能体强化学习(Multi-Agent Reinforcement Learning,MARL);

②、从演示中学习(Learn From Demostration):其中包含多个方向,诸如逆强化学习(Inverse Reinforcement Learning,IRL)、从人类反馈中学习(Reinforcement Learning From Human Feedback,RLHF)。

③、探索策略(Exploration Strategy);

④、实时环境(Real-time Environment):解决思路为离线强化学习(Offline Reinforcement Learning)以及世界模型(World Model);

⑤、多任务强化学习(Multi-task Reinforcement Learning):包括联合训练(Joint Training)以及分层强化学习(Hierarchical Reinforcement Learning)。

二、马尔可夫决策过程

1、数学表示

马尔可夫决策过程是强化学习的基本问题模型之一,它能够以数学的形式来描述智能体在与环境交互的过程中学到一个目标的过程。这里智能体充当的是作出决策或动作,并且在交互过程中学习的角色,环境指的是智能体与之交互的一切外在事物,不包括智能体本身。

智能体与环境之间是在一系列离散时步中交互的,此处用 \Delta t 表示离散时间步长。在每个时步 t , 智能体会观测或者接收到当前环境的状态 s_{t},根据这个状态  s_{t}  执行动作  a_{t}。执行完动作之后会收到一个奖励 r_{t+\Delta t},同时环境也会收到动作  a_{t}  的影响会变成新的状态 s_{t+\Delta t},并且在 t+\Delta t时步被智能体观测到。如此循环下去,就可以在这个交互过程中得到一串序列决策轨迹,如下式所示。

s_{0}, a_{0}, r_{\Delta t}, s_{\Delta t}, a_{\Delta t}, r_{2\Delta t}, ..., s_{t}, a_{t}, r_{t+\Delta t}

2、马尔可夫性质

马尔可夫决策过程中的一个重要前提被称为马尔科夫性质,其数学表达形式如下式所示。

P\left (s_{t+\Delta t}\mid s_{t} \right )=P\left (s_{t+\Delta t}\mid s_{0}, s_{\Delta t}, s_{2\Delta t},..., s_{t} \right )

该公式表示,在给定历史状态为 s_{0},s_{\Delta t},⋯,s_{t} 的情况下,某个状态的未来只与当前状态 s_{t} 有关与历史状态无关。这个性质具有非常重要的指导意义,因为这允许在没有考虑系统完整历史的情况下预测和控制智能体行为。

实际问题中,有很多例子其实是不符合马尔可夫性质的,比如我们所熟知的棋类游戏,因为在我们决策的过程中不仅需要考虑到当前棋子的位置和对手的情况,还需要考虑历史走子位置,避免对手进行所谓的“下大棋”策略。按JoyRL Book [1] 中所说,这并不意味着完全不能用强化学习来解决非严格马尔科夫问题。实际上,此时可以用深度学习神经网络来表示当前的棋局,并用蒙特卡洛搜索树等技术模拟玩家的策略和未来可能的状态,来构建一个新的决策模型,这就是著名的AlphaGO算法 [2]。

3、回报

在马尔可夫决策过程中,智能体的目标函数是最大化累积的奖励,通常这些累积的奖励称为回报(Return),用 G_{t} 表示,最简单的回报公式可以表示为:

G_{t}=r_{\Delta t}+r_{2\Delta t}+...+r_{T}

其中,T 表示该马尔科夫决策过程累积最后一个奖励的总步长。这说明此时是一个有限步数的马尔科夫决策过程,例如一盘棋局或一场游戏,无论输赢每回合总是会在有限的步数内会以一个特殊的状态结束,这样的状态称之为终止状态。那么,对于没有终止状态的,即智能体会持续与环境交互的决策过程的回报,上述公式则无法很好的进行描述,最终结果将是发散的。因此,可以引入折扣因子 \gamma(Discount Factor),式 3 可以被改进为:

G_{t}=\sum_{k=0}^{}\gamma ^{k}r_{t+(k+1)\cdot \Delta t}

其中折扣因子 \gamma 取值范围在 0 到 1 之间,它表示着未来奖励的重要程度,控制着当前奖励和未来奖励之间的权重。换句话说,它体现了我们对长远目标的关注度。当 \gamma = 0 时,回报将只会体现当前的奖励,而不会体现将来的任何奖励。而当折扣因子 \gamma 接近 1 时,回报会对所有未来奖励都给予较高的关注。

这样是会使当前时步的回报 G_{t} 跟下一个时步 G_{t+\Delta t} 的回报是有所关联的,如下式所示:

\begin{aligned} G_{t}&=r_{t+\Delta t}+\gamma r_{t+2\Delta t}+\gamma^{2} r_{t+3\Delta t}+\cdots \\ &=r_{t+\Delta t}+\gamma (r_{t+2\Delta t}+\gamma r_{t+3\Delta t}+\cdots) \\ &=r_{t+\Delta t}+\gamma G_{t+\Delta t} \end{aligned}

4、状态转移矩阵

截止到目前,涉及到的决策过程均为有限状态马尔科夫过程,即状态的数量必须是有限的。如果状态数是无限的,通常会使用另一种方式来对问题建模,称为泊松( Poisson )过程。在泊松过程中,每个事件发生的机会相对较小,但当时间趋近于无穷大时,这些事件以极快的速度发生。尽管泊松过程在某些应用领域中非常有用,但有限状态马尔可夫决策过程能够囊括大多数强化学习场景。

既然状态数是有限的,马尔科夫过程可以转化为一种状态流向图表示智能体与环境交互过程中的走向。如图1所示,当智能体处于状态 s_{1} 时,会有 0.2 的概率继续保持该状态,也会分别有 0.4 的概率转换至 s_{2} 或 s_{3} 状态。此外,当智能体处于状态 s_{2} 时,也会有 0.2 的概率转换至 s_{1} 状态。这种两个状态之间能互相切换的情况可以用一条没有箭头的线连接起来,参考无向图的表示。

图1 马尔科夫链 [1]

进一步地,可以将上述状态转换概率(State Transition Probability)表示为:

P_{ss^{'}}=P(S_{t+\Delta t}=s^{'}\mid S_{t}=s)

其中 S 表示所有状态的集合,即 S=\{s_{1}, s_{2}, s_{3} \}。在此基础上,再将概率表示为矩阵形式便可得到状态转移矩阵(State Transition Matrix)。

P_{ss^{'}}=\begin{bmatrix} p_{11} &p_{12} &\cdots &p_{1n} \\ p_{21} &p_{22} &\cdots &p_{2n} \\ \vdots &\vdots &\ddots &\vdots \\ p_{n1} &p_{n2} &\cdots &p_{nn} \end{bmatrix}

对于同一状态来说,状态转移概率之和为 1,即状态转移矩阵的每一行的和为 1。同时,需要再次强调,状态转移矩阵是环境的一部分,跟智能体无关,而智能体会根据状态转移矩阵来做出决策。此外,在马尔可夫链(马尔可夫过程)的基础上增加奖励元素就会形成马尔可夫奖励过程(Markov reward process, MRP),在马尔可夫奖励过程基础上增加动作的元素就会形成马尔可夫决策过程,也就是强化学习的基本问题模型之一。

练习题

  1. 强化学习所解决的问题一定要严格满足马尔可夫性质吗?请举例说明。

        答:对于不严格满足马尔科夫性质的问题,可以采用其他技术辅助强化学习求解。诸如AlphaGO算法采用深度学习神经网络来表示当前的棋局,并用蒙特卡洛搜索树等技术模拟玩家的策略和未来可能的状态,从而构建一个新的决策模型。

     2. 马尔可夫决策过程主要包含哪些要素?

        答:马尔科夫决策过程包含状态集合、奖励函数、动作空间、概率转移矩阵以及折扣因子。

     3. 马尔可夫决策过程与金融科学中的马尔可夫链有什么区别与联系?

        答:马尔可夫链相比马尔科夫决策过程缺少奖励函数以及动作空间。而马尔科夫链形成概率转移矩阵同样是马尔科夫决策过程的基础。

三、动态规划

1、动态规划编程思想

Leetcode的第62题,求得机器人到达终点共有几条路径。机器人只能进行向下与向右运动,每次走一格。

图2 机器人行走路径示意图[3]

 动态规划的解题思路共有三个步骤:

  • 确定状态;
  • 寻找状态转移方程;
  • 寻找边界条件。

首先,机器人的初始状态位于(0, 0)坐标;其次,在非单向移动坐标(i,j)(i\neq 0 \: and\; j\neq 0)处,即坐标不位于第一行与第一列时,到达该坐标处的路径总数f(i,j)等于f(i-1,j)f(i,j-1)之和;最后,在单向移动坐标(i,j)(i= 0\: or\: j= 0)处,到达该坐标的路径总数均为1。那么,上述问题的Pyhton代码如下:

def uniquePaths(m,n):

    x= [[1]*n] #初始化第一行
    x.extend([ [1]+[0]*(n-1) for _ in range(m-1) ]) #初始化其他行

    for i in range(1,m):
        for j in range(1,n):
            x[i][j] = x[i-1][j] + x[i][j-1] #建立状态转移方程

    return x[m-1][n-1]

在初步认识动态规划问题之后,要进一步了解一下动态规划问题的三大性质:

  • 有重叠子问题;
  • 无后效性;
  • 最优化原理。

有重叠子问题指,动态规划会将每个求解过的子问题的解记录下来,这样当下一次碰到同样的子问题时,就可以直接使用之前记录的结果,而不是重复计算[4]。(动态规划使用这种方式来提高计算效率,但并非动态规划的必要条件)

无后效性与前文提到的马尔可夫性质均围绕着当前状态展开。无后效性即某阶段状态一旦确定,就不受这个状态以后决策的影响。也就是说,某状态以后的过程不会影响以前的状态,只与当前状态有关。马尔可夫性质强调某状态的未来只与当前状态有关,而与历史状态无关;无后效性强调某状态以后的决策过程只与当前状态有关,不会影响以前的状态。简而言之,在两种性质均成立时,以前的状态不影响未来状态,未来决策过程与以前的状态无关

最优化原理指,如果问题的最优解所包含的子问题的解也是最优的,就称该问题具有最优子结构,即满足最优化原理。对于上文提及的回报来说,为了解决G_{t+\Delta t}的问题,可以将其拆分为解决G_{t},G_{t-\Delta t},\cdots ,G_{\Delta t}的问题。即可以在不同时步上通过某种方法最大化对应时步的回报来解决马尔可夫决策问题,这其实就满足动态规划性质中的最优化原理。

2、状态价值函数与动作价值函数

此处的讨论涉及概率论中的全期望公式。首先,在马尔可夫决策过程中,每个状态具有一定的价值或回报。即从特定状态出发,按照某种策略\pi进行决策所能得到的回报期望值(多条trajectory的回报期望),称为状态价值函数

V_{\pi }(s)=\mathbb{E}_{\pi }\left [ G_{t}\mid S_{t}=s \right ]

而状态并非一成不变,在引入动作之后,会使价值函数发生变化,该函数被称为动作价值函数。笔者认为,称之为动作状态联合价值函数更为贴切。

Q_{\pi }(s,a)=\mathbb{E}_{\pi }\left [ G_{t}\mid S_{t}=s, A_{t}=a \right ]

那么,总状态价值函数便可以表示为下式。其中\pi (a,s)表示策略函数,一般指在状态s下执行动作a的概率分布。这个公式的意思就是在给定状态s的情况下,智能体所有动作的价值期望(所有动作价值函数乘以对应动作的概率之和)就等于该状态的价值。

V_{\pi }(s)=\sum_{a\in A}^{}\pi (a\mid s)Q_{\pi }(s,a) 

3、贝尔曼方程

对于价值状态函数可以进一步推导:

\begin{aligned} V_{\pi }(s)&=\mathbb{E}_{\pi}\left [ G_{t}\mid S_{t}=s \right ] \\ &=\mathbb{E}_{\pi}\left [ R_{t+\Delta t}+\gamma (R_{t+2\Delta t}+\gamma R_{t+3\Delta t}+\cdots) \mid S_{t}=s \right ] \\ &=\mathbb{E}_{\pi}\left [ R_{t+\Delta t}\mid S_{t}=s\right ] +\gamma\mathbb{E}_{\pi}\left [ G_{t+\Delta t} \mid S_{t}=s \right ] \end{aligned}

其中,两叠加项可分别表示为:

\begin{aligned} \mathbb{E}_{\pi}\left [ R_{t+\Delta t}\mid S_{t}=s\right]&=\sum_{a}^{}\pi (a\mid s)\mathbb{E}\left [ R_{t+\Delta t}\mid S_{t}=s, A_{t}=a\right ] \\ &=\sum_{a}^{}\left [ \pi (a\mid s)\sum_{r}^{}p(r\mid s,a)r\right ] \end{aligned}

\begin{aligned} \mathbb{E}_{\pi}\left [ G_{t+\Delta t}\mid S_{t}=s\right]&=\sum_{s'}^{}\mathbb{E}_{\pi}\left [ G_{t+\Delta t}\mid S_{t+\Delta t}=s', S_{t}=s\right ] p(s'\mid s) \\ &=\sum_{s'}^{}\mathbb{E}_{\pi}\left [ G_{t+\Delta t}\mid S_{t+\Delta t}=s'\right ] p(s'\mid s) \\ &=\sum_{s'}^{}v_{\pi}(s')p(s'\mid s) \\ &=\sum_{s'}^{}v_{\pi}(s')\left [ \sum_{a}^{}\pi (a\mid s)p(s'\mid s,a)\right ] \end{aligned}

在第二项推导过程中的第二个等式应用了马尔可夫性质,即在下一个时步状态确定的情况下,历史状态与其无关。综合来看,状态价值函数被转化为了当前奖励均值与未来奖励均值两项。此处推导细节参考西湖大学赵世钰老师的教学视频[5],最终满足所有状态的状态价值函数为:

v_{\pi}(s)=\sum_{a}^{}\pi (a\mid s)\left [ \sum_{r}^{} p(r\mid s,a)r+\gamma \sum_{s'}^{}v_{\pi}(s') p(s'\mid s,a)\right ]

因此,可得动作价值函数

q_{\pi}(s)= \sum_{r}^{} p(r\mid s,a)r+\gamma \sum_{s'}^{}v_{\pi}(s') p(s'\mid s,a)

4、最优贝尔曼方程

对于最优价值状态函数可以进一步推导:

\begin{aligned}v_{\pi}(s)&=max_{a}\sum_{a}^{}\pi (a\mid s)\left [ \sum_{r}^{} p(r\mid s,a)r+\gamma \sum_{s'}^{}v_{\pi}(s') p(s'\mid s,a)\right ]\\ &=max_{a}\sum_{a}^{}\pi (a\mid s)p(s,a) \end{aligned}

上述最优化问题求解思路同样简单且巧妙,如图三最优化求解问题为例。权重c的两个约束等同于action概率。那么无论假设q1、q2还是q3最大,其最优解必然为最大q值权重置1,其余权重置0。

图3 优化问题一例[5]

因此最优价值状态函数最优解为:

a^{*}=max_{a\in A}p(s,a)

对于上式的求解,可以借助不动点(Fixed Point)和压缩映射(Contraction Mapping)。首先,最优贝尔曼方程可以转化为一个只与状态V有关的方程。因为,在确定V的情况下即可得到对应得策略\pi,即可得:

f(v)=max_{a}\sum_{a}^{}\pi (a\mid s)p(s,a)

那么,在证明最优贝尔曼方程满足压缩映射条件后(可参考《Mathmatical Foundation of Reinforcement Learning》[6]),便可应用压缩映射理论便可以对最优贝尔曼方程进行贪婪迭代求解。

图4 压缩映射理论定义[5]

举例来说,首先在k=0时,初始化状态价值函数v_{k}(s),并计算所有策略下的q_{k}(s)。对每个状态采用贪婪思想采取最大化的策略,最终迭代得到最大的v_{k}(s)。这也是后文提及的价值迭代算法

图5 最优贝尔曼方程求解过程[5]

 5、价值迭代算法

上文的求解过程已经概括了价值迭代算法的求解过程,此处举例说明:

图6 价值迭代算法示例[5]

上述模型参数已知,如撞墙奖励为-1、禁止区域奖励为-1、原地奖励为0、非目标奖励为0、目标奖励为1,折扣因子为0.9。此时,可以按公式依次计算q_{k}(s),此时概率p(s'\mid s,a)均为1。

q_{k}(s)= \sum_{r}^{} p(r\mid s,a)r+\gamma \sum_{s'}^{}v_{k}(s) p(s'\mid s,a)

图7 价值迭代算法示例[5]

在第一轮迭代过程中,假设按照贪婪思想,选取q_{k}(s)表中标红色策略更新选取策略,如图6(b)示。可以明显看出,目前的s_{1}状态策略并非最优,对于状态s_{2}s_{3}来说策略达到最优。因此,在更新状态之后,进入第二轮迭代。

图8 价值迭代算法示例[5]

该轮迭代后,实现最优策略。在后续的迭代过程中,以迭代差值容差判断循环停止,确定最优策略。

 6、策略迭代算法

策略迭代算法包含两个主要步骤,即策略估计(PE)与策略提升(PI)。首先,在初始化策略已知的情况下,第一个步骤通过对贝尔曼方程进行迭代求解状态价值,即:

v_{\pi _{k}}=r_{\pi _{k}}+\gamma P_{\pi _{k}}v_{\pi _{k}}

v_{\pi _{k}}^{(j+1)}=r_{\pi _{k}}+\gamma P_{\pi _{k}}v_{\pi _{k}}^{(j)},\; j=1,2,3,...

图9 策略迭代算法策略估计步骤[5]

 在状态价值收敛后,即得状态价值,此时进行策略提升步骤,求得最大化的q_{\pi _{k}},进而更新策略。

图10 策略迭代算法策略提升步骤[5]

 策略提升的定义如下,在此轮次下更新得到的策略\pi _{k+1},其状态价值v _{\pi _{k+1}}也一定大于v _{\pi _{k}},其证明可参考文献[6]。

图11 策略提升定义[5]

 直观来说,不断地更新策略会使得状态价值不断逼近最优状态价值。这也是可以从数学角度严格证明的,具体的推导过程同样参考文献[6]。

图12 策略迭代收敛性定理[5]

策略迭代过程的伪代码总结如下:

图13 策略迭代算法伪代码[5]

  7、两种迭代算法的比较

对比两种迭代算法,我们可以明显的看出两者有很多共通之处。下图则假使两种算法不同初始化方式得到相同的v_{0}v_{\pi _{0}})。可以明显看出,两种算法的不同之处在于第四步,策略迭代过程的状态价值包含一个收敛过程,而价值迭代算法的该过程只是策略迭代算法该过程的第一步。

图14 两种算法的比较表[5]

相比于这两种均相对“极端”的算法,截断迭代算法则更加通用。 即在第四步的迭代过程中,既不像价值迭代算法一样仅作一步,也不像策略迭代算法一样迭代无限多步,而是设定固定的j次迭代步骤。因此,截断迭代算法并不是判断状态价值是否收敛,而是判断迭代次数是否达到阈值。

图15 断迭代算法与两种算法的异同[5]

以一个5*5网格状态的问题为例,其容差设置为0.001。从图中可以看出,轮次设置为3时,相比于价值迭代算法有了很高的效率提升。 

图16 截断迭代算法轮次阈值设置的轮次对比[5]

四、免模型的强化学习算法

1、有模型与免模型算法的比较

从上文的学习过程中可以了解到,无论是价值迭代算法还是策略迭代算法,其迭代更新的前提是模型参数及状态转移概率是完全已知的。一旦模型环境已知,智能体可以根据依据该模型计划最佳策略。而免模型算法则与之相反,相关算法直接学习在特定状态下执行特定动作的价值或优化策略。它直接从与环境的交互中学习,不需要建立任何预测环境动态的模型。

2、蒙特卡洛方法

蒙特卡洛方法是基于大数定理发展而来的估计方法。对于随机变量X,其独立同分布的样本均值是随机变量X的期望的无偏估计。两者的偏差在样本量趋近于无穷时逼近零。蒙特卡洛算法即是按抽样调查法求取统计平均值来推定未知特性量的计算方法[7]。

图17 大数定理[5]

 那么,蒙特卡洛方法应用于免模型强化学习算法是非常契合的。相比于策略迭代算法,q_{\pi _{k}}的求解是至关重要的。而对于免模型强化学习,模型参数与状态转移概率是未知的。因此,q_{\pi _{k}}的求解则需要应用动作价值的原始定义与蒙特卡洛方法,计算每一次采样的折扣回报g(s,a)的和平均估计q_{\pi _{k}}。除此之外,蒙特卡洛方法最基础的版本与策略迭代方法别无二致。这也体现出了模型与数据之间的巧妙侧重。

图18 免模型与有模型动作价值的不同求解方式[5]

3、蒙特卡洛Exploring Starts方法

然而,普通的蒙特卡洛方法效率较低,对于每个状态的每个episode都要进行计算。在计算过程中需要等待收集所有episode的计算结果。因此,Exploring Starts方法对其进行了优化。基于初访思想(Initial-visit Method),对于每一个q_{\pi }(s,a)都可以用策略的后半段的episode计算表示。

图19 Initial-visit Method示例[5]

 蒙特卡洛Exploring Starts方法有两种数据效率的提升方式:

  • 首访思想(First-visit Method)
  • 遍访思想(Every-visit Method)

  顾名思义,首访思想对于某一q_{\pi }(s,a)来说,仅考虑其第一次出现的结果;而遍访思想则考虑每一次q_{\pi }(s,a)出现的结果。以图19的例子来说,共出现了两次q_{\pi }(s_{1},a_{2}),首访思想则仅以第一次出现的q_{\pi }(s_{1},a_{2})作为该动作价值的计算结果;遍访思想则以两次的平均作为该动作价值的计算结果。

 上述方法每得到一个q_{\pi }(s,a)便可以快速更新策略。对比蒙特卡洛方法的基础版本,该方法对于动作价值的估计显然不是十分精确的,正如上文提及的截断迭代算法,其在实际应用中仍然是有效的。这一大类的算法均符合非精确的Generalized Policy Iteration框架。

该算法的实际应用中还有一个提升效率的小trick,即在计算一条episode的q_{\pi }(s,a)时,并非从前往后计算,而是从后往前计算。这样前一个q_{\pi }(s,a)便可以后一个回报g表达:

G(s_{t},a_{t})=r(s_{t},a_{t})+\gamma g

至此,我们便可以进一步Exploring Starts的含义。根据上述思想来看,为了收集所有的(s,a),依靠环境决定的visit是很难做到的,那么我们就需要探索更多的start起始点,确保每一个(s,a)都有一条episode。Exploring Starts对于该算法是极为必要的,但在实际应用中,这是较难做到的。以赵世钰老师举得例子便可知,在一个机器人网格问题中,需要把机器人“苦大仇深”地搬运到各个出发点,再设置好相应程序。

4、蒙特卡洛Epsilon-Greedy方法

为了解决Exploring Starts的缺陷,本节涉及的蒙特卡洛\varepsilon-Greedy方法则采用了Soft Policies,即对每个action都有选择的可能。若一条episode非常长,这就能够保证每个(s,a)组合都可以被访问到,Exploring Starts条件便可以去除。

\varepsilon-Greedy是Soft Policies的一种,其计算方法如下:

\pi (a,s)=\left\{\begin{matrix} &1-\frac{\varepsilon }{\left | A(s) \right |}({\left | A(s) \right |}-1), & \textrm{for the greedy action} \\ & \frac{\varepsilon }{\left | A(s) \right |}, & \textrm{for the other}\: {\left | A(s) \right |}-1\: \textrm{actions} \end{matrix}\right.

其中,\varepsilon\in \left [ 0,1 \right ]\left | A(s) \right |为状态s的动作数量。\varepsilon-Greedy的意义就是对于贪婪动作与非贪婪动作采取不同的选择概率,使得其他动作也有被选择的可能。\varepsilon-Greedy能够平衡利用(exploitation)和探索(exploration)。Exploitation即充分利用当前动作价值更大的动作;Exploration即在明确更大的动作之后,为了确保信息更为全面而探索其他动作,寻求更大的动作价值。当\varepsilon取0时,则采取greedy策略,其他动作的概率为0,更加倾向于充分利用;当\varepsilon取1时,则采取探索策略,所有动作的选择概率相同。该算法的伪代码如下:

图20 蒙特卡洛Epsilon-Greedy伪代码[5]

值得注意的是,该算法采用了遍访思想。因为,在很长的episode情况中,\varepsilon-Greedy访问次数较多,首访思想将有失偏颇。

五、随机近似与随机梯度下降算法

1、平均迭代估计

在介绍其他免模型算法之前,需要提前了解一些相关知识,这样能够加深以后学习的深刻程度。对于平均值的计算,大家都十分熟悉了。但是对于大量数据的平均值计算,存在严重的低效问题,即计算结果要等待数据的累加结果。因此,平均值计算可以转换为迭代估计的形式,即:

w _{k+1}=\frac{1}{k}\sum_{i=1}^{k}x_{i},\; k=1,2,...

上述公式可以继续转化为迭代形式:

\begin{aligned} w_{k+1}=\frac{1}{k}\sum_{i=1}^{k}x_{i}&=\frac{1}{k}(\sum_{i=1}^{k-1}x_{i}+x_{k})\\ &=\frac{1}{k}\left [ (k-1)w_{k}+ x_{k}\right ]\\ &=w_{k}-\frac{1}{k}(w_{k}- x_{k}) \end{aligned} 

图21 平均迭代估计案例[5]

这种增量式的迭代算法,在数据量越来越大后,对均值的计算结果越精确。除了能够显示获得平均值的计算形式,\frac{1}{k}可以设置为大于0的参数\alpha,获得一个更通用的计算形式。当该参数不再等于\frac{1}{k}时,其仍然能够估计平均值,后续将会进一步举例与证明。

2、 Robbins-Monro算法

随机近似(Stochastic Approximation)是一种无需方程与其导数的求解优化问题的方法。此时读者一定非常困惑,既然都没有方程存在,又该如何对其最优化问题求解呢?这便可以联想到上文提及的“无模型,靠数据”的数理哲学思想,即在方程未知时,便需要数据迭代进行求解。

Robbins-Monro(RM)算法是后续将要介绍的随机梯度下降算法以及平均迭代估计方法的更普遍形式。我们知道,导数为零是函数求得最大、最小值的必要条件,但并非充分条件。在很多情况中,导数为零找到的为局域极值。对于只有一个极值点的情况,上述必要条件便为充要条件。那么对于g(w)=0,RM算法的迭代方程如下:

w _{k+1}=w _{k}-a_{k}\widetilde{g}(w _{k},\eta _{k}),\; k=1,2,...

其中,g(w)为黑箱函数,\alpha_{k}为大于零的参数,该算法依靠数据的多次试验迭代求解。其中,\widetilde{g}(w_{k},\eta _{k} )=g(w_{k})+\eta _{k}为第k次数据样本观测值。

RM算法的收敛性有如下数学形式要求。其一是对梯度的要求;其二是对系数的要求;其三是对噪声的要求。第一个收敛条件保证g是单调递增的,这就保证了g(w)=0的根存在并且是唯一的;第二个收敛条件确保\alpha_{k}k趋向无穷时收敛为0,并且不会过快收敛到0;第三个收敛条件保证噪声不会导致最终结果的发散。

图22 RM算法收敛性条件[5]

 对于第二个收敛条件,可以进一步说明其重要性。RM算法的迭代方程可以转化为:

w _{k+1}-w_{k}=-a_{k}\widetilde{g}(w _{k},\eta _{k})

为了保证收敛性,在k趋近于无穷时,\omega _{k+1}-\omega _{k}应趋近于0。因此,a_{k}系数的平方和在k趋近于无穷时小于无穷,意味着在k趋近于无穷时,a_{k}系数趋近于0。除此之外,我们从\omega _{2}开始将其代入RM算法的迭代方程,可得:

w _{\infty }-w_{1}=\sum_{k=1}^{\infty }a_{k}\widetilde{g}(w_{k},\eta _{k})

如果,a_{k}系数的和在k趋近于无穷时小于无穷,那么结合RM算法第一个收敛条件,w_{\infty }-w_{1}便是有界的。因此,w_{1}的初始化便存在着局限,这意味着我们无法随意选择w _{1},这样是不利于应用的。因此a_{k}系数的和在k趋近于无穷时,也应趋近于无穷。

还记得上文提到的“平均迭代估计是特殊的RM算法”结论吗?下文可以给出具体原因。首先,可以给出以下g(w)相关函数:

g(w)=w-\mathbb{E}\left [ X \right ]

\widetilde{g}(w,x)=w-x

\begin{aligned} \widetilde{g}(w,\eta )=w-x&=w-x+\mathbb{E}\left [ X \right ]-\mathbb{E}\left [ X \right ]\\ &=(w-\mathbb{E}\left [ X \right ])+(\mathbb{E}\left [ X \right ]-x)\\ &=g(w)+\eta \end{aligned}

因此,RM算法求解g(w)=0,即等效于平均迭代估计求解随机变量的平均估计。

w _{k+1}=w_{k}-a_{k}\widetilde{g}(w _{k},\eta _{k})=w_{k}-a_{k}(w_{k}-x_{k})

RM定理可由Dvoretzkys收敛定理证明,读者可自行选读。

图23 Dvoretzkys收敛定理[5]

3、 随机梯度下降算法 

可以首先明确的一点是,随机梯度下降算法是特殊化的RM算法, 平均迭代估计是特殊化的随机梯度下降算法。读者可以在后续的讨论中逐渐理解其含义。此处以一个优化问题为例:

\underset{w}{\textup{min}} \; J(w)=\mathbb{E}[f(w,X)]

该优化问题的目的,是最小化目标函数J(w),确定最优化参数w梯度下降算法(Gradient Descent, GD)则是在目标函数对参数w的梯度方向逐步更新参数w,从而寻找目标函数的极小值。

w_{k+1}=w_{k}-\alpha _{k}\triangledown _{w}J(w)=w_{k}-\alpha _{k}\mathbb{E}[\triangledown _{w}f(w_{k},X)] 

批量梯度下降算法(Batch Gradient Descent, BGD)则是在整个数据集的基础上,求解目标函数的梯度\triangledown _{w}J(w)。对于上个例子而言,其算法公式如下:

w_{k+1}=w_{k}-\alpha _{k}\frac{1}{n}\sum_{i=1}^{n}\triangledown _{w}f(w_{k},x_{i})

虽然该方法对目标函数的梯度估计较为精确,但其n次样本的求解效率较低。而随机梯度下降算法(Stochastic Gradient Descent, SGD)则采用随机单个样本的梯度代替整个数据的精确梯度估计。从直觉上来讲,这种估计是不准确的。但其在多次迭代过程中,能够在保证较高效率的同时,确保目标函数有效收敛。对于本例的应用,随机梯度下降算法公式为:

w_{k+1}=w_{k}-\alpha _{k}\triangledown _{w}f(w_{k},x_{k})

 直接证明随机梯度下降算法的收敛性是十分复杂的,将其转化为RM算法的收敛性条件则更加简洁,并且容易理解。那么,为了优化求解\mathbb{E}[\triangledown _{w}f(w,x)]=0,可将其转化为:

\begin{aligned} \widetilde{g}(w,\eta )&=g(w)+\eta\\ &=\mathbb{E}[\triangledown _{w}f(w,x)]+\left \{ \triangledown _{w}f(w,x)-\mathbb{E}[\triangledown _{w}f(w,x)] \right \} \end{aligned}

 因此,可以发现,随机梯度下降算法是特殊的RM算法。其收敛性条件同理可得:

图24 随机梯度下降算法收敛条件[5]

 为了进一步探究随机梯度下降算法在收敛过程中的有效性,可以借助相对误差工具(Relative Error)进行理论分析。其计算方式如下,代表随机样本梯度与精确梯度估计之间的相对误差:

\delta _{k}=\frac{\left | \triangledown _{w}f(w_{k},x_{k})-\mathbb{E}[\triangledown _{w}f(w_{k},X)] \right |}{\left | \mathbb{E}[\triangledown _{w}f(w_{k},X)] \right |}

对于最优值来说E[\triangledown _{w}f(w^{*},X)]=0,上式可进一步表示下式,同时利用中值定理作进一步转化,将w_{k}w^{*}融合至一项:

\delta _{k}=\frac{\left | \triangledown _{w}f(w_{k},x_{k})-\mathbb{E}[\triangledown _{w}f(w_{k},X)] \right |}{\left | \mathbb{E}[\triangledown _{w}f(w_{k},X)] -\mathbb{E}[\triangledown _{w}f(w^{*},X)]\right |}=\frac{\left | \triangledown _{w}f(w_{k},x_{k})-\mathbb{E}[\triangledown _{w}f(w_{k},X)] \right |}{\left | \mathbb{E}[\triangledown _{w}^{2} f(\widetilde{w}_{k},X) (w_{k}-w^{*})]\right |}

对上式分母进行相应转化,并且因\triangledown _{w}^{2}f(w,X)\geq c>0,所以有如下关系:

\begin{aligned} {\left | \mathbb{E}[\triangledown _{w}^{2} f(\widetilde{w}_{k},X) (w_{k}-w^{*})]\right |} &= {\left | \mathbb{E}[\triangledown _{w}^{2} f(\widetilde{w}_{k},X)] (w_{k}-w^{*})\right |}\\ &={\left | \mathbb{E}[\triangledown _{w}^{2} f(\widetilde{w}_{k},X)] \right |} {\left |(w_{k}-w^{*}) \right |}\geq c{\left |w_{k}-w^{*} \right |} \end{aligned}

因此,相对误差表示式如下。分子表示随机梯度与真实梯度的绝对差值,分母表示最优解距离。当距离最优解很远时,相对误差的上限是一项极小值,说明随机梯度与真实梯度的差距很小,其收常速度将非常快;而当距离最优解较近时,相对误差上限将变得很大,体现出了基于单样本的随机梯度的随机性。

\delta _{k}\leq \frac{\left | \triangledown _{w}f(w_{k},x_{k})-\mathbb{E}[\triangledown _{w}f(w_{k},X)] \right |}{c\left | w_{k}-w^{*}\right |}

除了上述介绍的梯度下降算法以外,还有一种名为小批量梯度下降算法(Mini-batch Gradient Descent, MBGD)。相比于BGD算法应用一整个数据集以及SGD应用随机单样本,MBGD算法则更为折中,选取整个数据集的一小部分。当MBGD选取的数据集为一整个时,其相对于BGD来说也有些许差别,即MBGD对整个数据集随机取样n次(n为整个数据集的样本数),有可能对同一样本取样多次。

举例来说,给出一组数据\left \{ x \right \}_{i=1}^{n},目标是求得该数据集的平均值\overline{x}。将其转化为最优化问题,其目标函数为:

\underset{w}{\textup{min}} \; J(w)=\frac{1}{2n}\sum_{i=1}^{n}\left \| w-x_{i} \right \|^{2}

因此,该目标函数的梯度可以进一步求解,并应用三种梯度下降算法:

w_{k+1}=w_{k}-\alpha _{k}\frac{1}{n}\sum_{i=1}^{n}(w_{k}-x_{i})=w_{k}-\alpha _{k}(w_{k}-\overline{x}),\; (BGD)

w_{k+1}=w_{k}-\alpha _{k}\frac{1}{m}\sum_{i\in \mathbb{I}_{k}}^{m}(w_{k}-x_{j})=w_{k}-\alpha _{k}(w_{k}-\overline{x}_{k}^{(m)}),\; (MBGD)

w_{k+1}=w_{k}-\alpha _{k}(w_{k}-x_{k}),\; (SGD)

\alpha _{k}=\frac{1}{k}时,以上公式可以进一步显式表达为:

w_{k+1}=\frac{1}{k}\sum_{j=1}^{k}\overline{x}=\overline{x},\; (BGD)

w_{k+1}=\frac{1}{k}\sum_{j=1}^{k}\overline{x}_{j}^{(m)},\; (MBGD)

w_{k+1}=\frac{1}{k}\sum_{j=1}^{k}x_{k},\; (SGD)

最终,收敛效果如下图所示。在接近最优点时,SGD算法明显表现出了其应有的随机性,MBGD算法在选择合适的batch_size后,将兼顾高效与准确的优点。

图25 三种随机梯度下降算法收敛效果[5]

六、时序差分方法 

基于上一章节的内容,我们可以进一步将问题复杂化,即计算w=\mathbb{E}\left [ R+\gamma v(X) \right ]。其中,RX均为随机变量,\gamma为常数,v(\cdot)为一个函数。假设可以获得RX随机变量的样本\left \{ r \right \}\left \{ x \right \},根据RM算法能够计算:

g(w)=w-\mathbb{E}\left [ R+\gamma v(X) \right ]

\begin{aligned} \widetilde{g}(w,x)&=w-\left [ r+\gamma v(x) \right ]\\ &= \left \{w-\mathbb{E}\left [ R+\gamma v(X) \right ] \right \}+\left \{\mathbb{E}\left [ R+\gamma v(X) \right ]-\left [ r+\gamma v(x) \right ]\right \}\\ &=g(w)+\eta \end{aligned}

根据RM算法即可对其迭代求解g(w)=0

w _{k+1}=w_{k}-a_{k}\widetilde{g}(w _{k},\eta _{k})=w_{k}-a_{k}\left \{ w_{k}-\left [ r_{k}+v(x_{k}) \right ] \right \}

上式将为后续时序差分算法的介绍提供一些初印象。

1、Temporal-Difference (TD) 算法

 该节介绍的TD算法属于TD Learning方法大类中的最基础的一个算法。首先,可以给出该算法的具体形式:

\begin{aligned} \left\{ \begin{matrix} v_{t+1}(s_{t})=v_{t}(s_{t})-\alpha _{t}\left \{ v_{t}(s_{t})-\left [ r_{t+1}+\gamma v_{t}(s_{t+1}) \right ] \right \}\\ v_{t+1}(s)=v_{t}(s)\;\; \; \; \forall s\neq s_{t} \end{matrix}\right. \end{aligned}

第一个式子用来更新所处状态s_{t}的状态价值估计,第二个式子则保持非该时刻所处状态的状态价值估计。其中,第一个式子中对于所处状态s_{t}的状态价值估计的修正可分为两项,其一可称为TD target:

\overline{v}_{t}=r_{t+1}+\gamma v(s_{t+1})

之所以将\overline{v}_{t}称为TD target,是因为TD算法始终在向其逐步靠近。该结论可以很容易的证明,具体证明过程如下:

\begin{aligned}&\, v_{t+1}(s_{t})=v_{t}(s_{t})-\alpha _{t}\left [ v_{t}(s_{t})-\overline{v}_{t} \right ]\\ &\, \Rightarrow v_{t+1}(s_{t})-\overline{v}_{t} =v_{t}(s_{t})-\overline{v}_{t} -\alpha _{t}\left [ v_{t}(s_{t})-\overline{v}_{t} \right ]\\ &\, \Rightarrow v_{t+1}(s_{t})-\overline{v}_{t} =(1 -\alpha _{t})\left [ v_{t}(s_{t})-\overline{v}_{t} \right ]\\ &\, \Rightarrow \left | v_{t+1}(s_{t})-\overline{v}_{t} \right | =\left | 1 -\alpha _{t} \right |\left | v_{t}(s_{t})-\overline{v}_{t} \right |\\ \end{aligned}

由于\alpha _{t}为大于0小于1的常数,因此\left | v_{t+1}(s_{t})-\overline{v}_{t} \right | \leq \left | v_{t}(s_{t})-\overline{v}_{t} \right |,即t+1时刻所处状态s_{t}的状态价值估计距离TD target更近。

其二,可称为TD error:

\delta _{t}=v_{t}(s_{t})-\left [ r_{t+1}+\gamma v_{t}(s_{t+1}) \right ]=v(s_{t})-\overline{v}_{t}

该差值由两个相邻时刻的状态价值估计相减得到。同时,该式也是当前的估计值v_{t}与目标估计值v_{\pi }之间的差值,那么当v_{t}等于v_{\pi }时,\delta _{t}=0。那么当v_{t}=v_{\pi}时:

\delta _{\pi,t}=v_{\pi}(s_{t})-\left [ r_{t+1}+\gamma v_{\pi}(s_{t+1}) \right ]

\mathbb{E}\left [ \delta _{\pi,t}|S_{t}=s_{t} \right ]=v_{\pi}(s_{t})-\mathbb{E}\left [ R_{t+1}+\gamma v_{\pi}(S_{t+1}) |S_{t}=s_{t}\right ]=0

该基础TD算法仅能够进行估计给定策略的状态价值,无法估计动作价值,也无法寻找最优策略,但该算法是后续TD方法的基础。

其实,TD算法提供了一种在无模型情况下求解贝尔曼公式的方法。根据前文可知,状态价值函数定义为:

v_{\pi }(s)=\mathbb{E}\left [ R+\gamma G\mid S=s \right ]

其中,\mathbb{E}\left [ G\mid S=s \right ]可以进一步从有模型形式转化为无模型形式:

\mathbb{E}\left [ G\mid S=s \right ]=\sum_{a}^{}\pi(a|s)\sum_{s'}^{} p(s'\mid s,a)v_{\pi}(s')=\mathbb{E}\left [ v_{\pi}(S^{'})|S=s \right ]

因此,可得无模型形式的贝尔曼方程,也被称为贝尔曼期望方程(Bellman Expection Equation):

v_{\pi }(s)=\mathbb{E}\left [ R+\gamma v_{\pi}(S^{'})\mid S=s \right ],\; \; s\in S

那么,对于该式的求解,很明显仍然需要用到RM算法,即:

g\left [ v(s) \right ]=v(s)-\mathbb{E}\left [ R+\gamma v_{\pi}(S^{'})\mid s \right ]=0

\begin{aligned} \widetilde{g}\left [ v(s) \right ]&=v(s)-\left [ r+\gamma v_{\pi}(s^{'}) \right ]\\ &=\left \{v(s)-\mathbb{E}\left [ R+\gamma V_{\pi}(S^{'}) \mid s\right ] \right \}+\left \{\mathbb{E}\left [ R+\gamma V_{\pi}(S^{'}) \mid s\right ]-\left [ r+\gamma v_{\pi}(s^{'}) \right ] \right \}\\ &=g\left [ v(s) \right ]-\eta \end{aligned}

v_{k+1}(s)=v_{k}(s)-\alpha _{k}\left \{ v_{k}(s)-\left [ r_{k}+\gamma v_{\pi}(s_{k}^{'}) \right ] \right \} 

此时,该公式与TD算法已经非常相似,但仍然有些许不同。其一,\left \{ (s,r,s^{'}) \right \}的反复采样过程不同于TD算法的时序episode过程;其二,v_{\pi }(s_{k}^{'})是状态价值的精确估计,而TD算法中的v_{k}(s_{k}^{'})则是状态价值的迭代估计值。因此,读者可能会对TD算法的收敛性产生些许质疑。下面将会对其进一步说明。

 对于第一个问题来说,TD算法将\left \{ (s,r,s^{'}) \right \}的反复采样过程进行相应转化,在基于一条轨迹的情况下,只有当访问到某一状态时才会依据算法更新其状态价值的估计值,若未访问到该状态,则该状态的状态价值保持不变。对于第二个问题来说,则是应用v_{k}(s_{k}^{'})代替v_{\pi }(s_{k}^{'}),经过证明这种替换方式并不影响其收敛性,具体证明可见文献[6]。

图26 TD算法收敛条件[5]

至此,我们可以清晰地对比得出TD算法与蒙特卡洛算法的优劣势。由于TD算法始终根据reward与下一个状态的状态价值估计更新当前状态的状态价值,具有支持连续任务且支持在线更新的特点。相反,蒙特卡洛算法需要计算一条完整episode的回报期望,用以确定相应动作价值。所以,该算法适用于离线且非持续连续的片段任务。

图27 TD算法与MC算法优缺点对比表1[5]

 然而,TD算法的状态价值估计需要基于之前该状态价值的估计进行更新,所以该算法需要设定初始值。而蒙特卡洛算法则是对状态或动作价值的无偏估计,无需设定初始值。此外,TD算法在更新状态价值估计时,受到较少的随机变量影响,导致其具有低估计方差。蒙特卡洛算法则恰恰相反。

图28 TD算法与MC算法优缺点对比表2[5]

2、Sarsa 算法

上一节中提及的TD算法能够对状态价值进行估计,那么Sarsa算法则能够直接对动作价值进行估计。 观察下方给出的Sarsa算法能够发觉,该算法的形式与TD算法极其相似,只不过将v(s_{t})替换为q(s_{t},a_{t}),将求解v_{\pi}(s)的估计值更换为求解q_{\pi}(s,a)的估计值。

\begin{aligned} \left\{ \begin{matrix} q_{t+1}(s_{t},a_{t})=q_{t}(s_{t},a_{t})-\alpha _{t}\left \{ q_{t}(s_{t},a_{t})-\left [ r_{t+1}+\gamma q_{t}(s_{t+1},a_{t+1}) \right ] \right \}\\ q_{t+1}(s,a)=q_{t}(s,a)\;\; \; \; \forall (s,a)\neq (s_{t},a_{t}) \end{matrix}\right. \end{aligned}

Sarsa是一种用于求解给定策略的贝尔曼方程的随机近似算法。类似的,q_{\pi}(s,a)同样可以转化为无模型形式:

q_{\pi }(s,a)=\mathbb{E}\left [ R+\gamma q_{\pi}(S^{'},A^{'})\mid s,a \right ],\; \; (s,a)\in (S,A)

从贝尔曼方程出发,上式可以逐步推导得出。其中,q_{\pi}(s,a)可以表示为:

\begin{aligned} q_{\pi}(s,a)&= \sum_{r}^{} p(r\mid s,a)r+\gamma \sum_{s'}^{}v_{\pi}(s') p(s'\mid s,a)\\ &=\sum_{r}^{} p(r\mid s,a)r+\gamma \sum_{s'}^{}p(s'\mid s,a)\sum_{a'}^{}q_{\pi}(s',a')\pi(a'\mid s')\\ \end{aligned}

p(s',a'\mid s,a)可以进一步等效为:

\begin{aligned} p(s',a'\mid s,a)&=p(s'\mid s,a)p(a'\mid s',s,a)\\ &=p(s'\mid s,a)p(a'\mid s')\\ &=p(s'\mid s,a)\pi(a'\mid s') \end{aligned}

因此,q_{\pi}(s,a)的第二项可以替换为下式,q_{\pi}(s,a)的无模型期望表达式证毕。

\begin{aligned} q_{\pi}(s,a)=\sum_{r}^{} p(r\mid s,a)r+\gamma \sum_{s'}^{}\sum_{a'}^{}p(s',a'\mid s,a)q_{\pi}(s',a')\\ \end{aligned}

将上述Sarsa算法与PI结合起来,便是完整的Sarsa算法。该算法的核心在于q-value进行随机近似更新后,立即更新策略,完美体现了Generalized Policy Iteration思想。同时\varepsilon-greedy思想,而非greedy思想,能够尽可能多的访问不同状态动作组合。

图29 Sarsa算法伪代码[5]

3、Expected Sarsa及n-step Sarsa算法

(1)、Expected Sarsa算法 

Expected Sarsa算法则是在Sarsa算法的基础上,进一步应用期望替代随机变量采样a_{t+1},是一种以较大计算量换取随机性减少的策略。该算法的计算公式如下:

\begin{aligned} \left\{ \begin{matrix} q_{t+1}(s_{t},a_{t})=q_{t}(s_{t},a_{t})-\alpha _{t}\left \{ q_{t}(s_{t},a_{t})-\left \{ r_{t+1}+\gamma \mathbb{E}\left [ q_{t}(s_{t+1},A) \right ] \right \} \right \}\\ q_{t+1}(s,a)=q_{t}(s,a)\;\; \; \; \forall (s,a)\neq (s_{t},a_{t}) \end{matrix}\right. \end{aligned}

其中,\mathbb{E}\left [ q_{t}(s_{t+1},A) \right ]计算状态s_{t+1}的动作价值期望,即状态s_{t+1}的状态价值。

\mathbb{E}\left [ q_{t}(s_{t+1},A) \right ]=\sum_{a}^{}\pi _{t}(a\mid s_{t+1})q_{t}(s_{t+1},a)=v_{t}(s_{t+1})

在数学形式上,该算法仍然是在求解贝尔曼方程:

\begin{aligned} q_{\pi}(s,a)&= \sum_{r}^{} p(r\mid s,a)r+\gamma \sum_{s'}^{}v_{\pi}(s') p(s'\mid s,a)\\ &=\mathbb{E}\left [ R+\gamma v_{\pi}(S^{'})\mid s,a \right ]\\ \end{aligned}

(2)、n-step Sarsa算法 

n-step Sarsa算法则是Sarsa算法与MC算法的结合体,其思想与前文提到的截断迭代方法有异曲同工之妙。从动作价值的定义出发,q_{\pi}(s,a)的无模型期望表达式前文已证:

\begin{aligned} q_{\pi}(s,a)=\sum_{r}^{} p(r\mid s,a)r+\gamma \sum_{s'}^{}\sum_{a'}^{}p(s',a'\mid s,a)q_{\pi}(s',a')\\ \end{aligned}

因此,q_{\pi}(s,a)的定义公式:\mathbb{E}_{\pi }\left [ G_{t}\mid S_{t}=s, A_{t}=a \right ]中的G_{t}便可以表示为:

G_{t}=R_{t+1}+\gamma q_{\pi}(S_{t+1},A_{t+1})

可见,该时刻episode的回报与后续的动作价值相关。那么,将G_{t}^{(1)}代入q_{\pi}(s,a)的定义公式,便可以得到Sarsa算法的求解目标;将G_{t}^{(\infty )}代入q_{\pi}(s,a)的定义公式,便可以得到对一条trajectory的reward相加近似求解q_{\pi}(s,a),这便是蒙特卡洛的思想。

图30 n-step Sarsa算法的TD target[5]

 综上所述,n-step算法的求解目标以及该算法计算公式如下:

q_{\pi}(s,a)=\mathbb{E}\left [ G_{t}^{(\infty)} \mid s,a \right ]=\mathbb{E}\left [ R_{t+1}+\gamma R_{t+2}+\cdots +\gamma ^{n}q_{\pi}(S_{t+n},A_{t+n}) \mid s,a \right ]

\begin{aligned} q_{t+1}(s_{t},a_{t})=q_{t}(s_{t},a_{t})-\alpha _{t}\left \{ q_{t}(s_{t},a_{t})-\left [ r_{t+1}+\gamma r_{t+2}+\cdots +\gamma ^{n}q_{t}(s_{t+n},a_{t+n}) \right ] \right \} \end{aligned}\\ 

 既然该算法是Sarsa算法与MC算法的结合,便说明该算法既不是在线的也不是离线的,在经历Sarsa部分后需要等待后续MC部分的计算。同样,该算法也融合了两种算法的优劣势。如果n较大的,它的性能接近MC算法,因此有一个较大的variance,但一个较小的bias;如果n很小,其性能接近Sarsa算法,拥有相对低的variance,以及相对大的偏差(由于初始值的选择)。

4、Q-learning算法

 万众瞩目的Q-learning算法通过上述理论作为铺垫,将会变得相对容易理解。与Sarsa算法不同的是,Q-learning算法将会直接估计最优动作价值,从而不需要PE与PI两个过程的交替往复。Q-learning算法的数学表示形式如下:

\begin{aligned} \left\{ \begin{matrix} q_{t+1}(s_{t},a_{t})=q_{t}(s_{t},a_{t})-\alpha _{t}\left \{ q_{t}(s_{t},a_{t})-\left [ r_{t+1}+\gamma \underset{a\in A}{\textup{max}}q_{t}(s_{t+1},a) \right ] \right \}\\ q_{t+1}(s,a)=q_{t}(s,a)\;\; \; \; \forall (s,a)\neq (s_{t},a_{t}) \end{matrix}\right. \end{aligned}

从该公式可以明显看出,其形式与Sarsa算法形式一致,只有TD target有所不同。Sarsa算法在当前策略选择一个动作a,Q-learning算法则是对动作a进行优化。在数学上,该算法的求解目的不是贝尔曼方程,而是围绕着最优贝尔曼方程,最终求得一个最优q-value,从而对应一个最优策略

q(s,a)=\mathbb{E}\left [ R_{t+1}+\gamma \underset{a}{\textup{max}}\, q(S_{t+1},a)\mid s,a \right ],\; \; (s,a)\in (S_{t},A_{t})

该式为最优贝尔曼方程的变形的推导细节可见文献[6]。

在进一步深入学习Q-learning算法之前,此处将介绍两个重要概念,即on-policy算法以及off-policy算法。对于TD这一大类的算法来说,分别有behavior policy与target policy两种策略:

  • Behavior policy:侧重于收集经验样本;
  • Target policy:朝着最优策略进行不断更新。

当Behavior policy与Target policy是相同的,即应用该策略进行环境交互得到experience后,改进该策略,并应用该策略进一步与环境进行交互,此时该过程被称为on-policy。相反,Behavior policy与Target policy不同则为off-policy。因此,off-policy的优点是能够基于其他策略收集的经验样本来搜寻最优策略。

判断算法是on-policy还是off-policy,可以从两方面入手:

  • 首先,查看算法是在解决什么数学问题;
  • 其次,检查该算法的实施需要哪些量。

下面将应用上述方法对off-policy的Q-learning算法进行分析,读者可自行分析一下MC算法以及Sarsa算法(两者均为on-policy)。

首先明确的一点是,Q-learning算法求解的是贝尔曼最优方程,其计算目标中不显式包含任何策略。那么,该算法的实施需要(s_{t},a_{t},r_{t+1},s_{t+1})。其中(r_{t+1},s_{t+1})与策略无关,那么该算法的behavior policy则是采样s_{t}的动作a_{t},其target policy则是根据最大的q值得到最优策略。

图31 Q-learning算法的off-policy分析[5]

此处可以应用强化学习Pyhton库gym中的悬崖案例进行实战,鼓励读者自行编写代码并完成实践,若有代码需要,可在评论区留言或私信本人。

5、 TD算法总结

截止到目前,详细讨论过的无模型算法均可用一个通用公式描述:

q_{t+1}(s_{t},a_{t})=q_{t}(s_{t},a_{t})-\alpha _{t}\left [ q_{t}(s_{t},a_{t})-\overline{q}_{t} \right ]

其中,\overline{q}_{t}表示TD target。该公式所做的就是使q-value估计逐渐收敛至TD target。那么,对于不同的TD算法便有不同的\overline{q}_{t}。上文提及的诸多算法的TD target如下表所示:

图32 各种无模型算法的TD target整理表[5]

在数学上,上述算法都是以随机近似算法求解贝尔曼方程或贝尔曼最优方程,与PI相结合便可以对最优策略进行搜索。

图33 各种无模型算法的求解目标[5]

七、值函数近似方法

1、函数拟合 

从之前的学习内容中能够发现,动作价值与状态价值均是表格形式。对于动作和状态空间有限的离散问题,这种处理方法既简单又高效。但是,复杂问题中包含的大量动作状态空间,将导致状态-动作组合急剧增加,维度爆炸的表格在存储和应用时的效率便极为低下。同时,表格形式也不易处理连续问题。因此,值函数近似方法被提出并广泛应用。

 值函数近似方法便是用一条直线或曲线拟合动作价值或状态价值。对于最简单的情况来说,以一条直线拟合状态价值,便可得如下函数。那么,相比于占用很大内存的表格形式状态价值,该函数中仅需记录和更新参数向量w中的ab

\widehat{v}(s,w)=as+b=[s,1]\begin{bmatrix} a\\ b \end{bmatrix}=\phi ^{T}(s)w

然而,该方法的代价便是低维函数对有些具有非线性形式的真实值的拟合近似不太精确。因此,可以选择更复杂的非线性拟合函数对真实值进行曲线拟合。同样的,在带来更精确的拟合估计时,需要记录的参数维度也将增加。

2、拟合参数求解

为了对动作价值或状态价值作较为精准的估计,其目标便是优化参数向量w,使得状态s的状态价值或状态-动作组合的动作价值更接近于真实值。因此,目标函数的数学形式如下:

J(w)=\mathbb{E}\left \{ \left [ v_{\pi}(S)-\widehat{v}_{\pi}(S,w) \right ]^{2} \right \}

此处的期望计算有很多方法,下面将介绍两种。

其一,采用均匀分布(Uniform Distribution)的思想,即认为所有状态都有着相同的重要性,将概率权重全部置为1/\left | S \right |\left | S \right |为总状态个数)。该方法的缺点便是这种平均权重会无法区分目标状态与其他状态的倾向。在实际应用中,我们更加关注的是目标状态的更小的估计误差。

J(w)=\mathbb{E}\left \{ \left [ v_{\pi}(S)-\widehat{v}_{\pi}(S,w) \right ]^{2} \right \}=\frac{1}{\left | S \right |}\sum_{s\in S}^{} \left [v_{\pi}(S)-\widehat{v}_{\pi}(S,w) \right ]^{2}

因此,第二种方法则着重处理了上述问题,被称为平稳分布(Stationary Distribution)思想。该方法描述了一个“long-run”行为的马尔可夫过程,最终该过程到达了一种平稳状态。那么,马尔可夫过程中状态的采样频率便能够作为该状态被访问的概率权重。此时,对于概率更大的目标状态,其状态价值的估计误差在优化过程中将更小。

J(w)=\mathbb{E}\left \{ \left [ v_{\pi}(S)-\widehat{v}_{\pi}(S,w) \right ]^{2} \right \}=\sum_{s\in S}^{} d_{\pi}(s)\left [v_{\pi}(S)-\widehat{v}_{\pi}(S,w) \right ]^{2}

其中,平稳分布的状态概率在理论上也是能够求得的,即:

d_{\pi}^{T}=d_{\pi}^{T}P_{\pi}

其中,P_{\pi}表示状态转移概率矩阵,d_{\pi}^{T}则为该状态转移概率矩阵的特征向量。其非矩阵求解形式如下。该过程便是在条件概率已知的情况下,应用全概率公式求解各状态的访问概率。

P(s_{1})=P(s_{1})P(s_{1}\mid s_{1})+P(s_{2})P(s_{1}\mid s_{2})+\cdots \\ P(s_{2})=P(s_{1})P(s_{2}\mid s_{1})+P(s_{2})P(s_{2}\mid s_{2})+\cdots \\ \vdots

3、优化算法及函数选择

对于已经确定的目标函数,可以应用梯度下降算法最小化目标函数,即:

w_{k+1}=w_{k}-\alpha _{k}\triangledown _{w}J(w)

\begin{aligned} J(w)&=\triangledown _{w} \mathbb{E}\left \{ \left [ v_{\pi}(S)-\widehat{v}(S,w) \right ]^{2} \right \}\\ &=\mathbb{E} \left \{ \triangledown _{w}\left [ v_{\pi}(S)-\widehat{v}(S,w) \right ]^{2} \right \}\\ &=2\mathbb{E}\left \{\left [ v_{\pi}(S)-\widehat{v}(S,w) \right ] \left [-\triangledown _{w}\widehat{v}(S,w) \right ] \right \}\\ &=-2\mathbb{E}\left \{\left [ v_{\pi}(S)-\widehat{v}(S,w) \right ] \triangledown _{w}\widehat{v}(S,w) \right \} \end{aligned}

同时,用随机梯度代替真实梯度,即可得到下式:

w_{t+1}=w_{t}+\alpha _{t}\left [ v_{\pi}(s_{t})-\widehat{v}(s_{t},w_{t}) \right ]\triangledown _{w}\widehat{v}(s_{t},w_{t})

然而,在上式当中存在的真实值v_{\pi}(s_{t})是未知的,导致该公式无法直接使用。基于之前的学习,我们积累了很多无模型的真实值估计经验。对于蒙特卡洛方法来说,可以直接用以s_{t}为起点的一条episode的回报代替真实值v_{\pi}(s_{t})

w_{t+1}=w_{t}+\alpha _{t}\left [ g_{t}-\widehat{v}(s_{t},w_{t}) \right ]\triangledown _{w}\widehat{v}(s_{t},w_{t})

基于TD思想,便可以以r_{t+1}+\gamma \widehat{v}(s_{t+1},w_{t})(TD target)代替真实值v_{\pi}(s_{t})

w_{t+1}=w_{t}+\alpha _{t}\left [ r_{t+1}+\gamma \widehat{v}(s_{t+1},w_{t})-\widehat{v}(s_{t},w_{t}) \right ]\triangledown _{w}\widehat{v}(s_{t},w_{t})

对于\widehat{v}(s_{t},w_{t})的具体函数形式有很多种,如线性函数、多项式函数以及神经网络等。以线性函数为例,其梯度表达式如下:

\triangledown _{w}\widehat{v}(s_{t},w_{t})=\triangledown _{w} \phi ^{T}(s)w=\phi (s)

因此,TD算法的线性值近似方法伪代码如下:

图34 TD算法的线性值近似方法伪代码[5]

其实,表格形式的TD算法,可以看作是TD-linear的一个特殊情况。当特征函数\phi (s)为一个向量e_{s_{t}},只有当s=s_{t}时元素为1,其余元素均为0;参数w_{t}为拥有全部状态数元素的向量,即:

\widehat{v}(s_{t},w_{t})=\phi ^{T}(s_{t})w_{t}=w_{t}(s_{t})

那么,TD-linear算法便可以表示为下式。e_{s_{t}}s=s_{t}为1,其余元素为0。那么,这便是表格形式的TD算法。当s=s_{t}时更新状态价值;s\neq s_{t}时状态价值不变。只不过此处将状态价值符号v换成了w而已。

w_{t+1}=w_{t}+\alpha _{t}\left [ r_{t+1}+\gamma w_{t}(s_{t+1})-w_{t}(s_{t}) \right ]e_{s_{t}}

其实,对于TD-linear算法来说,其在数学上最小化的并非目标函数J(w)=\mathbb{E}\left \{ \left [ v_{\pi}(S)-\widehat{v}_{\pi}(S,w) \right ]^{2} \right \},而是投影贝尔曼误差J_{PBE}(w)=\left \| \widehat{v}(w)-MT_{\pi}\left [ \widehat{v}(w) \right ] \right \|_{D}^{2}。其中,T_{\pi}(x)=r_{\pi}+\gamma P_{\pi}x。具体证明和推导细节参考文献[6]第八节部分。

4、Sarsa及Q-learning推广

基于上述相关论述,我们可以分别得到函数近似形式的Sarsa算法以及Q-learning算法。

w_{t+1}=w_{t}+\alpha _{t}\left [ r_{t+1}+\gamma \widehat{q}(s_{t+1},a_{t+1},w_{t})-\widehat{q}(s_{t},a_{t},w_{t}) \right ]\triangledown _{w}\widehat{q}(s_{t},a_{t},w_{t})

w_{t+1}=w_{t}+\alpha _{t}\left [ r_{t+1}+\gamma \underset{a\in A(s_{t+1})}{\textup{max}}\widehat{q}(s_{t+1},a,w_{t})-\widehat{q}(s_{t},a_{t},w_{t}) \right ]\triangledown _{w}\widehat{q}(s_{t},a_{t},w_{t})​​

两种算法伪代码如下:

图35 值函数近似形式Sarsa算法伪代码[5]

 

图36 值函数近似形式Q-learning算法伪代码[5]

持续更新中...


参考资源

[1] Jim J, Wang Q, Yang Y Y. JoyRL Book, https://github.com/datawhalechina/joyrl-book.

[2] Silver D, Huang A, Maddison C J, et al. Mastering the game of Go with deep neural networks and tree search[J]. Nature, 2016, 529: 484-489.

[3] 62. 不同路径 - 力扣(LeetCode)

[4] 动态规划——重叠子问题和最优子结构-CSDN博客

[5] 第2课-贝尔曼公式(Part3-公式的详细推导)【强化学习的数学原理】_哔哩哔哩_bilibili

[6] GitHub - MathFoundationRL/Book-Mathmatical-Foundation-of-Reinforcement-Learning: This is the homepage of a new book entitled "Mathematical Foundations of Reinforcement Learning."

[7] 蒙特卡罗法_百度百科 (baidu.com) 

  • 44
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值