强化学习

 

强化学习是从直接的实验中进行学习。Reinforcement learning is learning from direct experiments.

The goal of the learner is to find out the optimal behavior or actions to maximize the reward or the cost function。


强化学习中,由于一阶马尔可夫链的限制,agent有时会对相同的状态有相同的表述,并且期望损失会重复计算,学术上称为感知混叠。(perceptual aliasing)解决方案可以是,采取比较多的过去信息,或者是加入注意力agent,在进行观测时,进行一定的选择。

A more concrete definition of learning agents:

马尔可夫决策过程(MDP)是强化学习的基础数学模型。

 

马尔可夫决策过程采用动态规划可以较好的解决。但是,动态规划依赖于精确的模型。而强化学习的出发点是不需要精确的模型的。因此,从动态规划过渡到强化学习一种有效的方法是蒙特卡洛仿真。蒙特卡洛仿真实际上是代替了动态规划。

 

 

 

Conventional method: TD(λ),一阶时间差分算法。

 

时间差分方法是给定策略条件下,计算期望成本的一种方法。Although it can be used for the learning of action policies through the use of model-based iterative versions of the Policy Iteration algorithm, we would like to have a computational method for a direct model-free learning of optimal actions.

 

Q learning:是一种动作策略(action policy)学习迭代方法,并且给出了一种新的动作价值测度Q值:

 

理解:首先是对一个函数求期望,期望所针对的概率是什么?目前猜测是转移概率。函数是什么?有(1)给定当前状态和动作产生的奖励值:(2)给定下一步状态的最优的成本值,并加上一个折扣。表明:当前的reward和接下来状态的最小成本作为Q值。第二项就是一个期望,对未来一个状态的成本期望。但是这里V*是全局最优的cost value函数,意味着

是最优的策略。因此更进一步的,利用Bellman等式进行展开:

 

这个等式表明,给定当前状态,全局最优的cost value函数为当前状态的最小化Q值。

因此,结合Bellman不等式,可以总结出Q-learning的学习规则:

Q值有一个非常重好的性质:他们是策略无关的或者是策略独立的,因此最优的动作optimal action能够被给出:

可以发现,Q-learning其实都在利用最优的策略。因为最大化Q值,就是在寻找最优的策略。

 

 

其中

Q-learning在学习过程中,实际上要对每一种状态求一个加权和,也就是期望。如果没种状态的转移概率都是相等的,那么即是找出转移到下一个Q值最大的状态。这就是一个学习或者是训练的过程。Q-learning是一种tabular learning,收敛相对较慢。

V值对应的是长期的价值判断,而奖励对应的是短期的瞬时的感受。类比:人能对于某件事情感到即时的痛苦和快乐,而人长期形成的价值判断就对应的V值,其是长期的富有远见的,不是针对某一种独特的状态。可能当前状态的reward值很低,但是其后续的状态对应的reward值很大,因此V值可能就很大。在选择状态时就可能宁可牺牲当前的状态对应的低状态值。

V值需要长期的实践,才能得来。Reward是基本的,而V值是排在第二位的。没有reward就不可能有V值判断。在实践中,我们采取行动不是依据当前的reward,而是根据长期的V值。但是往往V值不容易获得,需要agent的终身学习。可以毫不夸张的说,强化学习的大部分核心工作都围绕着有效估计V值展开。

对环境的建模是可选择的。因此可以将强化学习分为:基于模型的和model-free的。

Incremental learning是为了解决内存开销过大的问题。

原始公式:当前的状态所采取的动作a所对应的值如下:

很显然,在实际训练中,需要存储很多reward在内存中,这样的开销是没有上界的。因此通常的做法是采取incremental learning的方式,即

Rk表示之前第kth的reward值。对过往的reward进行平均。实际上incremental-learning是一种数学上的变换,可以有效的节省内存空间。

上面的式子可以总结为下面的强化学习通用的公式:

Agent的目标是最大化长期的累积奖励,也即是最大化V值函数。

 

动态规划是解决MDP(有限马尔可夫过程)的有效方法。但是,马尔可夫模型依赖于精确的模型,即如果外部环境能够被精确建模(model-based),并且能够被较好的离散化,那么采用DP(动态规划)就是非常方便的。对于连续的任务,需要将任务进行离散化,此时比较实用带有折扣的强化学习。此时,DP就可以派上用场了。但是,在实际中,DP用的还是不多,因为其复杂度比较高,对内存开销比较大。

In fact, all of these methods can be viewed as attempts to achieve much the same effect as DP, only with less computation and without assuming a perfect model of the environment.

 

但是DP产生的算法利用策略迭代,其非常耗时。并且不容易收敛。在实际中,要进行合适的截断,即在保证最优性的前提下,做合理的近似。比如,迭代时,不访问所有的状态,而是仅仅采用紧接下来的一个状态,这样就能降低复杂度。这种方法也被称为值迭代策略。

策略迭代,是基于所有的策略的期望。

值迭代,进行了一阶截断,不需要对所有的策略进行期望。


Monte Carlo 方法估计值函数

Monte Carlo方法是解决MDP问题比较高效的方法,其与DP相比较,复杂度更低。这种优势的来源在于:(1)Monte Carlo方法每次在更新值函数,或者是从某个状态出发,达到最终状态的轨迹只与出发状态相关,而不用管每个episode中的其他状态。而DP则是一颗树,每个action都会尝试,每个episode下的每个状态都会更新,这样就会造成较大的复杂度。MC的对感兴趣的状态的学习过程更像一条树枝,其他的状态不理睬。    

状态值函数V的估计与环境的模型是否已知有关系。With a model, state values alone are sufficient to determine a policy  (给状态state,就能给出动作action); one simply looks ahead one step and chooses whichever action leads to the best combination of reward and next state, as we did in the chapter on DP. 有具体的模型,可以根据状态直接设计出动作,因为模型是已知的,就能知道哪种动作肯定是最优的。

Without a model, state values alone are not sufficient to determine a policy. One must explicitly estimate the value of each action in order for the values to be useful in suggesting a policy. 而当模型未知时,需要对每个action的值函数进行评估,从而采取最有用的动作。

TD, DP and MC are three key components in RL. 他们针对的场景各不相同,总的来说,DP是精确的,但是要已知环境模型。即能根据状态知道动作的,也就是知道策略函数。而MC和TD是近似的方法,但它们近似的对象各不相同。

首先:MC的方法如下:

他是对Gt的近似,因为Gt是return,即t时刻之后所有的奖励的多项式。但我们无法进行无限次学习,只能进行截断,然后对期望进行平均从而达到近似的效果。

而TD则是对策略值函数进行近似。具体来讲,

MC是对上式中的第一行的Gt进行近似,而TD是对最后一行的进行近似,用进行代替。这里V和v的区别是,v是全局的精确的,V是局部的估计的。但是理论证明,局部最优的V也能满足bellman等式,达到最优性条件。TD方法是将MC方法和自助DP方法的有机结合。TD的更新公式为:

。TD(0)的更新策略如下:

可以发现,TD(0)仅仅只估计下一个状态的,而不考虑一直要到终点状态。

一般来讲,TD比DP好,比MC好。

Sarsa-on-policy TD learning (control)

State-action pair更新公式为:

算法框架如下:

在每个episode中,每次状态转移涉及到一个5元组,即

,这也是Sarsa算法的由来。值得注意的是,这里大写的字母都是集合。

 

Q-learning:off-policy TD control

One-step Q learning的更新规则如下:

很显然,这个Q-learning与策略无关,因为在更新过程中,最大化Q值用来近似替代最优的q*. 寻找最合适的动作从而采用最大的Q值。

算法框架如下:

注意,这里的下一个状态的Q值与SARSA不同,这里是一个值,仅仅表示某一个状态和某一个动作对应的Q值。而SARSA(model-dependent)表示的动作action和状态对应的Q值,动作不需要做优化,因为动作能根据模型结合状态直接给出。应该是一个向量。

考虑这样一个实例:灰色区域为悬崖,奖励为-100,其他的转移为-1。Q-learning和SARSA算法表现不一样。SARSA选择更加安全的道路,因为他会考虑所有的动作所带来的Q值,而Q-learning不会,他只会选择最大的Q的动作,从而,可以铤而走险,选择最快的道路。这种状况发生的原因是:存在一个误差概率随机选择策略,就可能掉入悬崖。当这种误差贪心概率趋向于0时,他们就会选择最快的道路了。此时SARSA和Q-learning性能相同。

 

此后的强化学习模型都是基于TD进行开发,要么考虑多步数结合MC方法,要么考虑用值函数代替表格,一种可行的方法是用神经网络。或者是调加一个模型,可以是神经网络,从而与动态规划联系起来。

Eligibility traces

Eligibility traces是基本的机制在强化学习中。SARSA和Q-learning都可以结合Eligibility traces提高学习效率。看待这种机制有两个基本视角:

一个资格轨迹是对某种状态的访问或动作的实施的临时记录。轨迹标记着满足资格的经历学习变化的事件的记忆参数。当Td误差出现时,只有资格状态或动作被处罚或受谴责。Thus, eligibility traces help bridge the gap between events and training information. Eligibility traces are a basic mechanism for temporal credit assignment.

n-step TD方法是对one-step方法的扩展。当n等于终止状态时,那么就与MC相同了。

具体的V值更新公式为:

其中n-step reward函数为

然后,有V值更新公式:

这是一种online的更新策略,虽然需要等n步,但和MC方法还是有本质的不同。

多步方法是对TD(0)和MC之间的一种混合,不要求更新全部的步数,而是采取一个超参数λ来融合这种方法的优点。具体来讲,TD(λ)是这样实现的:首先引入超参数λ,然后对一步的reward函数Gt进入加权,越往后的步权重越小,衰减系数为λ,初始权重为1-λ。总的权重求和为1. 具体如下图所示:

实际上,这种TD(λ)的方式是对one-step方式的扩展,动机是结合MC方法。不难发现,当λ为1时,就是MC方法了。当λ为0时,就是one-step方法了,包括SARSA和Q-learning。

在一个episode中,每一步的状态存储图如下:

这是一种online的更新策略,虽然需要等n步,但和MC方法还是有本质的不同。

这种前向的视角,是关注当前的reward,而远处的reward值权重比较小。-return函数为:

 

增量为:

这种-retur算法是前向视角的资格轨迹算法的基础。而资格轨迹算法是TD()算法的基础。不过这种前向视角是非因果的。在实际中,不易实施。

后向视角的资格轨迹算法需要引入一个变量,记为。在每一步t,未被访问的状态的资格轨迹衰减为:

而对于已被访问的状态St,则资格轨迹为

就相当于当前的状态出现了TD error后,将回溯,对过去已经访问的状态进行打分,让他们对自己当前error负责。也就是更新他们的V值。t时刻的TD error是

从而线性增量为:

下图为后向视角资格轨迹的示意图,这种视角是因果的。

One line的后向的资格轨迹TD()算法为:

值得注意的是,当时,这种方法虽然与MC方法相似,但比MC方法具有更加广泛的应用场景。因为他可以处理有折扣的连续任务。

SARSA(λ)只是将TD(λ)进行适当的改进。具体来讲,就是将V值用Q值替换,然后相应的引入新的资格轨迹Ets,a. 然后相应的增量更新为:

其中

具体的算法框架为(online)

扩展却没有那么直观。因为,Q存在探索状态,即有时候不采取贪心action,测试动作就出现了不连续性,也就没必要继续将资格轨迹进行下去。因此,

资格轨迹满足满足上述表达式,这是后向视角。因此增量更新为

算法的基本框架也就能确定了。

的算法框架如下:

总的来讲,RL中比较重要的算法分为SARSA和Q-learning,分别为on-policy和off-policy的。他们的区别是:前者是基于模型的,后者是不需要模型的。对于一般的物理系统而言,模型一般都是已知的。在已知模型的基础上,给定状态,就能确定动作。这可以加快强化学习的过程。至于SARSA(λ)和Q(λ)则是针对于连续任务来的。当然我们总可以将连续任务离散化,然后采用SARSA和Q来学习。但是没有于SARSA(λ)和Q(λ)来的自然。对于连续任务,实际上也是将其划分为episodes,然后加入折扣因子。结合增量学习,就能较好的完成控制任务。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章