机器学习经典算法总结:强化学习

一.强化学习的概念

1. 基础介绍

强化学习模型根据输入学习一系列动作(action),而不同的动作会逐渐累计起来,在某些时候就会得到一些奖赏(reward)。执行某个动作并不能立即获得这个最终奖赏,只能得到一个当前反馈。机器要做的是通过在环境中不断尝试而学得一个策略(policy)。

举一个相关实例:通常强化学习在游戏领域应用较多,输入就是当前的状态(如前后左右哪里有敌人,自身的技能CD值,红蓝条等等),应用学习到的策略可以根据当前输入,输出一个可以期望获得最大reward的动作(比如说放个大招),而最后的reward就是游戏的输赢(赢了就有1)。

2. 强化学习的目的

策略的优劣取决于长期执行这一策略后得到的累积奖励。强化学习的目的就在于找到使长期累积奖励最大化的策略。

3. 强化学习与监督学习、非监督学习的关系

机器学习可以分为四类,分别是监督学习、无监督学习、半监督学习和强化学习。而强化学习与其他机器学习不同之处为:

(1)没有label,只有reward,其实reward就相当于label。

(2)反馈有延时,不是能立即返回。强化学习可以看做具有“延迟标记信息”的监督学习问题。

(3)相当于输入数据是序列数据。

(4)agent执行的动作会影响之后的数据。

二.单步强化学习

1. K摇臂赌博机模型

强化学习任务的最终奖励是在多步动作后才能观察到,所以先考虑简单情况:最大化单步奖赏,即仅考虑一步操作。即使是这个特例,强化学习和监督学习还是不同的,因为机器要通过尝试来发现各个动作产生的结果,而没有训练数据告诉机器应当做那个动作。

这种单步强化学习任务正是对应了一个理论模型,即K-摇臂赌博机(K-armed bandit)。K-摇臂赌博机有K个摇臂,赌徒在投入一个硬币后可选择按下其中一个摇臂,每个摇臂以一定的概率吐出硬币;当然,这个概率赌徒并不知道。赌徒的目标是通过一定的策略最大化自己的奖赏,即获得最多的硬币。必须指出的是,k-armed Bandit只是真实问题的一个极度简化模型:它只有action和reward,没有input或sequentiality,也没有state。

2. “仅利用”与“仅探索”

(1)仅探索(exploration-only)法

将所有的尝试机会平均分配给每个摇臂(即轮流按下每个摇臂),最后以每个摇臂各自的平均吐币概率作为其奖赏期望的近似估计。目的是仅为获知每个摇臂的期望奖赏。

(2)仅利用(exploitation-only)法

按下目前最优的(即到目前为止平均奖赏最大的)摇臂,若有多个摇臂同为最优,则从中随机选取一个。目的是若仅为执行奖赏最大的动作。

事实上,探索(即估计摇臂的优劣)和利用(即选择当前最优摇臂)二者是矛盾的,仅探索法能很好估计每个摇臂的奖赏,却会失去很多选择最优摇臂的机会;仅利用法则相反,它没有很好地估计摇臂期望奖赏,很可能经常选不到最优摇臂。尝试次数(即总投币数)有限,加强了一方则会自然削弱另一方,因此,这两种方法都难以使最终的累积奖赏最大化。这就是强化学习所面临的探索-利用困境(Exploration-Exploitation dilemma)。显然,要使累积奖赏最大,则必须在探索和利用之间的达成较好的折中。

3. ε-贪心算法

ϵ-greedy基于一个概率ϵ对exploration和exploitation进行折中。具体操作如下:每次尝试时,以概率ϵ进行exploration(以均匀概率随机选取一个摇臂),以概率1−ϵ进行exploitation(选取当前平均奖赏最高的摇臂)。

当 ϵ = 0 时,就是之前提到的exploitation-only策略;当ϵ=1时,则相当于exploration-only策略。

若摇臂奖励的不确定性较大,即概率分布较宽时,需要较大的ϵ值,反之则小。

另外,开始时由各种信息较少,ϵ需要设置的大一些,随着探索的深入,各摇臂的奖励基本弄清楚之后,ϵ就可以小一些了。因此通常可令 ϵ = 1/√t 。

4. softmax算法

Softmax算法基于当前已知的摇臂平均奖赏来对exploration和exploitation进行折中,其公式为:


这实际上是一个Boltzmann分布的公式,其中Q(i)记录当前摇臂的平均奖赏,τ表示温度。τ趋于0时Softmax将趋于“仅利用”,τ趋于∞时Softmax将趋于“仅探索”。

三.多步强化学习

1. 有模型学习

考虑多步强化学习任务,如果假定任务对应的马尔可夫决策过程四元组E=均为已知,则称为模型已知,即机器对已知环境进行了建模,能在机器内部模拟出与环境相同或近似的状况。在已知模型的环境中学习成为有模型学习(model-based learning)。

(1)策略评估

在模型已知时,对任意策略π能估计出该策略带来的期望累积奖赏。

(2)策略改进

对某个策略的累积奖赏评估后,若发现它并非最优策略,则希望对其改进。非最优策略的改进方式:将策略选择的动作改变为当前最优的动作。

(3)策略迭代与值迭代

将策略评估与策略改进结合起来即可得到求解最优解的方法:从一个初始策略(通常是随机策略)出发,不断进行策略评估和改进,直到策略收敛、不改变为止,这样的做法称为策略迭代。策略改进与值函数的改进是一致的,因此也可通过值迭代求解最优解。

模型已知时,强化学习任务能归结为基于动态规划的寻优问题。

2. 免模型学习

在现实环境中,环境的转移概率、奖赏函数往往是未知的,甚至很难知道环境中一共有多少状态。若学习算法不依赖于环境建模,则称为免模型学习(model-free learning)。

(1)蒙特卡罗强化学习

在免模型情形下,策略迭代算法首先遇到的问题是策略无法评估,这是由于模型未知而导致无法做全概率展开。此时,只能通过在环境中执行选择的动作,来观察转移的状态和得到的奖赏。受K摇臂赌博机的启发,一种直接的策略评估替代方式是多次采样,然后求取平均累积奖赏来作为期望累积奖赏的近似,这称为蒙特卡罗强化学习。由于采样必须为有限次数,因此该方法更适合于T步累积奖赏的强化学习任务。

(2)时序差分学习

蒙特卡罗强化学习算法通过考虑采样轨迹,克服了模型未知给策略估计造成的困难。此类算法需在完成一个采样轨迹后再更新策略的值估计,而前面介绍的基于动态规划的策略迭代和值迭代算法在每执行一步策略后就进行值函数更新。两者相比,蒙特卡罗强化学习算法的效率低很多,这里主要问题是蒙特卡罗强化学习算法没有充分利用强化学习任务的MDP结构。时序差分(Temporal Difference,TD)学习则结合了动态规划与蒙特卡罗方法的思想,能做到更高效的免模型学习。

四.值函数近似

上文强化学习任务是假定在有限状态空间上进行,每个状态可用给一个编号来指代;值函数则是关于有限状态的表格值函数(tabular value function),即值函数能表示为一个数组,输入i对应的函数值就是数组元素i的值,且更改一个状态上的值不会影响其他状态上的值。然而,现实强化学习任务所面临的状态空间往往是连续的,有无穷多个状态,这该怎么办?

一个直接的想法是对状态空间进行离散化,将连续状态空间转化为有限离散状态空间,然后就能使用前面介绍的方法求解。不过,如何有效地对状态空间进行离散化是一个难题,尤其是在对状态空间进行探索之前。

实际上,我们不妨直接对连续状态空间的值函数进行学习。先考虑简单情况,即值函数能表达为状态连续的线性函数。由于难以像有限状态那样精确记录,因此这样值函数的求解称为值函数近似(value function approximation)。

五.模仿学习

在强化学习的经典任务设置中,机器所能获得的反馈信息仅有多步决策后的累积奖赏,但在现实任务中,往往能得到人类专家的决策过程范例,如在种瓜任务上得到农业专家的种植过程范例。从这样的范例中学习,称为模仿学习(imitation learning)。

本文转自:博客园 - yucen,转载此文目的在于传递更多信息,版权归原作者所有。

最新文章