1. AutoEncoder介绍
1. AutoEncoder介绍
2. Applications of AutoEncoder in NLP
3. Recursive Autoencoder(递归自动编码器)
4. Stacked AutoEncoder(堆栈自动编码器)
1. 前言
AutoEncoder(后面用AE简称)是一个自动编码器,它是通过重建输入的神经网络训练过程,它的隐藏成层的向量具有降维的作用。它的特点是编码器会创建一个隐藏层(或多个隐藏层)包含了输入数据含义的低维向量。然后有一个解码器,会通过隐藏层的低维向量重建输入数据。通过神经网络的训练最后AE会在隐藏层中得到一个代表输入数据的低维向量。它可以帮助数据分类、可视化、存储。AE是一个自动编码器是一个非监督的学习模式,只需要输入数据,不需要label或者输入输出对的数据。
虽然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比较有代表性的模型有一下几种:
- Denoising AutoEncoder
- Sparse AutoEncoder
- Contractive AutoEncoder
- Variational AutoEncoder
4. Denoising AutoEncoder
DAE的主要做法是,输入数据加入了噪声,输出的数据是完整的数据。DAE会强制隐藏层只去学习主要的特征,输出的数据就会是更好的鲁棒性。
DAE的一种方式是随机的删除数据集中的某些数据,然后用完整的数据去评判,DAE会尝试去预测恢复缺失的部分。
一个关于手写数字集的DAE的展示图如下:
5. Sparse AutoEncoder
AE一般的方式是通过隐藏层中的少数的隐藏单元去发现有用的信息,但是AE也可以通过大量的隐藏单元去发现有用信息。SAE的做法是把输入数据转化为高纬度的中间层,然后引入一个稀疏限制的规则。稀疏限制是在大部分时间,大部分的神经元的平均输出比较低。如果使用Sigmoid的激活函数,我们会尽量把输出变为0,如果是tanh的激活函数,我们会尽量把输出变为-1。
\[
p_{j}=\frac{1}{m}\sum_{i=1}^{m}(a_{j}x)
\]
\(a_j\)是神经元的激活后的输出,\(p_j\)是所有神经元输出的平均值,我们的目标是去最小化\(p_j\)。
K-Sparse AutoEncoder是SAE提升版本,KSAE是本身的隐藏神经元非常多,但只选择k个神经元是激活的,其他都是dropout状态,通过选择不同的激活函数和调整不同的k的阈值去训练。下面是通过调整k值,生成不同的手写数字的输出值。
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结构如下,解码器直接使用编码器的输出向量。
上面的模型已经可以训练任意图片了。但是,我们想建一个产生式模型,而不是一个只是储存图片的网络。现在我们还不能产生任何未知的东西,因为我们不能随意产生合理的潜在变量。因为合理的潜在变量都是编码器从原始图片中产生的。这里有个简单的解决办法。我们可以对编码器添加约束,就是强迫它产生服从单位高斯分布的潜在变量。正是这种约束,把VAE和标准自编码器给区分开来了。
不像标准自编码器那样产生实数值向量,VAE的编码器会产生两个向量:一个是均值向量,一个是标准差向量。
VAE除了能让我们能够自己产生随机的潜在变量,这种约束也能提高网络的产生图片的能力。
另外,VAE的一个劣势就是没有使用对抗网络,所以会更趋向于产生模糊的图片
8. 总结
AE算法的压缩数据的方式,可以运用的地方是很多的,图像和自然语言处理都是有很大的发挥空间。现在的VAE也可以用来生成图片。后面会再分别介绍AE再图像和自然语言处理中的应用。
1. AutoEncoder介绍的更多相关文章
- 七、Sparse Autoencoder介绍
目前为止,我们已经讨论了神经网络在有监督学习中的应用.在有监督学习中,训练样本是有类别标签的.现在假设我们只有一个没有带类别标签的训练样本集合 ,其中 .自编码神经网络是一种无监督学习算法,它使用 ...
- 4. Stacked AutoEncoder(堆栈自动编码器)
1. AutoEncoder介绍 2. Applications of AutoEncoder in NLP 3. Recursive Autoencoder(递归自动编码器) 4. Stacked ...
- 3. Recursive AutoEncoder(递归自动编码器)
1. AutoEncoder介绍 2. Applications of AutoEncoder in NLP 3. Recursive Autoencoder(递归自动编码器) 4. Stacked ...
- 2. AutoEncoder在NLP中的应用
1. AutoEncoder介绍 2. Applications of AutoEncoder in NLP 3. Recursive Autoencoder(递归自动编码器) 4. Stacked ...
- Deep learning:四十八(Contractive AutoEncoder简单理解)
Contractive autoencoder是autoencoder的一个变种,其实就是在autoencoder上加入了一个规则项,它简称CAE(对应中文翻译为?).通常情况下,对权值进行惩罚后的a ...
- Deep learning:四十二(Denoise Autoencoder简单理解)
前言: 当采用无监督的方法分层预训练深度网络的权值时,为了学习到较鲁棒的特征,可以在网络的可视层(即数据的输入层)引入随机噪声,这种方法称为Denoise Autoencoder(简称dAE),由Be ...
- PRML读书会第十二章 Continuous Latent Variables(PCA,Principal Component Analysis,PPCA,核PCA,Autoencoder,非线性流形)
主讲人 戴玮 (新浪微博: @戴玮_CASIA) Wilbur_中博(1954123) 20:00:49 我今天讲PRML的第十二章,连续隐变量.既然有连续隐变量,一定也有离散隐变量,那么离散隐变量是 ...
- Deep Learning 1_深度学习UFLDL教程:Sparse Autoencoder练习(斯坦福大学深度学习教程)
1前言 本人写技术博客的目的,其实是感觉好多东西,很长一段时间不动就会忘记了,为了加深学习记忆以及方便以后可能忘记后能很快回忆起自己曾经学过的东西. 首先,在网上找了一些资料,看见介绍说UFLDL很不 ...
- NiftyNet项目介绍
NiftyNet项目介绍 简述 NiftyNet是一款开源的卷积神经网络平台,旨在通过实现医学图像分析的深度学习方法和模块,支持快速原型和再现性,由WEISS (Wellcome EPSRC Ce ...
随机推荐
- Android如何实现TCP和UDP传输
TCP和UDP在网络传输中非常重要,在Android开发中同样重要. 首先我们来看一下什么是TCP和UDP. 什么是TCP? TCP:Transmission Control Protocol 传输控 ...
- Android 获取包名,版本信息
Android 获取包名,版本信息及VersionName名称 <span style="font-size: 14px;">private String ge ...
- MongoDB 2.6配置副本集,支持端口号修改和用户登录认证
mongoDB系列之(二):mongoDB 副本集 Mongodb2.6副本集验证部署和认证 副本集有以下特点: 1. 最小构成是:primary,secondary,arbiter,一般部署是:pr ...
- java 发送post请求参数中含有+会转化为空格的问题
如题 原因分析:参数在传递过程中经历的几次编码和解码标准不同,导致加号.空格等字符的错误. 解决方案:将post请求的参数中 ,含有+号的,统统采用%2B 去替换,这是URL的协议问题.
- pingback协议与traceback协议的区别
wordpress 的 pingback协议与traceback协议区别
- 【转载】Ajax JS 跨域请求
原文: 简单的ajax请求:http://blog.csdn.net/net_lover/article/details/5172509 复杂的ajax请求:http://blog.csdn.net/ ...
- Xilinx 常用模块汇总(verilog)【01】
作者:桂. 时间:2018-05-07 19:11:23 链接:http://www.cnblogs.com/xingshansi/p/9004492.html 前言 该文私用,不定期更新,主要汇总 ...
- docker容器网络通信原理分析
概述 自从docker容器出现以来,容器的网络通信就一直是大家关注的焦点,也是生产环境的迫切需求.而容器的网络通信又可以分为两大方面:单主机容器上的相互通信和跨主机的容器相互通信.而本文将分别针对这两 ...
- 单例模式在JDBC数据库连接操作里的应用
设计模式之单例模式一般应用在在数据库操作里,数据库操作就要常常创建实例,然后进行数据库操作,全部就能够 将数据库操作的方法.进行封装,然后採用单例模式进行设计,然后採用单例模式之后,就能够节约系统资源 ...
- windows7使用Source insight上远程改动ubuntu共享内核源代码
因为本人阅读喜欢使用source insight.前段时间接触了linux核代码,而这份代码仅仅能放在ubuntuserver上编译.刚開始的时候是在windows上改动,完了之后再copy到serv ...