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 ...
随机推荐
- mysql单机多实例
在数据库服务器上,可以架构多个Mysql服务器,进行单机多实例的读写分离: 可以通过mysqld_multi来进行多实例的管理,mysqld_multi是用perl写的脚本,原理是通过mysql_ad ...
- 一步一步掌握java的线程机制(二)----Thread的生命周期
之前讲到Thread的创建,那是Thread生命周期的第一步,其后就是通过start()方法来启动Thread,它会执行一些内部的管理工作然后调用Thread的run()方法,此时该Thread就是a ...
- ORA-14404: partitioned table contains partitions in a different tablespace
SQL> drop tablespace nn_data including contents and datafiles; drop tablespace nn_data including ...
- selenium webdriver如何拿到页面的加载时间
这个问题与语言无关,对于现代浏览器来说,使用 window.performance.timing这个对象就好了. 用execute_script方法(java用executeScript)方法执行 w ...
- http realtime response 基于http的实时响应方式的演进
http http ajax http polling ajax http long-polling ajax html5 server sent events html5 websocket com ...
- asp.net中C#中计算时间差代码
我用的最简单的办法是 代码如下 复制代码 DateTime dtone = Convert.ToDateTime("2007-1-1 05:32:22");DateTime dtw ...
- 活久见: 原来 Chrome 浏览器支持 Import from 语法
需要满足以下三个条件: 1.高版本的Chrome ,总而言之越新越好……,其他浏览器请参考:https://caniuse.com/#search=import 2.必须在服务器环境下才能运行,譬如a ...
- js 冷门的 label 语法
https://github.com/Tencent/vConsole/blob/dev/src/lib/query.js#L142 https://www.cnblogs.com/hjbky/p/6 ...
- linux经常使用命令-帮助命令-授之以渔
原创Blog,转载请注明出处 http://blog.csdn.net/hello_hwc 我的虚拟机系统是CentOS.版本号较老,谅解 一.为什么要学习帮助命令? 授人以鱼不如授人以渔.学会了 ...
- Atitit opencv3.0 3.1 3.2 新特性attilax总结
Atitit opencv3.0 3.1 3.2 新特性attilax总结 1. 3.0OpenCV 3 的改动在哪?1 1.1. 模块构成该看哪些模块?2 2. 3.1新特性 2015-12-21 ...