前言
前阵子做了一篇关于应用深度强化学习来完成机械臂操控的报告,因为导师要在机器人上加机械臂。在这里简单分享一下训练机械臂的过程以及方法。
主要内容来自以下论文:
- 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。前面提到的训练方法同样适用,不一一介绍了。
Congratulations @fanpengcheng! You received a personal award!
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!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit