Introduction
Two Learning Modes
强化学习 (Reinforcement Learning):
-
机器与环境交互
-
机器从环境中获得奖励,从而知道其表现的好坏
示范学习 (Learning by demonstration):
-
也被称为模仿学习 (imitation learning) 和学徒式学习 (apprenticeship learning)
-
一个专家展示如何解决任务,机器从专家的示范中学习
Reinforcement Learning
Basic ideas
三大关键点:Observation (State) -> Action (Change the environment) -> Reward
其中 State 指观察到的环境的状态。
episode:一次从训练开始至结束的过程。
强化学习的核心目标就是让机器学习如何最大化每个 episode 中的累积期望奖励。
Difficulties
-
奖励的延迟 (Reward delay)
-
有些行为虽然当时没有拿到奖励,但其对后续拿到的奖励仍然有贡献,如何处理此类行为,是一大难点
-
Agent 的行为影响后续收到的数据
-
需要让 Agent 不断去探索 (Exploration)
Policy-based
Policy-based 方法,即学出一个 Actor:
Neural network as Actor
其中若 Actor 是深度神经网络,则这个过程称为深度强化学习 (Deep Reinforcement Learning)。
- 传统做法是存一个 table 来对应 observation-action,神经网络与其对比,泛化能力更强 (generalization)
Goodness of Actor
使用同一个 Actor (网络所有参数相同) 玩大量的游戏,以其每次 episode 的 total reward 的期望值来衡量这个 Actor 的好坏。
Pick the best Actor
使用梯度下降的方式求解使 $\bar{R}_{\theta}$ 最大的 $\theta$:
由于梯度代表函数值增加最快的方向,因此当 $R\left(\tau^{n}\right)$ 为正时,模型倾向于调整 $\theta$ 使 $p\left(a_{t}^{n} \mid s_{t}^{n}\right)$ 增加,为负时则使 $p\left(a_{t}^{n} \mid s_{t}^{n}\right)$ 减小。
当 $R\left(\tau^{n}\right)$ 始终为正时,由于所有 action 的概率相加为 1,因此无法使每个 action 的概率增加,并且若出现未采样到的 action,效果也不尽如人意。
基于此,有时会在模型中引入 bias,使 $R\left(\tau^{n}\right)$ 有正有负:
Value-based
引入 Critic,其并不能决定行为,但可以评价 actor 的好坏。
通常来说,有三种类型的 Critic:
-
critic 是一个神经网络,用于评估 actor $\pi$
- 状态价值函数 (State value function) $V^{\pi}(s)$
- $V^{\pi}(s)$ 代表使用 actor $\pi$,当出现状态 s 后的累积期望 reward
- State-action value function $Q^{\pi}(s,a)$
- 对于 actor $\pi$,当状态和行动分别为 s 和 a 时的累积期望 reward
State value function
衡量 $V^{\pi}(s)$ 有两种方法,分别是:
-
Monte-Carlo based approach
-
Temporal-difference approach
其中 MC 方法,即令 critic 观察 $\pi$ 完成游戏;而 TD 则通过 $V^{\pi}\left(s_{t}\right)-V^{\pi}\left(s_{t+1}\right) = r_{t}$ 来递推 $V^{\pi}(s)$。
State-action value function
根据 $Q^{\pi}(s,a)$,引出 Q-Learning 的概念:
A3C
Asynchronous Advantage Actor-Critic (A3C)
具体来说,Actor + Critic 即是将原先 Policy-based 中的 $R\left(\tau^{n}\right)$ 由 critic 来衡量,如下:
Inverse Reinforcement Learning
在现实生活中,存在大量应用,我们无法得知其 reward function,因此我们需要引入逆强化学习。
具体来说,IRL 的核心原则是 “老师总是最棒的” (The teacher is always the best),具体流程如下:
-
初始化 actor
- 在每一轮迭代中
- actor 与环境交互,得到具体流程 (trajectories)
- 定义 reward function,使得 teacher 的 trajectories 始终好于 actor
- 根据新的 reward function,actor 学习最大化 reward
- 输出最终的 reward function,并根据该 function 训练 actor
Proximal Policy Optimization (PPO)
Policy Gradient
Policy of Actor
Policy $\pi$ 是一个参数为 $\theta$ 的网络:
-
输入:机器观察到的环境,用向量或矩阵表示
-
输出:每个 action 对应输出层中的一个神经元
Actor, Env, Reward
Trajectory: $\tau=\left\{s_{1}, a_{1}, s_{2}, a_{2}, \cdots, s_{T}, a_{T}\right\}$
Probability: $p_{\theta}(\tau)=p\left(s_{1}\right) \prod_{t=1}^{T} p_{\theta}\left(a_{t} \mid s_{t}\right) p\left(s_{t+1} \mid s_{t}, a_{t}\right)$
Reward:
-
$R(\tau)=\sum_{t=1}^{T} r_{t}$
-
$\bar{R}_{\theta}=\sum_{\tau} R(\tau) p_{\theta}(\tau)=E_{\tau \sim p_{\theta}(\tau)}[R(\tau)]$
Policy Gradient:
Implementation
Tip1: 避免 $R\left(\tau^{n}\right)$ 始终为正,令 $b$ 为 $R\left(\tau^{n}\right)$ 平均值,对原模型进行修正
Tip2: 某个 action 只能影响后续 reward 的大小,因此权重应从 $R\left(\tau^{n}\right)$ 修改为 $\sum_{t^{\prime}=t}^{T_{n}} r_{t^{\prime}}^{n}$,即 action 后续 reward 之和。
从这个思路继续想,越靠后的 reward 受当前 action 的影响越小,因此乘上衰减系数的幂次,即将 $\sum_{t^{\prime}=t}^{T_{n}} r_{t^{\prime}}^{n}$ 修改为 $\sum_{t^{\prime}=t}^{T_{n}} \gamma^{t^{\prime}-t} r_{t^{\prime}}^{n}\ (\gamma<1)$。
之后用 $A^{\theta}(s_t,a_t)$ 表示 $\sum_{t^{\prime}=t}^{T_{n}} \gamma^{t^{\prime}-t} r_{t^{\prime}}^{n}-b$,代表面对状态 $s_t$ 时采取 $a_t$ 的相对权重。
From on-policy to off-policy
On-policy v.s. Off-policy
On-policy: The agent learned and the agent interacting with the environment is the same.
Off-policy: The agent learned and the agent interacting with the environment is different.
在之前的 Policy-based approach 中,$\bar{R}_{\theta}$ 梯度如下:
在训练过程中,每当 $\theta$ 更新,我们就需要用 $\pi_{\theta}$ 重新收集数据。而对于 Off-policy,我们希望从 $\pi_{\theta’}$ 中收集数据,保持 $\theta’$ 不变的同时训练 $\theta$,即重复使用 sample data。
Importance Sampling
我们希望用 $\pi_{\theta’}$ 生成数据,来训练 $\theta$,即使用 $q(x)$ 分布下的数据,得到 $p(x)$ 分布下的结果。
公式推导如下:
虽然期望相同,但方差却不同:
这也就导致如果数据量不是特别大,则这种估计方式可能会出现很大误差:
Off-policy
根据 Importance Sampling,得到 Off-policy 下的梯度:
即可以看作是 $J^{\theta^{\prime}}(\theta)$ 的梯度:
PPO
PPO v.s. TRPO
在 Off-policy 上增加不同的限制,即可得到 PPO、TRPO:
其中 KL 不是参数的距离,而是 action 的距离。另外,PPO 与 TRPO 的实验效果差不多,但 TRPO 的求解难度大很多。
PPO 具体算法如下:
PPO2
先前提过,Importance Sampling 中两个分布不宜相差过大,因此通过将 $\frac{p_{\theta}\left(a_{t} \mid s_{t}\right)}{p_{\theta^{k}}\left(a_{t} \mid s_{t}\right)}$ 限制在 $[1-\epsilon,1+\epsilon]$ 中,得到 PPO2 算法:
图中横轴表示 $\frac{p_{\theta}\left(a_{t} \mid s_{t}\right)}{p_{\theta^{k}}\left(a_{t} \mid s_{t}\right)}$ 的数值,纵轴表示 $\frac{p_{\theta}\left(a_{t} \mid s_{t}\right)}{p_{\theta^{k}}\left(a_{t} \mid s_{t}\right)}$ clip 后的值。
Q-Learning
Q-Learning:给定 $Q^{\pi}(s,a)$,寻找到新 actor $\pi’$ 比 $\pi$ 更好,即 $V^{\pi^{\prime}}(s) \geq V^{\pi}(s)$。基于该想法,我们得到 $\pi’$ 如下:
因此 $\pi’$ 只与 Q 有关,没有多余参数,另外也不太适合连续的 action。
接下来,我们证明 $\pi’$ 比 $\pi$ 更好:
注意 $Q^{\pi}(s,\pi’(s))$ 表示遇到状态 s,按照 $\pi’(s)$ 走一步,之后仍然按照 $\pi(s)$ 行动。
Introduction
Target Network
-
一开始左右两个网络 $Q^{\pi}$ 相同
-
固定右边的 $Q^{\pi}$,输入 $s_{t+1},\pi(s_{t+1})$,得到 $r_{t}+\mathrm{Q}^{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right)$
-
训练 N 遍左边的 $Q^{\pi}$,使得 $Q^{\pi}(s_t,a_t)$ 与 $r_{t}+\mathrm{Q}^{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right)$ 尽可能相近
-
将右边的 $Q^{\pi}$ 替换成左边的,回到第一步
Exploration
样本中没有穷尽所有的 action,所以寻找 $a=\arg \max _{a} Q(s, a)$ 时只会遍历已知的 action,但可能存在其他 action 效果更好,因此在训练中需要考虑 Exploration。
Replay Buffer
将 $\pi$ 与环境交互得到的大量 $s_t,a_t,r_t,s_{t+1}$ 存入 Buffer,每次选出一个 batch 用于模型训练:
Typical Q-Learning Algorithm
-
Initialize Q-function $Q$, target Q-function $\hat{Q}=Q$
-
In each episode
- For each time step t
- Given state $s_t$, take action $a_t$ based on Q (epsilon greedy)
- Obtain reward $r_t$, and reach new state $s_{t+1}$
- Store $(s_t,a_t,r_t,s_{t+1})$ into buffer
- Sample $(s_i,a_i,r_i,s_{i+1})$ from buffer (usually a batch)
-
Target $y=r_i+\max _{a} \hat{Q}\left(s_{i+1}, a\right)$
- Update the parameters of $Q$ to make $Q(s_i,a_i)$ close to $y$ (regression)
- Every C steps reset $\hat{Q}=Q$
- For each time step t
Tips of Q-Learning
Double DQN
Q value 通常会被高估:
原因在于下述式子中的 $\max$ 使得 Q value 总是比较大:
因此我们可以使用 Target Network,通过 $Q$ 选择 action,再用 $Q’$ 估计 Q value:
Dueling DQN
Dueling DQN 在改变了最后输出层的结构,使 Q value 等于两个分支的和:
其中 $V(s)$ 为标量,预测 state value;而 $A(s,a)$ 是矢量,预测与状态相关的 action advantage value,并且该矢量通过归一化总和为 0。可以这样理解,state function 用于预测 state 的好坏,而 advantage function 则预测在该 state 下每个 action 的重要程度。
Prioritized Reply
在 Replay Buffer 中,使拥有更大 TD error 的数据被抽中的概率更大:
Multi-step
为了使预测更加鲁棒,泛化性能更强,将 MC 与 TD 两种方法进行合并,用多步间的差值来进行模型优化:
Noisy Net
为了使模型具有一定的探索能力,分别在 Action 与 Parameters 两个维度引入 Noise:
两种方法进行对比:
- Noise on Action
- 给定相同的 state,agent 可能会执行不同的 action
- 整个模型倾向于「随机乱试」,现实中的 policy 不会这样工作
- Noise on Parameters
- 给定相同的 state,agent 会执行相同的 action
- State-dependent Exploration
- 整个模型在「有系统地试」,Explore in a consistent way
- 给定相同的 state,agent 会执行相同的 action
Distributional Q-function
$Q^{\pi}(s, a)$ 是一个随机变量,在先前的方法中,我们主要关注该随机变量的期望值,而在该 tip 中,我们更关注其的分布情况:
通常来说,在 $Q^{\pi}(s, a)$ 期望值差不多时,我们更倾向于选择方差更小的,降低模型风险。
Rainbow
将多种模型方法合并在一起,查看每种方法的具体效果、所有方法叠加的效果以及去掉某种方法时的效果:
Continuous Actions
在 Q-Learning 方法中,我们使用下述公式得到 action:
如果 a 为离散变量,则我们可以通过枚举的方式进行求解;而如果 a 为连续变量,我们则需要使用如下一些方法进行求解:
- 随机取样
-
取样 $\left\{a_{1}, a_{2}, \cdots, a_{N}\right\}$,选其中最大的 Q value
-
- 梯度下降
- 将该问题当作优化问题,使用常见的梯度下降作为优化方法
- 设计一个网络作为优化方法
- 放弃 Q-Learning
- 可以使用 Policy-based 或者 Actor + Critic 的方法
Actor + Critic
Advantage Actor-Critic
在 Policy Gradient 中,我们得到如下梯度:
其中由于 Sample 的次数比较有限,因此 $G_t^n$ 的数值不太稳定,即该随机变量的方差较大,因此对其进行如下改进:
即中间的关键项从 $\sum_{t^{\prime}=t}^{T_{n}} \gamma^{t^{\prime}-t} r_{t^{\prime}}^{n}-b$ 变为了 $Q^{\pi_{\theta}}\left(s_{t}^{n}, a_{t}^{n}\right)-V^{\pi_{\theta}}\left(s_{t}^{n}\right)$,这意味着我们需要同时训练 Q 和 V 两个 network,使问题变得更加难以处理。
为了简化这个问题,我们进行如下近似:
该近似方式在实验中取得了不错的效果,因此关键项变为:
我们只需训练 V 一个 network 即可。
Tips
由于我们需要训练 actor $\pi(s)$ 和 critic $V^{\pi}(s)$,而这两个网络都是以 state 为输入,即网络对 state 的前期处理相同,因此可以共用一部分参数:
另外,出于 exploration 的目的,我们希望各 action 的概率相对均匀,即 entropy 的值更大,因此我们可以将各 action 的 entropy 作为 regularization 加入 expected reward 中,即令网络生成更大的 entropy。
Asynchronous
相比于 Advantage Actor-Critic,A3C (Asynchronous Advantage Actor-Critic) 在其上增加了分布式的方法:
即每一个 worker 分布式训练,得到对应梯度,直接更新最终的网络;更新完后再复制参数,继续训练。这里可能会出现,「复制参数的网络」和「之后更新的网络」不是同一个网络,但对总的结果影响不大。
Pathwise Derivative Policy Gradient
该方法依然是 actor + critic 的方法,但可以用于求解连续 action 的问题。
原先的 actor-critic 中的 critic 主要是判断 actor 的好坏,而在 pathwise derivative policy gradient 中,critic 会给出下一步的 action。
其具体流程如下所示:
Sparse Reward
现实生活中,大量任务的 reward 都是 sparse 的,即很多行为当下无法得到直接的 reward,要等到很多步后,才能得到 reward。
对于此类问题,我们通常需要引导着 machine 去学习。具体来说,有如下三种方法:
-
Reward Shaping
-
Curriculum Learning
-
Hierarchical RL
Reward Shaping
通过对每一步的 reward 重新赋值,让 reward 不再稀疏,或者说通过对 reward 的重新取值,引导 machine 向着正确的方向训练。
为了实现这一目的,我们引入 Curiosity 机制,即增加新的 reward:
对于 $(a_t,s_t,s_{t+1})$,我们根据 $s_{t+1}$ 的难以预测程度来评估其 ICM 的 reward。然而存在某些 states 虽然难以预测,但并不重要,因此我们需要对 states 进行特征提取,选出关键特征:
Curriculum Learning
规划 machine 的学习任务,让任务从简单到难,使 machine 循序渐进地学习。
除了主动的规划学习任务,我们也可以采用反向的方法 (Reverse Curriculum Generation):
-
随机生成多个任务
-
删除 reward 特别大和特别小的任务,即难度过大与过小的任务
-
对于其他任务,按难度排序,由简至易,依次学习
Hierarchical RL
层次化地训练 agent,例如 校长 -> 教授 -> 研究生,从上至下依次安排学习任务,需要满足以下条件:
-
如果低层次的 agent 没有完成目标,则高层次的 agent 会受到惩罚
-
如果某个 agent 完成了错误的目标,则认为最初的目标是错误的
Imitation Learning
在现实生活中,可能存在以下的情况:
-
machine 能与环境交互,但无法显式地得到 reward
-
某些任务难以定义 reward
-
Hand-crafted rewards 可能会出现难以控制的行为
为了解决上述情况,引入了 Imitation Learning,即 learning by demonstration,apprenticeship learning。
Behavior Cloning
行为复制,即监督学习。
该方法存在以下几个问题:
-
expert 的数据有限 (可用增强数据缓解)
-
agent 不仅会学习相关 action,也会学习无关 action
-
由于容量有限,agent 可能会挑选错误的行为来学习
基于上述问题,machine 对于某一个 state 学出的 action 可能会与 expert 有一定区别,误差不断累积,会导致后续产生的 state 与 action 差别非常大。
Inverse Reinforcement Learning
由于直接复制 expert 行为的方法存在问题,我们采用别的方式来生成 reward function:
上述方式通过不断改变 reward function,使得 expert 所产生的交互流程拥有更大的 reward。反复迭代后,得到最终的 reward function,再重新训练 actor。
最后是 IRL 与 GAN 的对比: