强化学习是从直接的实验中进行学习。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,然后加入折扣因子。结合增量学习,就能较好的完成控制任务。