赞
踩
如果你对这篇文章感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。
强化学习 (Reinforcement Learning):
示范学习 (Learning by demonstration):
三大关键点:Observation (State) -> Action (Change the environment) -> Reward
其中 State 指观察到的环境的状态。
episode:一次从训练开始至结束的过程。
强化学习的核心目标就是让机器学习如何最大化每个 episode 中的累积期望奖励。
Policy-based 方法,即学出一个 Actor:
其中若 Actor 是深度神经网络,则这个过程称为深度强化学习 (Deep Reinforcement Learning)。
使用同一个 Actor (网络所有参数相同) 玩大量的游戏,以其每次 episode 的 total reward 的期望值来衡量这个 Actor 的好坏。
使用梯度下降的方式求解使
R
ˉ
θ
\bar{R}_{\theta}
Rˉθ 最大的
θ
\theta
θ:
∇
R
ˉ
θ
≈
1
N
∑
n
=
1
N
∑
t
=
1
T
n
R
(
τ
n
)
∇
log
p
(
a
t
n
∣
s
t
n
,
θ
)
\nabla \bar{R}_{\theta} \approx\frac{1}{N} \sum_{n=1}^{N} \sum_{t=1}^{T_{n}} R\left(\tau^{n}\right) \nabla \log p\left(a_{t}^{n} \mid s_{t}^{n}, \theta\right)
∇Rˉθ≈N1n=1∑Nt=1∑TnR(τn)∇logp(atn∣stn,θ)
由于梯度代表函数值增加最快的方向,因此当 R ( τ n ) R\left(\tau^{n}\right) R(τn) 为正时,模型倾向于调整 θ \theta θ 使 p ( a t n ∣ s t n ) p\left(a_{t}^{n} \mid s_{t}^{n}\right) p(atn∣stn) 增加,为负时则使 p ( a t n ∣ s t n ) p\left(a_{t}^{n} \mid s_{t}^{n}\right) p(atn∣stn) 减小。
当
R
(
τ
n
)
R\left(\tau^{n}\right)
R(τn) 始终为正时,由于所有 action 的概率相加为 1,因此无法使每个 action 的概率增加,并且若出现未采样到的 action,效果也不尽如人意。
基于此,有时会在模型中引入 bias,使
R
(
τ
n
)
R\left(\tau^{n}\right)
R(τn) 有正有负:
∇
R
ˉ
θ
≈
1
N
∑
n
=
1
N
∑
t
=
1
T
n
(
R
(
τ
n
)
−
b
)
∇
log
p
(
a
t
n
∣
s
t
n
,
θ
)
\nabla \bar{R}_{\theta} \approx\frac{1}{N} \sum_{n=1}^{N} \sum_{t=1}^{T_{n}} (R\left(\tau^{n}\right)-b) \nabla \log p\left(a_{t}^{n} \mid s_{t}^{n}, \theta\right)
∇Rˉθ≈N1n=1∑Nt=1∑Tn(R(τn)−b)∇logp(atn∣stn,θ)
引入 Critic,其并不能决定行为,但可以评价 actor 的好坏。
通常来说,有三种类型的 Critic:
衡量 V π ( s ) V^{\pi}(s) Vπ(s) 有两种方法,分别是:
其中 MC 方法,即令 critic 观察
π
\pi
π 完成游戏;而 TD 则通过
V
π
(
s
t
)
−
V
π
(
s
t
+
1
)
=
r
t
V^{\pi}\left(s_{t}\right)-V^{\pi}\left(s_{t+1}\right) = r_{t}
Vπ(st)−Vπ(st+1)=rt 来递推
V
π
(
s
)
V^{\pi}(s)
Vπ(s)。
根据
Q
π
(
s
,
a
)
Q^{\pi}(s,a)
Qπ(s,a),引出 Q-Learning 的概念:
Asynchronous Advantage Actor-Critic (A3C)
具体来说,Actor + Critic 即是将原先 Policy-based 中的
R
(
τ
n
)
R\left(\tau^{n}\right)
R(τn) 由 critic 来衡量,如下:
在现实生活中,存在大量应用,我们无法得知其 reward function,因此我们需要引入逆强化学习。
具体来说,IRL 的核心原则是 “老师总是最棒的” (The teacher is always the best),具体流程如下:
Policy π \pi π 是一个参数为 θ \theta θ 的网络:
Trajectory: τ = { s 1 , a 1 , s 2 , a 2 , ⋯ , s T , a T } \tau=\left\{s_{1}, a_{1}, s_{2}, a_{2}, \cdots, s_{T}, a_{T}\right\} τ={s1,a1,s2,a2,⋯,sT,aT}
Probability: p θ ( τ ) = p ( s 1 ) ∏ t = 1 T p θ ( a t ∣ s t ) p ( s t + 1 ∣ s t , a t ) 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) pθ(τ)=p(s1)∏t=1Tpθ(at∣st)p(st+1∣st,at)
Reward:
Policy Gradient:
∇
R
ˉ
θ
=
∑
τ
R
(
τ
)
∇
p
θ
(
τ
)
=
∑
τ
R
(
τ
)
p
θ
(
τ
)
∇
p
θ
(
τ
)
p
θ
(
τ
)
=
∑
τ
R
(
τ
)
p
θ
(
τ
)
∇
log
p
θ
(
τ
)
=
E
τ
∼
p
θ
(
τ
)
[
R
(
τ
)
∇
log
p
θ
(
τ
)
]
≈
1
N
∑
n
=
1
N
R
(
τ
n
)
∇
log
p
θ
(
τ
n
)
=
1
N
∑
n
=
1
N
∑
t
=
1
T
n
R
(
τ
n
)
∇
log
p
θ
(
a
t
n
∣
s
t
n
)
∇ˉRθ=∑τR(τ)∇pθ(τ)=∑τR(τ)pθ(τ)∇pθ(τ)pθ(τ)=∑τR(τ)pθ(τ)∇logpθ(τ)=Eτ∼pθ(τ)[R(τ)∇logpθ(τ)]≈1NN∑n=1R(τn)∇logpθ(τn)=1NN∑n=1Tn∑t=1R(τn)∇logpθ(ant∣snt)
Tip1: 避免
R
(
τ
n
)
R\left(\tau^{n}\right)
R(τn) 始终为正,令
b
b
b 为
R
(
τ
n
)
R\left(\tau^{n}\right)
R(τn) 平均值,对原模型进行修正
Tip2: 某个 action 只能影响后续 reward 的大小,因此权重应从
R
(
τ
n
)
R\left(\tau^{n}\right)
R(τn) 修改为
∑
t
′
=
t
T
n
r
t
′
n
\sum_{t^{\prime}=t}^{T_{n}} r_{t^{\prime}}^{n}
∑t′=tTnrt′n,即 action 后续 reward 之和。
从这个思路继续想,越靠后的 reward 受当前 action 的影响越小,因此乘上衰减系数的幂次,即将 ∑ t ′ = t T n r t ′ n \sum_{t^{\prime}=t}^{T_{n}} r_{t^{\prime}}^{n} ∑t′=tTnrt′n 修改为 ∑ t ′ = t T n γ t ′ − t r t ′ n ( γ < 1 ) \sum_{t^{\prime}=t}^{T_{n}} \gamma^{t^{\prime}-t} r_{t^{\prime}}^{n}\ (\gamma<1) ∑t′=tTnγt′−trt′n (γ<1)。
之后用
A
θ
(
s
t
,
a
t
)
A^{\theta}(s_t,a_t)
Aθ(st,at) 表示
∑
t
′
=
t
T
n
γ
t
′
−
t
r
t
′
n
−
b
\sum_{t^{\prime}=t}^{T_{n}} \gamma^{t^{\prime}-t} r_{t^{\prime}}^{n}-b
∑t′=tTnγt′−trt′n−b,代表面对状态
s
t
s_t
st 时采取
a
t
a_t
at 的相对权重。
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 中,
R
ˉ
θ
\bar{R}_{\theta}
Rˉθ 梯度如下:
∇
R
ˉ
θ
=
E
τ
∼
p
θ
(
τ
)
[
R
(
τ
)
∇
log
p
θ
(
τ
)
]
\nabla \bar{R}_{\theta}=E_{\tau \sim p_{\theta}(\tau)}\left[R(\tau) \nabla \log p_{\theta}(\tau)\right]
∇Rˉθ=Eτ∼pθ(τ)[R(τ)∇logpθ(τ)]
在训练过程中,每当 θ \theta θ 更新,我们就需要用 π θ \pi_{\theta} πθ 重新收集数据。而对于 Off-policy,我们希望从 π θ ′ \pi_{\theta'} πθ′ 中收集数据,保持 θ ′ \theta' θ′ 不变的同时训练 θ \theta θ,即重复使用 sample data。
我们希望用 π θ ′ \pi_{\theta'} πθ′ 生成数据,来训练 θ \theta θ,即使用 q ( x ) q(x) q(x) 分布下的数据,得到 p ( x ) p(x) p(x) 分布下的结果。
公式推导如下:
E
x
∼
p
[
f
(
x
)
]
=
∫
f
(
x
)
p
(
x
)
d
x
=
∫
f
(
x
)
p
(
x
)
q
(
x
)
q
(
x
)
d
x
=
E
x
∼
q
[
f
(
x
)
∣
p
(
x
)
q
(
x
)
]
Ex∼p[f(x)]=∫f(x)p(x)dx=∫f(x)p(x)q(x)q(x)dx=Ex∼q[f(x)∣p(x)q(x)]
虽然期望相同,但方差却不同:
E
x
∼
p
[
f
(
x
)
]
=
E
x
∼
q
[
f
(
x
)
p
(
x
)
q
(
x
)
]
Var
x
∼
p
[
f
(
x
)
]
=
E
x
∼
p
[
f
(
x
)
2
]
−
(
E
x
∼
p
[
f
(
x
)
]
)
2
Var
x
∼
q
[
f
(
x
)
p
(
x
)
q
(
x
)
]
=
E
x
∼
q
[
(
f
(
x
)
p
(
x
)
q
(
x
)
)
2
]
−
(
E
x
∼
q
[
f
(
x
)
p
(
x
)
q
(
x
)
]
)
2
=
E
x
∼
p
[
f
(
x
)
2
p
(
x
)
q
(
x
)
]
−
(
E
x
∼
p
[
f
(
x
)
]
)
2
Ex∼p[f(x)]=Ex∼q[f(x)p(x)q(x)]Varx∼p[f(x)]=Ex∼p[f(x)2]−(Ex∼p[f(x)])2Varx∼q[f(x)p(x)q(x)]=Ex∼q[(f(x)p(x)q(x))2]−(Ex∼q[f(x)p(x)q(x)])2=Ex∼p[f(x)2p(x)q(x)]−(Ex∼p[f(x)])2
这也就导致如果数据量不是特别大,则这种估计方式可能会出现很大误差:
根据 Importance Sampling,得到 Off-policy 下的梯度:
∇
R
ˉ
θ
=
E
(
s
t
,
a
t
)
∼
π
θ
[
A
θ
(
s
t
,
a
t
)
∇
log
p
θ
(
a
t
n
∣
s
t
n
)
]
=
E
(
s
t
,
a
t
)
∼
π
θ
′
[
P
θ
(
s
t
,
a
t
)
P
θ
′
(
s
t
,
a
t
)
A
θ
′
(
s
t
,
a
t
)
∇
log
p
θ
(
a
t
n
∣
s
t
n
)
]
=
E
(
s
t
,
a
t
)
∼
π
θ
′
[
p
θ
(
a
t
∣
s
t
)
p
θ
′
(
a
t
∣
s
t
)
p
θ
(
s
t
)
p
θ
′
(
s
t
)
A
θ
′
(
s
t
,
a
t
)
∇
log
p
θ
(
a
t
n
∣
s
t
n
)
]
=
E
(
s
t
,
a
t
)
∼
π
θ
′
[
p
θ
(
a
t
∣
s
t
)
p
θ
′
(
a
t
∣
s
t
)
A
θ
′
(
s
t
,
a
t
)
∇
log
p
θ
(
a
t
n
∣
s
t
n
)
]
∇ˉRθ=E(st,at)∼πθ[Aθ(st,at)∇logpθ(ant∣snt)]=E(st,at)∼πθ′[Pθ(st,at)Pθ′(st,at)Aθ′(st,at)∇logpθ(ant∣snt)]=E(st,at)∼πθ′[pθ(at∣st)pθ′(at∣st)pθ(st)pθ′(st)Aθ′(st,at)∇logpθ(ant∣snt)]=E(st,at)∼πθ′[pθ(at∣st)pθ′(at∣st)Aθ′(st,at)∇logpθ(ant∣snt)]
即可以看作是
J
θ
′
(
θ
)
J^{\theta^{\prime}}(\theta)
Jθ′(θ) 的梯度:
J
θ
′
(
θ
)
=
E
(
s
t
,
a
t
)
∼
π
θ
′
[
p
θ
(
a
t
∣
s
t
)
p
θ
′
(
a
t
∣
s
t
)
A
θ
′
(
s
t
,
a
t
)
]
J^{\theta^{\prime}}(\theta)=E_{\left(s_{t}, a_{t}\right) \sim \pi_{\theta^{\prime}}}\left[\frac{p_{\theta}\left(a_{t} \mid s_{t}\right)}{p_{\theta^{\prime}}\left(a_{t} \mid s_{t}\right)} A^{\theta^{\prime}}\left(s_{t}, a_{t}\right)\right]
Jθ′(θ)=E(st,at)∼πθ′[pθ′(at∣st)pθ(at∣st)Aθ′(st,at)]
在 Off-policy 上增加不同的限制,即可得到 PPO、TRPO:
其中 KL 不是参数的距离,而是 action 的距离。另外,PPO 与 TRPO 的实验效果差不多,但 TRPO 的求解难度大很多。
PPO 具体算法如下:
先前提过,Importance Sampling 中两个分布不宜相差过大,因此通过将
p
θ
(
a
t
∣
s
t
)
p
θ
k
(
a
t
∣
s
t
)
\frac{p_{\theta}\left(a_{t} \mid s_{t}\right)}{p_{\theta^{k}}\left(a_{t} \mid s_{t}\right)}
pθk(at∣st)pθ(at∣st) 限制在
[
1
−
ϵ
,
1
+
ϵ
]
[1-\epsilon,1+\epsilon]
[1−ϵ,1+ϵ] 中,得到 PPO2 算法:
图中横轴表示 p θ ( a t ∣ s t ) p θ k ( a t ∣ s t ) \frac{p_{\theta}\left(a_{t} \mid s_{t}\right)}{p_{\theta^{k}}\left(a_{t} \mid s_{t}\right)} pθk(at∣st)pθ(at∣st) 的数值,纵轴表示 p θ ( a t ∣ s t ) p θ k ( a t ∣ s t ) \frac{p_{\theta}\left(a_{t} \mid s_{t}\right)}{p_{\theta^{k}}\left(a_{t} \mid s_{t}\right)} pθk(at∣st)pθ(at∣st) clip 后的值。
Q-Learning:给定
Q
π
(
s
,
a
)
Q^{\pi}(s,a)
Qπ(s,a),寻找到新 actor
π
′
\pi'
π′ 比
π
\pi
π 更好,即
V
π
′
(
s
)
≥
V
π
(
s
)
V^{\pi^{\prime}}(s) \geq V^{\pi}(s)
Vπ′(s)≥Vπ(s)。基于该想法,我们得到
π
′
\pi'
π′ 如下:
π
′
(
s
)
=
arg
max
a
Q
π
(
s
,
a
)
\pi^{\prime}(s)=\arg \max _{a} Q^{\pi}(s, a)
π′(s)=argamaxQπ(s,a)
因此 π ′ \pi' π′ 只与 Q 有关,没有多余参数,另外也不太适合连续的 action。
接下来,我们证明
π
′
\pi'
π′ 比
π
\pi
π 更好:
注意 Q π ( s , π ′ ( s ) ) Q^{\pi}(s,\pi'(s)) Qπ(s,π′(s)) 表示遇到状态 s,按照 π ′ ( s ) \pi'(s) π′(s) 走一步,之后仍然按照 π ( s ) \pi(s) π(s) 行动。
样本中没有穷尽所有的 action,所以寻找 a = arg max a Q ( s , a ) a=\arg \max _{a} Q(s, a) a=argmaxaQ(s,a) 时只会遍历已知的 action,但可能存在其他 action 效果更好,因此在训练中需要考虑 Exploration。
将
π
\pi
π 与环境交互得到的大量
s
t
,
a
t
,
r
t
,
s
t
+
1
s_t,a_t,r_t,s_{t+1}
st,at,rt,st+1 存入 Buffer,每次选出一个 batch 用于模型训练:
Q value 通常会被高估:
原因在于下述式子中的
max
\max
max 使得 Q value 总是比较大:
Q
(
s
t
,
a
t
)
⟷
r
t
+
max
a
Q
(
s
t
+
1
,
a
)
Q\left(s_{t}, a_{t}\right) \longleftrightarrow r_{t}+\max _{a} Q\left(s_{t+1}, a\right)
Q(st,at)⟷rt+amaxQ(st+1,a)
因此我们可以使用 Target Network,通过
Q
Q
Q 选择 action,再用
Q
′
Q'
Q′ 估计 Q value:
Dueling DQN 在改变了最后输出层的结构,使 Q value 等于两个分支的和:
其中 V ( s ) V(s) V(s) 为标量,预测 state value;而 A ( s , a ) A(s,a) A(s,a) 是矢量,预测与状态相关的 action advantage value,并且该矢量通过归一化总和为 0。可以这样理解,state function 用于预测 state 的好坏,而 advantage function 则预测在该 state 下每个 action 的重要程度。
在 Replay Buffer 中,使拥有更大 TD error 的数据被抽中的概率更大:
为了使预测更加鲁棒,泛化性能更强,将 MC 与 TD 两种方法进行合并,用多步间的差值来进行模型优化:
为了使模型具有一定的探索能力,分别在 Action 与 Parameters 两个维度引入 Noise:
两种方法进行对比:
Q
π
(
s
,
a
)
Q^{\pi}(s, a)
Qπ(s,a) 是一个随机变量,在先前的方法中,我们主要关注该随机变量的期望值,而在该 tip 中,我们更关注其的分布情况:
通常来说,在 Q π ( s , a ) Q^{\pi}(s, a) Qπ(s,a) 期望值差不多时,我们更倾向于选择方差更小的,降低模型风险。
将多种模型方法合并在一起,查看每种方法的具体效果、所有方法叠加的效果以及去掉某种方法时的效果:
在 Q-Learning 方法中,我们使用下述公式得到 action:
a
=
arg
max
a
Q
(
s
,
a
)
a=\arg \max _{a} Q(s, a)
a=argamaxQ(s,a)
如果 a 为离散变量,则我们可以通过枚举的方式进行求解;而如果 a 为连续变量,我们则需要使用如下一些方法进行求解:
随机取样
梯度下降
设计一个网络作为优化方法
放弃 Q-Learning
在 Policy Gradient 中,我们得到如下梯度:
其中由于 Sample 的次数比较有限,因此
G
t
n
G_t^n
Gtn 的数值不太稳定,即该随机变量的方差较大,因此对其进行如下改进:
即中间的关键项从 ∑ t ′ = t T n γ t ′ − t r t ′ n − b \sum_{t^{\prime}=t}^{T_{n}} \gamma^{t^{\prime}-t} r_{t^{\prime}}^{n}-b ∑t′=tTnγt′−trt′n−b 变为了 Q π θ ( s t n , a t n ) − V π θ ( s t n ) Q^{\pi_{\theta}}\left(s_{t}^{n}, a_{t}^{n}\right)-V^{\pi_{\theta}}\left(s_{t}^{n}\right) Qπθ(stn,atn)−Vπθ(stn),这意味着我们需要同时训练 Q 和 V 两个 network,使问题变得更加难以处理。
为了简化这个问题,我们进行如下近似:
Q
π
(
s
t
n
,
a
t
n
)
=
E
[
r
t
n
+
V
π
(
s
t
+
1
n
)
]
≈
r
t
n
+
V
π
(
s
t
+
1
n
)
Q^{\pi}\left(s_{t}^{n}, a_{t}^{n}\right)=E\left[r_{t}^{n}+V^{\pi}\left(s_{t+1}^{n}\right)\right]\approx r_{t}^{n}+V^{\pi}\left(s_{t+1}^{n}\right)
Qπ(stn,atn)=E[rtn+Vπ(st+1n)]≈rtn+Vπ(st+1n)
该近似方式在实验中取得了不错的效果,因此关键项变为:
r
t
n
+
V
π
(
s
t
+
1
n
)
−
V
π
(
s
t
n
)
r_{t}^{n}+V^{\pi}\left(s_{t+1}^{n}\right)-V^{\pi}\left(s_{t}^{n}\right)
rtn+Vπ(st+1n)−Vπ(stn)
我们只需训练 V 一个 network 即可。
由于我们需要训练 actor
π
(
s
)
\pi(s)
π(s) 和 critic
V
π
(
s
)
V^{\pi}(s)
Vπ(s),而这两个网络都是以 state 为输入,即网络对 state 的前期处理相同,因此可以共用一部分参数:
另外,出于 exploration 的目的,我们希望各 action 的概率相对均匀,即 entropy 的值更大,因此我们可以将各 action 的 entropy 作为 regularization 加入 expected reward 中,即令网络生成更大的 entropy。
相比于 Advantage Actor-Critic,A3C (Asynchronous Advantage Actor-Critic) 在其上增加了分布式的方法:
即每一个 worker 分布式训练,得到对应梯度,直接更新最终的网络;更新完后再复制参数,继续训练。这里可能会出现,「复制参数的网络」和「之后更新的网络」不是同一个网络,但对总的结果影响不大。
该方法依然是 actor + critic 的方法,但可以用于求解连续 action 的问题。
原先的 actor-critic 中的 critic 主要是判断 actor 的好坏,而在 pathwise derivative policy gradient 中,critic 会给出下一步的 action。
其具体流程如下所示:
现实生活中,大量任务的 reward 都是 sparse 的,即很多行为当下无法得到直接的 reward,要等到很多步后,才能得到 reward。
对于此类问题,我们通常需要引导着 machine 去学习。具体来说,有如下三种方法:
通过对每一步的 reward 重新赋值,让 reward 不再稀疏,或者说通过对 reward 的重新取值,引导 machine 向着正确的方向训练。
为了实现这一目的,我们引入 Curiosity 机制,即增加新的 reward:
对于
(
a
t
,
s
t
,
s
t
+
1
)
(a_t,s_t,s_{t+1})
(at,st,st+1),我们根据
s
t
+
1
s_{t+1}
st+1 的难以预测程度来评估其 ICM 的 reward。然而存在某些 states 虽然难以预测,但并不重要,因此我们需要对 states 进行特征提取,选出关键特征:
规划 machine 的学习任务,让任务从简单到难,使 machine 循序渐进地学习。
除了主动的规划学习任务,我们也可以采用反向的方法 (Reverse Curriculum Generation):
层次化地训练 agent,例如 校长 -> 教授 -> 研究生,从上至下依次安排学习任务,需要满足以下条件:
在现实生活中,可能存在以下的情况:
为了解决上述情况,引入了 Imitation Learning,即 learning by demonstration,apprenticeship learning。
行为复制,即监督学习。
该方法存在以下几个问题:
基于上述问题,machine 对于某一个 state 学出的 action 可能会与 expert 有一定区别,误差不断累积,会导致后续产生的 state 与 action 差别非常大。
由于直接复制 expert 行为的方法存在问题,我们采用别的方式来生成 reward function:
上述方式通过不断改变 reward function,使得 expert 所产生的交互流程拥有更大的 reward。反复迭代后,得到最终的 reward function,再重新训练 actor。
最后是 IRL 与 GAN 的对比:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。