e-works数字化企业网  »  文章频道  »  基础信息化  »  IT综合

增强学习在无人驾驶中的应用

2017/5/27    来源:极客头条    作者:王江  吴双  刘少山      
关键字:无人驾驶  增强学习  
本文是无人驾驶技术系列的第六篇,着重介绍增强学习在无人驾驶中的应用。增强学习的目的是通过和环境交互,学习如何在相应观测中采取最优行为。相比传统的机器学习,它有以下优势:首先,由于不需要标注的过程,可以更有效地解决环境中存在的特殊情况。
    本文是无人驾驶技术系列的第六篇,着重介绍增强学习在无人驾驶中的应用。增强学习的目的是通过和环境交互,学习如何在相应观测中采取最优行为。相比传统的机器学习,它有以下优势:首先,由于不需要标注的过程,可以更有效地解决环境中存在的特殊情况。其次,可以把整个系统作为一个整体,从而对其中的一些模块更加鲁棒。最后,增强学习可以比较容易地学习到一系列行为。这些特性十分适用于自动驾驶决策过程,我们在本文深入探讨增强学习如何在无人驾驶决策过程中发挥作用。
 
    增强学习简介
 
    增强学习是最近几年中机器学习领域的最新进展。增强学习的目的是通过和环境交互学习到如何在相应的观测中采取最优行为。行为的好坏可以通过环境给的奖励来确定。不同的环境有不同的观测和奖励。例如,驾驶中环境观测是摄像头和激光雷达采集到的周围环境的图像和点云,以及其他的传感器的输出,例如行驶速度、GPS定位、行驶方向。驾驶中的环境的奖励根据任务的不同,可以通过到达终点的速度、舒适度和安全性等指标确定。
 
    增强学习和传统机器学习的最大区别是增强学习是一个闭环学习的系统,增强学习算法选取的行为会直接影响到环境,进而影响到该算法之后从环境中得到的观测。传统的机器学习通过把收集训练数据和模型学习作为两个独立的过程。例如,如果我们需要学习一个人脸分类的模型。传统机器学习方法首先需要雇佣标注者标注一批人脸图像数据,然后在这些数据中学习模型,最后我们可以把训练出来的人脸识别模型在现实的应用中进行测试。 如果发现测试结果不理想,那么我们需要分析模型中存在问题,并且试着从数据收集或者模型训练中寻找原因,然后从这些步骤中解决这些问题。对于同样的问题,增强学习采用的方法是通过在人脸识别的系统中尝试进行预测,并且通过用户反馈的满意程度来调整自己的预测,从而统一收集训练数据和模型学习的过程。增强学习和环境交互过程的框图如图1所示。
 
增强学习和环境交互的框图
 
    图1 增强学习和环境交互的框图
 
    增强学习存在着很多传统机器学习所不具备的挑战。首先,因为在增强学习中没有确定在每一时刻应该采取哪个行为的信息,增强学习算法必须通过探索各种可能的行为才能判断出最优的行为。如何有效地在可能行为数量较多的情况下有效探索,是增强学习中最重要的问题之一。其次,在增强学习中一个行为不仅可能会影响当前时刻的奖励,而且还可能会影响之后所有时刻的奖励。在最坏的情况下,一个好行为不会在当前时刻获得奖励,而会在很多步都执行正确后才能得到奖励。在这种情况下,增强学习需要判断出奖励和很多步之前的行为有关非常有难度。
 
    虽然增强学习存在很多挑战,它也能够解决很多传统的机器学习不能解决的问题。首先,由于不需要标注的过程, 增强学习可以更有效地解决环境中所存在着的特殊情况。比如,无人车环境中可能会出现行人和动物乱穿马路的特殊情况。只要我们的模拟器能够模拟出这些特殊情况,增强学习就可以学习到怎么在这些特殊情况中做出正确的行为。其次,增强学习可以把整个系统作为一个整体的系统,从而对其中的一些模块更加鲁棒。例如,自动驾驶中的感知模块不可能做到完全可靠。前一段时间,Tesla无人驾驶的事故就是因为在强光环境中感知模块失效导致的。增强学习可以做到,即使在某些模块失效的情况下也能做出稳妥的行为。最后,增强学习可以比较容易学习到一系列行为。自动驾驶中需要执行一系列正确的行为才能成功的驾驶。如果只有标注数据,学习到的模型如果每个时刻偏移了一点,到最后可能就会偏移非常多,产生毁灭性的后果。而增强学习能够学会自动修正偏移。
 
    综上所述,增强学习在自动驾驶中有广阔的前景。本文会介绍增强学习的常用算法以及其在自动驾驶中的应用。希望能够激发这个领域的探索性工作。
 
    增强学习算法
 
    增强学习中的每个时刻t∈{0,1,2,…}中,我们的算法和环境通过执行行为at进行交互,可以得到观测st和奖励rt。一般情况中,我们假设环境是存在马尔科夫性质的,即环境的变化完全可以通过状态转移概率Pass′=Pr{st+1=s′|st=s,at=a}刻画出来。也就是说,环境的下一时刻观测只和当前时刻的观测和行为有关,和之前所有时刻的观测和行为都没有关系。而环境在t+1时刻返回的奖励在当前状态和行为确定下的期望可以表示为:Ras=E{rt+1|st=s,at=a}. 增强学习算法在每一个时刻执行行为的策略可以通过概率π(s,a,θ)=Pr{at=a|st=s;θ}来表示。其中θ是需要学习的策略参数。我们需要学习到最优的增强学习策略,也就是学习到能够取得最高奖励的策略。
 
    ρ(π)=E{∑t=1∞γt−1rt|s0,π (1)
 
    其中γ是增强学习中的折扣系数,用来表示在之后时刻得到的奖励折扣。同样的奖励,获得的时刻越早,增强学习系统所感受到的奖励越高。
 
    同时,我们可以按照如下方式定义Q函数。Q函数Qpi(s,a)表示的是在状态为s,执行行为a之后的时刻都使用策略π选择行为能够得到的奖励。我们能够学习到准确的Q函数,那么使Q函数最高的行为就是最优行为。
 
    Qπ(s,a)=E{∑k=1∞γk−1rr+k|st=s,at=a,π}=Es′[r+γQpi(s′,a′)|s,a,π] (2)
 
    增强学习的目的,就是在给定的任意环境,通过对环境进行探索学习到最佳的策略函数π最大化rho(π)。下面的章节中我们会简单介绍常用的增强学习算法。包括REINFORCE算法和Deep Q-learning算法。
 
    REINFORCE
 
    REINFORCE是最简单的reinforcement learning算法。其基本思想是通过在环境里面执行当前的策略直到一个回合结束(比如游戏结束),根据得到的奖励可以计算出当前策略的梯度。我们可以用这个梯度更新当前的策略得到新策略。在下面的回合,我们再用新的策略重复这个过程,一直到计算出的梯度足够小为止。最后得到的策略就是最优策略。
 
    假设我们当前的策略概率是πθ(x)=Pr{at=a|st=s;θ} (θ是策略参数)。每个回合,算法实际执行的行为at是按照概率π(x)采样所得到的。算法在当前回合时刻t获得的奖励用rt表示。那么,策略梯度可以通过以下的公式计算。
 
    ∇θρ(π)=∑t=1T▽θlogπ(at|st;θ)Rt (3)
 
    其中π(at|st;θ)是策略在观测到st时选择at的概率。Rt=∑Tt′=tγt′-trt′是算法在采取了当前策略之后所获得的总的折扣后的奖励。为了减少预测出梯度的方差。我们一般会使用(Rt-bt)来代替Rt。bt一般等于Eπ[Rt],也就是当前t时刻的环境下使用策略π之后能获得的折扣后奖励的期望。
 
    计算出方差之后,我们可以使用θ=θ+▽θρ(π)更新参数得到新的策略。
 
    REINFORCE的核心思想是通过从环境中获得的奖励判断执行行为的好坏。如果一个行为执行之后获得的奖励比较高,那么算出的梯度也会比较高,这样在更新后的策略中该行为被采样到的概率也会比较高。反之,对于执行之后获得奖励比较低的行为,因为计算出的梯度低,更新后的策略中该行为被采样到的概率也会比较低。通过在这个环境中反复执行各种行为,REIFORCE可以大致准确地估计出各个行为的正确梯度,从而对策略中各个行为的采样概率做出相应调整。
 
    作为最简单的采样算法,REINFORCE得到了广泛应用,例如学习视觉的注意力机制和学习序列模型的预测策略都用到了REINFORCE算法。事实证明,在模型相对简单,环境随机性不强的环境下,REINFORCE算法可以达到很好的效果。
 
    但是,REINFORCE算法也存在着它的问题。首先,REINFORCE算法中,执行了一个行为之后的所有奖励都被认为是因为这个行为产生的,这显然不合理。虽然在执行了策略足够多的次数然后对计算出的梯度进行平均之后,REINFORCE以很大概率计算出正确的梯度。但是在实际实现中,处于效率考虑,同一个策略在更新之前不可能在环境中执行太多次。在这种情况下,REINFORCE计算出的梯度有可能会有比较大的误差。其次,REINFROCE算法有可能会收敛到一个局部最优点。如果我们已经学到了一个策略,这个策略中大部分的行为都以近似1的概率采样到。那么,即使这个策略不是最优的,REINFORCE算法也很难学习到如何改进这个策略。因为我们完全没有执行其他采样概率为0的行为,无法知道这些行为的好坏。最后,REINFORCE算法之后在环境存在回合的概念的时候才能够使用。如果不存在环境的概念,REINFORCE算法也无法使用。
 
    最近,DeepMind提出了使用Deep Q-learning算法学习策略,克服了REINFORCE算法的缺点,在Atari游戏学习这样的复杂的任务中取得了令人惊喜的效果。
 
    Deep Q-learning
 
    Deep Q-learning是一种基于Q函数的增强学习算法。该算法对于复杂的每步行为之间存在较强的相关性环境有很好的效果。Deep Q-learning学习算法的基础是Bellman公式。我们在前面的章节已经介绍了Q函数的定义,如下所示。
 
    Qpi(s,a)=E{∑k=1∞γk-1rr+k|st=s,at=a,π}=Es’[r+γQpi(s’,a’)|s,a,π] (4)
 
    如果我们学习到了最优行为对应的Q函数Q*(s,a),那么这个函数应该满足下面的Bellman公式。
 
    Q*(s,a)=Es’[r+γmaxa’Q*(s,a)|s,a] (5)
 
    另外,如果学习到了最优行为对应的Q函数Q*(s,a),那么我们在每一时刻得到了观察st之后,选择使得Q*(s,a)最高的行为做为执行的行为at。
 
    我们可以用一个神经网络来计算Q函数,用Q(s,a;w)来表示。其中w是神经网络的参数。我们希望学习出来的Q函数满足Bellman公式。因此可以定义下面的损失函数。这个函数的Bellman公式的L2误差如下。
 
    L(w)=E[(r+γmaxa’Q*(s’,a’;w)-Q(s,a;w))2](6)
 
    其中r是在s的观测执行行为a后得到的奖励,s′是执行行为a之后下一个时刻的观测。这个公式的前半部分r+γmaxa′Q*(s′,a′,w)也被称为目标函数。我们希望预测出的Q函数能够和通过这个时刻得到的奖励及下个时刻状态得到的目标函数尽可能接近。通过这个损失函数,我们可以计算出如下梯度。
 
    ∂L(w)∂w=E[(r+γmaxa’Q*(s’,a’;w)-Q(s,a;w))∂Q(s,a;w∂w) (7)
 
    可以通过计算出的梯度,使用梯度下降算法更新参数w。
 
    使用深度神经网络来逼近Q函数存在很多问题。首先,在一个回合内采集到的各个时刻的数据是存在着相关性的。因此,如果我们使用了一个回合内的全部数据,那么我们计算出的梯度是有偏的。其次,由于取出使Q函数最大的行为这个操作是离散的,即使Q函数变化很小,我们所得到的行为也可能差别很大。这个问题会导致训练时策略出现震荡。最后,Q函数的动态范围有可能会很大,并且我们很难预先知道Q函数的动态范围。因为,我们对一个环境没有足够的了解的时候,很难计算出这个环境中可能得到的最大奖励。这个问题会使Q-learning工程梯度可能会很大,导致训练不稳定。
 
    首先,Deep Q-learning算法使用了经验回放算法。其基本思想是记住算法在这个环境中执行的历史信息。这个过程和人类的学习过程类似。人类在学习执行行为的策略时,不会只通过当前执行的策略结果进行学习,而还会利用之前的历史执行策略经验进行学习。因此,经验回放算法将之前算法在一个环境中的所有经验都存放起来。在学习的时候,可以从经验中采样出一定数量的跳转信息(st,at,rt+1,st+1),也就是当处于环境,然后利用这些信息计算出梯度学习模型。因为不同的跳转信息是从不同回合中采样出来的,所以它们之间不存在强相关性。这个采样过程还可以解决同一个回合中的各个时刻的数据相关性问题。
 
    而且,Deep Q-learning算法使用了目标Q网络来解决学习过程中的震荡问题。我们可以定义一个目标Q网络Q(s,a;w-)。这个网络的结构和用来执行的Q网络结构完全相同,唯一不同就是使用的参数w-。我们的目标函数可以通过目标Q网络计算。
 
    r+γmaxa’Q*(s’,a’;w-) (8)
 
    目标Q网络参数在很长时间内保持不变,每当在Q网络学习了一定时间之后,可以Q网络的参数w替换目标Q网络的参数w-。这样目标函数在很长的时间里保持稳定。可以解决学习过程中的震荡问题。
 
    最后,为了防止Q函数的值太大导致梯度不稳定。Deep Q-learning的算法对奖励设置了最大和最小值(一般设置为[-1, +1])。我们会把所有奖励缩放到这个范围。这样算法计算出的梯度更加稳定。
 

责任编辑:李欢
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐