基于重构损失的方法——自编码器

表示学习方法有两种典型的,一个是基于重构损失的方法,另一个是基于对比损失的方法。

目录

基于重构损失的方法——自编码器

自编码器

正则自编码器

1.【去噪自编码器】

2.【稀疏自编码器】

变分自编码器

1.【变分自编码器的原理】

2.【与自编码器对比】


基于重构损失的方法——自编码器

自编码器也是一种表示学习模型,但是不利用便签,而是以输入数据为参考,是一种无监督的学习模型,它可以用于数据降维特征提取

自编码器

自编码器就是——将输入映射到某个特征空间,再从这个特征空间映射回输入空间进行重构。最简单的自编码器由三层组成:1个输入层、1个隐藏层、1个输出层。

基于重构损失的方法——自编码器_第1张图片

基于重构损失的方法——自编码器_第2张图片

自编码器不需要标签信息,他是通过不断最小化输入和输出之间的重构误差进行训练的:

如果中间层的神经元比原有的维度低,那么这种条件的编码器,叫做欠完备自编码器。可以得到类似主成分分析(PCA)的效果。

正则自编码器

如果中间层的神经元比原有维度高或者等于,这种条件的编码器叫做过完备编码器。这时候需要一些约束,要不然学不到任何有价值的特征。

1.【去噪自编码器】

在原始输入的基础上加入了一些噪声作为输入,解码器需要重构出不加噪声的原始输入。具体的做法很简单,就是将输入一部分置0。其中,损失函数为:

2.【稀疏自编码器】

除了给输入加噪声,还可以在损失函数上加入正则。也就是尽可能使大多数的神经元处于不活跃的状态。使用相对熵作为正则项:

基于重构损失的方法——自编码器_第3张图片

 其中,^p表示一个神经元上在所有样本上的平均活跃度,p表示期望活跃度,接近0。也就是对于偏离期望比较大的神经元进行惩罚。相对熵可以量化两个概率分布之间的差异,差异越大,值越大。加上惩罚之后,损失函数变为:

 其中λ是调节正则项的权重。

变分自编码器

变分自编码可以用于生成新的样本数据。

1.【变分自编码器的原理】

变分自编码器的本质是生成模型,生成模型的目的就是依据现有的数据构建分布,再从构建好的分布中采样,获得新的数据。例如,图像数据,就是要构建像素之间的依赖关系以生成样本。

如果,z为隐变量(手写数字,它的隐变量就是写什么数字,数字的大小,笔画的粗细等等),隐变量的概率密度分布为 p(z),存在一个映射f,可以把p(z)中采样的z映射到与X比较相似的样本数据。这里有两个问题,一个是隐变量z的选取,一个是计算积分:

对于隐变量z的选择变分编码器假设z的每个维度没有明确的含义,仅仅要求方便采样。因此假设z服从标准正态分布z~N(0,I) .但是对于大多数的z不能生成与x相似的样本。那么,我们就需要那些可以生成比较像X的隐变量z。现在,就需要知道z的后验分布p(z|x),我们用q(z|x)来近似。下面来计算一下q(z|x)与p(z|x)的KL距离:

基于重构损失的方法——自编码器_第4张图片

 其中,右边第一项实际上就是一个解码器,将基于x得到的最有可能的隐变量采样出来。第二项是一个正则项。

因为假设p(x|z)是正态分布,因此:

基于重构损失的方法——自编码器_第5张图片

其中,f可以用神经网络实现。对于q(x|z),我们也假设服从正态分布:

基于重构损失的方法——自编码器_第6张图片

根据上述原理,可以得出变分自编码器的结构,如图:

 

基于重构损失的方法——自编码器_第7张图片

隐变量z是通过采样得到的, 但是无法进行反向传播,但是我们可以先从正态分布N(0,I)中采样得到,然后隐变量z通过计算得到:,也就对应上图中的a,这样就解决了反向传播的问题。

2.【与自编码器对比】

自编码器是一种无监督的表示学习方法,而变分自编码器本质上是生成模型。传统自编码器的隐藏空间不是连续的,是一个个样本点的编码构成,因此对于没有样本编码的地方,由于解码器没有见过这种隐藏层的特征,无法给出有意义的输出。而变分编码器不同,它构建的是样本的分布p(x),因此可以输出有意义的输出。当训练完成后,只使用解码器就可以生成样本。

 

 

你可能感兴趣的:(图神经网络,深度学习,神经网络)