📜  深入了解强化学习

📅  最后修改于: 2022-05-13 01:58:07.946000             🧑  作者: Mango

深入了解强化学习

自从旧 Atari 游戏赢得 Minds 的惊人结果以来,强化学习的主题近年来绝对增长了,AlphaGo 在机械臂操纵方面取得了惊人的突破,甚至在 1v1 dota 中击败了职业选手。自 2012 年 ImageNet 分类挑战取得令人瞩目的突破以来,监督深度学习的成功不断堆积,各行各业的人们开始使用深度神经网络解决各种新问题,包括如何学习智能行为在复杂的动态环境中。

为什么监督学习不同于强化学习?

因此,监督学习被用于大多数机器学习应用程序中。这意味着您为您的神经网络模型提供输入并知道您的模型应该创建什么输出。因此,您可以使用反向传播方法计算梯度来训练网络以产生所需的输出。所以,假设你想教一个神经网络在有监督的环境中打乒乓球,你会让一个优秀的人类玩家打几个小时的乒乓球,然后你会创建一个数据集,记录所有的人类在屏幕上看到的帧,以及他为响应这些帧而采取的动作。因此,无论是向上还是向下箭头,我们都可以将这些输入帧输入一个非常简单的神经网络,该神经网络可以在输出端产生两个简单的行为。它将选择向上或向下动作,我们可以通过简单地使用反向传播之类的方法对人类游戏的数据集进行训练,来训练该神经网络来复制人类游戏玩家的动作。

但是,这种方法有两个明显的缺点:

  • 监督学习需要创建一个数据集来训练,这并不总是一件容易的事。
  • 如果你训练你的神经网络模型来简单地模仿人类玩家的动作,那么你的代理在玩乒乓球游戏方面永远不会比人类玩家更好。例如,如果你想训练一个神经网络比人类玩家更擅长打乒乓球。

强化学习的工作:

幸运的是,它被称为强化学习。因此,框架和强化学习与监督学习框架惊人地相似。所以我们仍然有一个输入帧,我们通过一个神经网络模型运行它,网络产生一个输出动作,要么向上要么向下。但是现在我们不知道目标标签,所以我们不知道在任何情况下我们应该上升还是下降,因为我们没有要训练的数据集。策略网络是将输入帧转换为输出动作的强化学习网络。一种称为策略梯度的策略现在是训练策略网络的最简单方法之一。在策略梯度中,策略是从一个完全随机的网络开始。您将来自游戏引擎的帧馈送到该网络。它会根据您知道的活动(向上或向下)生成随机向上。使用该动作返回游戏引擎 循环继续,而游戏引擎生成下一帧,在此示例中,网络可能是一个完全连接的网络。

但是,您也可以在那里使用卷积,您的网络输出现在将包含两个数字:上升的概率和下降的概率。在训练时,您将从分布中抽样,这样您就不会总是重复相同的确切活动。这将帮助您的代理更随机地探索世界,希望发现更大的奖励,更重要的是,更好的行为。因为我们希望我们的代理能够完全自行学习,所以我们给它的唯一反馈就是游戏的记分牌。因此,只要我们的智能体进球,它就会获得 +1 奖励,如果对手进球,我们的智能体会受到负 1 的惩罚,而智能体的主要目的是优化其策略以收集尽可能多的奖励。因此,为了训练我们的策略网络,我们要做的第一件事就是收集大量数据。只需在网络上运行其中一些游戏帧,选择随机动作,然后将它们反馈到引擎中,即可生成一系列随机乒乓球游戏。显然,因为我们的代理还没有学到任何有价值的东西,它会输掉大部分比赛,但关键是,我们的代理可能会很幸运,随机选择一系列真正导致目标的动作。在这种情况下,我们的智能体将获得奖励,重要的是要记住,对于每一集,无论我们想要正奖励还是负奖励,我们已经可以计算出梯度,这将使我们的智能体在未来更有可能采取行动。这一点很关键,因为当我们获得正奖励时,策略梯度将使用正常梯度来提高未来每一集发生这些行为的概率。当我们得到一个负数时,我们将应用相同的梯度,但我们将它乘以负一,这个负号将确保我们在一个特别糟糕的情节中做出的所有行动在未来都不太可能发生。因此,在训练我们的策略网络时,导致负面奖励的行为将逐渐被过滤掉,而导致良好奖励的行为将变得越来越有可能,因此在某种程度上,我们的代理正在学习打乒乓球。

策略梯度的缺点:

因此,我们可以利用策略梯度来训练神经网络打乒乓球。但是,使用这种策略也有一些实质性的缺点,就像往常一样。让我们再次回到乒乓球。想象一下,你的经纪人已经练习了一段时间,实际上非常擅长打乒乓球,来回弹跳球,但在这一集的结尾却犯了一个错误。它允许球通过并受到处罚。政策梯度的问题在于,他们假设因为我们失去了那一集,我们在那里所做的所有行为都一定很糟糕,这将减少未来重复这些行为的可能性。

信用分配困境:

但请记住,在那一集的大部分时间里,我们都表现得非常好,所以我们不想减少这些行为的机会,这在强化学习中被称为信用分配困境。在这种情况下,如果您在剧集结束时获得奖励,那么导致该特定奖励的特定行为是什么,而这个问题完全是由于我们的奖励设置很少。因此,我们不是为每一个动作都获得奖励,而是在一个完整的情节之后才获得奖励,并且我们的代理必须弄清楚它的动作序列的哪个元素导致了它最终获得的奖励,就像朋克的例子一样。例如,我们的代理人应该明白,只有在球撞击之前的活动才是真正重要的;球飞走后的其他一切都与最终的回报无关。由于这种稀疏的奖励设置,强化学习算法的采样效率通常很低,这意味着你必须给它们大量的训练时间,然后它们才能学习任何有价值的东西。

蒙特祖玛的复仇强化学习算法

在将强化学习算法的效率与人类学习进行比较时,发现稀疏奖励设置在某些极端情况下完全失败。在游戏 Montezuma's Revenge 中,特工的任务是通过一系列梯子,跳过头骨,取回钥匙,然后前往门口——以便进入下一个关卡。问题是通过执行随机行为,您的代理将永远不会看到单个奖励,因为您知道获得该奖励所需的活动顺序太复杂了。对于随机动作,它永远不会到达那里,并且你的策略梯度永远不会收到一个正奖励,所以它不知道该怎么做。在机器人技术中也是如此,您可能想要训练机械臂拾取物体并将其堆叠在其他物体上。普通机器人大约有七个可以移动的关节,所以它有很大的动作空间。如果你只在它通过随机探索成功堆叠一个区块时给它一个积极的奖励,它永远不会看到任何好处。还值得注意的是,这与我们在计算机视觉等领域看到的通常有监督的深度学习成就相比如何。计算机视觉工作如此出色的原因是每个输入帧都有一个目标标签,允许使用反向传播等技术非常有效的梯度下降。另一方面,在强化学习场景中,您正在处理稀疏奖励设置的巨大问题。这就是为什么,尽管即使对于最先进的深度学习,将一个块堆叠在另一个块上这样简单的事情似乎也相当困难,但解决稀疏奖励问题的常用方法是利用奖励塑造。

蒙特祖玛的复仇

奖励筹码:

手动创建奖励函数以将您的策略引导到某些期望行为的做法称为奖励筹码。例如,在 Montezuma's Revenge 中,您可以在您的代理每次避开头骨或拿到钥匙时提供奖励,这些额外奖励将鼓励您的策略以某种方式行事。

虽然这显然使您的策略更容易收敛到预期行为,但奖励塑造有许多缺点:

  • 对于初学者来说,奖励塑造是一个特定的过程,必须针对您要在其中训练策略的每个新环境完成。如果您使用 Atari 基准作为示例,您必须为这些游戏中的每一个创建不同的奖励系统,这根本是不可扩展的。
  • 第二个问题是奖励塑造受到所谓的对齐问题的困扰。当谈到塑造你的奖励函数时,事实证明,奖励塑造在许多情况下都相当困难。您的代理人将设计一些巧妙的方案,以确保它在无所事事的情况下获得大笔资金。在某种程度上,该策略只是过度拟合了您设计的独特奖励函数,而不是泛化到您想到的预期行为。

有很多有趣的奖励塑造变坏的例子。例如,如果一个智能体被训练跳跃并且奖励函数是它的脚和地面之间的距离,智能体学会了发展一个非常高的身体并做某种后空翻来确保它的脚离地面很远.查看下面的方程式,了解机器人控制工作的成形奖励函数,以了解奖励成形的难度。

R_{\text {grasp }}= \begin{cases}b_{\text {lift }}, & \text { if } h>\epsilon_{h} \\ w_{\theta}, & \text { if } d_{\text {orient }}<\epsilon_{d} \text { and } \theta_{\text {orient }}<\epsilon_{\theta} \\ 0, & \text { otherwise }\end{cases}

R_{\text {stack }}= \begin{cases}\gamma_{t} b_{\text {stack }}, & \text { if } d_{\text {stack }}<\epsilon_{d} \text { and } \theta_{\text {stack }}<\epsilon_{\theta} \\ \gamma_{t}\left(w_{\theta} r_{\theta}+w_{d} r_{d}\right), & \text { otherwise, }\end{cases}

R_{f u l l}= \begin{cases}w_{\text {stack }}, & \text { if } d_{\text {stack }}<\epsilon_{d} \wedge \theta_{\text {stack }}<\epsilon_{\theta} \\ w_{\text {stages }}, & \text { if } d_{\text {stack }}<\epsilon_{d} \wedge \theta_{\text {stack }}<\epsilon_{\theta} \\ w_{\text {grasp }}, & \text { if } h>\epsilon_{h} \\ w_{\text {stage }_{1}}, & \text { if } d_{\text {stage }_{1}}<\epsilon_{d} \\ 0, & \text { otherwise }\end{cases}

人们只能想象研究人员花费了多少精力来开发这种精确的奖励机制以实现所需的行为。

最后,在某些情况下,例如 AlphaGo,您不想进行任何奖励塑造,因为它会将您的策略限制在人类行为上,这并不总是可取的。所以我们现在的困境是,我们知道在人口稀少的环境中训练很困难,但也很难建立一个奖励函数,我们并不总是想做。许多互联网资源将强化学习描述为某种神奇的人工智能酱,它允许智能体从自身学习或改进其先前的形式,但现实情况是,这些进步中的大部分都是世界上一些最伟大的头脑在工作的结果今天。在幕后进行了许多艰苦的工程,所以我相信在我们的数字环境中导航最困难的方面之一是在广告业务推动的点击诱饵海洋中将事实与虚构分开。波士顿动力公司的 Atlas 机器人就是我所说的一个很好的例子。所以,如果你走到街上问一千个人拥有当今最先进的机器人,他们很可能会指出波士顿动力公司的 Atlas,因为每个人都看过它做后空翻的视频。但是,如果您考虑波士顿动力公司实际上擅长什么,那么如果您查看他们以前在研究记录中的论文,那么那里进行大量深度学习的可能性很小。不要误会我的意思,他们正在做很多先进的机器人技术,但这些机器人并没有很多自我驱动的行为或智能决策,所以不要误会我的意思。波士顿动力公司是一家出色的机器人公司,但他们开发的媒体印象可能会让许多不知道幕后发生的事情的人感到困惑。尽管如此,鉴于目前的研究状况,我们不应忽视这些技术可能带来的潜在危险。越来越多的人对人工智能安全研究产生兴趣,这很好,因为必须认真处理自主武器和广泛监视等问题。我们唯一的希望是国际法能够跟上我们正在目睹的巨大技术进步。另一方面,我认为媒体过分关注这些技术的不良方面,仅仅是因为人们害怕他们不理解的东西,并且害怕出售的广告比乌托邦还多。从长远来看,大多数(如果不是全部)技术进步都是好的,只要我们能够确保没有垄断企业可以通过恶意使用人工智能来保持或加强其主导地位。

参考:

  • Gudimella, A., Story, R., Shaker, M., Kong, R., Brown, M., Shnayder, V., & Campos, M. (2017)。使用概念网络进行灵巧操作的深度强化学习。 arXiv 预印本 arXiv:1709.06977