AE

稀疏自编码


自编码器是什么?

自编码器本身就是一种BP神经网络。它是一种无监督学习算法。

我们都知道神经网络可以从任意精度逼近任意函数,这里我们让神经网络目标值等于输出值x,也就是模拟一个恒等函数:

输入等于输出,这网络有什么意义?但是,当我们把自编码神经网络加入某些限制,事情就发生了变化。如图1所示,这就是一个基本的自编码神经网络,可以看到隐含层节点数量要少于输入层节点数量。

我的头像

稀疏自编码器又是什么?

更一般的,如果隐藏层节点数量很大,甚至比输入层节点数量还要多时,我们仍然可以使用自编码算法,但是这时需要加入稀疏性限制。这就是稀疏自编码器。

什么是稀疏性限制?

简单说就是要保证隐藏神经元在大多数情况下是被抑制的状态。具体表现就是sigmoid函数的输出大多数状态是0,tanh函数的输出大多数状态是-1。这样有什么好处?这样能够迫使隐藏神经元发挥最大的潜力,在很不利的条件下学习到真正的特征。

损失函数的求法:

  无稀疏约束时网络的损失函数表达式如下:

我的头像

稀疏编码是对网络的隐含层的输出有了约束,即隐含层节点输出的平均值应尽量为0,这样的话,大部分的隐含层节点都处于非activite状态。

怎么衡量某个隐藏神经元的激活度?

取平均就好了,假设 $ a_j^{2}(x)$ 表示在给定输入x的情况下,隐藏神经元j的激活度,那么自然就有平均激活度.

因此,此时的sparse autoencoder损失函数表达式为:

我的头像
可以看出,稀疏自编码神经网络的代价函数是BP神经网络的代价函数加上一个稀疏性惩罚项。
后面那项为KL距离,其表达式如下:

我的头像

“隐含层节点输出平均值”求法如下:

我的头像

$\rho$ 为稀疏性参数,假如这里设为0.2,则KL散度会在 “隐含层节点输出平均值” 取0.2时得最小值0, 罚因子会有如下性质(这里取稀疏性参数为0.2):

我的头像