1. 自编码器

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

稀疏自编码器_深度学习_04

2. 自编码器的特点

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

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

3. 稀疏性约束

对于使用Sigmoid作为神经元的激活函数的情况下,若神经元的输出为稀疏自编码器_无监督学习_07表示该神经元被激活,否则称为未被激活,则稀疏性的含义是指在大多数情况下神经元都是未被激活的。可以使用神经元的输出作为神经元的激活度,即对于隐含层的第稀疏自编码器_深度学习_08个神经元,其激活度为:

稀疏自编码器_神经网络_09

则对于稀疏自编码器_编码器_10个样本,其平均激活度为:

稀疏自编码器_稀疏自编码器_11

假设令稀疏自编码器_稀疏自编码器_12,其中稀疏自编码器_神经网络_13是一个常数,表示的是稀疏性参数,通常可以取一个接近于稀疏自编码器_编码器_14的常数,如取稀疏自编码器_编码器_15。为了使得模型比较稀疏,我们希望平均激活度能够尽可能接近稀疏性常数,通常可以取相对熵来度量平均激活度与稀疏性参数之间的差异程度。

4. 相对熵的概念

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

稀疏自编码器_无监督学习_16

对于上述的自编码器模型,其隐含层的第稀疏自编码器_深度学习_08个神经元的平均激活度为:

稀疏自编码器_稀疏自编码器_11

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

稀疏自编码器_编码器_19

其中,稀疏自编码器_无监督学习_20表示的是隐含层节点的个数,相对熵又称为KL散度,即:

稀疏自编码器_稀疏自编码器_21

相对熵是一种用来度量两个分布之间的差异的方法。对于上述的相对熵,若稀疏自编码器_稀疏自编码器_22时达到最小值,最小值为稀疏自编码器_编码器_14,否则差距越大,相对熵的值越大,如下图所示:

稀疏自编码器_无监督学习_24

从上图中,我们看出:

  • 稀疏自编码器_深度学习_25时达到最小值稀疏自编码器_深度学习_26
  • 相对熵的值大于等于稀疏自编码器_深度学习_26
  • 由于图像是非对称的,因此稀疏自编码器_稀疏自编码器_28

5. 稀疏自编码器

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

稀疏自编码器_神经网络_29

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

稀疏自编码器_神经网络_30

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

稀疏自编码器_深度学习_31

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

稀疏自编码器_稀疏自编码器_32

稀疏自编码器_稀疏自编码器_33

稀疏自编码器_神经网络_34

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

稀疏自编码器_神经网络_35

参考文献

[1] 英文版:UFLDL Tutorial

[2] 中文版:UFLDL教程

[3] 《深度学习》学习笔记(一):稀疏自编码器(Sparse Autoencoder)