参考文献:
[
1
]
A
g
e
n
t
?
57
:
O
u
t
p
e
r
f
o
r
m
i
n
g
?
t
h
e
?
A
t
a
r
i
?
H
u
m
a
n
?
B
e
n
c
h
m
a
r
k
[1]\mathcal{Agent\,57:Outperforming \,the \,Atari \,Human \,Benchmark }
[1]Agent57:OutperformingtheAtariHumanBenchmark
[
2
]
R
e
n
f
o
r
c
e
m
e
n
t
?
L
e
a
r
n
i
n
g
(
S
u
t
t
o
n
)
[2]\mathcal{Renforcement \, Learning(Sutton)}
[2]RenforcementLearning(Sutton) 文献[1]的附录对我而言是比其本体更有用的资料,它从数学推导的角度一步步地告诉我们强化学习的进化历程。尽管我大部分的知识都是源自于文献[2],但是读一本百千页的书是相当辛苦的事情,尤其是太过详细的那种,而且由于长时间未涉及到RL相关的内容,我感觉一些知识已经遗忘,所以本文以[1]为重点,试图去顺一顺RL的历程。
Markov Decision Process
马尔科夫决策链过程可以被描绘为
(
X
,
A
,
P
,
r
,
y
)
(\mathcal{X},\mathcal{A},\mathcal{P},\mathcal{r},\mathcal{y})
(X,A,P,r,y), 就像物理坐标系中的
(
t
,
x
,
y
,
z
)
(t,x,y,z)
(t,x,y,z)一样,马尔科夫链描绘的是一个事件。接下来介绍一下每一个变量的含义:
X
\mathcal{X}
X: 状态空间
A
\mathcal{A}
A: 动作空间
π
\pi
π : 状态空间转移时需要依据,这种依据我们称之为策略。
P
\mathcal{P}
P:
P
(
x
′
∣
a
,
x
)
P(x'|a,x)
P(x′∣a,x)这个意味着在状态
x
x
x下采取行动
a
a
a,从而转移到状态
x
′
x'
x′的概率.
r
\mathcal{r}
r :
r
∈
R
A
×
X
\mathcal{r} \in \mathbb{R}^{\mathcal{A}\times\mathcal{X}}
r∈RA×X
y
\mathcal{y}
y:
y
∈
[
0
,
1
]
\mathcal{y}\in [0,1]
y∈[0,1] ok,有了着一些前提条件以后我们就可以引入价值函数的概念了。
State-Action Value Function
τ
(
x
,
a
,
π
)
\tau(x,a,\pi)
τ(x,a,π)是迹
τ
=
(
X
t
,
A
t
,
R
t
,
X
t
+
1
)
t
∈
N
\tau=(X_t,A_t,R_t,X_{t+1})_{t\in \mathbb{N}}
τ=(Xt?,At?,Rt?,Xt+1?)t∈N?中根据
π
\pi
π的一个分布,然后其中各个属性之间有如下关系:
?
t
>
=
1
,
R
t
=
r
(
X
t
,
A
t
)
,
&
?
t
>
=
0
,
X
t
+
1
?
P
(
?
∣
X
t
,
A
t
)
\forall t>=1,R_t=r(X_t,A_t),\&\forall t>=0,X_{t+1}~P(·|X_t,A_t)
?t>=1,Rt?=r(Xt?,At?),&?t>=0,Xt+1??P(?∣Xt?,At?),状态-行动价值函数(state-action value function)可以和描述为
Q
r
π
=
E
τ
~
τ
(
x
,
a
,
π
)
[
∑
t
>
=
0
R
t
]
Q_r^{\pi}=E_{_\tau \sim \tau(x,a,\pi)}[\sum_{t>=0}R_t]
Qrπ?=Eτ?~τ(x,a,π)?[∑t>=0?Rt?] 最优状态的价值函数也就是
Q
r
?
(
x
,
a
)
=
max
?
π
Q
r
π
(
x
,
a
)
Q^*_{r}(x,a)=\max_{\pi}Q^{\pi}_r(x,a)
Qr??(x,a)=maxπ?Qrπ?(x,a)意思就是找到一个策略函数使得整体获得的价值最大化。
Bellman equation
我们观察某一个transition的状态,根据价值函数,我们知道每一个transition势必将涉及到一个reward,长时积累reward将会令价值函数趋于无穷大,无穷大不是一件好事情,所以我们需要对以前所积累的reward做一个衰减,也就是在每一个加奖赏值之前都需要对以往积累的价值乘个衰减因子
y
\mathcal{y}
y。这样,一步Bellman方程可以描绘为:
T
r
π
Q
(
x
,
a
)
=
r
(
x
,
a
)
+
y
∑
b
∈
A
∑
x
′
∈
x
π
(
b
∣
x
)
P
(
x
′
∣
x
,
a
)
Q
(
x
′
,
b
)
T^{\pi}_rQ(x,a)=r(x,a)+\mathcal{y}\sum_{b\in \mathbb{A}}\sum_{x'\in\mathcal{x}}\pi(b|x)P(x'|x,a)Q(x',b)
Trπ?Q(x,a)=r(x,a)+y∑b∈A?∑x′∈x?π(b∣x)P(x′∣x,a)Q(x′,b) 看到上面的公式你可能会有很多疑惑,为何左边是两个代数相乘,右边则找不到公共因子。我认为左边应该类似于复合函数的写法,但是我尚未统计其他资料中数学公式的写法,这也有可能是作者自己创造的书写形式。 这个公式是怎么来的呢?引入了衰减因子以后,传统的价值函数可以被写为类似于:
Q
(
x
,
a
)
=
E
[
r
0
+
y
r
1
+
y
2
r
2
+
?
?
?
+
y
n
?
1
r
n
?
1
]
Q(x,a)=E[r_0+yr_1+y^2r_2+···+y^{n-1}r_{n-1}]
Q(x,a)=E[r0?+yr1?+y2r2?+???+yn?1rn?1?]
→
r
0
+
E
[
y
r
1
+
y
2
r
2
+
?
?
?
+
y
n
?
1
r
n
?
1
]
\rightarrow r_0+E[yr_1+y^2r_2+···+y^{n-1}r_{n-1}]
→r0?+E[yr1?+y2r2?+???+yn?1rn?1?]
→
r
0
+
∑
y
i
r
i
=
r
0
+
y
∑
y
i
?
1
r
i
=
r
0
+
y
Q
(
x
t
?
1
,
a
t
?
1
)
\rightarrow r_0+\sum y^ir_{i}=r_0+y\sum y^{i-1}r_i=r_0+yQ(x_{t-1},a_{t-1})
→r0?+∑yiri?=r0?+y∑yi?1ri?=r0?+yQ(xt?1?,at?1?) 这个时候还没结束,我们知道每一状态转移都会涉及到策略
π
\pi
π以及概率
P
P
P所以对于每一个价值函数
Q
Q
Q,我们还需乘以策略
π
\pi
π以及概率
P
P
P,最终我们得到了Bellman方程的形式
T
r
π
Q
(
x
,
a
)
=
r
(
x
,
a
)
+
y
∑
b
∈
A
∑
x
′
∈
x
π
(
b
∣
x
)
P
(
x
′
∣
x
,
a
)
Q
(
x
′
,
b
)
T^{\pi}_rQ(x,a)=r(x,a)+\mathcal{y}\sum_{b\in \mathbb{A}}\sum_{x'\in\mathcal{x}}\pi(b|x)P(x'|x,a)Q(x',b)
Trπ?Q(x,a)=r(x,a)+y∑b∈A?∑x′∈x?π(b∣x)P(x′∣x,a)Q(x′,b).
贪心算法(Greedy Policy)
顾名思义每一次决策都奔着奖赏最大化去。
Transformed Bellman Operators
?
z
∈
R
,
h
(
z
)
=
s
i
g
n
(
z
)
(
∣
z
∣
?
1
)
+
ε
z
\forall z \in \mathbb{R},h(z)=sign(z)(\sqrt{|z|-1})+\varepsilon z
?z∈R,h(z)=sign(z)(∣z∣?1
?)+εz
?
z
∈
R
,
h
(
z
)
?
1
=
s
i
g
n
(
z
)
(
1
+
4
ε
(
∣
z
∣
+
1
+
ε
)
?
1
2
ε
)
z
\forall z \in \mathbb{R},h(z)^{-1}=sign(z)(\frac{\sqrt{1+4\varepsilon(|z|+1+\varepsilon)}-1}{2\varepsilon})z
?z∈R,h(z)?1=sign(z)(2ε1+4ε(∣z∣+1+ε)
??1?)z
T
r
π
Q
(
x
,
a
)
=
h
(
r
(
x
,
a
)
+
y
∑
b
∈
A
∑
x
′
∈
x
π
(
b
∣
x
)
P
(
x
′
∣
x
,
a
)
h
?
1
(
Q
(
x
′
,
b
)
)
)
T^{\pi}_rQ(x,a)=h(r(x,a)+\mathcal{y}\sum_{b\in \mathbb{A}}\sum_{x'\in\mathcal{x}}\pi(b|x)P(x'|x,a)h^{-1}(Q(x',b)))
Trπ?Q(x,a)=h(r(x,a)+y∑b∈A?∑x′∈x?π(b∣x)P(x′∣x,a)h?1(Q(x′,b))).
论文中描述说这种变换形式更容易让神经网络去拟合。
如图所示,我绘制了定义域位于-1000到1000之间的函数,可以分析得到,这个函数具备挤压函数的性质,同时并没有sigmoid那种梯度消失的缺点,因为当输入很大时所得到数值仍具备一定增长趋势。 为了方便后续的介绍,我们引入一些符号进行定义: 对于贪心策略:
π
k
=
G
(
Q
k
)
\pi_{k}=\mathcal{G}(Q_k)
πk?=G(Qk?) 前一步价值函数和后一步价值函数之间的联系可以被描绘为:
Q
k
+
1
=
T
r
,
h
π
k
Q
k
Q_{k+1}=T_{r,h}^{\pi_k}Q_k
Qk+1?=Tr,hπk??Qk?其中各个下角标我们在上文已经详细描绘过了。
Intrinsic-Extrinsic Decomposition
上文中所作的讨论是在仅仅一种reward的情况下,但是现实中内在和外在的因素都是至关重要的,比如有一个汉堡看起来很好吃,我们的感官是内在因素而自己手里的钱以及排队人数等等是外在因素。所以我们需要将内在外在因素都考虑在内。 通过将内在的奖励和外在的奖励进行线性组合我们得到了价值函数的新的表现形式
Q
=
Q
i
+
β
Q
e
Q=Q^i+\beta Q^e
Q=Qi+βQe其中
β
\beta
β是
Q
e
Q^e
Qe相对于
Q
i
Q^i
Qi的权重。 这样的话,该系统的策略就变成了
π
k
=
G
(
Q
k
e
+
Q
k
i
)
\pi_k=\mathcal{G}(Q^e_k+Q^i_k)
πk?=G(Qke?+Qki?) 然后基于这个新的
π
k
\pi_k
πk?我们分别对
Q
k
e
Q^e_k
Qke?以及
Q
k
i
Q^i_k
Qki?进行更新。 下面对奖赏函数的可拆分组合性进行简单地证明:
Q
k
+
1
=
Q
k
+
1
i
+
β
Q
k
+
1
e
Q_{k+1}=Q_{k+1}^i+\beta Q_{k+1}^e
Qk+1?=Qk+1i?+βQk+1e?
→
T
r
i
π
k
Q
k
i
+
r
k
i
+
(
T
r
e
π
k
Q
k
e
+
r
k
e
)
β
\rightarrow T_{r^i}^{\pi_k}Q_{k}^i+r^i_k+(T_{r^e}^{\pi_k}Q_{k}^e+r^e_k)\beta
→Triπk??Qki?+rki?+(Treπk??Qke?+rke?)β
→
(
r
k
i
+
β
r
k
e
)
+
(
T
r
i
π
k
Q
k
i
+
T
r
e
π
k
Q
k
e
)
\rightarrow (r_k^i+\beta r_k^e)+(T_{r^i}^{\pi_k}Q_{k}^i+T_{r^e}^{\pi_k}Q_{k}^e)
→(rki?+βrke?)+(Triπk??Qki?+Treπk??Qke?)
→
r
k
+
T
r
π
k
Q
k
\rightarrow r_k+T_r^{\pi_k}Q_k
→rk?+Trπk??Qk? 在上文提及到的压缩函数应用到上式中仍然成立。
Retrace and transformed Retrace
时序差分(TD)
上文中我们提到了
Q
(
x
,
a
)
=
r
(
x
,
a
)
+
y
∑
∑
Q
(
x
′
,
b
)
P
(
x
′
∣
x
,
a
)
π
(
x
′
∣
b
)
Q(x,a)=r(x,a)+y\sum \sum Q(x',b)P(x'|x,a)\pi(x'|b)
Q(x,a)=r(x,a)+y∑∑Q(x′,b)P(x′∣x,a)π(x′∣b)这是一种动态规划方法。 在蒙特卡洛方法中一般是从一个eposide中进行采样,然后根据
Q
(
x
)
=
Q
(
x
)
+
a
(
G
t
?
Q
(
x
)
)
Q(x)=Q(x)+a(Gt-Q(x))
Q(x)=Q(x)+a(Gt?Q(x)) 将动态规划和蒙特卡洛相结合后我们就得到了TD方法:
Q
(
x
)
=
Q
(
x
)
+
a
(
r
+
y
Q
(
x
′
)
?
Q
(
x
)
)
Q(x)=Q(x)+a(r+yQ(x')-Q(x))
Q(x)=Q(x)+a(r+yQ(x′)?Q(x))
(
r
+
y
Q
(
x
′
)
?
Q
(
x
)
(r+yQ(x')-Q(x)
(r+yQ(x′)?Q(x)这一部分我们使用
δ
\delta
δ进行代替。 在论文中还引入了其他trick从而将全时间范围内的TD考虑进了系统中。
trick
\textbf{trick}
trick 根据策略函数预测势必同真实分布之间存在一点点区别。为了让模型的预测环境由真实分布转向为策略分布,对每一个TD都需要乘以一个系数这个系数为
π
u
\frac{\pi}{u}
uπ?其中
u
u
u对应着统计数据,也就是将所有的情况收集起来,用对应transition的数目除以所有transition的数目从而得到一个平均分布。真实情况下还需要做一个变换
c
s
=
λ
min
?
(
1
,
π
(
A
s
∣
X
s
)
A
s
∣
X
s
)
c_s=\lambda \min(1,\frac{\pi(A_s|X_s)}{A_s|X_s})
cs?=λmin(1,As?∣Xs?π(As?∣Xs?)?),意思是这个比值不可超过1,同时经过一个线性变换系数
λ
\lambda
λ(位于[0,1])进行适当地放缩。 PS:
u
u
u和
π
\pi
π区别在,当你设计随机性时,
u
u
u中的数据并不完全是
π
\pi
π得到的,同时每一个决策同下一个决策存在着联系,所以只要是有随机性,
u
u
u和
π
\pi
π将会是不相同的分布。 基于此作者在论文中作者给出了一个更全面的TD:
T
r
u
,
π
=
E
r
~
τ
(
x
,
a
,
u
)
[
Q
(
x
,
a
)
+
∑
y
t
(
∏
c
s
)
δ
t
]
T_r^{u,\pi}=E_{r\sim\tau(x,a,u)}[Q(x,a)+\sum y^t(\prod \limits c_s)\delta_t]
Tru,π?=Er~τ(x,a,u)?[Q(x,a)+∑yt(∏cs?)δt?] 如果用一句话来描述的话,这个公式是一个放缩因子为
y
y
y的从时刻为0开始评价的并且带有策略纠正的时序差分。
Transformed
上文中我们提及了一种挤压函数,并将其应用在了
B
e
l
l
m
a
n
Bellman
Bellman方程中。同理,挤压函数也可以应用在TD中作者给的公式为:
T
r
,
h
u
,
π
Q
(
x
,
a
)
=
h
(
E
τ
~
τ
(
x
,
a
,
h
)
[
h
?
1
(
Q
(
x
,
a
)
+
∑
t
>
=
0
y
t
(
∏
s
=
1
t
c
s
)
δ
t
h
)
]
)
T^{u,\pi}_{r,h}Q(x,a)=h(E_{_\tau \sim \tau(x,a,h)}[h^{-1}(Q(x,a)+\sum \limits_{t>=0}y^t(\prod \limits_{s=1}^t c_s)\delta_t^h)])
Tr,hu,π?Q(x,a)=h(Eτ?~τ(x,a,h)?[h?1(Q(x,a)+t>=0∑?yt(s=1∏t?cs?)δth?)])
δ
t
h
=
r
t
+
y
∑
a
∈
A
π
(
a
∣
X
t
+
1
)
h
?
1
(
Q
(
X
t
+
1
,
a
)
)
?
h
?
1
(
Q
(
X
t
,
A
t
)
)
\delta^h_t=r_t+y\sum \limits{a\in A}\pi(a|X_{t+1})h^{-1}(Q(X_{t+1},a))-h^{-1}(Q(X_t,A_t))
δth?=rt?+y∑a∈Aπ(a∣Xt+1?)h?1(Q(Xt+1?,a))?h?1(Q(Xt?,At?)) 看起来很复杂,其实就两个要点将公式中各个价值函数替换为压缩函数逆变化,而整体则直接使用压缩函数进行变换。
Extrinsic-Intrinsic Decomposition for Retrace and Transformed Retrace
对于TD形式下的价值函数,我们仍然可以根据内在外在的奖励将各类价值拆分计算后组合。 同时利用挤压函数进行变换,也是没有问题的。 将内在外在奖励分开计算并使用挤压函数做非线性处理以后可得:
π
=
G
(
h
(
h
?
1
(
Q
k
e
)
+
b
h
?
1
(
Q
k
i
)
)
)
\pi=\mathbb{G}(h(h^{-1}(Q_k^e)+bh^{-1}(Q_k^i)))
π=G(h(h?1(Qke?)+bh?1(Qki?)))
Q
k
+
1
i
=
T
r
i
,
h
u
k
,
π
k
Q
k
i
Q_{k+1}^i=T_{r^i,h}^{u_k,\pi_k}Q_k^i
Qk+1i?=Tri,huk?,πk??Qki?
Q
k
+
1
e
=
T
r
i
,
h
u
k
,
π
k
Q
k
e
Q_{k+1}^e=T^{u_k,\pi_k}_{r^i,h}Q_k^e
Qk+1e?=Tri,huk?,πk??Qke?
Retrace and transformed Retrace Losses for Neural Net
上文我们介绍了一种基于TD去求价值函数的方法。 下文中的公式基于TD:
Q
k
+
1
=
arg?min
?
Q
∈
R
x
×
A
∣
∣
T
r
u
,
π
Q
k
?
Q
∣
∣
Q_{k+1}=\argmin \limits_{Q\in \mathbb{R}^{\mathcal{x}\times\mathcal{A}}}||T_r^{u,\pi}Q_k-Q||
Qk+1?=Q∈Rx×Aargmin?∣∣Tru,π?Qk??Q∣∣,norm中右边一项是TD所得,左边一项是真实的价值函数。
A
×
X
A \times X
A×X可能是一个很大的空间,因此使用神经网络去拟合这个空间可以有效地节约资源这一种方法也被称作(online model)。 在实际操作中使用两个network,一个network(叫做target network)用来描述右边的价值函数(一些人也将这个网络称作评价网络),另外一个用来计算TD(value network)。 network的设计思想是统一的即
Q
(
x
,
a
∣
θ
)
Q(x,a|\theta)
Q(x,a∣θ)通过参数中储存的知识计算当前状态x下选择a的价值。但这两种network的参数是不同的。 我们可以看到
Q
k
+
1
=
arg?min
?
Q
∈
R
x
×
A
∣
∣
T
r
u
,
π
Q
k
?
Q
∣
∣
Q_{k+1}=\argmin \limits_{Q\in \mathbb{R}^{\mathcal{x}\times\mathcal{A}}}||T_r^{u,\pi}Q_k-Q||
Qk+1?=Q∈Rx×Aargmin?∣∣Tru,π?Qk??Q∣∣类似于一种MSE的形式,因此这个目标函数可以通过梯度下降去优化。 在这个目标函数中,也可以应用挤压函数,其代数形式为:
Q
k
+
1
=
arg?min
?
Q
∈
R
x
×
A
∣
∣
T
r
,
h
u
,
π
Q
k
?
Q
∣
∣
Q_{k+1}=\argmin \limits_{Q\in \mathbb{R}^{\mathcal{x}\times\mathcal{A}}}||T_{r,h}^{u,\pi}Q_k-Q||
Qk+1?=Q∈Rx×Aargmin?∣∣Tr,hu,π?Qk??Q∣∣。目标网络未使用挤压函数的原因是
f
f
?
1
(
z
)
=
z
ff^{-1}(z)=z
ff?1(z)=z.
|