State Representation Learning - 让强化学习看得更透彻

人工智能 / 2022-10-24

State Representation Learning

定义

​ Learning such an observation-to-state mapping, prior to solving the RL problem, is known in the literature as state representation learning.

​ Including: Auto-Encoder、Slow Feature Analysis、robotic priors or by simultaneously learning the reward and transition function.

Auto-Encoder

​ AE 通过 encoder 和 decoder 两个网络级联,将输入输出求差作 loss 进行训练,所得的 encoder 能以尽量小的损失压缩输入数据。

​ 在 RL 中可以通过预训练好的 encoder 提取 observation 的关键信息,然后作为 state 参与训练。我们定义 agent 从环境中获取的观测值为 oto_t,RL 训练中使用的状态值 sts_t,encoder 通过非线性方程 z=e(x)z=e(x) 进行表示,那么有 st=e(ot)s_t=e(o_t)

​ AE 用作 SRL 的流程如下:

  1. 使用随机策略探索环境,获得经验 {ot,at,ot+1,rt}\{o_t,a_t,o_{t+1},r_t\}
  2. 使用经验中的 oto_t 训练 auto-encoder
  3. 将 encoder 作为 RL 中与 observation 相接的第一层,且不对该层进行反向传播

ML-DDPG

Munk, J., Kober, J., & Babuška, R. (2016, December). Learning state representation for deep actor-critic control. In 2016 IEEE 55th Conference on Decision and Control (CDC) (pp. 4667-4673). IEEE.

​ 这篇文章提出的也是一种基于 priors 来进行状态压缩的方法。Robotic priors 方法简单来说就是提出一些 priors 假设(e.g. simplicity prior, the temporal coherence prior, the proportionality prior, the causality prior and the repeatability prior),针对这些被精心设计的 priors 设计 loss 函数,能从 observation 中提炼出具有不同表征能力的 state。ML-DDPG 提出了 predictable transition priorpredictable reward prior,也就是假设了状态转移以及价值函数的可预测性,所提取出的 state 就涵盖了能表征出 P(st+1st,at)P(s_{t+1}|s_t,a_t)P(rtst,at)P(r_t|s_t,a_t) 的信息。

ML-DDPG 实际上与 Auto-Encoder 完全不同。AE 训练的是对 observation 的压缩,输出的 state 能以尽量小的代价还原出 observation,其训练的本质是找出不同 observations 之间的差异在哪。而 ML-DDPG 将预测 st+1s_{t+1}rtr_t 作为目标,encoder 输出的 sts_t 能够剔除 oto_t 中所有与 predictable prior 无关的信息,sts_t 是无法还原 oto_t 的。

ML_DDPG

​ 上图给出了 BECEC 使用 ML-DDPG 训练 Observation-to-State 编码器所需要设计的网络结构。值得注意的是,整个网络中除了编码层能够保留到 RL,剩余的部分都是无效训练,而且这种网络结构实际上就是一个变种的 Critic。对于 BECEC 而言,已经面临了 Critic 的欠拟合问题,我尝试加大网络的深度与宽度都收效甚微,ML-DDPG 框架和 Critic 没有本质区别,很难说增加工作量训练这个 Mapping 层有什么意义。

​ 另一方面,我们真正面临的问题并不是 ML-DDPG 提出的**“无效状态太多”**,反而我们的 observation 基本都是有价值的,只是它们的维度太高,需要进一步提炼。同时,BECEC 之所以选用 D4PG 就是因为经验太难收集,ML-DDPG 既然要使用 Reward 进行监督学习,就必定需要采集大量完整的经验元组 {ot,at,ot+1,rt}\{o_t,a_t,o_{t+1},r_t\},无疑是非常难以训练的。

适用 BECEC 的方案

​ 在 BECEC 中,observation 的内容实际上是有规律的,其中大部分维度来自 BS 的状态,而每个 BS 的 Observation 都是固定的格式。因此,我们不妨直接对每个 BS 的 Observation 单独进行 encode,使用的都是同一个 encoder,并在一次训练中进行 M 次反向传播。

​ 基于此,如果一定要用 ML-DDPG 方案,我给出了一版更好训练的网络结构:

Modified_ML_DDPG

​ 针对经验收集难度的问题,我认为不妨去掉预训练的步骤,而将 ML-DDPG 的训练和 RL 并列:

  1. 使用 RL 进行探索
  2. 训练 ML-DDPG,更新 Encoder
  3. 使用 Target Encoder 训练 RL
  4. 软更新 Target Encoder

​ 并列训练很明显存在不稳定的问题,这是由于 encoder 模块变动较大导致提炼出的 state 信息也不稳定。证明:同样是 [1,2,3][1,2,3] 的两个 state 值,因为 encoder 变化了,它们可能就是由完全不同的 observation 编码出来的。因此,我在上述流程中尝试采用类似 DDPG 的 Target 网络进行解决。但是在 ML-DDPG 完成收敛之前,RL 基本不可能有太好的训练效果,正如 Actor 不可能在 Critic 收敛之前向着正确的方向训练一样。

​ 而考虑到 BECEC 本身就不需要解决 ML-DDPG 面对的**“无效状态太多”**问题,或许直接用 Auto-Encoder 的效果还会更好,并且 Auto-Encoder 的训练也十分简单:

  1. 预训练 AE
    1. 使用随机策略探索环境,记录每个 BS 的 oto_t
    2. 训练 AE
  2. 训练 RL + 强化 AE
    1. 使用 RL 探索环境
    2. 训练 RL(Encoder 不参与反向传播)
    3. 每隔一段时间,用经验池中的 oo 训练 AE

​ 因为对随机策略获取的 oo 不具备代表性的担心(覆盖范围大而不精),我希望在训练 RL 的同时强化 AE。

​ 上述过程对 BECEC 仿真的改动应该是较小的,但在 D4PG 算法框架中加入 encoder 需要解决一些资源共享方面的问题。并且,上述网络结构以及训练过程都需要自己构建,ML-DDPG 也没有提供开源代码,方案敲定后还是需要一些时间进行调试。

一只学术咸鱼 _(:ᗤ」ㄥ)_