目的
- 许多物理任务具有连续且高维的动作空间. 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 | initial Q(s,a) |
一个例子: —O—–| (O代表人,|表示宝藏,训练它快速发现宝藏) 视频链接:^1
- DQN(Deep Q network,2013,deepmind), 针对具有高维observation spaces以及离散且低维action sapces的agent训练,比如: 训练计算机玩电子游戏(离散的按键动作).
关键: 融合了神经网络和Q-学习
Q学习用表格存储状态及其行动所拥有的Q值.当状态非常多时,如下围棋,计算机内存不够.
解决方法:
- 利用神经网络,将状态s和动作a作为神经网络的输入,经分析得到(s,a)的Q值.这样一来就没必要继续在表格中记录Q值. 神经网络相当于眼鼻口接受外部信息,经大脑加工输出每种动作a的值,通过强化学习的方式选择动作.
- 更新神经网络, 训练样本怎么来? 采取的做法是用Q-学习中的Q现实值表示正确的Q值,神经网络的参数通过旧神经网络的参数+学习率*(Q现实-Q估计)来更新.
- 通过神经网络预测Q(s’,a’)值.选取Q最大相应的动作来获取环境的reward.
- 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
最后可将优化的静态策略部署到物理环境中,也可以选择将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
- 分析:
actions(torque)
left-right ankle\knee\hip, 机器人躯干\腿和其所处世界构成环境.observations
来自环境的观测值,基于传感器的类型和位置.本例中有31个观测值,具体包括躯干的Y,Z轴坐标值,沿X,Y,Z方向躯干速度,躯干旋转角度和角速度,以及6个关节的角度\角速度,脚与底面接触力.以及反馈上个时间步输出的力矩指令.
控制系统(RL agent)接受31观测值,并且连续不断计算6个力矩.它使用一个actor将31观测值映射到6个力矩动作,以及一个评价器让执行器更有效率.
- 工作流程
- 设置具有足够参数的策略.
A-C神经网络.
- 选择reward来奖励良好的控制.
reward = $v_x+ 0.00625-50*z^2 - \sum(\tau_i^2) + -3y^2$
- 选择RL算法观察(s,a),以及调整参数(traning过程).
DDPG
继续研究的方向
- 最优控制结果作为样本训练神经网络?
- 用神经网络来训练轨迹规划参数?(已有不少文献)
- 流形学习? (流形学习估计柔性臂位姿)