深度学习算法原理——稀疏自编码器

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/google19890102/article/details/49738323

注:最近打算将UFLDL教程重新看一遍,其实里面有很多关于神经网络以及深度学习的知识点很有用,但是只是学习深度学习的话有一些内容就有点多余,所以想整理一个笔记,记录下神经网络到深度学习的一些知识点。整个教材已经非常好,网上有原版的英文版,也有翻译的中文版,这个只是自己的学习笔记,对原来教程中的内容进行了梳理,有些图也是引用的原来的教程,若内容上有任何错误,希望与我联系,若内容有侵权,同样也希望告知,我会尽快删除。

这个笔记主要分为以下几个部分:
- 神经网络
- 自编码器与稀疏性
- Softmax回归
- 自我学习
- 深度网络
- 其他,如PCA

二、自编码器与稀疏性

1、自编码器

前面介绍了神经网络的基本结构,并且对于监督学习,神经网络模型可以训练出模型中的参数,然后,神经网络也可以应用在无监督学习中,无监督学习是指数据集中没有类别标签,如训练样本为{x(1),x(2),},其中x(i)Rn。自编码神经网络是一种无监督学习算法,其模型结构与上述的神经网络一致,所不同的是其目标值等于其输入值,即y(i)=x(i),其结构如下图所示:

2、自编码器的特点

对于上述结构自编码器实际上完成了一个hW,b(x)x函数的学习的过程,本身可以说并没有什么意义,但是通过观察上述的结构中,我们发现在自编码器结果中,中间的隐含层,是从特征x提取出来,同时,这提取出的特征又能还原原先的特征,简单来讲,中间层实现了对原数据的抽象,是原数据的另一种表示。对于中间的隐含层具有两种结构:

  • 降维,即隐含层的节点个数要小于输入节点的个数。
  • 稀疏,即在隐含层的神经元上加入稀疏性的限制。

3、稀疏性约束

对于使用Sigmoid作为神经元的激活函数的情况下,若神经元的输出为1表示该神经元被激活,否则称为未被激活,则稀疏性的含义是指在大多数情况下神经元都是未被激活的。可以使用神经元的输出作为神经元的激活度,即对于隐含层的第j个神经元,其激活度为:

a(2)j=f(W(1)j1x1+W(1)j2x2++W(1)j6x6+b(1)j)

则对于m个样本,其平均激活度为:

ρ^j=1mi=1m[a(2)j(x(i))]

假设令ρ^j=ρ,其中ρ是一个常数,表示的是稀疏性参数,通常可以取一个接近于0的常数,如取ρ=0.05。为了使得模型比较稀疏,我们希望平均激活度能够尽可能接近稀疏性常数,通常可以取相对熵来度量平均激活度与稀疏性参数之间的差异程度。

4、相对熵的概念

要说相对熵,首先得说说“什么是熵”。也称为信息熵,是反应了一个系统有序化程度的指标,一个系统越有序,那么其熵就越低,反之,熵就越大。熵的公式如下:

H(x)=i=1np(xi)logp(x)

对于上述的自编码器模型,其隐含层的第j个神经元的平均激活度为:

ρ^j=1mi=1m[a(2)j(x(i))]

稀疏性常数为:ρ,则对于隐含层的相对熵为:

j=1s2ρlogρρ^j+(1ρ)log1ρ1ρ^j

其中,s2表示的是隐含层节点的个数,相对熵又称为KL散度,即:

j=1s2KL(ρρ^j)=j=1s2ρlogρρ^j+(1ρ)log1ρ1ρ^j

相对熵是一种用来度量两个分布之间的差异的方法。对于上述的相对熵,若ρ=ρ^j时达到最小值,最小值为0,否则差距越大,相对熵的值越大,如下图所示:

从上图中,我们看出:

  • ρ=ρ^j时达到最小值0
  • 相对熵的值大于等于0
  • 由于图像是非对称的,因此KL(ρρ^j)KL(ρ^jρ)

5、稀疏自编码器

对于稀疏自编码器的损失函数,其与神经网络的损失函数一致,可以表示为:

J(W,b)

则对于稀疏自编码器,其损失函数即在神经网络的损失函数的基础上加上稀疏性的约束即可,即为:

Jsparse(W,b)=J(W,b)+βj=1s2KL(ρρ^j)

其中,β控制稀疏性的权重。在更新的过程中,原本在神经网络中,更新公式为:

δ(2)i=j=1s2W(2)jiδ(3)jf(z(2)i)

则在稀疏自编码器中的隐含层为:

δ(2)i=z(2)iJsparse(W,b;x,y)=z(2)i[12yhW,b(x)2+βi=1s2ρlogρρ^i+(1ρ)log1ρ1ρ^i]=z(2)i12j=1s3yja(3)j2+βi=1s2ρlogρρ^i+(1ρ)log1ρ1ρ^i12j=1s3z(3)jyja(3)j2z(2)iz(3)j+βz(2)ii=1s2ρlogρρ^i+(1ρ)log1ρ1ρ^i

=j=1s3δ(3)jz(2)ii=1s2f(z(2)i)W(2)ji+βz(2)i(ρlogρρ^i+(1ρ)log1ρ1ρ^i)=j=1s3δ(3)jW(2)jif(z(2)i)+βρρ^iρz(2)i(ρρ^i)+(1ρ)1ρ^i1ρz(2)i(1ρ1ρ^i)

=j=1s3δ(3)jW(2)jif(z(2)i)+βρ^iρ(ρ^i)2z(2)iρ^i+(1ρ^i)(1ρ)(1ρ^j)2z(2)i(1ρ^j)=j=1s3δ(3)jW(2)jif(z(2)i)+β(ρρ^if(z(2)i)+(1ρ)1ρ^i[f(z(2)i)])=j=1s3δ(3)jW(2)ji+β(ρρ^i+1ρ1ρ^i)f(z(2)i)

对于稀疏自编码器,其更新公式为:

δ(2)i=j=1s2W(2)jiδ(3)j+β(ρρ^i+1ρ1ρ^i)f(z(2)i)

参考文献

若需要PDF版本,请关注我的新浪博客@赵_志_勇,私信你的邮箱地址给我。

展开阅读全文

没有更多推荐了,返回首页