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

in deep •  6 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。前面提到的训练方法同样适用,不一一介绍了。

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

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!