针对机械操控的高效训练DRL

in #deep6 years ago

前言

前阵子做了一篇关于应用深度强化学习来完成机械臂操控的报告,因为导师要在机器人上加机械臂。在这里简单分享一下训练机械臂的过程以及方法。

主要内容来自以下论文:

  • Data-efficient Deep Reinforcement Learning for Dextreous Manipulation
  • Continuous control with deep reinforcement learning
  • Deterministic Policy Gradient Algorithms
  • Human-level control through deep reinforcement learning
  • Deep Reinforcement Learning for Robotic Manipulation with Asynchronous Off-Policy Updates

实验(来自第一篇论文)

训练一个机械臂去完成任务,这个任务是把一个乐高积木叠在另一个乐高积木上面。如下所示:

整个实验是在模拟环境中完成的。这个机械臂一共9个关节,6个手臂,3个手指,如下所示:

机械臂:

状态:9个关节的角度和角速度,加上两个积木的位置和相对距离以及到手指的距离。
PS:这款机械臂 Jaco 是由 Kinova Robotics 开发的,有兴趣的可以去买 :)
首先把整个任务分成两部分:
抓取积木 A(积木 A 离桌面到达一个阈值 \theta 视为完成)
叠到积木 B 上去(A 的坐标投影到 B 的坐标系中重合视为完成)

介绍一下应用的算法 Deep Deterministic Policy Gradient:

DDPG

一款基于 Actor-Critic 结构的算法,加上了来自 DQN 的 Target Network 概念,mini-batch 更新。可以看作 DQN with continuous action space :)

上图的一个循环就是一步,对应模拟的50ms,每个 Episode 会在 150 步后结束,也就是说机械臂有 7.5 秒的时间来完成任务。唯一调的超参数是 Learning rate。
简单说一下更新:Policy Gradient 没什么特别的,Loss function 所需的 Target value 就是由两个 Target Networks 提供的。
整理了一下 Target Network 的原因:

  • 对Action value / State-action value 的非线性拟合在理论上是不稳定的;
  • DDPG 用了 Replay Buffer 来保存数据,这样可以降低数据之间的相关性;
  • Target Q network 可以在 TD backup 的时候提供稳定的 Target value。

扩展

所谓的高效训练就体现在两个扩展上面了:

  • Multiple mini-batch
  • 并行运算
    Multiple mini-batch 就是每步本来只需要一次更新,现在变成了多次(论文里最高是40)。理由是一次更新太浪费数据,会造成欠拟合。
    并行计算就是用了 multiple mini-batch 之后太耗时间了,时间全用在计算神经网络上面了,干脆同时让多个模拟环境工作(论文里最高16),一起计算。
    这里的高效是数据高效,也就是相同数量的数据集,加入上述两个扩展,学习速度快得不谈了。并且它们在很多时候决定了能否成功学习。
    PS:Multiple mini-batch 不能通过增大 Learning rate 来取代,这样只会让训练变得不稳定。

还有没有其他提速的方法呢?有。

Instructive Starting States

简单来说就是有目的地训练部分任务。比如训练叠积木,就把初始状态设为积木 A 已经在手上了。
另外一个初始化方法是随机取一个 1 至完成任务所需步骤数的随机数,然后或人为或一个成功的 Episode 来执行这个数,再以这个过程的终止状态作为初始状态。

Reward function

r_{S1} 是第一部分任务的 reward, r_{S2} 是第二部分的 reward,两个函数都是基于欧几里得距离。
设计 reward function 需要注意的就是参数以及对训练过程的引导。
以上是第一篇文章的训练过程。
还有其他适用于机械控制的 RL 算法,比如 NAF、ADHDP。前面提到的训练方法同样适用,不一一介绍了。

Sort:  

Congratulations @fanpengcheng! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Coin Marketplace

STEEM 0.20
TRX 0.13
JST 0.030
BTC 66945.54
ETH 3515.79
USDT 1.00
SBD 2.71