正如我们之前提到过, 深度神经网络的迅速发展, 不会阻碍类似增强学习这样的高层学习框架发展, 而是会成为高层框架的重要底层支撑.

今年ICML最佳论文提名中的一篇(Modular Multitask Reinforcement Learning with Policy Sketches), 正是属于分层增强学习: 用”策略草稿“进行模块化的多任务增强学习.

说的通俗一点, 就是教会神经网络学习在各个不同的任务中总结通用的”套路”(或者说策略草稿,行为序列):

机器学习的程序怎么训练(基于模块化的多任务增强学习)(1)

来自: https://arxiv.org/pdf/1611.01796.pdf

上图左右两图, 分别代表两个高层任务(“制作木板”(make planks) 和 “制作木棍”(make sticks)). 事实上, 这两个高层任务的完成, 都需要一个子策略π1的必要条件, 即 : 我们需要首先拿到木材 !

对于传统的分层强化学习, 更多的是类似马尔科夫链的推导过程:

机器学习的程序怎么训练(基于模块化的多任务增强学习)(2)

来自: https://www.youtube.com/watch?v=NRIcDEB64x8

b1, b2 是被符号化的高层指令(如刚才说的”制作木板”或”制作木棍”), 而底层的a1到a6就是单个的行为(比如”砍树”, “削木棍”等等). 如何把高级指令下的类似”套路”(行为)总结出来? 传统方法可以为这些特别的行为特意加上更多的共享回报:

机器学习的程序怎么训练(基于模块化的多任务增强学习)(3)

通过共享权重r 体现高层指令下策略的共性.

而作者提出的方法, 把下层的a1-a4这样的行为序列看成”策略草稿”, 这样的草稿通过一个神经网络生成:

机器学习的程序怎么训练(基于模块化的多任务增强学习)(4)

在激活特别的策略(如π1)时, 神经网络就会通过当前状态,生成特别的行为序列, 直到生成STOP行为, 才停止生成行为, 并进入下一个策略的激活(π2) .

进一步, 每个神经网络对应一个子策略, 如子策略π1, 输入是一系列的当前环境状态(s1-s4), 输出是这些环境下应该采取的行为(a1-a4). 直到STOP为止.

机器学习的程序怎么训练(基于模块化的多任务增强学习)(5)

来自: https://arxiv.org/pdf/1611.01796.pdf

所以论文实验必须维护多个神经网络(代表多个子策略), 那如何训练这些神经网络呢 ?

毫无疑问, 低层行为的回报值和高层任务的回报值都要兼顾:

机器学习的程序怎么训练(基于模块化的多任务增强学习)(6)

上式正是模型更新参数的关键, 分为两部分: 前半部考虑当前使用的子策略的因素;

后半部分考虑当前策略行为在某个高层任务的回报:

机器学习的程序怎么训练(基于模块化的多任务增强学习)(7)

来自: https://www.youtube.com/watch?v=NRIcDEB64x8

此处的b 正是对高层任务回报值的考虑, 如果b偏大, 说明当前行为多高层任务其实没有太大价值, 所以适当降低回报值.

即, 前半部分是对子策略的考虑, 后半部分是对高层任务的考虑:

机器学习的程序怎么训练(基于模块化的多任务增强学习)(8)

最后实验部分, 与其他共享策略的算法相比, 本论文的算法在平均回报率上达到最高:

机器学习的程序怎么训练(基于模块化的多任务增强学习)(9)

David 9认为该算法优势之一是其灵活性, 较一般的任务间共享策略的方法, “策略草稿”在生成策略行为和上层任务的迁移上更加灵活. 另外, 引入的神经网络模块使得泛化能力有所提高, 对于稀疏状态下的情况也可以有较好的行为计划.

参考文献:

  1. Modular Multitask Reinforcement Learning with Policy Sketches
  2. https://www.youtube.com/watch?v=NRIcDEB64x8
  3. https://github.com/jacobandreas/psketch

转自:http://nooverfit.com/wp/icml-2017论文精选2-用策略草稿进行模块化的多任务增强/

,