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:第三人称学习