2022-05-12 15:23:46
浏览数 (17)
1. 自编码器


2. 自编码器的特点
对于上述结构自编码器实际上完成了一个h_{mathbf{W},mathbf{b}}left ( mathbf{x} right )approx mathbf{x} 函数的学习的过程,本身可以说并没有什么意义,但是通过观察上述的结构中,我们发现在自编码器结果中,中间的隐含层,是从特征mathbf{x} 提取出来,同时,这提取出的特征又能还原原先的特征,简单来讲,中间层实现了对原数据的抽象,是原数据的另一种表示。对于中间的隐含层具有两种结构:
- 降维,即隐含层的节点个数要小于输入节点的个数。
- 稀疏,即在隐含层的神经元上加入稀疏性的限制。
3. 稀疏性约束
对于使用Sigmoid作为神经元的激活函数的情况下,若神经元的输出为1 表示该神经元被激活,否则称为未被激活,则稀疏性的含义是指在大多数情况下神经元都是未被激活的。可以使用神经元的输出作为神经元的激活度,即对于隐含层的第j 个神经元,其激活度为:
a_j^{(2)}=fleft ( W_{j1}^{(1)}x_1 W_{j2}^{(1)}x_2 cdots W_{j6}^{(1)}x_6 b_j^{(1)} right )则对于m 个样本,其平均激活度为:
hat{rho }_j=frac{1}{m}sum_{i=1}^{m}left [ a_j^{(2)}left ( mathbf{x}^{(i)} right ) right ]假设令hat{rho }_j=rho ,其中rho 是一个常数,表示的是稀疏性参数,通常可以取一个接近于0 的常数,如取rho =0.05 。为了使得模型比较稀疏,我们希望平均激活度能够尽可能接近稀疏性常数,通常可以取相对熵来度量平均激活度与稀疏性参数之间的差异程度。
4. 相对熵的概念
要说相对熵,首先得说说“什么是熵”。熵也称为信息熵,是反应了一个系统有序化程度的指标,一个系统越有序,那么其熵就越低,反之,熵就越大。熵的公式如下:
Hleft ( x right )=-sum_{i=1}^{n}pleft ( x_i right )logpleft ( x right )对于上述的自编码器模型,其隐含层的第j 个神经元的平均激活度为:
hat{rho }_j=frac{1}{m}sum_{i=1}^{m}left [ a_j^{(2)}left ( mathbf{x}^{(i)} right ) right ]稀疏性常数为:rho ,则对于隐含层的相对熵为:
sum_{j=1}^{s_2}rho logfrac{rho }{hat{rho }_j} left ( 1-rho right )logfrac{1-rho }{1-hat{rho }_j}其中,s_2 表示的是隐含层节点的个数,相对熵又称为KL散度,即:
sum_{j=1}^{s_2}KLleft ( rho parallel hat{rho }_j right )=sum_{j=1}^{s_2}rho logfrac{rho }{hat{rho }_j} left ( 1-rho right )logfrac{1-rho }{1-hat{rho }_j}相对熵是一种用来度量两个分布之间的差异的方法。对于上述的相对熵,若rho =hat{rho }_j 时达到最小值,最小值为0 ,否则差距越大,相对熵的值越大,如下图所示:

从上图中,我们看出:

5. 稀疏自编码器
对于稀疏自编码器的损失函数,其与神经网络的损失函数一致,可以表示为:
Jleft ( mathbf{W},mathbf{b} right )则对于稀疏自编码器,其损失函数即在神经网络的损失函数的基础上加上稀疏性的约束即可,即为:
J_{sparse}left ( mathbf{W},mathbf{b} right )=Jleft ( mathbf{W},mathbf{b} right ) beta sum_{j=1}^{s_2}KLleft ( rho parallel hat{rho }_j right )其中,beta 控制稀疏性的权重。在更新的过程中,原本在神经网络中,更新公式为:
delta _i^{(2)}=left ( sum_{j=1}^{s_2}W_{ji}^{(2)}delta _j^{(3)} right ){f}'left ( z_i^{(2)} right )则在稀疏自编码器中的隐含层为:
begin{matrix} delta _i^{(2)}=frac{partial }{partial z_i^{(2)}}J_{sparse}left ( mathbf{W},mathbf{b};mathbf{x},y right )\ =frac{partial }{partial z_i^{(2)}}left [ frac{1}{2}left | y-h_{W,b}left ( x right ) right |^2 beta sum_{i=1}^{s_2}rho logfrac{rho }{hat{rho }_i} left ( 1-rho right )logfrac{1-rho }{1-hat{rho }_i} right ]\ =frac{partial }{partial z_i^{(2)}}left [ frac{1}{2}sum_{j=1}^{s_3}left | y_j-a_j^{(3)} right |^2 beta sum_{i=1}^{s_2}rho logfrac{rho }{hat{rho }_i} left ( 1-rho right )logfrac{1-rho }{1-hat{rho }_i} right ]\ frac{1}{2}sum_{j=1}^{s_3}frac{partial }{partial z_j^{(3)}}left | y_j-a_j^{(3)} right |^2cdot frac{partial }{partial z_i^{(2)}}z_j^{(3)} beta frac{partial }{z_i^{(2)}}sum_{i=1}^{s_2}rho logfrac{rho }{hat{rho }_i} left ( 1-rho right )logfrac{1-rho }{1-hat{rho }_i}\ end{matrix}begin{matrix} =sum_{j=1}^{s_3}delta _j^{(3)}cdot frac{partial }{partial z_i^{(2)}}sum_{i=1}^{s_2}fleft ( z_i^{(2)} right )cdot W_{ji}^{(2)}\ beta frac{partial }{z_i^{(2)}}left ( rho logfrac{rho }{hat{rho }_i} left ( 1-rho right )logfrac{1-rho }{1-hat{rho }_i} right )\ =sum_{j=1}^{s_3}delta _j^{(3)}cdot W_{ji}^{(2)}cdot {f}'left ( z_i^{(2)} right )\ beta left ( rho cdot frac{hat{rho }_i}{rho }cdot frac{partial }{partial z_i^{(2)}}left ( frac{rho }{hat{rho }_i} right ) left ( 1-rho right )cdot frac{1-hat{rho }_i}{1-rho }cdot frac{partial }{partial z_i^{(2)}}cdot left ( frac{1-rho }{1-hat{rho }_i} right )right )\ end{matrix}begin{matrix} =sum_{j=1}^{s_3}delta _j^{(3)}cdot W_{ji}^{(2)}cdot {f}'left ( z_i^{(2)} right )\ beta left ( hat{rho }_icdot frac{-rho }{left ( hat{rho }_i right )^2}cdot frac{partial }{partial z_i^{(2)}}hat{rho }_i left ( 1-hat{rho }_i right )frac{-left ( 1-rho right )}{left ( 1-hat{rho }_j right )^2}cdot frac{partial }{partial z_i^{(2)}}left ( 1-hat{rho }_j right )right )\ =sum_{j=1}^{s_3}delta _j^{(3)}cdot W_{ji}^{(2)}cdot {f}'left ( z_i^{(2)} right )\ beta left ( frac{-rho }{hat{rho }_i}cdot {f}'left ( z_i^{(2)} right ) frac{-left ( 1-rho right )}{1-hat{rho }_i}cdot left [ -{f}'left ( z_i^{(2)} right ) right ] right )\ =left ( left ( sum_{j=1}^{s_3}delta _j^{(3)}cdot W_{ji}^{(2)} right ) beta left ( -frac{rho }{hat{rho }_i} frac{ 1-rho }{1-hat{rho }_i}right ) right )cdot {f}'left ( z_i^{(2)} right ) end{matrix}对于稀疏自编码器,其更新公式为:
delta _i^{(2)}=left ( sum_{j=1}^{s_2}W_{ji}^{(2)}delta _j^{(3)} beta left ( -frac{rho }{hat{rho }_i} frac{1-rho }{1-hat{rho }_i} right ) right ){f}'left ( z_i^{(2)} right )参考文献
[1] 英文版:UFLDL Tutorial
[2] 中文版:UFLDL教程
[3] 《深度学习》学习笔记(一):稀疏自编码器(Sparse Autoencoder)