分享
AutoEncoders
输入“/”快速插入内容
AutoEncoders
AutoEncoder
Autocoder 是为了重建高维数据而发明的一个网络模型,同时由于其可以压缩数据到隐空间(latent space),所以也能拿来作为维度缩减,就像Principal Component Analysis(PAC)和Matrix Factorization(MF)做的。
💡
PAC是矩阵中分析的
线性函数
的子空间求解,而使用神经网络可以将
非线性
引入其中
设模型包含一个encoder函数
和一个decoder
,那么重建的输入
,则当激活层是sigmoid可以用Cross Entropy或者直接使用MSE Loss:
Denoising AutoEncoder
AutoEncoder学习的是一个恒等函数,如果参数过多所以会有overfit的风险。所以给输入x加上了一层噪声以破坏输入,加噪后的corrupted image表示为
,整体模型损失表示为:
Denoising AutoEncoder用了类似Dropout的方法,随机地把输入图像的一些值丢掉,只是这个文章发表于2008,而dropout发表于2012(
Hinton, et al. 2012
)
Sparse AutoEncoder
Sparse AutoEncoder采用的抗拟合和增加鲁棒性的方法是给网络添加一个penalty,强制网络的激活层只有一小部分是启用的。其实相当于dropout了一些数据
设第
层隐藏层有
个神经元,对于第
个神经元来说,他的激活函数是
。那么神经元的激活因子
就应该逼近于一个称为稀疏参数的较小数字
,稀疏参数通常设置为0.05:
添加这个约束的方法是给网络的损失函数加上一项以
和
为均值的伯努利分布的KL散度,并以一个超参数
控制约束的强度
k-Sparse AutoEncoder
k-Sparse AutoEncoder 则是只在bottleneck层对隐变量取top-k,其余的值直接丢弃。那么假设latent value
,k-sparse过程描述为
,则损失函数可以描述为:
注意的点为反向传播只发生在top-k节点上。
Contractive AutoEncoder
类似sparse AutoEncoder,Contractive AutoEncoder计算了编码器激活函数的雅克比矩阵的二范数,以减小数据点边上的微小扰动
是压缩
的单元输出(没看懂)
Variational AutoEncoder
因为模型学习时候过拟合了,所以前面的这些AutoEncoder的隐空间基并不是隐空间的正交且唯一的基,也就导致了从隐空间的变量
到高维空间的映射并不一定成功,有可能会生成乱码图片。所以前面的AutoEncoder都在想办法往网络中加噪声以抵抗过拟合,提高隐空间维度上基的正交程度。
变分自动编码器和前面的AutoEncoder都不太一样,它不将输入映射到一个固定的vector,而是将输入映射到一个分布,这样就可以尽量让数据点分布到所有隐空间基的全轴上,提高正交化。