深度学习读书笔记之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的博客,邓侃翻译版
文章来源: http://blog.csdn.net/mytestmy/article/details/16918641