1. AutoEncoder介绍

1. AutoEncoder介绍

2. Applications of AutoEncoder in NLP

3. Recursive Autoencoder(递归自动编码器)

4. Stacked AutoEncoder(堆栈自动编码器)

1. 前言

AutoEncoder(后面用AE简称)是一个自动编码器,它是经过重建输入的神经网络训练过程,它的隐藏成层的向量具备降维的做用。它的特色是编码器会建立一个隐藏层(或多个隐藏层)包含了输入数据含义的低维向量。而后有一个解码器,会经过隐藏层的低维向量重建输入数据。经过神经网络的训练最后AE会在隐藏层中获得一个表明输入数据的低维向量。它能够帮助数据分类、可视化、存储。AE是一个自动编码器是一个非监督的学习模式,只须要输入数据,不须要label或者输入输出对的数据。html

image

虽然AE是一个非监督学习算法,若是它的解码器是线性重建数据,能够用MSE来表示它的损失函数:
\[ L(x,y)=\sum(x-h_{W,b}(x))^{2} y=h_{W,b}(x) \]
若是解码器用Sigmoid的激活函数,那主要用交叉上损失函数:算法

\[ L(x,y)=-\sum_{i=1}^{d_{x}}x_{i}log(y_{i})+(1-x_{i})log(1-y_{i}) \]网络

3. AE的历史发展

AE的思想是在1986年被提出来的,在接下来的几年,AE的思想席卷了个大研究论文。关于AE比较有表明性的模型有一下几种:app

  • Denoising AutoEncoder
  • Sparse AutoEncoder
  • Contractive AutoEncoder
  • Variational AutoEncoder

4. Denoising AutoEncoder

DAE的主要作法是,输入数据加入了噪声,输出的数据是完整的数据。DAE会强制隐藏层只去学习主要的特征,输出的数据就会是更好的鲁棒性。函数

DAE的一种方式是随机的删除数据集中的某些数据,而后用完整的数据去评判,DAE会尝试去预测恢复缺失的部分。学习

一个关于手写数字集的DAE的展现图以下:编码

image

5. Sparse AutoEncoder

AE通常的方式是经过隐藏层中的少数的隐藏单元去发现有用的信息,可是AE也能够经过大量的隐藏单元去发现有用信息。SAE的作法是把输入数据转化为高纬度的中间层,而后引入一个稀疏限制的规则。稀疏限制是在大部分时间,大部分的神经元的平均输出比较低。若是使用Sigmoid的激活函数,咱们会尽可能把输出变为0,若是是tanh的激活函数,咱们会尽可能把输出变为-1。spa

\[ p_{j}=\frac{1}{m}\sum_{i=1}^{m}(a_{j}x) \]
\(a_j\)是神经元的激活后的输出,\(p_j\)是全部神经元输出的平均值,咱们的目标是去最小化\(p_j\)code

K-Sparse AutoEncoder是SAE提高版本,KSAE是自己的隐藏神经元很是多,但只选择k个神经元是激活的,其余都是dropout状态,经过选择不一样的激活函数和调整不一样的k的阈值去训练。下面是经过调整k值,生成不一样的手写数字的输出值。htm

image

6. Contractive AutoEncoder

CAE的主要目标是使得隐藏层向量对输入数据的微小的变更可以有更强的鲁棒性。CAE的作法是在普通AE的基础上加上一个惩罚项。公式以下:
\[ J_{CAE}(\theta)=\sum_{x\in{D_n}}(L(x,g(f(x)))+ \lambda{||J_{h}(x)||_{F}^{2}}) \]
\[ ||J_{h}(x)||_{F}^{2}=\sum_{ij}\left(\frac{\delta h_{j}(x)}{\delta x_{i}}\right) \]
CAE和DAE目标是类似的,DAE是经过加入噪声,重构来提高模型的鲁棒性,CAE是经过增长雅克比矩阵的惩罚项来提升模型鲁棒性。

7. Variational AutoEncoder

VAE结构是一个经典的autocoder模型,网络的组成也是编码器、解码器、loss。VAE的机构和普通的AE结构有所不一样。

普通的AE结构以下,解码器直接使用编码器的输出向量。
image

上面的模型已经能够训练任意图片了。可是,咱们想建一个产生式模型,而不是一个只是储存图片的网络。如今咱们还不能产生任何未知的东西,由于咱们不能随意产生合理的潜在变量。由于合理的潜在变量都是编码器从原始图片中产生的。这里有个简单的解决办法。咱们能够对编码器添加约束,就是强迫它产生服从单位高斯分布的潜在变量。正是这种约束,把VAE和标准自编码器给区分开来了。

不像标准自编码器那样产生实数值向量,VAE的编码器会产生两个向量:一个是均值向量,一个是标准差向量。
image

VAE除了能让咱们可以本身产生随机的潜在变量,这种约束也能提升网络的产生图片的能力。
另外,VAE的一个劣势就是没有使用对抗网络,因此会更趋向于产生模糊的图片

8. 总结

AE算法的压缩数据的方式,能够运用的地方是不少的,图像和天然语言处理都是有很大的发挥空间。如今的VAE也能够用来生成图片。后面会再分别介绍AE再图像和天然语言处理中的应用。