最近刚刚运行完成sparse coding;才解决了自己的困惑,以前学习完Sparse autoencoder从感觉这两个东西是“一丘之貉”;但是运行完成之后才发现他们两个有很大的不同,虽然都是对数据进行变换,但是二者的变换原理是完全不同的。详细的下面纤细介绍。
1.Autoencoder介绍
Autoencdoer这个概念最早应该是出自hinton在science杂志上发表的哪一篇开启深度学习的旷世之作“rerducing thedimensionality of data with neural network”上,提取重点简单翻译之。
摘要简单翻译
……通过训练一个中心层有少数隐层节点的多层的神经网络,来重构高维输入数据,高维输入数据可以转换到一个低维数据。在这个“Autoencdoer”中,梯度下降算法可以用来fine_tuning权值矩阵。……
正文简单翻译
……我们简述一种非线性的PCA方法,这种方法应用自适应,多层编码(encoder)网络来转换高维数据到一个低维编码,并且架构一个相似的反编码“decoder”网络来复原低维编码到原始数据。在两层网络结构中,通过随机初始化权值矩阵,通过训练,最小化重构数据和原始数据的差异;通过链式法则反向传播误差,首先通过反编码网络部分,在通过编码网络部分,所需要的梯度可以很容易的获得。整个网络叫做“Autoencdoer”。……
这篇论文中,hinton通过RBM来训练每一层的初始权值,然后堆叠多个RBM得到一个中心层网络节点少,encoder和decoder部分对称的DBN网络来进行“Autoencdoer”。
Autoencoder介绍:(网上看到的梁斌博客,一个比较好的介绍就copy过来了)
copy自http://blog.sina.com.cn/s/blog_593af2a70101endk.html
简单来说autoencoder是一个压缩编码器,也就是对input的一坨东西通过变换,输出和input一样的东西。例如input是一个鸡,ouput也是一个鸡,input是一个鸭,output也是一个鸭。学术一点说就是找到一个函数能够使得Function(input) = input,叫做identity function。即学习Hw,b(x)=x。
但这和深度学习有什么关系呢? 这就要说到压缩编码&#x