△训练过程中agent的性能曲线,四条平滑曲线代表四个worker在training episode中完成投递的数量随着training episode数量的变化。作者:Arthur Juliani 我们的agent能够在每个episode中完成20次投递,这个值可以被认作是在当前场景下的单个episode中最大可能投递数。 直接特征预测 因为电池容量有限、需要经常充电,真实世界中的无人机并不能一直运送包裹。 无人机的每一步行动都会消耗电池中的一部分电量,而一旦电量用完,就意味着无人机将会从空中坠落,无法继续送货,在程序中即象征着没有更多的奖励。 我们可以在环境中增加一个agent可以前往充电的地点。现在所有agent需要做的就是学会在低电量的情况下去充电站充电,在其他情况下正常配送包裹。 建立一个优化的奖励函数 在时间充足、超参数经过恰当调优的情况下,Q-learning算法最终能够发现,适时进行充电在长期来看是有助于配送更多包裹的。 这样,agent就学会了在没有短期奖励的情况下,采用一系列复杂的行动,从而获得长期更大的奖励。 在这种情境下,设置一个奖励信号用来鼓励无人机进行充电乍看起来好像不错。一个naïve的想法就是当无人机飞向特定地点充电时提供一个奖励(比如说+0.5)。但在这种情况下,我们的agent将学会的行为就只会是不停地飞向充电站,因为那里肯定有奖励。 而我们需要做的,是构造出一个描述最优化行为的奖励函数,这个过程对一些问题来说是很简单的,因为不恰当的奖励函数通常会导致agent出乎意料的行为。 改变目标 如果希望避免由不正确奖励函数导致的错误,我们就需要将任务形式以更直观的方式转述给agent。 我们发现,基于episode和特定时刻提供给agent一个明确的目标,能够更好地优化agent的行为。 比如说针对这个充电的问题,我们可以在无人机电量低于一个阈值的时候将行动目标从“配送包裹”改为“去充电”。这样,我们就不用担心奖励函数的形式,而且神经网络也可以专心学习环境的动态变化。 △考虑充电问题的无人机配送情景。作者:Arthur Juliani 将寻找目标的任务形式化 为了让这个概念便于使用,我们需要对上述描述采用更正式的说法。 在强化学习中有多种方式可以实现目标寻找,我接下来将要介绍的一种方法来自今年ICLR会议上的一篇paper:Learning Act by Predicting the Future(https://arxiv.org/pdf/1611.01779.pdf),这正是我们准备训练我们的agent做的事情。 首先需要说明,atv,文中展示的模型并不是论文结果的直接应用。在论文中,他们把他们的网络称作“直接特征预测(direct feature predicton,DFP)”。而我们所做的是类似DFP的一个简化版本。我做了一些调整,从而使例子更直观。 在原始论文中,作者训练他们的agent在第一人称射击游戏“Doom”中进行对抗,令人印象深刻,但是对于本文来说难度太大了,因此我就不进一步引述。 △DFP网络结构示意图 来源:Dosovitskiy and Koltun等的论文Learning Act by Predicting the Future 与一般训练agent的过程不同,我们不是去建立状态s和Q值估计值Q(s,a)之间的映射,然后从环境中获得一个奖励r,而是对状态s增加了一系列测量值m和目标g,然后训练网络对每个行动a去预测未来测量值的改变f。 训练网络预测未来的期望 在无人机送货的场景中,我们将会用到的两个测量值:电池电量和成功配送的包裹数。 与在Q-learning中预测一个值函数不同,我们训练网络去预测在未来的1,2,4,8,16和32步移动后电池的电量和配送的包裹数。形式上这可以写成: 这里T代表时间偏移量的列表,即[1,2,4…etc.],表示agent移动的步数。 (责任编辑:本港台直播) |