Autoencoder ,Sparse Coding ,Sparse autoencoder 简介

Autoencoder ,Sparse Coding ,Sparse autoencoder 简介

最近刚刚运行完成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。

但这和深度学习有什么关系呢? 这就要说到压缩编码,我们都知道input需要有一种编码形式,如果我们能在函数内部找到一个更简洁的编码形式,那么这个变换过程就等价于学习到了一种压缩表示的函数,能够少量的存储形式来表示原本较复杂的但信息冗余较大的表示形式。

我们下面的代码中举了一个精彩的例子(这个例子是从同学的一次实验中直接受启发,我只是按照自己的理解实现了一把,例子非原创)。在这个例子中,input是4个不同的数字,分别是

(0,0,0,1)可以看作1

(0,0,1,0)可以看作2

(0,1,0,0)可以看作3

(1,0,0,0)可以看作4

因为所有的input只有这4种,因此其实用4个bit是不经济的,存在压缩表示的可能性,比如2个bit就可以表示这4个不同的数。

那么我们设计了输入层是4+1(4个脚接受4bit编码的input,1个脚是常数项,这个用来做先验的);隐藏层2+1(因为我们实现已经知道2个bit就够了,所以2个隐藏层,具有足够的表达能力);输出层4(为了能让输出和输入保持一致)

通过数轮迭代,我们看到如下的情况

(0,0,0,1)->(0.99,0.09)->(0.06,0.00,0.01,0.91)

(0,0,1,0)->(0.85,0.99)->(0.00,0.07,0.90,0.07)

(0,1,0,0)->(0.01,0.67)->(0.06,0.87,0.11,0.00)

(1,0,0,0)->(0.12,0.00)->(0.89,0.10,0.00,0.02)

input_layer hidden_layer     output_layer

hidden层的编码恰好可以看作是

(0.99,0.09)  1,0

(0.85,0.99)  1,1

(0.01,0.67)  0,1

(0.12,0.00)  0,0

也就是说输入的(0,0,0,1)可以被1,0 压缩表示,最终4bit的信息,可以用2bit表示,当然还需要保持边的权重,但这些边权重只需要一份,在输入足够复杂的时候,压缩表示是有价值的。

若用RBM堆叠的DBM来学习Autoencoder,最后fine_tuning结束之后学习到的是几个权值矩阵W1,W2……和相应的偏置项b1,b2……等;若用普通的3层神经网络(input—hiden—ouput)网络则学习到一个权值矩阵W1和偏置项b1。

最后,输入数据,通过神经网络的前馈计算就可以把数据重构为其他维度的数据,来实现特征提取。

其他相关可参见美军参考资料:

http://ufldl.stanford.edu/wiki/index.php/Autoencoders_and_Sparsity

2.Sparse Coding介绍

稀疏编码算法是一种无监督学习方法,它用来寻找一组“超完备”基向量来更高效地表示样本数据。虽然形如主成分分析技术(PCA)能使我们方便地找到一组“完备”基向量,但是这里我们想要做的是找到一组“超完备”基向量来表示输入向量(也就是说,基向量的个数比输入向量的维数要大)。超完备基的好处是它们能更有效地找出隐含在输入数据内部的结构与模式。然而,对于超完备基来说,系数ai不再由输入向量唯一确定。

sparse coding是将输入的样本集X分解为多个基元的线性组合,然后这些基前面的系数表示的是输入样本的特征。其分解公式表达如下:

通俗的说,就是将一个信号表示为一组基的线性组合,而且要求只需要较少的几个基就可以将信号表示出来。“稀疏性”定义为:只有很少的几个非零元素或只有很少的几个远大于零的元素。要求系数ai是稀疏的意思就是说:对于一组输入向量,我们只想有尽可能少的几个系数远大于零。选择使用具有稀疏性的分量来表示我们的输入数据是有原因的,因为绝大多数的感官数据,比如自然图像,可以被表示成少量基本元素的叠加,在图像中这些基本元素可以是面或者线。同时,比如与初级视觉皮层的类比过程也因此得到了提升(人脑有大量的神经元,但对于某些图像或者边缘只有很少的神经元兴奋,其他都处于抑制状态)。

Sparse coding分为两个部分:

1)Training阶段:给定一系列的样本图片[x1, x 2, …],我们需要学习得到一组基[Φ1, Φ2, …],也就是字典A。

训练过程就是一个重复迭代的过程,按上面所说,我们交替的更改a和Φ使得下面这个目标函数最小。

每次迭代分两步:

a)固定字典Φ[k],然后调整a[k],使得上式,即目标函数最小(即解LASSO问题)。

b)然后固定住a [k],调整Φ [k],使得上式,即目标函数最小(即解凸QP问题)。

不断迭代,直至收敛。这样就可以得到一组可以良好表示这一系列x的基,也就是字典。

2)Coding阶段:给定一个新的图片x,由上面得到的字典A,通过解一个LASSO问题得到稀疏向量a。这个稀疏向量就是这个输入向量x的一个稀疏表达了。

例如:

参考文献:http://blog.csdn.net/zouxy09/article/details/8777094

http://www.cnblogs.com/tornadomeet/archive/2013/04/16/3024292.html

和autoencoder不同的是,当sparse coding完成训练过程后,只是完成了字典A,也就是超完备基的学习,和训练数据稀疏系数的学习;对于给定的新数据还需要coding过程,去“求解”系数。

3  Sparse Autoencoder =sparse coding + autoencoder

对autoencoder中权值矩阵加上稀疏性限制的autoencoder。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容