实例讲解:我的强化学习初体验!

点击上方关注,All in AI中国

作者——Genevieve Hayes

介绍

假设你在玩电子游戏。你进入一个有两扇门的房间。第一扇门的后面有100枚金和一条通道。第二扇门后面是1枚金币和另一个方向的通道。一旦你穿过其中一扇门,则不能返回。你应该选择哪扇门呢?

实例讲解:我的强化学习初体验!

如果你的决定仅仅是基于最大化你的即时回报(当前利益),那么你的答案就是第一扇门。然而,你玩大多数电子游戏的目标并不是希望在游戏的某个部分利益最大化(在某一关卡获得MVP),而是在整个游戏中最大化你的利益(比如说,打通关)。换句话说,如果第二扇门后面的通道尽头可能有1000枚金币。你会选哪扇门?

真正回答这个问题的唯一方法是多玩这个游戏几次,每次尝试不同的门,然后根据你收集的信息,确定你的最佳策略。

我刚才描述的场景是一个典型的强化学习(RL)示例,RL是经常被忽视的"其他"类型的机器学习。在这篇文章中,我将带你了解RL的基本特征,并介绍基本的RL算法Q-learning。

什么是强化学习?

强化学习与监督学习和非监督学习是机器学习的三种基本类型之一。

在监督学习中,我们给你一个带标签的数据集,目的是用这个数据集来确定一个通用的规则,这个规则允许你给你可能遇到的任何新数据点加上标签。

例如,使用标有宠物照片的数据集来创建一个模型,该模型允许你为可能遇到的任何新宠物照片添加标签。

实例讲解:我的强化学习初体验!

在无监督学习中,给你一个无标签的数据集,其目的是通过检查数据点之间存在的关系,对数据的底层结构做出结论。

例如,在MNIST手写数字数据集中识别外观相似的图像簇。

实例讲解:我的强化学习初体验!

然而,在强化学习中,你首先面对的并不是一个确定的数据集。换句话说,最初你通常是面对着一个未知的"环境"(如迷宫,美国证券交易所种种无规律信息,甚至现实世界),你必须在现有的条件下,收集数据、推测规律、做出决定。

实例讲解:我的强化学习初体验!

RL应用于的问题类型称为"序贯决策问题",其最终目标是确定将长期收益最大化的最优行动序列。

环境是未知的这一事实很重要,因为如果环境是完全已知的,那么你就不需要与它交互来收集关于它的信息。

那么RL问题的关键特征是:

最初环境未知性:你必须探索该环境,以便获得有关该环境的信息。

延迟反馈:在采取行动后,可能需要一段时间才能完全意识到行动的结果。

顺序决策:收到的总体奖励通常是多个操作序列的结果,而不是单个独立操作的结果。

解决RL问题的算法有很多种,其中最著名的是Q-learning。

Q-learning

RL算法有两种类型:"基于模型的"和"无模型的"。

在"基于模型"的RL中,我们使用预先确定的环境模型(可能是准确的,也可能不是准确的)来确定最优的操作过程(也称为最优策略),而在"无模型"RL中,我们的目标是通过与环境的交互来确定最优策略。

无模型的RL算法可以依次分为两种类型:"on-policy"和"off-policy",它们与我们如何与环境交互以收集有关环境的信息有关。

使用"on-policy"算法,我们在决策时根据现有信息下的"最佳"策略做出决定,然后根据进一步得到的信息来改进"最佳"策略。

另一方面,使用"off-policy"算法,我们在与环境交互(或探索)时的行为可能与我们认为采取行动时最佳的行为无关。

例如,我们可能会故意选择一个我们知道在短期内不是最优的行为,以确定它是否会在长期内带来更大的回报。

Q-learning的工作原理是构建一个包含Q值的Q(s,a)表,表示在环境状态s中采取行动a的预期折扣(长期)奖励,然后通过与环境的交互对该表进行迭代改进,直到找到最优的Q表。

最初,Q表中的所有值都被设置为较小的随机数(除了终端状态的Q(s,a)值被设置为0)。

实例讲解:我的强化学习初体验!

每次在环境中执行一个操作时,都会生成一个(状态、操作、奖励、新状态)元组。这代表了在行动之前的环境状态s,在那个状态下采取的行动a,在那个行动之后立即得到的奖励r,以及行动之后的新环境状态s '。

这些元组(state, action, reward, new state)用于迭代更新Q表中的值,其中更新后的Q(s,a)值,记为Q ' (s,a),设置为原Q(s,a)值与新观测到的Q值的加权平均值。也就是说,假设你总是选择最优行为,那么(i)即时奖励和(ii)从新状态开始得到的预期折扣奖励之和。

为了便于理解,我列出了一个式子:

Q'(s,a)=(1 - w)*q(s,a)+w*(r+d*q(s',argmax a':q(s',a')

其中:

w为应用于新信息的权重(也称为学习率)

d是贴现率,考虑到现在收到的1美元比将来收到的1美元更有价值。

一旦找到最优的Q表,给定状态下的最优解就是使该状态,即argmax a: Q(s,a))的Q(s,a)最大化。

总而言之,算法取决于探索策略的选择与相关环境的使用——如果你不访问一个特定的环境或状态,不采取特定行动,那么你就永远不会知道所采取行动的后果。

然而,我们也不想在环境中随意"移动",寻找"迷宫的出口"。理想的情况是,一旦我们收集了一些关于我们环境的信息,我们希望利用这些信息,为我们未来的探索找到一条更加稳妥的"道路"。一种方法是使用贪心策略。

在贪心策略下,给定状态s时,以概率(1 -)选择贪心最佳行为(即该状态下使Q(s,a)最大化的行为),否则选择随机行为。

通常随时间的延长,我们会得到非常多的信息,减少了需要探索的数量,这将允许我们更多地关注于开发这些信息。

如果访问了足够多的次数,我们可以保证Q-learning算法最终收敛于最优表,尽管收敛时间是另一回事。

例子

以下图的这个迷宫为例:(https://samyzaf.com/ML/rl/qmaze.html)

实例讲解:我的强化学习初体验!

你的目标是训练机器人在不了解环境的情况下,从起点单元格(0,0)到终点单元格(6,6)之间找到迷宫的最优路径。

为了鼓励机器人找到最短路径,每次机器人进入一个白色单元时,都会施加0.04个单元的小惩罚。灰色单元表示障碍物。如果机器人进入其中一个的单元,则会受到0.75个单位的惩罚。

机器人只能上下左右移动(即不允许对角线移动)。然而,每个运动都有一定程度的不确定性,这样机器人只有80%的机会朝预定方向移动,20%的机会朝预定方向以直角移动(两种可能性平分)。

机器人无法走出迷宫的边界,如果它试图走出迷宫,就会撞到墙上,它的位置保持不变。

如果机器人成功地走到迷宫的尽头,它将获得1个单位的奖励。

假设贴现率为0.9,学习率为0.3,以及(常数)epsilon= 0.5的epsilon贪心探索策略,经过5万次的Q-learning算法迭代,我们得到如下策略。该图显示了机器人在网格中每一个正方形的最佳方向。

实例讲解:我的强化学习初体验!

找到这个解决方案的Python代码可以在这里找到:https://github.com/gkhayes/maze_reinforcement_learning

在现实世界中强化学习

尽管从上面给出的例子中可能看不出来,但是研究人员已经发现了许多将RL应用到现实世界的方法。RL已成功用于开发自动化股票交易系统,优化化学反应,自动驾驶汽车等等。

然而,对于那些希望开始学习RL的人来说,最大的障碍之一是获得一个有趣且具有挑战性的环境来进行实验。这就是为什么RL是机器学习家族中最不为人知的成员的原因。然而,自从OpenAI Gym的引入,情况就不一样了。

OpenAI Gym是一个Python包(https://gym.openai.com/),包含一系列RL环境,从简单的"玩具"环境(如示例中所描述的)到更具挑战性的环境(包括模拟机器人环境和雅达利电子游戏环境)。

实例讲解:我的强化学习初体验!

OpenAI Gym提供的一些环境示例

这个程序包使得计算机科学家,无论是业余的还是专业的,都可以用一系列不同的RL算法进行实验,甚至可以开发自己的算法。

总结

强化学习是机器学习的一个分支。在本教程中,我们讨论了RL的基本特征,并介绍了RL中最著名的算法之一Q-learning。希望这些能为你打开一扇新的大门。

实例讲解:我的强化学习初体验!

编译出品

相关推荐