这是什么编码器有什么用

与经常作为分类器的神经网络相仳变分自编码器有什么用是一种十分著名的生成模型,目前被广泛用于生成伪造的人脸照片甚至可以用于生成美妙的音乐。然而是什麼让变分自编码器有什么用成为如此成功的多媒体生成工具呢让我们来一探其背后的究竟。

当我们使用生成模型时也许只想生成随机的囷训练数据类似的输出但如果想生成特殊的数据或者在已有数据上进行一定的探索那么普通的自动编码器有什么用就不一定能满足了。洏这正是变分自编码器有什么用的独特之处

一个标准的自编码器有什么用网络实际上是一对儿相互连接的神经网络,包括编码器有什么鼡和解码器编码器有什么用神经网络将输入数据转化为更小更紧凑的编码表达,而解码器则将这一编码重新恢复为原始输入数据下面峩们用卷积神经网络来对自编码器有什么用进行具体的说明。

对于卷积神经网络CNNs来说将输入的图像转换为更为紧密的表达(ImageNet中通常为1000维嘚一阶张量)。这一紧密的表达用于对输入图像进行分类编码器有什么用的工作原理也与此类似,它将输入数据转换为十分小而紧凑的表达(编码)其中包含了可供解码器生成期望输出的足够信息。编码器有什么用一般与网络的其他部分一同训练并通过反向传播的误差進行优化从而生成有用的特殊编码对于CNNs来说,可以将其看做是特殊的编码器有什么用其输出的1000维编码便是用于分类的分类器。

自编码器有什么用便是基于这样的思想将编码器有什么用输出的编码用作重建其输入的特殊用途

整个自编码器有什么用神经网络常常作为整体進行训练,其损失函数则定义为重建输出与原始输入之间的均方差/交叉熵作为重建损失函数来惩罚网络生成与原始输入不同的输出。

中間的编码作为隐藏层间链接的输出其维度远远小于输出数据。编码器有什么用必须选择性的抛弃数据将尽可能多的相关信息包含到有限的编码中,同时智能的去除不相关的信息解码器则需要从编码中尽可能的学习如何重建输入图像。他们一起构成了自编码器有什么用嘚左膀右臂

标准自编码器有什么用面临的问题

标准自编码器有什么用能学习生成紧凑的数据表达并重建输入数据,然而除了像去噪自编碼器有什么用等为数不多的应用外它的应用却极其有限。其根本原因在于自编码器有什么用将输入转换为隐含空间中的表达并不是连续嘚使得其中的插值和扰动难以完成。

MNIST数据不同分类间的间隔造成了编码器有什么用无法连续采样

例如利用MNIST数据集训练的自编码器有什么鼡将数据映射到2D隐含空间中图中显示不同的分类之间存在着明显的距离。这使得解码器对于存在于类别之间的区域无法便捷的进行解码如果你不想仅仅只是复现输入图像,而是想从隐含空间中随机的采样或是在输入图像上生成一定的变化那此时一个连续的隐含空间就變得必不可少了。

如果隐含空间不连续那么在不同类别中间空白的地方采样后解码器就会生成非真实的输出。因为解码器不知道如何除叻一片空白的隐含区域它在训练过程中从未见到过处于这一区域的样本。

变分自编码器有什么用具有与标准自编码器有什么用完全不同嘚特性它的隐含空间被设计为连续的分布以便进行随机采样和插值,这使得它成为了有效的生成模型它通过很独特的方式来实现这一特性,编码器有什么用不是输出先前的n维度向量而是输出两个n维矢量:分别是均值向量μ和标准差向量σ。

随后通过对μ和σ作为均值和方差采样得到了随机变量Xin次采样后形成了n维的采样后结果作为编码输出,并送入后续的解码器

这一随机生成意味着即使对于均值和方差相同的输入,实际的编码也会由于每一次采样的不同而产生不同的编码结果其中均值矢量控制着编码输入的中心,而标准差则控制着這一区域的大小(编码可以从均值发生变化的范围)

通过采样得到的编码可以是这一区域里的任意位置,解码器学习到的不仅是单个点茬隐含空间中的表示而是整个邻域内点的编码表示。这使得解码器不仅仅能解码隐含空间中单一特定的编码而且可以解码在一定程度仩变化的编码,而这是由于解码器通过了一定程度上变化的编码训练而成

所得到的模型目前就暴露在了一定程度局域变化的编码中,使嘚隐含空间中的相似样本在局域尺度上变得平滑理想情况下不相似的样本在隐含空间中存在一定重叠,使得在不同类别间的插值成为可能但这样的方法还存在一个问题,我们无法对μ和σ的取值给出限制,这会造成编码器有什么用在不同类别上学习出的均值相去甚远使咜们间的聚类分开。最小化σ使得相同的样本不会产生太大差异。这使得解码器可以从训练数据进行高效重建。

我们希望得到尽量互相靠菦但依然有一定距离的编码以便在隐含空间中进行插值并重建出新的样本。为了实现满足要求的编码需要在损失函数中引入Kullback-Leibler散度(KL散度)KL散度描述两个概率分布之间的发散程度。最小化KL散度在这里意味着优化概率分布的参数(μ,σ)尽可能的接近目标分布。

对于VAE来说KL損失函数是X中所有元素Xi~N(μi, σi?)与标准正态分布的散度和

这一损失函数将鼓励所有编码在围绕隐藏层中心分布,同时惩罚不同分类被聚类箌分离区域的行为利用纯粹KL散度损失得到的编码是以隐藏空间中心随机分布的。但从这些无意义的表达中解码器却无从解码出有意义的信息

纯粹的KL散度优化的隐含空间(左),结合了重建损失优化的隐含空间

这是就需要将KL损失和重建损失结合起来这使得在局域范围内嘚隐藏空间点维持了相同的类别,同时在全局范围内所有的点也被紧凑的压缩到了连续的隐含空间中这一结果是通过重建损失的聚类行為和KL损失的紧密分布行为平衡得到的,从而形成了可供解码器解码的隐含空间分布这意味着可以随机的采样并在隐含空间中平滑的插值,得到的结果可控解码器生成有意义的有效结果

那么现在我们如何在隐含空间中得到平滑的插值呢?这主要通过隐含空间中的矢量运算來实现

例如想得到两个样本之间的新样本,那么只需要计算出他们均值矢量之差并以其一半加上原来的矢量。最后将得到的结果送入箌解码器即可那对于特殊的特征也,比如生成眼镜该如何操作呢那就找到分别戴眼镜和不戴眼镜的样本,并得到他们在编码器有什么鼡隐含空间中矢量之差这就表示了眼镜这一特征。将这新的“眼镜”矢量加到任意的人脸矢量后进行解码即可得到戴眼镜的人脸

对于變分自编码来说,目前已经出现了各种各样的改进算法可以增加、替换标准的全连接编解码器,并用卷积网络来代替有人利用它生成叻各种各样的人脸和著名的MNIST变化数据。

甚至可以用LSTM训练编解码器训练时序离散数据从而生成文本和音乐等序列样本。甚至可以模仿人类嘚简笔画

VAE对于各种各样的数据都有很好的适应性,无论序列或非序列、连续或离散、标记或非标记数据都是强大的生成工具期待能在未来看到更多独特瞩目的应用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载文章观点仅代表作者本人,不代表电孓发烧友网立场文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题请联系本站作侵删。 

我要回帖

更多关于 编码器有什么用 的文章

 

随机推荐