For SALE: State-Action Representation Learning for Deep Reinforcement Learning
发表时间:2023(NeurIPS 2023)
文章要点:这篇文章提出,在强化学习里,对于特征向量表示的任务(low-level states),而不是图像表示的任务(image-based tasks),做表征学习也是有必要的。作者认为一个任务的困难在于底层的dynamic,而不是状态空间的大小,对state-action做表征学习可以有效提高采样效率(difficulty of a task is often defined by the complexity of the underlying dynamical system, rather than the size of the observation space)。作者提出TD7算法,在TD3的基础上结合了表征学习SALE,Policy Checkpoints,prioritized experience replay(LAP),behavior cloning term for offline RL。
具体的,SALE表示state-action learned embeddings,定义一对encoders (f,g)。f编码状态,g编码状态和动作
注意这里g的输入是f的输出结合动作,而不是原始状态。训练的目标是预测下一个状态的embedding
然后value和policy的输入就是原始状态和embedding拼到一起
作者解释,embedding不一定能捕获所有相关信息,比如reward等,所以还是需要原始状态(such as features related to the reward, current policy, or task horizon)。
(f, g)的训练频率和value,policy一样,但是训练value和policy的时候梯度不会传到(f, g)。
此外,对状态的embedding以及(s,a)经过线性变换后,过一个归一化,控制一下量级
这个归一化只考虑自身的不同维度,不考虑batch的样本。不对(s,a)的embedding做归一化是因为它的学习目标就是s的embedding,间接约束了量级。这样一来value和policy的输入变为
其中这里的\(z^s\)是归一化过后的。更新变为
为了防止外推误差(Extrapolation error),计算target的时候clip了一下
针对前面这些设计,作者做了很多不同的设计对比效果
一个有意思的结论是训练encoder的时候,target用的state的embedding,如果学习目标变为(s,a)的embedding效果会差很多,作者的解释是因为选取a的policy是不断变化的,对学习有影响(signal based on the non-stationary policy can harm learning)。
另外,作者End-to-End的实验表明如果value和policy的梯度传到encoder,效果会差很多。这和我之前在drq上得到的实验结果恰好相反(Learning the embeddings end-to-end with the value function performs significantly worse)。
除了SALE,Policy Checkpoints是说off policy的算法都是一个step更新一次,policy在不断变化。其实更应该用同一个policy交互一些episode,然后根据结果更新checkpoint,用这个checkpoint的结果来报告训练结果。具体做法是
- Assess the current policy (using training episodes).
- Train the current policy (with a number of time steps equal (or proportional) to the number of time steps viewed during assessment).
- If the current policy outperforms the checkpoint policy, then update the checkpoint policy.
Outperforms的标准用的Minimum而不是mean。这样就是如果有一局的测试更差了,就直接可以跳过不测了(This approach also means that extra assessment episodes do not need to be wasted on poorly performing policies, since training can resume early if the performance of any episode falls below the checkpoint performance.)。
然后prioritized experience replay用的LAP,一种通过给loss加权来实现PER的方式。
behavior cloning只在offline的时候用
整个算法如下
效果看起来相当猛
总结:文章主要偏实验,trick比较多。不过只要效果好就ok。可以试试代码。
从文章角度来讲,这篇文章也没有任何理论,写的其实也很直白。个人很喜欢这类风格,但是自己写成这样就中不了,总是被问没有理论,实验环境太少不够充分之类的,也是相当难受了。再看这篇文章rebuttal的时候,也被问了很多实验的结果,比如dmc等等,https://openreview.net/forum?id=xZvGrzRq17,也是很不容易了。只能说,要么就文章写fancy一点,要么就像这种实验真的是非常非常充分。
里面可以尝试借鉴的点:
1.checkpoint的方式做evaluation
2.target update变成了hard update
3.min max的clip的方式再结合double Q,可以尝试
4.actor和critic实际上多了一层全连接,不知道有没有影响
疑问:checkpoint这个算不算作弊呢,毕竟别人都是用当前的policy来evaluate,TD7却用到目前为止最好的policy来evaluate。