您的位置:首页 > 其它

深度学习读书笔记之AE(自动编码)

2013-11-24 14:12 225 查看

深度学习读书笔记之AE

声明:

1)该博文是整理自网上很大牛和机器学习专家所无私奉献的资料的。具体引用的资料请看参考文献。具体的版本声明也参考原文献。

2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应,而且大部分内容都是直接抄NG的源博客的,如果某部分不小心侵犯了大家的利益,还望海涵,并联系老衲删除或修改,直到相关人士满意为止。

3)本人才疏学浅,整理总结的时候难免出错,还望各位前辈不吝指正,谢谢。

4)阅读本文需要机器学习、统计学、神经网络等等基础(如果没有也没关系了,没有就看看,当做跟同学们吹牛的本钱)。

5)此属于第一版本,若有错误,还需继续修正与增删。还望大家多多指点。请直接回帖,本人来想办法处理。

6)本人手上有word版的和pdf版的,不知道怎么上传,所以需要的话可以直接到DeepLearning高质量交流群里要,群号由于未取得群主同意不敢公布,需要的同学可以联系群主@tornadomeet

一.稀疏自编码器

1.1一般AE使用方法

下图是一个自编码神经网络的示例。



上面是一个三层的自编码神经网络,分别有L1,L2,L3这三层。

网络经过学习以后,得到的结果是两个矩阵和两个偏移量,

和偏移量b1、

和b2。

给定输入x=(x1,x2,x3,x4,x5,x6),根据已知的激活函数f1,f2,这两个矩阵和偏移量有如下的性质:



,从而得到y=(y1,y2,y3),其中f1是sigmoid函数,形式



再令

,从而得到z=(z1,z2,z3,z4,z5,z6)其中f2是自等函数,形式f(z)=z.如果输入数据在0和1之间,也可以用f1是sigmoid函数。

一个训练得很好的自编码神经网络满足x=z。

1.2自编码AE的意义

只对图像进行解释。

假如是一个L1层10000个节点,L2层100个节点,L3层10000个节点的AE网络,同时所有激活函数选用sigmoid函数,那么



用大量的图片训练得到



;对于

的每一行,把

的权重用公式

,得到的x=(x1,x2,⋯,x10000),组合成一幅100*100的子图,就能得到100幅子图,都是一些边缘,如下面的这些



可以看到,不同的隐藏单元学会了在图像的不同位置和方向进行边缘检测。显而易见,这些特征对物体识别等计算机视觉任务是十分有用的。若将其用于其他输入域(如音频),该算法也可学到对这些输入域有用的表示或特征。

如果输入数据中隐含着一些特定的结构,比如某些输入特征是彼此相关的,那么这一算法就可以发现输入数据中的这些相关性。事实上,这一简单的自编码神经网络通常可以学习出一个跟主元分析(PCA)结果非常相似的输入数据的低维表示。

1.3稀疏自编码AE的优化目标和解法

1.3.1损失函数

假设有一组s1个特征的样本样本X={x1,x2,⋯,xm},经过自编码网络在L2层和L3层分别成为Y={y1,y2,⋯,ym},Z={z1,z2,⋯,zm},其中L1层,L2层,L3层分别有节点s1,s2,s3个,则损失函数可以表示成下面的形式



其中


β是一个超参数,控制稀疏性惩罚因子的权重,ρ也是超参数,叫做稀疏性参数。而KL的定义如下



而且

是L2层的第j个节点的平均激活度,定义如下



其中

表示L2层的第j个节点在输入为xi的时候的值.

1.3.2求解

求解步骤如下:

(1) 对于每个训练样本x进行迭代:

a)先计算L3层的每一个节点i的误差



得到的结果是L3层的残差。

再计算L2层的每一个节点i的误差



得到的结果是L2层的每个节点i的残差

b)然后计算



的梯度,利用上面的残差









的梯度,利用上面的残差





c)误差进行累计,l=1,2





(2)更新



的权重





致谢

感谢NG的博客,无私奉献了这么多资料

感谢邓侃率领的一群人翻译了NG的博客的所有内容,让我等小白能看懂。

Deep Learning高质量交流群里的多位同学:@厦大_图像_风淳 ,@罗杰 ,@Wilbur

参考文献

[1]http://deeplearning.stanford.edu/wiki/index.php/UFLDL%E6%95%99%E7%A8%8B NG的博客,邓侃翻译版
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: