杨薛钰,陈建平,傅启明1,,5,陆 悠1,,5,吴宏杰1,,5
1.苏州科技大学 电子与信息工程学院,江苏 苏州 215009
2.苏州科技大学 江苏省建筑智慧节能重点实验室,江苏 苏州 215009
3.苏州科技大学 苏州市移动网络技术与应用重点实验室,江苏 苏州 215009
4.珠海米枣智能科技有限公司,广东 珠海 519000
5.苏州科技大学 苏州市虚拟现实智能交互与应用技术重点实验室,江苏 苏州 215009
强化学习是机器学习的一个重要分支,强化学习的基本思想就是学习如何将场景映射到动作,以获得最大的数值奖赏信号,从而学习完成目标的最优策略[1]。具体而言,就是智能体处在一个环境中,每个状态为智能体对当前环境的感知,智能体通过动作来影响环境,当智能体执行一个动作后,会使得环境按照某种概率转移到另外一种状态;同时,环境会根据潜在的奖赏函数反馈给智能体一个奖赏。强化学习中主要包括四个要素:状态、动作、转移概率以及奖赏函数。目前强化学习在游戏博弈,工业领域中均得到很好的应用[2]。
深度学习是机器学习的另一个重要的分支,是一种以人工神经网络为架构,对数据进行表征学习的算法,它是从数据中学习表示的一种新方法[3]。强调从连续的层中进行学习,这些层对应于越来越有意义的表示。至今为止已有数种深度学习框架,如深度神经网络、卷积神经网络和深度置信网络等。最近几年,深度学习在实践中也取得了革命性的进展,在计算机视觉、语音识别、自然语言处理等领域取得了显著的成果[4]。
目前,越来越多的任务当中是以高维数据为输入,以此来求得最优策略。而当状态动作空间为高维连续的时候,单纯的强化学习将不再适用。谷歌的Deep-Mind 团队将强化学习和深度学习相结合,提出了深度强化学习的算法,在2016 年的人机大战中,Alpha Go[5]以4∶1战胜了韩国的围棋世界冠军李世石。其后不久,Alpha Zero[6]利用了深度强化学习的方法,在无需借助外部力量的情况下,仅利用深度强化学习进行自我博弈,最终以100∶0 的战绩战胜了Alpha Go。近些年来,深度强化学习的研究取得了重要的进展,在各个领域得到了实际的应用。目前,深度强化学习的研究已经成为人工智能领域的一个研究热点。谷歌DeepMind团队将卷积神经网络和强化学习中的Q 学习[7]算法相结合,提出了深度Q 学习算法(Deep Q-Network,DQN)。该算法已在多种Atari游戏中达到或者超过了人类水平的表现,从那时候起,很多扩展性的方法不断被提了出来。深度强化学习的算法主要有Double DQN[8]、dueling DQN[9]、Noisy DQN[10]等,以上这些算法各自都可以提升DQN 性能的各个方面。但是,DQN 在解决高维连续的动作空间问题的时候,只能将连续动作离散化,这将会导致离散动作的数量随着动作维度的增加而呈指数型的增长,同时在将连续的动作离散化的过程之中,将会使动作域的结构发生改变[11]。然而在大部分情况下,动作域的结构对于实际问题的求解是至关重要的。目前,DQN算法以及其他改进的算法并不能够很好地解决现实问题中连续动作的问题。在解决连续性动作的问题之中,通常采用策略梯度的方法。策略梯度方法不采用迂回的方式更新策略,而是直接计算策略可能更新的方向,他不通过误差进行反向传播,而是直接通过观测到的信息选出一个行为进行反向传播,没有误差,通过奖赏值的大小对选择动作的可能性进行增强或减弱,好的动作下次被选中的概率将增大,不好的动作下次被选择的概率将减小。与DQN算法以及各种改进的算法相比较,策略梯度能直接适用高维或者连续行为动作空间的强化学习情景。在2014年提出了DPG确定性策略梯度算法(Deterministic Policy Gradient)[12],DPG 算法的每一步行为通过函数μ直接获得确定的值,Policy Gradient 其本质是一个随机的策略,而确定性策略梯度能够得到一个确定的动作。DPG算法的动作是确定值,而不是概率分布。与PG算法相比较,具有更好的策略优化效果。其后Lillicrap 等人[13]将DPG(Deterministic Policy Gradient)算法[14]与DQN 算法相结合,提出了DDPG(Deep Deterministic Policy Gradient)算法。DDPG 算法吸收了Actor-Critic 算法让Policy Gradient 单步更新的优点,同时吸收了DQN算法的精华,合并成同一种算法。DDPG算法在连续性动作上能够更有效的学习,相比于DQN 算法,DDPG 在求解最优策略的过程中需要的时间步更低,但是DDPG算法在寻找最优策略的过程中,所需的样本数据量巨大,并且算法的收敛速度还需要提高。
本文在DDPG算法的基础之上结合随机方差减小梯度方法提出了随机方差减小确定性策略梯度(Stochastic Variance Reduction-Deep Deterministic Policy Gradient,SVR-DDPG)算法。针对原有DDPG 算法训练不稳定,样本利用率差,收敛速度慢的缺点,结合随机方差减小梯度方法,通过减小梯度估计中的方差,优化了DDPG算法,通过实验结果证明,与DDPG 算法相比较,SVRDDPG算法具有更快的收敛速度和更好的稳定性。
当强化学习的任务满足马尔可夫性质的时候,一般被称为马尔可夫决策过程(Markov Decision Process)[15],通常强化学习的问题可以建模成一个马尔可夫决策过程。在马尔可夫决策过程中,将它用一个元组来表示,S表示决策过程之中的状态集合,P表示状态之间的转移概率,R表示采取某一动作到达下一状态的时候的回报值,γ表示折扣因子。
强化学习算法的目的是寻找最优策略,并且运用这个策略进行动作的选择,以期待该动作能获得最大的奖赏值,在强化学习当中,策略用字母π表示,π(s,a)表示在状态s下选择动作a的概率。
强化学习的算法是基于估计值函数的,所以在强化学习中,运用值函数来对策略的好坏进行评估,可以分为基于动作值函数Q(π)和基于状态值函数V(π)的。Q(π)表示状态动作对(s,a)由策略π得到的累计期望奖赏。V(π)表示在状态s由策略π得到的累计期望奖赏。通常采用动作值函数来评估策略的好坏,即:
称为bellman方程。
强化学习当中,通过Q*来表示最优策略,相对应的Q*(s,a)表示为:
式(2)被称为最优bellman公式。
DDPG算法是以Actor-Critic算法为框架[16],同时结合了DPG算法以及DQN算法的优点。在DPG算法中,其策略梯度可以表示为如下公式:
在随机策略方法中,策略的梯度由状态和动作同时决定,而在确定性策略方法中,策略梯度主要由状态决定,所以DPG方法收敛所需要的样本较少。
而DDPG 算法中,行动者部分利用公式(3)进行参数更新,而在评论家部分利用公式(4)进行更新,但是在利用公式(4)对评论家网络直接进行更新的时候会出现网络的震荡,因此在更新过程中,会同时计算相应的目标值,即公式(5)中的yt。
为了解决网络震荡带来的问题,DDPG 算法采用了DQN 中的目标网络,但是并非直接的将权重参数复制到目标网络中去,而是采用soft 的方式更新参数,在DDPG算法中,创建新的actor-critic网络,来更新目标参数,其更新规则为该更新方法可以有效提高算法的稳定性。与此同时,DDPG算法中引入了DQN中的经验回放机制,打破经验池中样本关联性,提高了参数更新的有效性。
在DDPG算法中,为了增加agent对环境的探索,引入了随机噪声U,使动作选择具有一定随机性,以此完成策略探索,具体公式如下:
Adam[17]算法是对随机梯度下降算法的一个扩展,被广泛运用于深度学习模型中。Adam算法是一种基于一阶梯度信息迭代更新网络参数权值的有效随机方法,一旦有了目标函数的梯度,Adam 算法可以自适应的估计梯度的第一矩和第二矩,并进一步计算自适应学习率。
Adam 算法是一种被广泛使用的随机优化算法,并且在一系列具有挑战性的任务中表现优异,但是也存在不足,它的参数更新规则仅仅是基于随机批次样本的一阶梯度信息,由于随机抽样将会引起方差,因此这种更新规则在更新过程中存在错误,梯度更新将会不准确。
近似梯度误差是代价函数f(ω)的梯度方向估计误差,ω是该函数的超参数,往往更新时会使用梯度下降法进行迭代优化,从而使得算法运算过程中损失最小。通常在给定经验缓冲区中保留一定的学习样本的情况下,理想的损失函数梯度估计利用这些学习样本提供的当前信息给出准确的学习方向,从而使Agent能够通过优化超参数快速收敛到策略的最优梯度方向。但在DDPG 算法进行梯度估计过程中会出现近似梯度误差。近似梯度估计误差是由很多原因引起的:首先由于极小化的精确度不高,导致了当前超参数ω的次优性,其次,用来推导梯度的样本的有限的表示数。另外,由于经验回放缓冲区的有限存储导致了不可见的状态转移和策略,从而出现错误。近似梯度估计误差会导致梯度估计的失真,从而使得Agent 的策略选择变得更糟,会导致算法性能的很大变化,使得算法的收敛速度变慢。因此为了发展快速的随机一阶方法,必须保证迭代越接近最优时,随机更新方向的方差越小。
在许多机器学习问题中,都将有限和优化问题归结为:
令ω*=arg minω f(ω)为方程(7)的最优解,许多研究者都是为了找出ω的最优解使得f(ω)-f(ω*)≤ε。为了解决以上述形式出现的问题的时候,通常使用随机化方差减少一阶方法,因其每次迭代代价低而特别有效。
在DDPG 算法中对在线网络进行更新的时候通常使用Adam 优化器。在应用梯度信息进行迭代更新的时候,为了减小计算量,避免全梯度的计算难度,通常从N个样本中按照一定的比例重新采样一个大小为n的样本集{x1,x2,…,xn},用这个样本集的平均梯度来指导算法更新过程中的下降方向,而真正对下降方向起到指导作用的是全梯度,在Adam算法的更新过程中只是用样本集n的平均梯度来近似全梯度。在更新过程中初始参数为θ,从训练集中采集样本n{x1,x2,…,xn},对应目标为yi,因此更新过程中全梯度无偏估计如下:
那么采样过程中随机变量{x1,x2,…,xn}的期望E即:
由此可得在更新过程中全梯度近似的方差如下:
式(10)中E也是采样过程中随机变量的期望,而在算法更新过程中,为了减小计算量,利用全梯度的无偏估计代替全梯度时,当随机采样样本集大小n与N存在差异时方差将会出现,此时方差的大小将会对算法的收敛速度,稳定性产生影响。
为了解决DDPG算法更新过程中,由近似梯度误差所带来的收敛速度变慢的问题,减小随机更新方向的方差,本文将SVRG算法运用到随机一阶方法当中。
随机方差减小梯度方法是一种不需要梯度存储的随机梯度下降的显示方差缩减方法,该方法利用变量控制,具有非常快的收敛速度,适用于神经网络训练等复杂问题。
SVRG 算法在更新过程中将会保存每一次迭代接近最优解ω*的,该算法将预先计算好一个平均梯度作为一个锚点,n是训练样本的子集,
在孔子的思想中,智、仁、勇是君子应当具备的三种德行,《中庸》有“知(智)、仁、勇三者,天下之达德也”。“仁”作为儒家思想的核心,既为行武的前提,又是行武的目的。“骥不称其力,称其德也”[4](P157),“子曰:‘善人为邦百年,亦可以胜残去杀矣。’诚哉是言也!”[4](P144)“智”是行武的重要品质,而“勇”在《论语》中较之“智”则占据了更重要的位置,实是春秋后期的动荡社会好勇斗狠风气渐长时,孔子有针对性的阐发。孔子说“君子无所争”“其争也君子”,他所说的“争”为“君子之争”,所主张的“强”是“君子之强”。
SVRG算法更新公式如下:
在更新过程中,方差将会缩减,并且会找到更加精确的梯度更新方向。在DDPG算法中,对在线网络更新的时候通常采用Adam优化器。本次改进将SVRG算法和Adam 算法相结合,利用SVRG 算法在小随机训练子集的基础上找到更加精确的梯度方向。并将优化后的一阶信息传播给Adam优化器。
本文所提出的SVR-DDPG 算法如下所示,该算法将随机方差减小的方法用于DDPG 算法的参数更新当中,算法其具体实施如下:
算法1SVR-DDPG算法
算法在开始更新在线网络参数的时候,从整个训练样本中抽取样本,形成训练样本集Ns,然后把它固定在整个优化过程的外循环中,使用样本集Ns中的样本计算平均梯度来构造当前锚点,以此解决优化问题。在内循环迭代中,通过从样本集Ns中随机抽取的小批量样本nt的平均值来减小梯度,并通过更新公式(11)来更新参数,因为所使用的个别训练样本具有较大的方差,并且计算效率低下,为了充分利用样本集Ns中样本的信息,以便寻找到最优的梯度估计更新方向。小批量样本集的大小n和SVRG内部循环迭代次数m,需满足约束条件n×m≥N。
经过SVRG 方差减小过程之后,得到更新参数θm和之前存储的。计算出的估计方差减小梯度gs等于θm-。由于Adam 算法计算过程中有效步长不随梯度的大小而变化,因此无需重新调整gs,在计算出gs后,遵循标准的Adam算法流程来构建经偏置校正的第一矩估计和第二阶原始矩估计,并进一步确定这个训练迭代的更新参数,计算更精确的梯度估计方向。以此来更准确快速的更新在线网络参数。
3.1.1 实验描述
为了验证本文算法的有效性,将DDPG算法与改经后的SVR-DDPG 算法运用于Mountain Car 问题当中,问题示意图如图1所示。
图1 Mountain Car示意图Fig.1 Diagram of Mountain Car
图中有一带坡度的山体,小车此时处于坡底,因为重力以及自身动力不足的原因,小车无法直接通过加速到达右侧五角星所在的位置,必须通过前后加速借助惯性的方法到达坡顶,在每一个情节中,小车到达坡顶则实验结束,小车的状态s是二维的,一维是位置信息,用p表示,另一维是小车的速度,用v表示。
实验中奖赏设置为,当小车到达右侧星星目标位置后,立即奖赏100,当小车处于其他状态时,立即奖赏表示为:
3.1.2 实验设置
本次实验基于OpenAI Gym,实验参数设置如下:actor网络以及critic网络的参数学习率分别为10-4、10-3、L2权重缩减速率是10-2,折扣因子是0.99。目标网络中的更新参数设置α=0.001,每隔300 个情节之后,将α修改为1.1α。每个情节中最大时间步数是1 000。在相同的实验环境下,对两种算法进行重复实验,取实验结果平均值来比较算法的性能。
3.1.3 实验结果分析
将DDPG 算法与SVR-DDPG 算法运用于Mountain Car 实验当中,实验当中,SVR-DDPG 算法的收敛速度明显优于原始DDPG 算法。其实验结果如图2 所示,图中横坐标表示情节数,纵坐标表示算法执行20次之后的回报均值。从图2中可以看出,原始DDPG算法在200个情节是已经取得了较高的回报值,但是还未完全收敛,一直到800 个情节左右时才收敛,而改进后的SVR-DDPG算法在220个情节左右时基本完全收敛,未出现明显震荡,与原始DDPG算法比较更加快速稳定。
图2 算法性能比较Fig.2 Performance comparision of different algorithms
如图3 是SVR-DDPG 算法在Mountain Car 实验中的实际方差减小效果图,如图所示横坐标代表了情节数,纵坐标代表了算法实验中的方差。由图3可以看出SVR-DDPG 算法在Mountain Car 实验中具有一定的方差减小效果。而且当η取0.01 时方差的减小效果明显优于当η取0.005的时候,即当η的取值越大的时候,方差减小效果越好。
图3 不同η 的SVR-DDPG方差比较Fig.3 Comparison of SVR-DDPG variance with different η
如图4 表示不同的学习率的SVR-DDPG 算法收敛速度的比较图,其他参数设置均不改变,横、纵坐标分别表示情节数和每个情节的回报值,算法单独执行20次,取平均值。学习率分别取值为0.001、0.005、0.01,从图3中可以看出随着η值的增大,方差减小性能越来越优秀,因此算法的性能也得到了提高,从图4中可以看出,随着学习率的增加,算法收敛效果越来越好。综上所述当设置学习率为0.01时,算法的收敛效率最好。
图4 不同η 的SVR-DDPG算法Mountain Car性能对比Fig.4 Performance comparision of SVR-DDPG with different η on Mountain Car
3.2.1 实验描述
为了进一步验证改进算法的有效性,再一次将SVR-DDPG算法应用于倒立摆控制问题当中,并与传统的DDPG算法进行比较分析,问题示意如图5所示。
图5 倒立摆Fig.5 Inverted pendulum
图5中有一个倒立的钟摆,钟摆摆杆绕着转轴随机摆动。Agent 主要目的是为了寻找一个最优策略,使得钟摆摆杆一直处于竖直状态。该实验是在OpenAI Gym的实验环境下完成的,钟摆的状态是二维的,分别为钟摆的位置和钟摆的速度。
钟摆状态可表示为:
钟摆的动作表示对钟摆的作用力,是一维的,取值范围为[-2,2] 。动作表示如下:
其中,r等于式(12)的计算值的概率为0.1,等于0 的概率为0.9。
3.2.2 实验设置
本次实验基于OpenAI Gym,实验参数设置如下:actor网络以及critic网络的参数学习率分别为10-4、10-3、L2权重缩减速率是10-2,折扣因子是0.99。目标网络中的更新参数设置α=0.001,每隔300 个情节之后,将α修改为1.1α。每个情节中最大时间步数是1 000。在相同的实验环境下,对两种算法进行重复实验,取实验结果平均值来比较算法的性能。
3.2.3 实验结果分析
本次实验将DDPG 算法及SVR-DDPG 算法运用于倒立摆控制问题,两种算法在倒立摆问题中算法执行10次的平均奖赏如图6所示。
图6 算法性能比较Fig.6 Performance comparison of different algorithms
如图6 所示,横坐标表示情节数,纵坐标表示奖赏值。比较两个算法的表现,SVR-DDPG算法在300个情节时已经基本收敛,未出现较大波动,平均奖赏基本保持稳定,而原始的DDPG算法从400个情节以后才逐渐从震荡中开始收敛,到800 个情节的时候才基本收敛。其中主要是应为在原始的Adam 优化算法基础之上引入了梯度方差减小方法,减小了方差,加快了算法的收敛速度。此外还可以看出改经后的DDPG 算法奖赏值的震荡幅度明显小于原始DDPG 算法,以此证明SVRDDPG算法性能以及稳定性比DDPG算法更好。
如图7 是SVR-DDPG 算法在倒立摆实验中的实际方差减小效果图,图7 横坐标代表了情节数,纵坐标代表了算法实验中的方差。由图可以看出,改进后算法在倒立摆实验中,方差得到了明显减小,进一步说明了算法的方差减小效果,由图中可以看出当η取0.01时方差的减小效果明显优于当η取0.005 的时候,即η的取值越大的时候,方差减小效果越好。
图7 不同η 的SVR-DDPG方差比较Fig.7 Comparison of SVR-DDPG variance with different η
如图8 所示不同的学习率的SVR-DDPG 算法收敛速度的比较图,其他参数设置均不改变,横、纵坐标分别表示情节数和每个情节的回报值,算法单独执行20次,取平均值。学习率分别取值为0.001、0.005、0.01。从图中可以看出,随着学习率的增加,算法收敛效果越来越快。在实际操作过程中经过多次实验当N=512,n=32,m=32,η=0.01 时,算法获得最优的收敛效果。
图8 不同η 的SVR-DDPG算法倒立摆性能对比Fig.8 Performance comparison of SVR-DDPG with different η on inverted pendulum
本文针对原始DDPG 算法在应用Adam 优化器的过程中,会存在迭代曲线的震荡、出现方差、收敛性能慢等问题,提出了一种基于随机方差减小方法的DDPG算法SVR-DDPG算法。该方法将随机方差减小方法SVRG 算法与Adam 算法相结合运用于DDPG 算法优化当中,通过减小方差,以此提升算法的收敛速度。将算法运用于Mountain Car 实验以及倒立摆实验当中,比较验证改进算法的性能。实验结果表明,SVRDDPG 算法收敛速度以及稳定性均优于原始DDPG 算法。在未来的研究中,计划研究高级约束优化的影响,并探索与其他技术的潜在协同作用,并将算法运用于更大规模的连续状态空间问题中,使得算法可以运用于实际问题中。