正则自编码器之收缩自编码器(Contractive Autoencoders)

衡量一个自编码器模型的效果可以从两个标准入手:1.模型是否可以很好的重建输入信号;2.模型对输入数据在一定程度下的扰动是否具有不变性。

为了使自编码器在标准2下具有更好的效果,Rifai等人提出了收缩自编码器,其主要目的是为了抑制训练样本在所有方向上的扰动。为了实现这一目标,Rifai等人提出在传统自编码器的目标函数上增加一个惩罚项来达到局部空间收缩的效果。该惩罚项是关于输入的隐藏层表达的Jacobian矩阵的F范数,其目的是为了使特征空间在训练数据附近的映射达到收缩效果,表达式如下:

\left \| J_{f}(x) \right \|_{F}^{2}=\sum_{ij}(\frac{\partial h_{j}(x)^2 }{\partial x_{i}^2})                                                                   (公式1)

把公式1作为惩罚项添加到自编码器的损失函数中,是因为当惩罚项具有比较小的一阶导数时,说明与输入信号对应的隐藏层表达比较平滑,则当输入出现一定变化时,隐藏层表达不会发生过大的变化,由此可以使自编码器对输入变化不敏感。收缩自编码器的损失函数表示如下:

J_{CAE}(W)=\sum(L(x,y))+\lambda \left \| J_{f}(x) \right \|_{F}^2                                             (公式2)

公式2中\lambda用于控制惩罚项强度的超参数,可选择0-1之间的任意值。公式2中的第一项是为了让重构误差尽可能的小,第二项可以看做是自编码器在尽可能的丢弃所有信息。由此CAE最终只会捕获到训练数据上出现的扰动信息,使模型对扰动具有不变性

稀疏自编码器通过对大部分隐藏层神经元进行抑制,隐藏层输出对应于激活函数的左饱和区域。收缩自编码器通过对隐藏层神经元的输出推向它的饱和区域来达到收缩性。

收缩自编码器的鲁棒性体现在对隐藏层表达上,而去噪自编码器的鲁棒性体现在重构信号中。

高阶收缩自编码器(High Order Contractive Autoencoders)

高阶收缩自编码器在收缩自编码器的损失函数基础上添加了一个二阶惩罚项,该惩罚项是关于输入的隐藏层表达的Hessian矩阵的F范数,具体表示如下:

\left \| H_{f}(x) \right \|_{F}^{2}=\left \|\frac{\partial J_{f}(x)}{\partial x} \right \|_{F}^{2}                                                                       (公式3)

由此,高阶收缩自编码器的损失函数为:

J_{CAE}(W)=\sum(L(x,y))+\lambda \left \| J_{f}(x) \right \|_{F}^2+\gamma \left \| H_{f}(x) \right \|_{F}^{2}                       (公式4)

由于二阶导数的计算会极大增加模型的复杂度,Rifai等人提出利用随机近似方法将二阶导数转换为一阶导数来降低其计算复杂度:

\left \| H_{f}(x) \right \|_{F}^{2}=\lim_{\sigma \rightarrow 0}\mathbb{E}[\left \| J_{f}(x)-J(x+\epsilon ) \right \|_{F}^{2}]                                            (公式5)

由此,高阶收缩自编码器的最终目标是最小化如下目标函数:

J_{CAE+H}(W)=\sum(L(x,y))+\lambda \left \| J_{f}(x) \right \|_{F}^2+\gamma \left \| \mathbb{E}[\left \| J_{f}(x)-J(x+\epsilon ) \right \|_{F}^{2}] \right \|                 (公式6)

你可能感兴趣的:(正则自编码器之收缩自编码器(Contractive Autoencoders))