正则自编码器之收缩自编码器(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 Autoencoder,CAE)是一种基于自编码器的无监督学习算法,用于数据降维和特征提取。CAE通过加入一个正则化项来限制自编码器在重构数据时的变形,从而提高模型的稳定性和泛化能力。 在使用tensorflow实现CAE进行数据降维时,可以按照以下步骤进行: 1. 定义模型结构:CAE由编码器和解码器两部分组成。编码器将高维数据映射到低维空间,解码器将低维数据映射回原始空间。在定义模型结构时,需要设置输入数据的维度、编码器和解码器的层数、每层的神经元个数等参数。 2. 定义损失函数:CAE的损失函数由两部分组成,重构误差和正则化项。重构误差用于衡量模型在重构数据时的误差,常用的损失函数包括均方误差(MSE)和交叉熵损失(Cross-Entropy)。正则化项用于限制编码器在映射数据时的变形程度,常用的正则化项包括L1正则化和L2正则化。 3. 训练模型:使用tensorflow的优化器对模型进行训练。在训练过程中,需要指定训练数据、损失函数、优化器、学习率等参数。为了避免过拟合,可以使用早停法或正则化等技术对模型进行优化。 4. 应用模型:训练完成后,可以使用编码器将高维数据映射到低维空间,实现数据降维。也可以使用解码器将低维数据映射回原始空间,实现数据重构。 总结来说,使用tensorflow实现收缩自编码器进行数据降维,需要定义模型结构、损失函数、训练模型和应用模型四个步骤。通过合理设置参数和优化模型,可以得到较好的数据降维效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值