Auto-Encoder(AutoEncoder AE)
自编码器
-
自编码器将数据映射到特征空间得到每个样本的编码,并希望这组编码可以重构出原来的样本
-
Encoder
编码器
f : R D → R M f: \mathbb{R}^{D} \rightarrow \mathbb{R}^{M} f:RD→RM
-
Decoder
解码器
g : R M → R D g: \mathbb{R}^{M} \rightarrow \mathbb{R}^{D} g:RM→RD
-
目标函数:最小化重构错误(Reconstruction Error)
L = ∑ n = 1 N ∥ x ( n ) − g ( f ( x ( n ) ) ) ∥ 2 = ∑ n = 1 N ∥ x ( n ) − f ∘ g ( x ( n ) ) ∥ 2 \begin{aligned} \mathcal{L} &=\sum_{n=1}^{N}\left\|\boldsymbol{x}^{(n)}-g\left(f\left(\boldsymbol{x}^{(n)}\right)\right)\right\|^{2} \\ &=\sum_{n=1}^{N}\left\|\boldsymbol{x}^{(n)}-f \circ g\left(\boldsymbol{x}^{(n)}\right)\right\|^{2} \end{aligned} L=n=1∑N x(n)−g(f(x(n))) 2=n=1∑N x(n)−f∘g(x(n)) 2
-
One Simple Example
z = f ( W ( 1 ) x + b ( 1 ) ) z=f\left(\boldsymbol{W}^{(1)} \boldsymbol{x}+\boldsymbol{b}^{(1)}\right) z=f(W(1)x+b(1))
x ′ = f ( W ( 2 ) z a + b ( 2 ) ) \boldsymbol{x}^{\prime}=f\left(\boldsymbol{W}^{(2)} z_{a}+\boldsymbol{b}^{(2)}\right) x′=f(W(2)za+b(2))
L = ∑ n = 1 N ∥ x ( n ) − x ′ ( n ) ∥ 2 + λ ∥ W ∥ F 2 \mathcal{L}=\sum_{n=1}^{N} \| \boldsymbol{x}^{(n)}-\boldsymbol{x}^{\prime(n)}\left\|^{2}+\lambda\right\| \boldsymbol{W} \|_{F}^{2} L=n=1∑N∥x(n)−x′(n) 2+λ W∥F2
-
使用自编码器是为了得到有效的数据表示,因此在训练结束后,我们一般会去掉解码器,只保留编码器.编码器的输出可以直接作为后续机器学习模型的输入
Sparse Auto-Encoder
稀疏自编码器
-
编码向量 z z z的维度 M M M大于输入样本 x x x的维度 D D D,且 z z z尽可能稀疏
-
稀疏性度量函数
-
L 0 L_0 L0范数
ρ ( z ) = ∑ m = 1 M I ( ∣ z m ∣ > 0 ) \rho(z)=\sum_{m=1}^{M} \mathbf{I}\left(\left|z_{m}\right|>0\right) ρ(z)=m=1∑MI(∣zm∣>0)
-
L 1 L_1 L1范数
ρ ( z ) = ∑ m = 1 M ∣ z m ∣ \rho(\boldsymbol{z})=\sum_{m=1}^{M}\left|z_{m}\right| ρ(z)=m=1∑M∣zm∣
-
对数函数
ρ ( z ) = ∑ m = 1 M log ( 1 + z m 2 ) \rho(z)=\sum_{m=1}^{M} \log \left(1+z_{m}^{2}\right) ρ(z)=m=1∑Mlog(1+zm2)
-
指数函数
ρ ( z ) = ∑ m = 1 M − exp ( − z m 2 ) \rho(\boldsymbol{z})=\sum_{m=1}^{M}-\exp \left(-z_{m}^{2}\right) ρ(z)=m=1∑M−exp(−zm2)
-
-
目标函数
L = ∑ n = 1 N ∥ x ( n ) − x ′ ( n ) ∥ 2 + η ρ ( Z ) + λ ∥ W ∥ 2 \mathcal{L}=\sum_{n=1}^{N} \| \boldsymbol{x}^{(n)}-\boldsymbol{x}^{\prime(n)}\left\|^{2}+\eta \rho(\boldsymbol{Z})+\lambda\right\| \boldsymbol{W} \|^{2} L=n=1∑N∥x(n)−x′(n) 2+ηρ(Z)+λ W∥2
Z = [ z ( 1 ) , ⋯ , z ( N ) ] \boldsymbol{Z}=\left[\boldsymbol{z}^{(1)}, \cdots, \boldsymbol{z}^{(N)}\right] Z=[z(1),⋯,z(N)]表示所有训练样本的编码, ρ ( Z ) \rho(\boldsymbol{Z}) ρ(Z)为稀疏性度量函数-
这里的稀疏性度量函数还可以定义为一组训练样本中每一个神经元激活的概率。给定 N N N个训练样本,隐藏层第 j j j个神经元平均活性值为
ρ ^ j = 1 N ∑ n = 1 N z j ( n ) \hat{\rho}_{j}=\frac{1}{N} \sum_{n=1}^{N} z_{j}^{(n)} ρ^j=N1n=1∑Nzj(n)
ρ ^ j \hat{\rho}_{j} ρ^j可以近似看作第 j j j个神经元激活的概率 -
我们希望 ρ ^ j \hat{\rho}_{j} ρ^j接近于一个事先给定的值 ρ ∗ \rho^{*} ρ∗,例如 0.05 0.05 0.05,可以通过KL散度来衡量两者的差异
K L ( ρ ∗ ∥ ρ ^ j ) = ρ ∗ log ρ ∗ ρ ^ j + ( 1 − ρ ∗ ) log 1 − ρ ∗ 1 − ρ ^ j \mathrm{KL}\left(\rho^{*} \| \hat{\rho}_{j}\right)=\rho^{*} \log \frac{\rho^{*}}{\hat{\rho}_{j}}+\left(1-\rho^{*}\right) \log \frac{1-\rho^{*}}{1-\hat{\rho}_{j}} KL(ρ∗∥ρ^j)=ρ∗logρ^jρ∗+(1−ρ∗)log1−ρ^j1−ρ∗
-
故稀疏性度量函数可定义为
ρ ( Z ) = ∑ j = 1 p KL ( ρ ∗ ∥ ρ ^ j ) \rho(\boldsymbol{Z})=\sum_{j=1}^{p} \operatorname{KL}\left(\rho^{*} \| \hat{\rho}_{j}\right) ρ(Z)=j=1∑pKL(ρ∗∥ρ^j)
-
Stacked Auto-Encoder(SAE)
堆叠自编码器
Denoising Auto-Encoder(DAE)
降噪自编码器
- 通过引入噪声来增加编码鲁棒性
Variational Auto-Encoder(VAE)
变分自编码器