在IanGoodfellow等人在论文中介绍生成对抗网络两年后,YannLeCun将对抗训练称为“过去十年中关于ML最有趣的想法”.尽管GAN很有趣且很有前途,但它们只是生成模型家族的一部分,并且从完全不同的角度解决传统的AI问题。在本文中,我们将比较三种常见的生成模型。生成算法当我们想到机器学习时,首先想到的可能是判别算法。判别模型是根据输入数据的特征对输入数据的标签或类别进行预测,是所有分类和预测解决方案的核心。与这些模型相比,生成算法帮助我们讲述数据的故事,并为数据的生成方式提供可能的解释。与将特征映射到标签的判别算法不同,生成模型尝试预测给定标签的特征。判别模型定义标签y和特征x之间的关系,生成模型回答“你如何得到y”的问题。生成模型model为P(Observation/Cause),然后利用贝叶斯定理计算P(Cause/Observation)。通过这种方式,他们可以捕获p(x|y)、给定y的x的概率,或者给定标签或类别的特征的概率。所以实际上,生成算法也可以用作分类器,可能是因为它们对类的分布进行建模。生成算法有很多,但属于深度生成模型类别的最流行模型是变分自动编码器(VAE)、GAN和基于流的模型。VAE变分自动编码器(VAE)是一种生成模型,“提供对潜在空间中观察结果的概率描述”。简而言之,这意味着vae将潜在属性存储为概率分布。变分自编码器(Kingma&Welling,2014)或VAE的思想深深植根于变分贝叶斯和图形模型方法。一个标准的自动编码器由2个相似的网络组成,一个编码器和一个解码器。编码器获取输入并将其转换为更小的表示,解码器可以使用该表示将其转换回原始输入。他们将输入转换成的潜在空间和他们的编码向量所在的空间可能不是连续的。这是生成模型的问题,因为我们都想从潜在空间中随机采样,或者从连续的潜在空间中生成输入图像的变体。另一方面,变分自动编码器具有连续的潜在空间,这使得随机采样和插值更加方便。为了实现这一点,编码器的隐藏节点不输出编码向量,而是两个相同大小的向量:一个均值向量和一个标准差向量。每个隐藏节点都认为自己是高斯分布的。这里均值和标准差向量的第i个元素对应于第i个随机变量的均值和标准差。我们从这个分布向量中采样,解码器从输入向量的概率分布中随机采样。这个过程就是随机生成。这意味着即使对于相同的输入,当均值和标准差保持不变时,每次传递的实际编码也会不同。自动编码器的损失是最小化重建损失(输出与输入的相似程度)和潜在损失(隐藏节点与正态分布的接近程度)。潜在损失越小,可以编码的信息就越少,因此重建损失会增加,因此在潜在损失和重建损失之间存在权衡。当latentloss较小时,生成的图像会与训练图像过于相似,效果较差。当重建损失较小时,训练时的重建图像较好,但生成的新图像与重建图像有较大差异,因此需要找到一个很好的平衡点。VAE可以处理各种类型的数据,顺序的和非顺序的,连续的或离散的,甚至标记的或未标记的,这使它们成为非常强大的生成工具。但VAE的一个主要缺点是它们生成的输出模糊。正如Dosovitskiy和Brox所指出的,VAE模型通常会产生不切实际、模棱两可的样本。这是由恢复数据分布和计算损失函数的方式造成的。Zhao等人在2017年发表的一篇论文。建议在不使用变分贝叶斯方法的情况下修改VAE以提高输出质量。生成对抗网络生成对抗网络(GAN)是基于深度学习的生成模型,能够生成新颖的内容。GAN架构最早是在IanGoodfellow等人2014年的一篇论文中描述的。题为“生成对抗网络”。GAN采用??监督学习方法,使用两个子模型:生成新示例的生成器模型和尝试将示例分类为真实或假(生成)的鉴别器模型。生成器:用于从问题域生成新的似是而非的示例的模型。鉴别器:用于将示例分类为真实(来自领域)或虚假(生成)的模型。这两个模型作为竞争对手进行训练。生成器直接生成样本数据。它的对应部分,鉴别器,试图区分从训练数据中提取的样本和从生成器中提取的样本。这种竞争过程通过训练持续进行,直到判别器模型在超过一半的时间里无法分辨真假,这意味着生成器模型正在生成非常真实的数据。当判别器成功判别真假样本时,它会得到奖励,其参数保持不变。如果生成器错误,则会受到惩罚并更新其参数。理想情况下,每当鉴别器无法区分并预测“不确定”(例如,50%正确或错误)时,生成器都会从输入域生成一个完美的副本。但是在这里,每个模型都可以压倒另一个模型。如果鉴别器太好,它会返回非常接近0或1的值,生成器将难以获得更新的梯度。如果生成器太好,它会利用鉴别器的弱点导致漏报。所以这两个神经网络必须通过各自的学习率达到相似的“技能水平”,这也是我们常说GAN难训练的原因之一。生成器模型生成器将固定长度的随机向量作为输入,并在定义域中生成样本。该向量是从高斯分布中随机抽取的。经过训练,这个多维向量空间中的点将对应于问题域中的点,形成数据分布的压缩表示。这一步类似于VAE。这个向量空间称为潜在空间,或由潜在变量组成的向量空间。.GAN的生成器将对潜在空间中的选定点进行平均。从潜在空间中提取的新点可以作为生成器模型的输入,并用于生成新的和不同的输出示例。训练后,生成器模型被保留用于生成新的样本。判别器模型判别器模型将示例(来自训练数据集或由生成器模型生成的真实样本)作为输入,并将二元类标签预测为真实或假(生成)。鉴别器是一个正常的(并且很好理解的)分类模型。在训练过程之后,鉴别器被丢弃,因为我们对生成器感兴趣。当然鉴别器也可以用于其他目的,使用GAN可以产生可行的样本,但是GAN的原始版本也有一个缺点:图像是由一些任意噪声生成的。当生成具有特定特征的图像时,无法确定生成该图像的初始噪声值是多少,而是需要搜索整个分布。GAN只区分“真实”和“假”图像。但是没有限制说“猫”的照片必须看起来像“猫”。因此,它可能会导致图像中没有实际对象,但看起来风格相似。GAN需要很长时间来训练。GAN在单个GPU上可能需要数小时,而在单个CPU上可能需要一天以上。基于流的模型基于流的生成模型是精确的对数似然模型,具有易于处理的采样和潜在变量推断。基于流的模型对来自先验的样本应用一堆可逆变换,以便可以计算观察结果的精确对数似然。与前两种算法不同,该模型显式学习数据分布,因此损失函数为负对数似然。在非线性独立分量分析中,流模型f被构造为可逆变换,将高维随机变量x映射到标准高斯潜在变量z=f(x)。流模型设计的核心思想是可以是任意的双射函数,可以由各个简单的可逆变换叠加而成。综上所述:流动模型f由一系列可逆流动组成,如f(x)=f1?···?fL(x),每个fi都有一个可处理的逆矩阵和可处理的雅可比矩阵Mode。有两大类基于流的模型:具有标准化流模型的模型和具有试图增强基本模型性能的自回归流的模型。归一化流模型对于许多机器学习问题至关重要,以便能够做出良好的密度估计。但它本质上很复杂:当我们需要在深度学习模型中进行反向传播时,嵌入的概率分布需要足够简单,以便可以有效地计算导数。传统的解决方案是在潜在变量生成模型中使用高斯分布,尽管大多数现实世界的分布要复杂得多。归一化流(NF)模型,例如RealNVP或Glow,提供了分布的稳健近似。他们通过应用一系列可逆变换函数将简单分布转换为复杂分布。通过一系列的变换,根据变量变换定理,可以将原来的变量反复替换为新的变量,最终得到最终目标变量的概率分布。自回归流模型当归一化流中的流转换被构建为自回归模型时,向量变量中的每个维度都以前一维为条件,流模型的这种变化称为自回归流。与具有标准化流程的模型相比,这是向前迈出的一步。常用的自回归流模型是用于图像生成的PixelCNN和用于一维音频信号的WaveNet。它们都由一堆因果卷积组成——考虑顺序的卷积操作:在特定时间戳的预测仅使用过去观察到的数据。在PixelCNN中,因果卷积由屏蔽乘积内核执行。而WaveNet通过几个时间戳将输出转移到未来时间。基于流的模型在概念上对复杂分布的建模非常友好,但与最先进的自回归模型相比,受到密度估计性能问题的限制。尽管流模型最初可能会取代GAN以产生良好的输出,但它们之间的训练计算成本存在显着差距,基于流的模型生成相同分辨率图像的时间是GAN的数倍。总结每种算法在准确性和效率方面都有其优势和局限性。尽管GAN和基于过程的模型通常比VAE生成更好或更接近真实图像,但后者比基于过程的模型具有更快的时间和更好的参数效率。以下是三种模型的对比总结:可以看出GAN因为并行性非常高效,不可逆。反之,流模型可逆但效率低,而vae可逆且高效但不可并行。基于这些特点,我们可以在实际使用中在输出、训练过程和效率之间做出权衡。
