【RL】强化学习的基本思想

在机器学习中,有监督学习和无监督学习的特点是基于已有的数据,去学习数据的分布或蕴含的其他重要信息。强化学习与上述这二者最显著的不同在于,首先它不是基于已有的数据进行学习,而是针对一个环境进行学习;另外,它的目标不是学习数据中蕴含的信息,而是寻找能够在环境中取得更多奖励的方法。通俗地说,监督学习的目标只是“弄清楚环境是什么样的”,而强化学习的目标是“在这个环境中生活得更好”。上述的特点导致了强化学习的思维模式与我们所熟悉的监督学习或非监督学习有非常大的区别。

概括地说,强化学习算法主要涉及到两个组成部分:其一是通过与环境交互产生大量的数据,其二是利用这些数据去求解最佳策略。在给定数据集的问题中,我们往往只用考虑算法的计算量。而在强化学习中,我们不但要考虑算法的计算量,也要考虑我们产生数据所消耗的成本,这就是数据效率(data efficiency)。如何能高效地与环境交互产生数据(提升数据效率),并高效地求解最优策略(提升训练效率),这也正是强化学习的困难所在。

下面,我们就分别讲一讲这两个部分所用到的主要思想,以及其对于强化学习算法的意义所在。

一 从环境中产生数据

在有监督学习中,我们假定自然中有一个我们不了解的分布 P ( Y ∣ X = x ) P(Y \mid X=x) P(YX=x)而我们有许多服从于 P P P分布的数据。我们的目标是通过数据学习出数据背后的 P P P。而强化学习问题中,我们假定有一个能够自由与其交互产生数据的环境。我们可以不断从环境中获取数据,以训练智能体在环境中的行为方式,以使其获得更多的奖励。有监督学习中我们拥有的是数据,而强化学习中我们拥有的是环境。

有的读者可能有疑问:“拥有数据”与“拥有环境”有什么区别?即使强化学习中我们“拥有环境”,但我们仍然要通过与环境交互产生数据,最后通过数据来学习。如此说来,“拥有环境”和“拥有数据”岂不是一样的吗?

这里我们要特别强调的是, “拥有数据”意味着我们拥有环境中随机产生的数据。 “拥有环境”意味着我们可以自主地选择与环境交互的方式,从环境中产生我们需要的数据。简单地说,有监督学习中的训练数据是环境中随机产生后交到我们的手上,并不包含我们人为设计的成分;而强化学习的训练数据则包含了我们主观设计的成分,它无疑比随机产生的训练数据包含更多的价值。正因如此,我们可以专门选择环境中我们感兴趣的或对于目标有帮助的部分进行探索,即根据需要来获得数据。这也正是强化学习中的探索利用平衡发挥作用的地方。

打个比方,我们目标是训练一个擅长下象棋的智能体,使得它能够尽可能地在标准的象棋对局中战胜对手。下图中的 s 1 s^{1} s1是一个正常对弈中很可能会出现的局势。熟悉象棋的同学不难看出,到了这一步,红方已经处于绝对优势。如果走法恰当,只需要两步就可以取胜了。即使走法不那么恰当,也几乎不可能被对手逆转;与之相比, s 2 s^{2} s2是一个非常罕见的局势,只有在专门设计的残局挑战中才会出现。在 s 2 s^{2} s2中,红方处于极其危险的境地,只有一种步步紧逼的走法才有可能反败为胜。只要有一步的疏忽,就立即会被对手将死。如果单从技术难度的角度来说,局势 s 2 s^{2} s2下选择走法无疑是更难的。但问题是,我们的目标是让智能体在标准的象棋对局中取胜,这两种局势是否对于我们的目标是否同样重要?
在这里插入图片描述
如果我们站在游戏规则本身来看,这两种局势都是游戏中有可能出现的。假设对弈双方在符合游戏规则的条件下随机地乱走(可以吃对方棋子却不吃),则出现这两种局势的可能性或许不相上下。在这个角度下, s 1 s^{1} s1 s 2 s^{2} s2应该是同样重要的。但是,如果是两个有一定象棋基础的玩家对弈,则对局中几乎不可能出现 s 2 s^{2} s2的情况。即使 s 2 s^{2} s2局势下的走法非常精妙,但是它对于我们的目标——在标准对局中尽可能地战胜对手——却并没有那么重要。由于我们每次产生模拟对局产生数据都是有成本的,所以我们应该产生更多有关 s 1 s^{1} s1局势的数据,以提升算法的数据效率。

我们现在面临的问题是,我们如何知道 s 1 s^{1} s1 s 2 s^{2} s2相比更加重要?我们如何知道 s 1 s^{1} s1是有可能出现的局势,而 s 2 s^{2} s2则是完全不可能出现的局势?在训练刚开始的时候,智能体的参数是随机初始化而得到的。如果让它与人对弈,它就相当于是在随机地胡乱走棋。这样,他也没有能力分辨出 s 1 s^{1} s1 s 2 s^{2} s2这两个局势哪一个是更重要的。

为此,我们只有对智能体进行初步训练,当它有了初步的分辨能力之后就能够判断并产生相对更加“重要”的数据。然后,智能体又会用这些数据优化自身的策略,并能够更准确地判断哪些数据更加“重要”。随后,它又能够更有针对性地从环境中产生更加有价值的数据,并进一步优化自身的策略。将这个过程迭代下去,便是一个“越学越强”的过程。这也正是“强化学习”这个名称的由来。

通过上述的例子,想必我们应该大致能够体会到“拥有数据”与“拥有环境”的区别。“拥有环境”意味着我们可以源源不断地、有针对性地从环境中产生我们所需要的数据。换一个角度说,强化学习的目标是寻找能够在环境中取得较多奖励的策略。如果仅仅依靠给定的数据是难以求解出很好的策略的。只有拥有可交互的环境,才能充分验证我们策略的有效性。

有一类算法称作模仿学习(imitation learning)。它的思想简而言之就是将强化学习问题转换为有监督学习问题。以自动驾驶为例,我们需要从状态(包括车辆雷达检测的路况、车载摄像头拍摄的周围环境图像),选择动作(包括转弯、加油、刹车)。一个很自然的想法是收集大量人类司机驾驶的数据集,从数据中学习状态到动作的映射关系。这是一个典型的有监督学习问题。

对于一些现实中的复杂问题,模仿学习的实际应用效果很差,这是因为有监督学习与强化学习的性质不同。在有监督学习问题中,我们的目标是要优化真实值 y y y与预测值 f ( x ) f(x) f(x)之间的差距。模型对所有 x x x给出的预测 f ( x ) f(x) f(x)都难免会和实际上的 y y y有误差。而在整个测试集上,总的误差由所有 f ( x ) f(x) f(x) y y y的误差线性叠加而成,这是我们可以接受的;而在强化学习中,假设我们训练出来的模型有误差,这会导致我们采取的动作 A 1 ′ A_{1}^{\prime} A1与司机给出的动作 A 1 A_{1} A1有一定的误差,继而导致进入的下一个状态 S 2 ′ S_{2}^{\prime} S2也和 S 2 S_{2} S2有一定的误差。然后由于我们采取的动作 A 2 ′ A_{2}^{\prime} A2与司机给出的动作 A 2 A_{2} A2有一定的误差,这会导致 S 3 ′ S_{3}^{\prime} S3 S 2 ′ S_{2}^{\prime} S2的误差基础上产生更大的误差。经历了多步的过程之后,我们得到的 S t ′ S_{t}^{\prime} St可能已经与人类司机所面对的$S_{t}有了巨大的误差,以至于训练集中根本就没有这种 下的应对方式。这种情况下,根据监督学习训练的智能体就无法给出很好的应对方式。

为了在模仿学习的框架下解决这种问题,我们就不能仅仅用已经产生的数据进行模仿,而要找一个专家,让它对我们新产生的数据不断进行标注。这种训练技巧被称为DAgger(Dataset Aggregation)。

DAgger的基本思路如下所示:
在这里插入图片描述
当采取了DAgger的技巧之后,模仿学习就不再只是经典的有监督学习问题,而是具有了一定强化学习的性质。这是因为,我们不再只是拥有给定的数据,而是拥有一个可以按需要不断产生数据的环境(能够为数据进行标注的专家)。当然,由于模仿学习与强化学习性质不同,这里的环境和强化学习所说的环境还是有区别的。我们举例的主要目的是为了说明可以通过交互产生新数据的重要性。

二 求解最佳策略

上一节中我们说过,如何从环境中产生数据是强化学习中很重要的组成部分,这决定了我们的学习效率。但是,强化学习的核心目的在于求解最优策略。所以,如何利用这些数据计算出最佳策略,这才是强化学习中最核心的部分。具体而言,求解最优策略分为两大类方法——基于价值的方法与基于策略的方法。每一大类的方法背后都有一定的思路,例如基于价值的方法基于时间差分的思想,而基于策略的方法具有优化的思想。每一大类的方法又包括许多具体的方法,例如大家耳熟能详的DQN、Policy Gradient、Actor-Critic,等等。这也将是本书的主要内容。

要注意的是,我们所说的强化学习,一般指的是对于一个未知的环境,通过智能体与环境的不断交互、产生大量数据,并通过这些数据来学习最佳策略。如果我们既要考虑产生有价值的数据,又要考虑从数据中学习最佳策略,这个问题无疑会非常困难。为此,我们会尝试进行一些简化。

在上世纪的中叶诞生了一门叫做最优控制(Optimal Control)的学科,并被广泛视作是强化学习的前身。所谓的最优控制问题,简而言之就是要求解一个环境已知的MDP。在最优控制问题中,我们将被给定一个已知的环境表达式(状态S、动作A奖励R之间的转移关系已知),而我们需要针对已知的环境表达式求解最优的策略。由于环境是已知的,所以我们不必考虑如何产生数据的问题,而可以将精力集中于如何求解最优策略的思想与技巧上。

总的来说,强化学习针对的是一个未知环境求解最优策略的复杂问题。在强化学习中,我们既需要与环境交互产生数据,又需要通过这些数据去求解能够取得最大奖励的最优策略。因此,我们必须兼顾上述两个方面,同时提升训练的数据效率与计算效率。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值