无人机送货充电包教包会!TensorFlow复合目标强化学习教程 2017-08-12 12:51 来源:量子位 中国移动 /无人机 原标题:无人机送货充电包教包会!TensorFlow复合目标强化学习教程 王瀚宸 编译自 O’reilly 原文作者:Arthur Juliani 量子位 出品 | 公众号 QbitAI 本文用到的所有python代码都在GitHub上: https://github.com/awjuliani/dfp 强化学习(Reinforcment Learning,RL)的主要内容就是不断训练agent完成任务,我们认为这会让agent学会做这件事情。 举例来说,假如我们希望训练一个会开门的机器人,或者叫agent,以强化学习为框架,就可以让机器人在不断试错中学会开门。 但如果我们希望agent能够完成多个目标,比如说完成的目标需要随着时间变化而改变,那需要怎么做呢? 在这篇文章中,结合Github上补充的材料,我将会以无人机送货为例(在这个场景中,无人机即为RL问题中的agent),首先研究一个传统强化学习能够解决的问题,随后将该问题进行拓展,并在之前的基础上提出新的解决方案。 首先我会讲述如何搭建一个简单的Q-learning agent,此时无人机这个agent在单一奖励信号的引导下进行移动,从而完成包裹的配送。随后我会讲到,这些简单的设计将会无法面对更复杂的情况,比如说没有考虑无人机充电的问题。 为了达到更大的灵活性,我将会讲述怎样用强化学习去搭建一类agents,从而在“直接特征预测(direct feature prediction,DFP)”的多目标场景下进行优化。 文中所涉及的代码都可从TensorFlow主页(https://www.tensorflow.org)和这里的iPython Jupyter Notebook(https://github.com/awjuliani/dfp)上获取。 Q-learning:为了最大的累积奖励 强化学习涉及到agent在某种环境中互动,从而随着时间推移获得最大的奖励。这个过程往往以如下形式进行:一个agent从环境中接收到状态s,进而产生一个行动a。对于给定的“状态s-行动a”对,环境会接着给agent提供一个新的状态s’和一个奖励r。强化学习需要解决的问题就是发现从状态到行动的映射,保证能够产生最大累积奖励。 Q-learning是用来解决这类问题的一种方法,它能够求出“状态-行动”对(s,a)与价值的估计值v之间的直接关系。这个估计值应与在状态s下采取行动a所得到的期望折扣奖励相对应。结合贝尔曼方程(Bellman equation),我们可以通过迭代得出所有可能的“状态-行动”对的Q估计值 Q(s,a)。这种Q值迭代的方法来自于优化Q方程的以下性质: 上式代表对于给定的状态和行动,其现在的Q值可以分解为现在的奖励和下一个状态的期望折扣奖励的和。通过收集经验,我们能够训练神经网络随着时间积累去更加精确地预测Q值,随后通过采取具有最佳期望值的行动,理论上就能从环境中得到最大的累积奖励值。 使用一个诸如神经网络的全局功能近似器,我们能对未发生的状态归纳出其Q估计值,从而使我们能够了解在任意大的状态空间下的Q方程。 无人机送货&基于目标的强化学习 Q-learning和其他传统的强化学习算法都采用单一奖励信号,因此也只能完成单一目标。就拿无人机在城市里学习送货来说,这会作为我们之后讨论基于目标的强化学习方法的范例。 在我们设置的环境中,agent将占据5*5方格栏中的一个位置,然后目的地在另外一个位置,这个agent可以在上下左右四个方向上随意移动。如果我们希望无人机能够学会运送货物,我们通常会在无人机成功飞到标记地点、完成送货时,提供一个+1的正向奖励。 △无人机送货的环境示意图,绿色图标代表目的地,黑色图标代表无人机,二者均在5*5的网格中占据着1格。作者:Arthur Juliani 上图展示了我们agent的学习内容和环境,我们将会使用5*5的RGB网格(共有75种可能)这样一个更简单的形式来表示环境。这会把学习所需要的时间从小时量级降到分钟量级(在现代台式机的配置下)。每个training episode中agent可以移动100步,在每个episode开始前会随机分配agent和目的地的位置。 使用TensorFlow实践Q-learning 以下所示的是用TensorFlow执行的Q-learning算法的异步版本,即通过同时运行多个agent来学习策略,这能在加速训练过程的同时增加稳定性。具体的实现过程见:https://github.com/awjuliani/dfp/blob/master/Async-Q.ipynb 我们在一台机器上训练四个worker,在每个worker经历过6,000个training episode后,我们得到了一个类似下图的性能曲线。 (责任编辑:本港台直播) |