最近的壮举,比如AlphaGo战胜了世界上最好的围棋选手,把强化学习(RL)带到了聚光灯下。然而,什么是RL,它是如何取得如此显著的效果的呢?
在第一篇文章中,我们将探讨蒙特卡罗控制方法(不是深度控制方法),尽管该方法非常简单,但它是构建一些最先进的RL的基础。
RL问题包括(至少)两个实体:代理和环境,如下图所示。环境给予代理一种状态(也称为观察)。然后,代理根据提供的状态选择操作,并将其应用于环境。然后,环境通过给代理奖励(该操作的分数)来回应该操作。
例如,考虑一个孩子(代理)第一次玩游戏(环境)。孩子首先看到包含所有元素(状态)的游戏屏幕,然后决定要采取的行动。游戏给他打分(奖励),过程重复到游戏结束(我们认为环境有明确的终止插曲)。经过足够的重复之后,孩子将开始理解他的行为如何影响环境,并(假设他是一个好胜心强的孩子)选择能使他的分数最大化的行为。
RL代理试图执行完全相同的操作。然而,与人类儿童不同的是,计算机还不具备天生的智能。那么,计算机如何学习最好的动作应该是什么呢?对于文本的其余部分,我们将提取这个问题,并重新推导出提供解决方案的算法。
蒙特卡罗学习是RL的一个子域,非常适合于求解有限(有限状态数)的马尔可夫决策过程(MDP)。MDP只是一类问题,对于这些问题,当前状态的知识提供了足够的信息来决定要采取的最佳行动。国际象棋就是一个可以被框定为MDP的问题的例子。任何时间点的板状态都包含确定下一步操作所需的所有信息。
让我们考虑一下下面描述的问题。我们有一个家用地板清洁机器人(清洁剂),它的电池可以是低电量的,也可以是高电量的。机器人可以是清洁的,也可以是对接的。因此,机器人的环境由4种可能的状态组成:{清洁,高},{清洁,低},{停靠,高},{停靠,低}。机器人控制器总是在3个动作中进行选择:清洁、停靠或等待,环境会为代理的动作提供奖励。然而,由于我们的电池传感器不精确,我们的机器人可能会迷路,所以我们的转换是随机的(本质上是概率的)。
例如,如果机器人当前处于电池电量较高的清洁状态,并选择继续清洁,则有80%的机会获得1的奖励并在相同状态下继续清洁。在这一点上,引入一些符号变得很重要。我们将给定先前状态s和动作a的新状态s‘的概率(从0到1)表示为:P(s’,r|s,a)。因此,我们可以将开场白写成:P({CLEVISH,HIGH},1|{CLEVISH,HIGH},CLEAN)=0.8。
通过检查来自每条路径的预期回报,可以猜测该环境的最佳解决方案可能是下面所示的蓝色路径的形式。
但是,在与环境交互之前,代理没有关于环境概率的信息。那么,我们如何才能培训一名座席在这种环境下操作呢?换句话说:我们如何找到代理可以遵循的策略(表示为π)(将状态映射到操作),从而最大化总回报?
如果我们从一个简单地随机选择操作的代理开始会怎么样?下面是这样一个代理在包含50个步骤(其中前10个步骤如下所示)的插曲中运行的结果示例:
S0:停靠,高A0:等待R1:0 S1:停靠,高A1:等待R2:0 S2:停靠,高A2:等待R3:0 S4:停靠,高A4:等待R5:0 S5:停靠,高A5:清洁R6:1 S6:清洁,低A6:清洁R7:-3 S7:停靠,低A7:清洁R8:-3 S8:停靠,低A8:清洁R9:-3 S9:停靠,低...。
我们怎样才能利用我们刚刚收集到的信息呢?首先,我们可以使用表格表示此数据。其中行将对应于状态,列将对应于动作。这些条目将是在当前操作策略下处于给定状态时采取给定行动的加权平均预期回报。用某种符号表示:Q(s,a)←Q(s,a)+α(G−Q(s,a)。其中,α是我们对平均值的加权因子,通常被称为学习率,因为阿尔法越大意味着网络学习的速度越快,因为最近的观察结果有更大的影响。下面的表格称为Q表。
如果我们重复这个过程足够多的剧集,我们预计我们的表格会趋向于实际的回报。然而,对于足够大的问题,这种随机探索可能需要太长时间才能收敛。如果我们使用表中已有的信息来集中我们的探索,会怎么样?我们并不总是选择随机的操作,而是根据表中的当前值选择可以最大化回报的操作(称为贪婪操作)。在这种建议的方法下,当运行第2集时,如果代理处于清理高状态,它将始终选择停靠。我们从上一节建议的解决方案中了解到,这可能不是最佳解决方案。这表明,这种新的方法可能容易受到局部极小值的影响。如果我们从随机探索开始,但随着时间的推移(随着收集的数据越来越多,我们的Q表趋向于更好地逼近预期收益),我们会变得更加贪婪吗?
最后一个想法是𝜀-贪婪算法背后的概念,我们在表中选择以1-𝜀+𝜀/n最大化预期回报的操作,以及不以𝜀/n概率最大化回报的值。我们希望在开始时探索更多(当我们的Q表不太可能很好地表示回报时),并随着我们的近似随着剧集数量的增加而改进,缩小我们的探索范围。实现这一点的一种方法是使𝜀随着剧集数量的增加而衰减(变得更小),但受到某些界限的限制,以便我们的算法永远不会完全贪婪,例如𝜀←MIN(𝜀*𝜀_Decen^num_epsides,𝜀_MIN_Bound)。这个概念通常被称为无限探索的贪婪(Glie)。使用这个算法,运行1000集,我们最终得到了下面的Q表。
观察基于此表选择贪婪操作如何成为我们的最佳(蓝色)策略,如前面的MDP图所示。
我们推导了一种简单的基于蒙特卡罗控制的强化学习算法。然而,如果我们试图解决的问题不是间歇性的,而是一个持续性的任务(一个没有明确结束的任务),该怎么办?在下一篇文章中,我们将探索对这类问题有用的时差(TD)方法。
Udacity的深度强化学习课程为强化学习提供了坚实的介绍。
可以在这里找到示例中用于生成Q表的脚本。