1.强化学习基础
1.1基础模型
强化学习通常用于求解能够建模成马尔可夫决策过程的问题,如图1所示
显然决策问题的最终目的就是为了使回报函数最大化,即让式(1)最大化(为了让回报函数收敛采用折扣回报,其中
0
<
γ
<
1
0<\gamma<1
0<γ<1):
R
t
=
∑
k
=
0
∞
γ
k
r
t
+
k
+
1
R_{\mathrm{t}}=\sum_{k=0}^{\infty} \gamma^k r_{t+k+1}
Rt=k=0∑∞γkrt+k+1
1.2基于值迭代
1.2.1 Q-learning
对于进行决策的方法,很简单的想法就是给每个动作定义一个价值,把每个动作的价值估计出来后,选择最大价值的那个动作。
动作价值的估计方法:
首先根据动作价值的定义
Q
(
s
t
,
a
t
)
=
E
(
R
t
∣
s
t
,
a
t
)
Q\left(s_t, a_t\right)=E\left(R_t \mid s_t, a_t\right)
Q(st,at)=E(Rt∣st,at)
显然可以通过蒙特卡洛模拟直接拟合求解,但是计算代价太大了。
对(2)进行变形
Q
(
s
t
,
a
t
)
=
E
(
r
t
+
1
+
γ
∑
k
=
0
∞
γ
k
r
t
+
k
+
2
∣
s
t
,
a
t
)
=
E
(
r
t
+
1
+
γ
Q
(
s
t
+
1
,
a
t
+
1
)
∣
s
t
,
a
t
)
Q\left(s_t, a_t\right)=E\left(r_{t+1}+\gamma \sum_{k=0}^{\infty} \gamma^k r_{t+k+2} \mid s_t, a_t\right)=E\left(r_{t+1}+\gamma Q\left(s_{t+1}, a_{t+1}\right) \mid s_t, a_t\right)
Q(st,at)=E(rt+1+γk=0∑∞γkrt+k+2∣st,at)=E(rt+1+γQ(st+1,at+1)∣st,at)
从而可以通过后时刻的Q值来估计前时刻的Q值。
Q
target
(
s
t
,
a
t
)
=
r
t
+
1
+
γ
Q
(
s
t
+
1
,
a
t
+
1
)
Q^{\text {target }}\left(s_t, a_t\right)=r_{t+1}+\gamma Q\left(s_{t+1}, a_{t+1}\right)
Qtarget (st,at)=rt+1+γQ(st+1,at+1)
因为下时刻的值也是不准确的,所以一般采用梯度更新的方式进行迭代
Q
(
s
t
,
a
t
)
=
Q
(
s
t
,
a
t
)
+
α
(
Q
taget
(
s
t
,
a
t
)
−
Q
(
s
t
,
a
t
)
)
Q\left(s_t, a_t\right)=Q\left(s_t, a_t\right)+\alpha\left(Q^{\text {taget }}\left(s_t, a_t\right)-Q\left(s_t, a_t\right)\right)
Q(st,at)=Q(st,at)+α(Qtaget (st,at)−Q(st,at))
动作选择:
π
(
s
)
=
arg
max
a
Q
(
s
,
a
)
\pi(s)=\arg \max _a Q(s, a)
π(s)=argamaxQ(s,a)
根据动作价值估计和动作选择可以分为行为策略和目标策略。行为策略就是专门用于训练的策略,目标策略就是最后决策要用到的策略。
1.2.2 DQN
通常估计动作价值都是使用表格迭代的方式,但是针对许多场景,其状态空间巨大导致维度灾难。如图3所示。
2013年,Deepmind发表在NIPS上的一篇论文Playing Atari with Deep Reinforcement Learning1引入了深度学习来逼近Q函数, 构建了感知到决策的端到端架构。
Q ( s t , a t , θ ) ≈ Q ( s t , a t ) Q\left(s_t, a_t, \theta\right) \approx Q\left(s_t, a_t\right) Q(st,at,θ)≈Q(st,at)
随后的改进版本,加入了目标函数机制。Deepmind在2015年发表在nature2上。其采用卷积神经网络和全连接神经网络直接输出每个动作的价值函数,如图4。
其采用的结构作为后续版本改进的基础。
1.2.3 基于价值函数的后续改进版本
1.2.3.1 针对DQN过估计问题提出了DDQN
DDQN是由DeepMind在2015年12月发表在AAAI的文章提出,用于解决Q-学习存在的估计问题
过估计问题
场景假设:D到A,B,C是一个动态环境,3个动作会随机生成(-10,-5,1)的奖励值,假设当前时刻生成的奖励值导致第三个动作奖励值为1,下一时刻奖励值可能是-10.
针对这个问题,设某一时刻智能体从E出发,得到的价值函数计算得到
Q
target
(
E
,
a
1
)
=
γ
max
a
′
Q
(
D
,
a
′
)
=
1
⋅
γ
Q^{\text {target }}\left(E, a_1\right)=\gamma \max _{a^{\prime}} Q\left(D, a^{\prime}\right)=1 \cdot \gamma
Qtarget (E,a1)=γa′maxQ(D,a′)=1⋅γ
Q target ( E , a 2 ) = 0.9 Q^{\text {target }}\left(E, a_2\right)=0.9 Qtarget (E,a2)=0.9
Q target ( E , a 3 ) = γ 0.9 Q^{\text {target }}\left(E, a_3\right)=\gamma 0.9 Qtarget (E,a3)=γ0.9
如果设置 γ = 1 \gamma =1 γ=1,那么么智能体再E状态会选择向左走到D,显然这不是一个很好的选择,因为到D状态会有很大的概率得到负奖励。
所以Q-learning对Q值的判断进行了高估,在动作的奖励有噪声的情况下(即环境动态变化,奖励不确定),高估不理会奖励的变化,就会导致选择错误的方向。
DDQN
利用动态环境奖励会一直变化的特性,维护两个Q函数,先正常估计第一个Q函数,然后用第一个Q函数估计出的动作计算第二个Q函数,由于奖励会变化,第二个Q函数的值必然和第一个Q函数不相同。
采用两个Q函数估计,计算价值函数时,先用
Q
2
Q_2
Q2选择一个最大动作来估计
Q
1
Q_1
Q1,然后用估计的
Q
1
Q_1
Q1选择最大动作估计
Q
2
Q_2
Q2
Q
1
target
(
E
,
a
1
)
=
γ
Q
1
(
D
,
a
2
∗
)
,
a
2
∗
=
arg
max
a
Q
2
(
D
,
a
)
Q_1^{\text {target }}\left(E, a_1\right)=\gamma Q_1\left(D, a_2^*\right), a_2^*=\arg \max _a Q_2(D, a)
Q1target (E,a1)=γQ1(D,a2∗),a2∗=argamaxQ2(D,a)
Q 2 targ et ( E , a 1 ) = γ Q 2 ( D , a 1 ∗ ) , a 1 ∗ = arg max a Q 1 ( D , a ) Q_2^{\text {targ et }}\left(E, a_1\right)=\gamma Q_2\left(D, a_1^*\right), a_1^*=\arg \max _a Q_1(D, a) Q2targ et (E,a1)=γQ2(D,a1∗),a1∗=argamaxQ1(D,a)
Q t target ( s , a ) = r t + 1 + γ Q 2 ( s t + 1 , arg max a Q 1 ( s t + 1 , a ) ) Q_t^{\text {target }}(s, a)=r_{t+1}+\gamma Q_2\left(s_{t+1}, \arg \max _a Q_1\left(s_{t+1}, a\right)\right) Qttarget (s,a)=rt+1+γQ2(st+1,argamaxQ1(st+1,a))
算例:如果 Q 1 t a r g e t ( E , a 1 ) = 1 Q_1^{t a r g e t}\left(E, a_1\right)=1 Q1target(E,a1)=1且其选择的动作为 a 3 a_3 a3,那么 Q 2 t a r g e t ( E , a 1 ) Q_2^{t a r g e t}\left(E, a_1\right) Q2target(E,a1)计算时,奖励变化选择动作 a 3 a_3 a3的结果为奖励值为-10。那么最后的目标函数值为避 Q t a g e t ( E , a 3 ) = − 10 ⋅ γ Q^{t a g e t}\left(E, a_3\right)=-10 \cdot\gamma Qtaget(E,a3)=−10⋅γ免了一直是1的高估态。
1.2.3.2 网络改进方面提出了Dueling网络改进Q值估计
Dueling DQN网络是DeepMind在2016年发表在ICML上的文章。针对DQN在Q值估计上进行了网络方面的改进
优势函数
A
π
(
s
,
a
)
=
Q
π
(
s
,
a
)
−
V
π
(
s
)
A^\pi(s, a)=Q^\pi(s, a)-V^\pi(s)
Aπ(s,a)=Qπ(s,a)−Vπ(s)
优势函数刻画的是某个动作对于平均值函数的“优势”。所以最优动作的选择也可以“仅”通过优势函数得到如式(15)所示,所以估计优势函数也很重要。
a
π
=
a
r
g
max
a
A
(
s
,
a
)
a^{\pi}=arg\underset{a}{\max}A\left( s,a \right)
aπ=argamaxA(s,a)
如图6所示,采用Dueling DQN的结构单独输出了状态价值和每个动作的优势函数,将结果相加得到动作价值。公式为
Q
(
s
,
a
)
=
V
(
s
)
+
(
A
(
s
,
a
′
)
−
1
∣
A
∣
∑
a
′
A
(
s
,
a
′
)
)
Q\left( s,a \right) =V\left( s \right) +\left( A\left( s,a\prime \right) -\small{\frac{1}{\left| A \right|}\sum_{a\prime}{A\left( s,a\prime \right)}} \right)
Q(s,a)=V(s)+(A(s,a′)−∣A∣1a′∑A(s,a′))
论文在Atari 2600平台上的Enduro游戏上做了实验,红色覆盖为价值和优势显著性图。并且说明了价值学习学会了关注道路,优势学习只有在前方有车时才学会注意。
1.2.3.3 针对经验池采样效率问题提出优先经验回放(PER)
PER是DeepMind在2016年发表ICLR上的文章,用于解决经验池采样效率问题。
经验回放
经验回放是DQN算法的重要性质,DQN包含一个大规模的经验池来存储历史的样本。DQN采用的是均匀采样的方法
PER
深度Q学习的损失可以表示为TD error绝对值的平方:
L
θ
=
E
s
t
,
a
t
,
r
t
+
1
,
s
t
+
1
U
(
D
)
[
∣
δ
t
∣
2
]
L_{\theta}=E_{s_t,a_t,r_{t+1},s_{t+1}~U\left( D \right)}\left[ \left| \delta _t \right|^2 \right]
Lθ=Est,at,rt+1,st+1 U(D)[∣δt∣2]
U
(
D
)
U\left( D \right)
U(D)代表均匀采样的概率,
∣
D
∣
|D|
∣D∣表示经验池容量,TD error为:
∣
δ
t
∣
=
∣
Q
θ
(
s
t
,
a
t
)
−
Q
t
t
a
r
g
e
t
(
r
t
,
s
t
+
1
)
∣
\left| \delta _t \right|=\left| Q_{\theta}\left( s_t,a_t \right) -Q_{t}^{target}\left( r_t,s_{t+1} \right) \right|
∣δt∣=
Qθ(st,at)−Qttarget(rt,st+1)
PER的思路是,样本的TD error越大说明越重要,如果很小说明网络已经拟合得很好了。PER优先采样
δ
t
\delta _t
δt较大的样本进行学习。样本的采样率从均匀采样改为:
P
(
i
)
=
p
i
α
∑
p
i
α
,
p
i
=
∣
δ
t
∣
+
ϵ
P\left( i \right) =\small{\frac{p_{i}^{\alpha}}{\sum{p_{i}^{\alpha}}},}p_i=\left| \delta _t \right|+\epsilon
P(i)=∑piαpiα,pi=∣δt∣+ϵ
ϵ
\epsilon
ϵ表示一个很小的数,防止数值不稳定;
α
\alpha
α用于控制优先回放的程度 。
1.3基于策略梯度迭代
不同于值迭代,策略迭代通常是直接对策略求梯度,免去了Q学习的步骤。
1.3.1 策略迭代的起源:REINFORCE
REINFORCE算法历史古老,是1992年发表在Machine Learning上的一篇论文。
确立目标函数为最大化回报函数
J
(
π
θ
)
=
E
τ
∼
P
(
τ
∣
θ
)
[
R
(
τ
)
]
J\left(\pi_\theta\right)=E_{\tau \sim P(\tau \mid \theta)}[R(\tau)]
J(πθ)=Eτ∼P(τ∣θ)[R(τ)]
策略迭代方向为
θ
k
+
1
=
θ
k
+
α
∇
θ
J
(
π
θ
)
\theta_{k+1}=\theta_k+\alpha \nabla_\theta J\left(\pi_\theta\right)
θk+1=θk+α∇θJ(πθ)
通过一些数学上的方法可以得到
∇
θ
J
(
π
θ
)
=
E
τ
∼
P
(
τ
∣
θ
)
[
∑
t
=
0
T
∇
θ
log
π
θ
(
a
t
∣
s
t
)
R
(
τ
)
]
\nabla_\theta J\left(\pi_\theta\right)=E_{\tau \sim P(\tau \mid \theta)}\left[\sum_{t=0}^T \nabla_\theta \log \pi_\theta\left(a_t \mid s_t\right) R(\tau)\right]
∇θJ(πθ)=Eτ∼P(τ∣θ)[t=0∑T∇θlogπθ(at∣st)R(τ)]
对于梯度的求解通过采样N条轨迹来估计。
1.3.2异步策略梯度
1.3.2.1AC架构
AC架构sutton在2000年就有提到(具体提出的时间可能更久远),发表在Advances in Neural Information Processing Systems上。
1.3.2.2A2C
1.3.2.3A3C
1.3.3 PPO
1.3.4 DDPG
1.3.5 SAC
References:
[1]. Mnih, V., et al., Playing Atari with Deep Reinforcement Learning. ArXiv, 2013. abs/1312.5602.
[2]. Mnih, V., et al., Human-level control through deep reinforcement learning. Nature, 2015. 518(7540): p. 529-533.