0%

A3C和其它

Actor-Critic

Policy Gradient复习

\[ \nabla \bar R_\theta \approx \frac{1}{N}\sum_{n=1}^N\sum_{t=1}^{T_n}(\sum_{t'=t}^{T_n}\gamma^{t'-t}r_{t'}^n-b)\nabla \log p_\theta(a_t^n|s_t^n) \]

\(G_t^n=\sum_{t'=t}^{T_n}\gamma^{t'-t}r_{t'}^n\)

\(G_t^n\)是很不稳定的,如果有充足的样本,就可以估计\(G\)的值。

那我们可以直接估计\(G\)的期望值么?

Value Based Function

  • 状态价值函数\(V^\pi(s)\)
  • 状态-行动价值函数\(Q^\pi(s,a)\)

可能通过TD或MC进行估计

Actor-Critic

\(Q\)函数的定义就是表示\(G\)的期望值: \[ E[G_t^n]=Q^{\pi_\theta}(s_t^n,a_t^n) \]\(b\)则可以用\(V\)来表示: \[ b=V^{\pi_\theta}(s_t^n) \] 因此: \[ \sum_{t'=t}^{T_n}\gamma^{t'-t}r_{t'}^n-b=Q^{\pi_\theta}(s_t^n,a_t^n) - V^{\pi_\theta}(s_t^n) \] 但存在一个问题就是需要估计两个网络,即\(Q\)\(V\)

Advantage Actor-Critic

解决上述需要估计两个网络的问题,只需要估计一个,因为可以使用\(V\)来表示\(Q\):(MDP和贝尔曼方程) \[ Q^{\pi}(s_t^n,a_t^n)=E[r_t^n+V^{\pi}(s_{t+1}^n)] \\ Q^{\pi}(s_t^n,a_t^n)=r_t^n+V^{\pi}(s_{t+1}^n) \\ Q^{\pi}(s_t^n,a_t^n) - V^{\pi}(s_t^n) = r_t^n+V^{\pi}(s_{t+1}^n)-V^{\pi}(s_t^n) \]

小建议

  • actor \(\pi(s)\)和critic \(V^\pi(s)\)的(前面的层的)参数可以共享

  • \(\pi(s)\)的输出交叉熵作为正则化
    • 交叉熵较大探索的会更好

Asynchronous Advantage Actor-Critic(A3C)

强化学习的问题是很慢,因此可以同步进行,前面有学过,此处略。

Pathwise Derivative Policy Gradient

  • 初始化Q函数\(Q\),目标函数\(\hat Q=Q\)
  • 在每个episode中
    • 对于每个时间步t
    • 给定状态\(s_t\),基于\(\pi\)(epsilon greedy)采取行动\(a_t\)
    • 获得奖励\(r_t\),进入新状态\(s_{t+1}\)
    • 存储\((s_t,a_t,r_t,s_{t+1})\)到缓冲中
    • 从缓冲中采样\((s_i,a_i,r_i,s_{i+1})\)(通常是一个batch)
    • 目标\(y=r_i+a\hat Q(s_{i+1},\hat \pi(s_{i+1}))\)
    • 更新\(Q\)的参数来使得\(Q(s_i,a_i)\)更接近\(y\)
    • \(C\)步后重置\(\hat Q=Q\)\(\hat \pi=\pi\)

Sparse Reward

实际上,当我们用强化学习训练agent时大多数时agent是无法得到reward的,而在无法得到reward时,它的训练是非常困难的。

Reward Shaping

环境有一个固定的reward,它是真的reward,但为了引导模型学出需要的结果,可以故意设计一些reward来引导,举例例子:

例如,对于小孩来说,采取“玩”这一行动,可能之后\(t+1\)的奖励是1,而\(t+100\)的奖励则是-100,而如果采取"学"这一行动,可能之后 \(t+1\)的奖励是-1,而\(t+100\)的奖励则是100,这样,它可能不会看很久之后的reward,而是看最近的,所以采取“玩”这一行动,因此我们可以对于它采取“学”这一行动设计reward为1,进行引导

Curiosity

添加一个新的奖励函数:ICM

如何实现:

其中Feature Ext是表示用来过滤无关紧要的特征的,它们的训练是通过训练另一个神经网络2,输出action要和真正的action越接近越好

Curriculum Learning

为模型的学习做规划,由易到难。

一种更加通用的方法是Reverse Curriculum Learning

  • 给定目标状态\(s_g\)
  • 采样一些"接近"\(s_g\)的状态\(s_1\)
  • 从这些\(s_1\)开始进行交互,得到奖励\(R(s_1)\)
  • 删除奖励极端(太大(已经学会了)或太小(当前太难了))的\(s_1\)
  • 根据保留的这些\(s_1\)采样更多的\(s_2\),重复上述

Hierarchical Reinforcement Learning

有多个agent,有的agent负责相对高层的,如“定一个目标”,有的agent负责相对低层的。

  • 如果低层agent无法实现目标,上层agent也会得到惩罚
  • 如果一个agent实现了一个错误目标,则假设原始目标是这个错误目标

Imitation Learning

如果连reward都没有,应该怎么做?

介绍

Imitation Learning也称为learning by demonstration或apprenticeship learning

两种方法:

  • 行为克隆(Behavior Cloning)
  • 逆强化学习(Inverse Reinforcement Learning)

Behavior Cloning

与监督学习差不多,搜集各种数据训练神经网络

问题:

  • 收集的数据可能有限,存在一些未知的情况

解决:

Dataset Aggregation

  • 通过behavior cloning获得一个actor \(\pi_1\)
  • 使用\(\pi_1\)与环境交互
  • 让专家标记\(\pi_1\)的observation
  • 使用新的数据训练\(\pi_2\)

存在的问题:

  • 模型会完全复制专家的行为,即使是错误行为,而模型的容量可能是有限的,可能正好学会的是错误行为,正确的行为反而没有学会。
  • 训练数据和实际情况不匹配

Inverse Reinforcement Learning(IRL)

IRL框架

以专家永远是最好的为前提:

与GAN类似:

Actor \(\to\) Generator

Reward function \(\to\) Discriminator

其它:Third Person Imitation Learning:第三人称学习