0%

读论文continuous control with deep reinforcement learning并测试walking robot学习实例

目的

  • 许多物理任务具有连续且高维的动作空间. google Deepmind(DDPG.论文算法)使用actor-critic结构,用于连续动作的预测.
  • 以walking robot为例,训练其走直线并保证最省能量控制.

背景

  • RL(见补充:1)

可解决一些非常困难的控制问题(无人机,机器人).与其它使用静态数据集学习框架(无监督\有监督)不同,RL与动态环境交互,旨在找到”收集奖励最多”的动作序列.

假设agent里有一个大脑,它接收状态观测observations,输出动作.这种映射称为policy.如果提供一组观测量,策略便会确定要采取的动作.如果将策略表示为神经网络,则可以让agent一次接收上千输入状态,并给出有意义的动作.当环境不断变化,这种”策略”不再最优或无法映射到有效动作,强化学习算法RL—(根据采取的行动,从环境中观察的结果以及所获得的奖励reward,
,update)–>policy. 从而使得给定任何状态,agent都可以采取最有利的动作以产生最多的奖励累计.比如这次没考好,贪玩了,则调整策略,下次好好学习.

强化学习核心是优化问题(让计算机自主学习优化参数,”反复试错”).
基本关键词有: policy,state,action,reward(特定状态下的instantaneous奖励), value(从该状态到未来的全部奖励)等…所以一般评估状态的价值,而不是评估奖励(见Q-learning中的Q表更新方式),这样可以帮助agent选择一段时间内可获得的最优奖励的动作(而非短期利益).

基本分类:policy function based(如policy gradients方法), value function based(Q-learning), actor-critic based(DDPG,论文采用).

graph LR
    A[Policy 
RL]-->|Actions| B[states
reward] B-->|Reward| A B-->|State Observations| A

关于model-free(agent doesn’t need to know anything about the environment at all)和model-based(we know what’s not worth exploring)

优缺点: 大量样本,大量试错….如何理解神经网络的权重和偏差值,如果策略不符合规划,如何调整这个策略.把所有函数压缩在一个黑盒子,一旦出现问题,很难手动定位到出问题的点,无法解释输出为何这样.

  • Q学习 (Q表记录潜在奖励,以学生写作业为例,a1–看电视, a2–写作业)
a1 a2
s1 -2 1
s2 -4 2

关键: 如何更新?

根据Q表的估计,在s1状态采取了a2(写作业),并到达了a2状态,这时开始更新决策Q表: 想象在s2中采取行为,分别看哪种行为对应Q值大.

比如说Q(s2,a2)比Q(s2,a1)大(预估的).我们将$\gamma* maxQ(s2,a’) + r$ (最大的Q乘以衰减值 + 达到s2所获奖励),因为这里获得实际的奖励,于是将其作为现实Q(s1,a2)的值.之前的Q(s1,a2)为估计值.

注: Bellman方程的表现形式,它表明了当前状态s下Agent所能够获得的期望回报值与其后继状态之间存在关联.

有了现实与估计值,就能更新Q(s1,a2):

$ Q(s,a)=Q(s,a)+\alpha*[r+\gamma*maxQ(s’,a’)-Q(s,a)] $($\alpha$学习效率).

算法流程:

1
2
3
4
5
6
7
8
9
initial Q(s,a)
repeat(for each episode):
initial s
repeat(for each step of episode):
choose a from s using policy derived from Q (eg: epsilon greedy)
take a, observe r,and s'
$ Q(s,a)=Q(s,a)+\alpha*[r+\gamma*maxQ(s',a')-Q(s,a)] $
s = s'
until s is terminal

一个例子: —O—–| (O代表人,|表示宝藏,训练它快速发现宝藏) 视频链接:^1

  • DQN(Deep Q network,2013,deepmind), 针对具有高维observation spaces以及离散且低维action sapces的agent训练,比如: 训练计算机玩电子游戏(离散的按键动作).

关键: 融合了神经网络和Q-学习

Q学习用表格存储状态及其行动所拥有的Q值.当状态非常多时,如下围棋,计算机内存不够.

解决方法:

  1. 利用神经网络,将状态s和动作a作为神经网络的输入,经分析得到(s,a)的Q值.这样一来就没必要继续在表格中记录Q值. 神经网络相当于眼鼻口接受外部信息,经大脑加工输出每种动作a的值,通过强化学习的方式选择动作.
  2. 更新神经网络, 训练样本怎么来? 采取的做法是用Q-学习中的Q现实值表示正确的Q值,神经网络的参数通过旧神经网络的参数+学习率*(Q现实-Q估计)来更新.
  3. 通过神经网络预测Q(s’,a’)值.选取Q最大相应的动作来获取环境的reward.
  4. Experience replay:将系统探索环境数据储存起来.然后随机采样样本更新神经网络的参数.
  • policy gradients 论文链接:^2

上述两种方法主要是根据奖惩值,学习正确行为.如果是在无穷多(连续)动作中计算价值,吃不消.

思路: 通过神经网络分析,选取行为,再利用奖惩(不求导情况下),在神经网络反向传播中,左右下次被选的可能性.

例子: CartPole(传统强化学习任务之一:控制倒立摆): ^3 (注:其实DQN方法也能解决,将任务简化为cart只有离散动作R,L,状态为杆的位置及速度,但如果对倒立摆施加连续的扭矩这种方法就不合适了)

reward = $(-\theta^2-\dot{\theta})^2 $

论文思路

  • DDPG(deep determinstic policy gradient, actor-critic)

在控制中我们需要连续的动作空间,就像对倒立摆问题施加连续的力矩.将policy function based,value function based两种技术合并到一类称为执行-评价器(actor-critic)的算法中,其中执行器
是一个network,试图采取它认为当下状态最好的动作,评价器network则试图估计状态的价值和执行器采取的行动.

graph LR
    C[Observations]-->A[Actor]
    C-->B[critic]
    B-->|Value|D[Compare]
    A -->|Actions|E[Environment]
    E-->|Reward|D
适用于连续动作空间,因为critic只需要查看一个动作,而不是试图通过评估所有动作.基本原理为,Actor采取与策略函数相同的方法(见policy gradient)选择动作.评价器则预估它认为状态-动作的值,然后使用环境反馈的奖励来确定它预测的价值准确程度,之后再类似神经网络的反向传播进行自我更新.Actor调整将来再次采取该动作的概率.(该策略会沿着评价器建议的方向进行梯度上升,执行器从评价器反馈中学习正确的动作,从而了解动作好坏.评价器从所获得奖励中学习价值函数,以便正确评价执行器采取的动作).agent利用策略和价值函数算法的最佳部分.A-C能处理连续状态和动作空间.

最后可将优化的静态策略部署到物理环境中,也可以选择将RL算法一并部署以继续学习.

walking robot例子 (model-based) 可从Matlab文件中心下载该实例. 视频讲解及源码^4

从传统控制角度:

observations(eg: camera images) -> feature extraction -> state estimation( other sensors) -> control(blance, leg.motor control…) -> 行走

从RL(end-to-end)角度:

observations -> (Black Box) -> motor command

  • 分析:
  1. actions(torque)
    left-right ankle\knee\hip, 机器人躯干\腿和其所处世界构成环境.

  2. observations
    来自环境的观测值,基于传感器的类型和位置.本例中有31个观测值,具体包括躯干的Y,Z轴坐标值,沿X,Y,Z方向躯干速度,躯干旋转角度和角速度,以及6个关节的角度\角速度,脚与底面接触力.以及反馈上个时间步输出的力矩指令.

控制系统(RL agent)接受31观测值,并且连续不断计算6个力矩.它使用一个actor将31观测值映射到6个力矩动作,以及一个评价器让执行器更有效率.

  • 工作流程
  1. 设置具有足够参数的策略.

A-C神经网络.

  1. 选择reward来奖励良好的控制.

reward = $v_x+ 0.00625-50*z^2 - \sum(\tau_i^2) + -3y^2$

  1. 选择RL算法观察(s,a),以及调整参数(traning过程).

DDPG

继续研究的方向

  1. 最优控制结果作为样本训练神经网络?
  2. 用神经网络来训练轨迹规划参数?(已有不少文献)
  3. 流形学习? (流形学习估计柔性臂位姿)

补充

  1. https://ww2.mathworks.cn/videos/series/reinforcement-learning.html https://www.bilibili.com/video/BV1Gg4y1v7TR?p=2
  2. https://www.davidsilver.uk/teaching/
  3. 3BlueBrown(神经网络)
    https://www.bilibili.com/video/BV1bx411M7Zx?from=search&seid=3993471132113230062