这个和稀疏自编码器很类似。我是在学习宽度学习的算法中了解到这一部分,并且在相关论文中看到了这部分的讲解,希望能够用我能够理解的方式来进行介绍。
利用SAE将输入样本映射到特征节点的过程如下所示:
对于输入数据
X
X
X,自动编码器会尝试去学习一个函数,使得该函数的输出能够和输入尽可能接近,即:
X
^
=
f
W
i
,
θ
i
(
X
)
≈
X
\hat{X}=f_{W_i,\theta_i}(X)\approx X
X^=fWi,θi(X)≈X
其中
W
i
=
{
W
e
i
,
W
^
e
i
}
,
θ
i
=
{
θ
e
i
,
θ
^
e
i
}
W_i=\{W_{ei},\hat{W}_{ei}\},\theta_i=\{\theta_{ei},\hat{\theta}_{ei}\}
Wi={Wei,W^ei},θi={θei,θ^ei}。将此过程进行拆分,隐藏层的特征节点为:
Z
i
=
g
(
X
)
=
ϕ
i
(
X
W
e
i
+
θ
e
i
)
ϕ
i
(
t
)
=
1
1
+
e
−
t
Z_i=g(X)=\phi_i(XW_{ei}+\theta_{ei})\\\phi_i(t)=\frac{1}{1+e^{-t}}
Zi=g(X)=ϕi(XWei+θei)ϕi(t)=1+e−t1
然后通过相同的激活函数将所生成的特征节点映射回重构的向量:
X
^
=
g
(
Z
i
)
=
ϕ
i
(
Z
i
W
^
e
i
+
θ
^
e
i
)
\hat{X}=g(Z_i)=\phi_i(Z_i\hat{W}_{ei}+\hat{\theta}_{ei})
X^=g(Zi)=ϕi(ZiW^ei+θ^ei)
那么此过程的平均重建误差为:
J
E
(
W
i
,
θ
i
)
=
1
N
u
m
∑
t
=
1
N
u
m
1
2
∥
X
^
(
t
)
−
X
(
t
)
∥
2
J_E(W_i,\theta_i)=\frac{1}{Num}\sum_{t=1}^{Num}\frac{1}{2}\Vert \hat{X}(t)-X(t)\Vert^2
JE(Wi,θi)=Num1t=1∑Num21∥X^(t)−X(t)∥2
N
u
m
Num
Num为样本的数目。
一般情况下,如果神经元的输出接近于1那我们认为它是活跃的;如果输出接近于0,那么认为它是不活跃的。稀疏性约束迫使神经元大部分时间都处于不活跃状态。令
Z
i
j
(
t
)
Z_{ij}(t)
Zij(t)表示第i组特征节点的第j个节点,此节点平均激活度为:
p
^
i
j
=
1
N
u
m
∑
t
=
1
N
u
m
Z
i
j
(
t
)
\hat{p}_{ij}=\frac{1}{Num}\sum_{t=1}^{Num}Z_{ij}(t)
p^ij=Num1t=1∑NumZij(t)
为了实现稀疏性,会对平均激活度加上限制:
p
^
i
j
=
p
\hat{p}_{ij}=p
p^ij=p
其中
p
p
p是一个稀疏度参数,通常选择为接近于零的正数。为了实现这一点,我们需要在损失函数中加入对应的惩罚项。
可以用KL散度来衡量此处
p
^
i
j
\hat{p}_{ij}
p^ij与
p
p
p之间的差距:
J
K
L
(
p
∣
∣
p
^
i
)
=
∑
j
=
1
k
i
J
K
L
(
p
∣
∣
p
^
i
j
)
=
∑
j
=
1
k
i
(
p
log
p
p
^
i
j
+
(
1
−
p
)
log
1
−
p
1
−
p
^
i
j
)
J_{KL}(p\mid \mid \hat{\pmb{p}}_i)=\sum_{j=1}^{k_i}J_{KL}(p\mid \mid \hat{p}_{ij})\\=\sum_{j=1}^{k_i}(p\log \frac{p}{\hat{p}_{ij}}+(1-p)\log \frac{1-p}{1-\hat{p}_{ij}})
JKL(p∣∣pp^i)=j=1∑kiJKL(p∣∣p^ij)=j=1∑ki(plogp^ijp+(1−p)log1−p^ij1−p)
同时为了防止过拟合,也在损失函数中增加正则化项,因此SAE最终的损失函数为:
J
S
A
E
(
W
i
,
θ
i
)
=
J
E
(
W
i
,
θ
i
)
+
α
J
K
L
(
p
∣
∣
p
^
i
)
+
λ
2
(
∑
j
=
1
M
∑
l
=
1
k
i
(
W
e
i
j
l
)
2
+
∑
j
=
1
k
i
∑
l
=
1
M
(
W
^
e
i
j
l
)
2
)
J_{SAE}(\pmb{W}_i,\theta_i)=J_E(\pmb{W}_i,\theta_i)+\alpha J_{KL}(p\mid \mid \hat{\pmb{p}}_i)\\+\frac{\lambda}{2}(\sum_{j=1}^M\sum_{l=1}^{k_i}(W_{ei}^{jl})^2+\sum_{j=1}^{k_i}\sum_{l=1}^M(\hat{W}^{jl}_{ei})^2)
JSAE(WWi,θi)=JE(WWi,θi)+αJKL(p∣∣pp^i)+2λ(j=1∑Ml=1∑ki(Weijl)2+j=1∑kil=1∑M(W^eijl)2)
那么同样可通过梯度下降法来求解。
求解得到所要的参数之后,就可以用第二条公式去计算特征节点了。