Reinforcement learning, the algorithm interests me
1. 摘要
2. 介绍
Deepmind在AlphoGo上的成就把强化学习这一方法带入了人工智能的主流学习领域,从而同以往的监督学习,无监督学习一同跻身人工智能三大主流子领域。随着计算机计算能力的飞速发展及深度学习领域的有效探索,强化学习算法也因此再次受到关注,并在游戏,机器人操控,金融预测等各领域上都获得了杰出的表现。
强化学习并不是某一种特定的算法,而是一类算法的统称。相对于监督学习和无监督学习,强化学习具有3个典型的特征:1)强化学习中并不存在监督的概念,即不关注用于学习的数据集是否具有标签,而仅仅通过“奖励”信号进行学习。2)强化学习在学习过程中的反馈通常是延迟的,而非是即时的信号反馈。3)“时间”概念在强化学习中非常重要,及序列数据非独立同分布,具有很强的时序相关性。
强化学习算法的直观想法非常简单,以游戏为例,如果在游戏中采取某种特定策略,能够获得更高的分数,那么就进一步强化这种策略,以期望能够获得更高的分数。
强化学习在领域已经取得了不少杰出的成绩,甚至在某些游戏上超过了人类。在2016年,AlphaGo Master在围棋上击败围棋世界冠军李世石,而使用强化学习的AlphaGo Zero仅花了40天时间,就击败了AlphaGo Master。2019年1月基于强化学习算法的AlphaStar在《星际争霸2》中以10:1的成绩击败了人类顶级职业玩家,而同年4月,OpenAI又在《DOTA2》的比赛中战胜了人类冠军。除了游戏领域,强化学习在机器人训练,推荐系统,金融等领域都有很好地表现。
本文试图阐述强化学习求解过程并简述两种常用的免模型学习的强化学习算法。
2 强化学习基本概念
2.1 符号规定
强化学习主要由两部分组成,一部分是代理(Agent),又称智能体,在强化学习中起到与根据观测值做出决策的作用,另一部分是环境(Environment),能将所观察到的状态传达给Agent,也就是观测值(ovservation)。在学习过程中,代理根据得到的观测值理解自己所处的状态,随后根据自己所处的状态来采取动作,从而环境会根据代理采取的动作给与相应的奖励(Reward),而奖励值是一个标量,表示代理在当前时间采取的活动有多好,代理根据特定的观测值采取特定行动的概率分布称为策略(Policy)。而强化学习的目标,就是通过学习环境与代理的互动,更新代理的策略,从而最大化奖励的期望,即找到能够获得最大奖励的策略。而一个训练过程,往往称为一个回合(episode),可以理解为一轮游戏从开始到结束。
2.2 马尔科夫过程求解
下面推到如何根据马尔科夫决策过程推到强化学习求解过程。
强化学习中状态的转移服从马尔科夫性,就是在一个状态序列中,下一个时态的状态值仅仅取决于当前时刻的状态,而与之前的状态无关公式一。
根据马尔科夫性,我们可以定义一个状态转移矩阵,其中是当前时刻的状态,是下一时刻的状态,状态之间的转移概率可以定义为公式二。
而状态转移矩阵定义为所有从状态s到下一时刻状态的概率,概率转移矩阵中每一行概率和为。
马尔科夫过程是无记忆性的随机过程,如果有一个随机序列符合马尔科夫性,此时我们可以定义一个马尔科夫决策过程(或马尔科夫链)为,其中是一个有限的状态集合,是一个状态转移概率矩阵。
在马尔科夫过程中,如果我们对于每一步的状态转移给予一定的奖励,即定义马尔科夫奖励过程为,这里比之前定义的马尔科夫决策过程多了两个参数,是一个奖励方程,定义为,是一个折扣因子,且。
之后我们定义为t时刻开始到马尔科夫过程结束的折扣奖励和。
其中是对未来时刻的奖励的折扣因子,在步之后受到的奖励的值为。当接近0的时候,表示我们更关注短期奖励,相反,当更接近1时候,表示模型对远期奖励同样关注。
补充value function
在马尔科夫决策过程中,为了后续计算引入了贝尔曼方程,该方程表示,奖励方程可以分解为两部分,即立即过得的奖励和下一时刻价值方程的折扣值。其中为即时奖励,为后续状态的折扣价值
由于和的期望等于期望的和,且下一时间的状态值不确定,所以利用状态转移概率矩阵进一步分解贝尔曼方程为公式。上述贝尔曼方程可以表示为矩阵形式。这里是包含每个状态的价值的列向量。
一个马尔科夫决策过程(Markov decision process, MDP)是一个具有决策的马尔科夫奖励过程,即一个包含所有状态值的具有马尔科夫决策性的环境,定义为,其中A是一个动作的有限集合,是状态转移概率矩阵,定义为。从而,在马尔科夫决策过程中,增加了行动集合,所以状态转移概率矩阵及期望奖励不仅取决于状态值,同时还取决于对应状态下采取的行动。
在马尔科夫决策过程中,我们可以定义策略,及在改定状态下采取不同动作的概率分布。
给定一个马尔科夫决策过程和一个策略,则状态序列是一个马尔科夫过程,而状态和奖励序列是一个马尔科夫奖励过程。其中
且在马尔科夫决策过程中,我们定义了如下两种价值函数。
状态-价值函数是在遵循策略的条件下起始状态为的条件下所获得的的价值的期望。
行为-价值函数是在遵循策略的条件下,其实状态为,并且采取行为所获得的价值的期望。
则根据贝尔曼方程,我们可以得到:
如果我们将一个马尔科夫决策过程进一步拆分:在状态时,采取动作,得到奖励的过程。则在状态s下,采取动作所返回的价值的期望为:
在采取动作的条件下,根据贝尔曼方程,会得到一个即时的奖励以及未来奖励的折扣。结合公式 公式,可以得到:
通过贝尔曼方程,则马尔科夫决策过程的目标为找到在状态时取得最大化价值的策略。
存在最优的决策,即假设存在有限个状态,每个状态可以采取有限个动作,只需要分别找到n个状态下能达到最大价值的动作,则能得到最优决策。
定义策略的排序方法:
则存在最优策略大于等于所有的策略,。在最优策略下,可以达到最优的价值函数,及最优的行为-价值函数。
假设最优策略已知,则任意状态下所采取的行动也能够被确定,即:
所以,贝尔曼方程可变为一下形势:
合并上述两个公式,即可得到:
最后,根据上述公式,则可以求解最优条件下的贝尔曼方程,即可得到马尔科夫决策过程的最优策略。
则该优化目标可以通过很多迭代求解方法进行求解,例如Value Iteration,Policy Iteration,Q-Learning,Sarsa等等算法。
2.2 Model-Based 和 Model-Free
强化学习通常根据代理是否能够完整了解或学习到所在环境的模型,即是否能够知道环境中的马尔科夫决策过程,分为免模型学习(Model-Based)和有模型学习(Model-Based)两种强化学习主流算法。
其中有模型学习,如纯规划方法和专家迭代(Expert Iteration)方法,对环境有提前的认知,即知道模型的value function。在进行策略优化的时候知道环境的马尔科夫决策过程,往往通过动态规划的方法进行评估和策略控制,但缺点是如果模型跟真实世界不一致,那么在实际使用场景下很难获得较好地表现。
而免模型学习,如策略优化(Policy Optimization),Q-Learning等方法,放弃了对模型本身的学习,在策略优化中,只能得到环境所反馈的奖励值,而不知道环境实际的马尔科夫决策过程,即不知道环境的value function。该方法在效率上不如前者,但是这种方式更加容易实现,也容易在真实场景下调整到很好的状态。所以免模型学习方法在强化学习算法的实际使用中更受欢迎。而本文也将对两种Model-Free的强化学习算法进行讨论。
2.3 Policy Evaluation 和 Policy Improvement
在进行强化学习求解最优策略的过程中,我们往往需要对策略进行评估(Policy Evaluation),然后利用评估结果对已有策略进行更新,即模型更新(Policy Improvement),从而不断更新策略,以达到最优策略。
策略评估,即在已知Policy的条件下,根据环境反馈,评估目前已知的Policy有多好。在Model-Based的条件下,通常进行value iteration,利用贝尔曼方程最大化期望,从而更新value function,获得最优的value function,用于评估当前策略。而在Model-Free的条件下,由于环境的value-function位置,所以通常使用蒙特卡洛方法(Monte-carlo)和时序差分方法(Temporal-Difference)对环境实际的value-function进行估计,迭代更新过的最优的value function,从而评估已有策略。
策略更新即根据模型评估的结果,对目前策略向着能最大化奖励期望的方向进行更新。在Model-Based条件下,由于可以观测环境的value function,所以可以确保环境的所有状态都能被探索,所以通常利用贪婪算法进行策略更新。而在Model-Free的条件下,因为不能保证环境所有状态都能被探索,使用贪婪算法通常会进入局部最优,所以通常使用贪婪策略()进行策略更新,确保探索到环境中所有状态。
2.4 on-policy 和 off-policy
在强化学习求解过程中,存在两种求解策略,即同步策略学习(on-policy learning)和异步策略学习(off-policy learning)。如上一节中所说,在强化学习求解最优策略的过程中,需要对已有策略进行评估,然后利用评估结果对策略进行更新。如果在学习过程中,如果用于评估的策略和用于优化的策略是同一个策略时,则该学习方法称为同步策略学习。反之,如果在学习过程中,用于评估的策略和用于更新的策略时不同的策略时,则该学习方法为异步策略学习,在实现中off-policy通常将经验存为的序列,并且在回合结束之后再对记忆进行学习,这一方法称作Experience replay。
off-Policy往往更加常用,因为其具有更加广泛的使用范围。一方面,Off-Policy的方法可以用于学习于其他agent的观测值,且因为用于评估的策略和用于更新的策略不同,而可以重复使用老的策略,同时用于已经提供最优策略的任务,从而另辟蹊径,获得其他不错的策略,也可以通过学习单一策略,从而获得多重策略。
Model-Free 条件下的模型评估
在Model-Free的条件下,由于不知道环境的value function,所以通常使用蒙特卡洛方法和时序差分方法对环境的value function进行估计,从而评估policy可以获得多少reward。
蒙特卡洛方法(Monte-Carlo, MC)的核心思想是利用经验均值来估计实际期望值,即,value function的更新为根据大数定理,只要样本数量足够多,经验均值就无限逼近实际期望值。其特点是估计的全部样本的均值,必须要有完整的episode信息才能够计算,进行完完整的episode才能进行策略的评估。
而时序差分方法(Temporal-Difference, TD)可以通过自举(bootstrapping)的方法利用不完整的episode信息,即利用有限的样本资料进过多次重复抽样,重新建立起足以代表真实样本分布的方法。相对于MC方法,TD方法使用TD target估计,其中,value function的更新为:
由于TD方法可以利用不完整的episode信息,所以MC方法中估计值得更新往往是延迟的,而MC方法更能够有即时的更新。而MC方法由于利用经验均值估计实际期望,而TD方法使用TD target对实际期望进行有偏估计,所以MC方法往往具有更小的偏差。
2.5Model-Free下的off-Policy策略更新
在off-Policy的情况下,由于用于评估的策略和用于更新的策略不同,往往利用重要性采样(Importance Sampling)的方法估计不同分布的期望。
在off-Policy学习中,如果使用MC方法进行importance sampling 按照完整回合进行更新,则:,即对每次状态的更新都是用importance sampling,所以会得到一个无限小的,无法用于value function的更新。
而off-Policy学习使用时序差分的方法,利用TD-Target改变分配系数,在这里分配系数是现有策略,即用于更新的策略及环境,及用于评估的策略的差异。则value function的更新为:
2.5.1 Q-Learning
Q-Learning是著名的Model-Free条件下off-Policy的强化学习方法。
在Q-Learning方法中,我们考虑action-values function,即,则我们不需要importance sampling,我们只需要使用用于评估的策略,估计下一时刻的行为,即,而使用更新的策略来估计目标策略采取的活动,即,则的更新为:
Q-Learning的特殊之处就是用于评估的策略和用于更新的策略都能被更新,其中用于更新的策略为了使最大化,通过对利用贪婪算法进行更新:而用于评估的策略为了保证能够探索到环境所有状态值,利用对使用进行更新。
则Q-Learning的更新目标为:
Deep Q Network
传统的Q-Learning方法,通常使用表格记录目标策略与环境互动产生的,并且在迭代中对表格中的每个价值进行查询并且更新。但是这样使用表格存储查询的方式往往具有很大的限制。假设在一个强化学习任务中,存在个状态值,且每个状态值存在个可能产生的行为,则具有个,对应的表格也将是一个的表格。而在通常的强化学习任务中,例如任意一款小游戏,每一个时刻将会包含成千上万的状态值,这对表格存储计算是非常不友好的。
那么如何将强化学习的方法应用到非常大的数据集,就成了我们现在关注的问题。一个简单的想法就是可以有效地归纳表格,并且利用函数对状态值到模型中储存的价值函数的方程进行逼近。即,,利用方程逼近的方法去估计value function,同时通过观测到的状态值去归纳未观测到的数据值,并且通过MC或者TD的方法去更新这里的参数。
然而这里的往往很难去设定,这就很自然的想到深度学习的“黑箱”模型,当我们将状态值单独输入,或者将状态值同当前状态值所采取的的行为一同输入具有网络参数神经网路,并且利用神经网路的更新方法更新网络参数,获得最好的逼近效果。
通常,我们利用随机梯度下降的方法对神经网路参数进行估计,但是当我们利用MC或TD方法逼近实际的value function并且进行梯度计算的时候,仅仅实现了想着最大化value function的方向进行迭代更新,并没有实际上并没有逼近到最符合实际数据的函数,所以我们通常使用Batch methods的方法,即学习已经建立的经验库。在DQN中,这一经验库被定义为,经验库中储存了每一步的状态值,已经在当前策略下采取的行动及获得的奖励。经验回放策略往往能够稳定神经网络,因为该方法通过对以往的训练过程进行储存,打破了每一步之间的联系,消除了之间潜在的关联,并且在学习过程中使用随机采样经验的方法进行学习,让经验的出现顺序随机化,反而能够让神经网络参数的更新更加稳定。
DQN还有一个经典的策略叫做fixed Q-target,即在训练过程中,运用两套不同的参数向量,冻结老的神经网络参数,不予更新,试图通过这样的仿方式储存下所有看到过的信息,且该网络具有很多次迭代以前的参数,及老的策略,这导致在更新中如果遇到偏差很大的样本,能够参考之前的策略进行value function的估计,加强了模型的鲁棒性。而另一套具有相同网络结果的参数在每一次迭代中都进行参数更新,确保具有最新的参数。在迭代一定轮次之后,再将具有最新参数的神经网络参数复制给被冻结的神经网络,让被冻结的神经网络进行参数更新。这样做同样能够打破数据之间的关联性,让神经网络参数的更新更加稳定。
DQN的方法相对于传统的Q-Learning,没有用于储存的Q-Table,而是利用神经网络的思想,分别利用两个网络对用于评估的策略产生的价值),和用于更新的策略产生的价进行估计。
用于估计的神经网络,在fix Q-target中属于被冻结参数的神经网络,具有很多次迭代以前的网络参数,称为Q target network。同Q-Learning中的思想一致,这个网络估计环境对该策略所反馈的真实价值,即用于评估的策略所产生的价值,且该网络基于利用进行value function的更新,确保能够探索到环境中所有的状态。
而用于估计的神经网络,称为Q learning network,在每次迭代中都会进行网络参数的更新,因此具有最新的网络参数,该网络估计当前策略所能产生的真实价值,利用贪婪算法进行更新。
同传统的Q-Learning的更新思想相似,DQN采用的方式来估计当前状态值及策略下选取的动作所能产生的真实价值,及更新目标。而,是具有最新参数网路Q learning network对当前时刻状态值及最新策略下选取的动作产生的value function的估计。整个网络参数的更新为,及最小化和的均方误差。
讨论
虽然现在强化学习方法以及远不止上述套路的Q-Learning及Deep Q netword的方法,例如还有在Model-Free条件下off-policy的学习方法Sarsa,Policy Gradient,以及很多DQN及现有方法的变种,且都在很多领域的很多任务上取得了非常好的效果。但是强化学习在现有科研任务上还具有很多的限制。一方面,整套强化学习的方法,基于一个很强的假设,状态之间的转移以及特定状态值所采取的行为空间的每个行为的概率,符合马尔科夫决策过程,正如上述我们所推到的,正是基于这一假设,利用贝尔曼方程推导出了如何求解强化学习算法中“最大化期望奖励”的目标。但是在很多时候,这一假设反而会成为强化学习利用与科研任务上的限制。因为在很多科研任务上,往往数据之间都是独立同分布的,就算数据之间有关联,也很少能够转化为马尔科夫决策过程,从而使很多,例如Q-Learning和DQN这样更新基于当前时刻状态值和下一时刻状态值共同计算的方法不能使用。当然面临这样的问题也有很好地解决方法,16年zhaojun等人结合远程监督学习和强化学习中Policy Gradient的方法进行关系抽提的任务,利用的就是Policy Gradient回合制更新的方法,即更新方程中不依赖于当前时刻和下一时刻的状态值共同计算,而是在进行了一个完整的回合之后利用整个回合的奖励来知道整个神经网络参数的更新。虽然zhaojun这一工作取得了很好地效果,但是其中的理论依据并没有很好地阐释。但是相对的,在分子结构预测等具有明显马尔科夫决策过程的科研任务中,往往能够取得很好地效果。定义方面,正如赵军他们结合远程监督学习的方法,很巧妙的利用远程监督学习中Bag的概念模拟在强化学习中回合的概念,把每个bag内所包含的句子当做是一个回合内中离散的状态值,在进行完成一个完整的Bag运算之后,再利用Policy Gradient的策略进行网络参数的更新。类似的,我们也可以考虑利用其它算法,对马尔科夫过程进行模拟或者对强化学习中的目标方程进行修改,以达到能够利用强化学习这一工具的目的。
另一方面,强化学习具有很简单的优化目标,即最大化获得的期望奖励,但是在很多时候,例如自然语言处理的任务中,不仅仅是简单的最大化奖励的任务,例如关系抽提,实体识别等经典的自然语言处理任务,往往希望神经网络能够具有很强的推理能力,相对于原始的强化学习算法的优化目标要复杂的多。但是自然语言处理中也有很多符合强化学习思路的任务,例如对语料库的标注,就很类似于强化学习所应用于的游戏任务,期望获得更准确的标注,同时在标注过程中,序列标注的任务往往也能很好地转化为马尔科夫决策过程,所以有望将强化学习算法应用于语料库自动标注的任务上。
总的来说,强化学习是一种很强大又很符合动物学习思维的算法,同时在计算机计算能力和深度学习取得高速发展的今天,如果能够进一步利用强化学习算法,或者更好模拟人类完成任务的过程,或者推到具有更好学习能力及适用范围的强化学习方法,并且利用到科研任务上,一定能够取得不错的效果。
代码实现
使用pytorch对Q-Learning的实现在
DQN的pytorch实现在