根据 Simple statistical gradient-following algorithms for connectionist reinforcement learning
承接上一篇笔记(强化学习笔记(1))
5. 段落式(Episodic)的REINFORCE算法
该部分主要是将我们已有的算法进行扩展, 扩展到拥有temporal credit-assignment component的问题上.
特别地, 我们假设一个网络 N N N, 基于一段一段这样来训练, 每一段都包含 k k k个时间步, 每一个时间步, 许多单元会重新计算它们的输出, 整个环境可能会改变其非强化的输入, 在每一段的结束的时候, 一个强化值 r r r将会被传递到网络 N N N.
该算法的引出是基于使用**按时间展开(unfolding-in-time)**进行映射, 即当任意的一个网络 N N N在一个时间周期中进行操作, 另一个网络 N ∗ N^* N∗没有周期但是展现对应的行为. 展开的网络 N ∗ N^* N∗通过在每一个时间步对 N N N进行复制来获得.
形式化来说, 这相当于和每一个在 N N N中的时间依赖的变量 v v v联系起来, 对应的 N ∗ N^* N∗以时间为索引的集合 { v t } \{v^t\} {vt}, 其中 N ∗ N^* N∗中的变量并不依赖于时间, 在 N N N中的 w i j w_{ij} wij就对应 N ∗ N^* N∗中的 { w i j t } \{w_{ij}^t\} {wijt}.
给出参数
w
i
j
w_{ij}
wij的增量形式:
Δ
w
i
j
=
α
i
j
(
r
−
b
i
j
)
∑
t
=
1
k
e
i
j
(
t
)
\Delta w_{ij}=\alpha_{ij}(r-b_{ij})\sum_{t=1}^k{e_{ij}(t)}
Δwij=αij(r−bij)t=1∑keij(t)
上述形式和我们之前给的形式有点类似, 唯一出现改动的地方就是
e
i
j
e_{ij}
eij变为
∑
t
=
1
k
e
i
j
(
t
)
\sum_{t=1}^k{e_{ij}(t)}
∑t=1keij(t)
这个对应于非周期的网络
N
∗
N^*
N∗, 即
e
i
j
(
t
)
=
e
i
j
t
e_{ij}(t)=e_{ij}^t
eij(t)=eijt
我们举个例子吧, 一个内部全连接的递归神经网络(Recurrent Neural Network), 使用伯努利-逻辑斯蒂单元, 有
e
i
j
(
t
)
=
(
y
i
(
t
)
−
p
i
(
t
)
)
x
j
(
t
−
1
)
e_{ij}(t)=(y_i(t)-p_i(t))x_j(t-1)
eij(t)=(yi(t)−pi(t))xj(t−1)
需要注意的是baseline是独立于其他变量和输出的, 我们称具有以上格式的算法为段落式的REINFORCE算法
给出完整的权值修改公式:
Δ
w
i
j
=
α
i
j
(
r
−
b
i
j
)
∑
t
=
1
k
(
y
i
(
t
)
−
p
i
(
t
)
)
x
j
(
t
−
1
)
\Delta w_{ij}=\alpha_{ij}(r-b_{ij})\sum_{t=1}^k{(y_i(t)-p_i(t))x_j(t-1)}
Δwij=αij(r−bij)t=1∑k(yi(t)−pi(t))xj(t−1)
定理2:
对于任意的段落式REINFORCE算法, E { Δ W ∣ W } E\{\Delta W| W\} E{ΔW∣W}和 ∇ W E { r ∣ W } \nabla_W E\{r|W\} ∇WE{r∣W}的内积是非负的, 更进一步, 如果 α i j > 0 \alpha_{ij}>0 αij>0, 那么当仅当 ∇ W E { r ∣ W } = 0 \nabla_WE\{r|W\}=0 ∇WE{r∣W}=0, 内积才为0, 如果 α i j \alpha_{ij} αij是和 i , j i,j i,j独立的话, 有 E { Δ W ∣ W } = α ∇ W E { r ∣ W } E\{\Delta W|W\}=\alpha\nabla_WE\{r|W\} E{ΔW∣W}=α∇WE{r∣W},
在段落式的REINFORCE算法中, 性能度量应该改为 E { ∑ t = 1 k r ( t ) ∣ W } E\{\sum_{t=1}^{k}{r(t)|W}\} E{∑t=1kr(t)∣W}
6. 多参数分布的REINFORCE
REINFORCE框架的一个有趣的应用就是对于单元的学习算法的发展决定了它们的随机标量输出, 输出来自于多参数分布而不是使用半线性随机单元的单参数分布. 举个例子, 试想一个这样的单元, 首先得到确定性的计算结果, 基于权值和输入, 来获得所有参数来控制的随机数值生成过程的值, 接着将符合一个合适的分布的输出随机输出. 特别地, 正态分布具有两个参数, 均值 μ \mu μ和标准差 σ \sigma σ, 一个单元根据这样的一个分布来进行输出, 那么将要首先计算出 μ \mu μ和 σ \sigma σ的值, 然后根据该正态分布随机进行输出, 保证均值和标准差.
一种**高斯单元(Gaussian Unit)**的可能的有用特征是它输出的均值和变化是单独地可控的, 只要分离的权值(或者可能是输入)被用来确定这两个参数, 有趣的点是控制标准差 σ \sigma σ就相当于控制单元的搜索行为. 通俗来讲, 使用多参数分布的随机单元就有可能控制探索行为的等级, 并且和在哪里进行探索无关, 这就与使用单参数分布的单元不一样.
这里我们注意到对于任意单元的REINFORCE算法是易于推导出来, 我们用高斯单元来作为一个例子. 为了保证确定这种单元输出的均值和标准差的特定方法, 而不是它的输入和它的权重, 我们将会简单地将单元的均值和标准差它们看作是单元的自适应的参数. 在实际的自适应参数和输入上这些参数的任何更多的通用的函数依赖需要链式法则, Gullapalli提出来一个计算这些参数的方法是, 使用通过输入行的共同集合的分离的权值的和(并且使用一些不同的学习规则), 为了简化这种方法, 我们关注于单一的单元并且自始至终忽略单元索引的下标.
给出这样的密度函数
g
g
g:
g
(
y
,
μ
,
σ
)
=
1
(
2
π
)
1
2
σ
e
−
(
y
−
μ
)
2
2
σ
g(y, \mu, \sigma)=\frac{1}{(2\pi)^{\frac{1}{2}}\sigma}{e^{-\frac{(y-\mu)^2}{2\sigma}}}
g(y,μ,σ)=(2π)21σ1e−2σ(y−μ)2
进而
e
μ
=
∂
l
n
g
∂
μ
=
[
e
(
y
−
μ
)
2
2
σ
]
1
(
2
π
)
1
2
σ
∂
∂
μ
(
e
−
(
y
−
μ
)
2
2
σ
)
=
y
−
μ
σ
2
e_\mu = \frac{\partial ln g}{\partial \mu}=[e^{\frac{(y-\mu)^2}{2\sigma}}]\frac{1}{(2\pi)^{\frac{1}{2}}\sigma}\frac{\partial}{\partial \mu}(e^{-\frac{(y-\mu)^2}{2\sigma}})=\frac{y-\mu}{\sigma^2}
eμ=∂μ∂lng=[e2σ(y−μ)2](2π)21σ1∂μ∂(e−2σ(y−μ)2)=σ2y−μ
e
σ
=
∂
l
n
g
∂
σ
=
−
∂
l
n
(
(
2
π
)
σ
)
∂
σ
−
∂
(
(
y
−
μ
)
2
2
σ
)
∂
σ
=
(
y
−
μ
)
2
−
σ
2
σ
3
e_\sigma=\frac{\partial ln g}{\partial \sigma}=-\frac{\partial ln(\sqrt{(2\pi)}\sigma)}{\partial \sigma}-\frac{\partial (\frac{(y-\mu)^2}{2\sigma})}{\partial \sigma}=\frac{(y-\mu)^2-\sigma^2}{\sigma^3}
eσ=∂σ∂lng=−∂σ∂ln((2π)σ)−∂σ∂(2σ(y−μ)2)=σ3(y−μ)2−σ2
我们可以得到一个更新的表达式
Δ
μ
=
α
μ
(
r
−
b
μ
)
y
−
μ
σ
2
\Delta \mu = \alpha_\mu(r-b_\mu)\frac{y-\mu}{\sigma^2}
Δμ=αμ(r−bμ)σ2y−μ
Δ
σ
=
α
σ
(
r
−
b
σ
)
(
y
−
μ
)
2
−
σ
2
σ
3
\Delta \sigma = \alpha_\sigma(r-b_{\sigma})\frac{(y-\mu)^2-\sigma^2}{\sigma^3}
Δσ=ασ(r−bσ)σ3(y−μ)2−σ2
我们令 α μ = α σ = α σ 2 , b μ = b σ \alpha_\mu=\alpha_\sigma=\alpha \sigma^2, b_\mu=b_\sigma αμ=ασ=ασ2,bμ=bσ可以得到简化的版本
推广到指数分布簇上
g
(
y
,
μ
,
θ
2
,
.
.
.
,
θ
k
)
=
e
x
p
[
Q
(
μ
,
θ
2
,
.
.
.
,
θ
k
)
y
+
D
(
μ
,
θ
2
,
.
.
.
,
θ
k
)
+
S
(
y
)
]
g(y,\mu, \theta_2,...,\theta_k)=exp[Q(\mu, \theta_2,...,\theta_k)y+D(\mu, \theta_2,...,\theta_k)+S(y)]
g(y,μ,θ2,...,θk)=exp[Q(μ,θ2,...,θk)y+D(μ,θ2,...,θk)+S(y)]
对于均值, 仍然有
e
μ
=
∂
l
n
g
∂
μ
=
y
−
μ
σ
2
e_\mu = \frac{\partial ln g}{\partial \mu}=\frac{y-\mu}{\sigma^2}
eμ=∂μ∂lng=σ2y−μ
7. 和反向传播的兼容性
当我们使用强化算法的时候, 会忽略掉所有单元之间连接的信息, 作为有监督学习的算法, 反向传播就完全利用了这样的信息, 注意到我们的强化学习是针对目标函数和环境的, 所以不像有监督的学习那样, 但是我们可以将反向传播和我们的强化学习结合起来.
7.1 使用确定性的隐藏单元的网络
考虑一个前馈的网络, 拥有确定的隐藏单元, 使用随机的输出单元, 使用这样的一个网络对于强化学习系统是有意义的, 因为对于输出单元有随机性的限制使得发生必要的探索.
记
x
x
x是网络的输入向量,
y
y
y是输出向量, 我们可以定义
g
(
ξ
,
W
,
x
)
=
P
r
(
y
=
ξ
∣
W
,
x
)
g(\xi, W, x)=Pr(y=\xi|W, x)
g(ξ,W,x)=Pr(y=ξ∣W,x)为概率质量函数, 描述了网络的输入和输出.
只不过整个网络的输出是一个向量而不是标量, 对于网络里面的任意一个权值
w
i
j
w_{ij}
wij, 有
∂
E
{
r
∣
W
}
/
∂
w
i
j
\partial E\{r|W\}/ \partial w_{ij}
∂E{r∣W}/∂wij的无偏估计是
(
r
−
b
i
j
)
∂
l
n
g
/
∂
w
i
j
(r-b_{ij})\partial lng/\partial w_{ij}
(r−bij)∂lng/∂wij
记
O
O
O是输出单元的索引集合, 因为所有的随机性都在输出单元上, 并且输出单元的随机性是独立的. 我们有
P
r
(
y
=
ξ
∣
W
,
x
)
=
∏
k
∈
O
P
r
(
y
k
=
ξ
k
∣
W
,
x
)
=
∏
k
∈
O
P
r
(
y
k
=
ξ
k
∣
w
k
,
x
k
)
Pr(y=\xi|W, x)=\prod_{k\in O}{Pr(y_k=\xi_k|W,x)}=\prod_{k\in O}{Pr(y_k=\xi_k|w^k,x^k)}
Pr(y=ξ∣W,x)=k∈O∏Pr(yk=ξk∣W,x)=k∈O∏Pr(yk=ξk∣wk,xk)
x
k
x_k
xk是由于将模式
x
x
x呈现给网络而出现在第
k
k
k个单元的输入处的模式
有
l
n
g
(
ξ
,
W
,
x
)
=
l
n
∏
k
∈
O
g
k
(
ξ
k
,
w
k
,
x
k
)
=
∑
k
∈
O
l
n
g
k
(
ξ
k
,
w
k
,
x
k
)
lng(\xi, W, x)=ln\prod_{k\in O}{g_k(\xi_k, w^k, x^k)}=\sum_{k\in O}{lng_k(\xi_k, w^k, x^k)}
lng(ξ,W,x)=lnk∈O∏gk(ξk,wk,xk)=k∈O∑lngk(ξk,wk,xk)
故, 可以得到
∂
l
n
g
(
ξ
,
W
,
x
)
∂
w
i
j
=
∑
k
∈
O
∂
g
k
(
ξ
k
,
w
k
,
x
k
)
∂
w
i
j
\frac{\partial lng(\xi, W, x)}{\partial w_{ij}}=\sum_{k\in O}{\frac{\partial g_k(\xi_k, w^k, x^k)}{\partial w_{ij}}}
∂wij∂lng(ξ,W,x)=k∈O∑∂wij∂gk(ξk,wk,xk)
以上的求和可能可以使用反向传播来计算出来, 特别地, 如果是伯努利非线性单元, 我们可以直接使用参数
p
k
p_k
pk作为中间变量, 故有:
∂
l
n
g
∂
w
i
j
=
∑
k
∈
O
∂
l
n
g
k
∂
p
k
∂
p
k
∂
w
i
j
\frac{\partial ln g}{\partial w_{ij}}=\sum_{k\in O}{\frac{\partial lng_k}{\partial p_k}\frac{\partial p_k}{\partial w_{ij} }}
∂wij∂lng=k∈O∑∂pk∂lngk∂wij∂pk
我们可以直接计算得到
∂
l
n
g
k
∂
p
k
=
y
k
−
p
k
p
k
(
1
−
p
k
)
\frac{\partial ln g_k}{\partial p_k}=\frac{y_k-p_k}{p_k(1-p_k)}
∂pk∂lngk=pk(1−pk)yk−pk
我们只需要将无偏估计进行反向传播即可
7.2 通过随机数字生成器的反向传播
考虑一个随机的半线性单元, 并且假设有这么一个函数 J J J, J J J对输出 y i y_i yi有一定的确定性的依赖, 这种条件下, 我们假设这个单元是输出单元并且 J = E { r ∣ W } J=E\{r|W\} J=E{r∣W}, 我们可以利用 ∂ J ∂ y i \frac{\partial J}{\partial y_i} ∂yi∂J来计算 ∂ J ∂ p i \frac{\partial J}{\partial p_i} ∂pi∂J
我们还可以推出 E { ∂ J / ∂ y i ∣ p i } E\{\partial J/\partial y_i|p_i\} E{∂J/∂yi∣pi}决定了 ∂ E { J ∣ p i } / ∂ p i \partial E\{J|p_i\}/\partial p_i ∂E{J∣pi}/∂pi
不幸的是, 这种性质并不是通用的. 如果 J J J是 y i y_i yi的非线性函数的话. 然而, 如果输出是一个随机数生成器, 可以被写成一个参数可微的函数, 那么我们就可以利用确定性的计算.
考虑一个正态随机数生成器, 比如高斯单元, 输出
y
y
y根据
μ
\mu
μ和
σ
\sigma
σ随机生成
y
=
μ
+
σ
z
y=\mu+\sigma z
y=μ+σz
其中
z
z
z是标准正态离差(standard normal deviate), 注意到
∂
y
∂
μ
=
1
\frac{\partial y}{\partial \mu}=1
∂μ∂y=1
以及
∂
y
∂
σ
=
z
=
y
−
μ
σ
\frac{\partial y}{\partial \sigma}=z=\frac{y-\mu}{\sigma}
∂σ∂y=z=σy−μ
因此, 我们可以将高斯隐藏单元和REINFORCE结合起来