2018年7月1日星期日

Jeff Dean与David Patterson:不思考体系结构的深度学习研究者不是好工程师

今年 1 月,谷歌人工智能负责人 Jeff Dean(当时还是谷歌大脑负责人)与 2017 年图灵奖得主、体系结构巨擘 David Patterson(当时获奖结果尚未公布)联合发表了题为《计算机体系结构黄金时代:赋能机器学习革命》的文章。文章指出,机器学习算法正在革命性地着手解决人类社会最为巨大的一些挑战,因此,不难想象,在不远的将来,无论是数据中心还是终端设备,都将会出现专用于机器学习计算的硬件。这样的硬件会具有什么特性?在文章中,作者列出了一系列硬件设计者需要考虑到的关键问题,这些问题对深度学习研究者也十分具有启发性。

另一方面,在摩尔定律逐渐失效和深度学习的算力需求如无底洞般膨胀的今天,深度学习研究者们也在思考:能否改进算法以使其更适应计算硬件?能否帮助优化系统配置?在近日举行的首届「清华-谷歌 AI 学术研讨会」上,Jeff Dean 谈了谈「接下来我们希望设计什么样的模型」,来自谷歌大脑的研究员 Azalia Mirhoseini 则给出了主题演讲「如何用强化学习方法进行系统优化」。

谷歌人工智能负责人 Jeff Dean

如果将这几份工作联系起来,我们似乎就能看出,在深度学习这个 Arxiv 论文增速超越摩尔定律的领域里,谷歌大脑的研究者们如何同时思考软硬件问题以实现系统最佳性能与最佳效率。

「超越摩尔定律」的机器学习

在《黄金时代》论文里,Jeff 和 David 以谷歌开发的两代机器学习 ASIC(用于加速推理的 TPUv1 和用于加速训练的 TPUv2)为例,介绍了很多设计专用硬件的思路。进行硬件设计要着眼于至少 5 年后的模型:现在开始一款 ASIC 的设计,它大约可以在 2 年后投入使用,而一款专用硬件至少需要能够保持 3 年的竞争力才有价值。那么在这样的前提下,设计深度学习专用硬件要考虑哪些问题?在文章中,作者列出了六个这样的关键点,按照从「纯架构相关」到「纯机器学习算法相关」的顺序,分别是:训练、批规模、稀疏性与嵌入、参数量化与提炼、带有软记忆机制的神经网络以及元学习。

训练

谷歌从 2013 年开始设计的第一代 TPU 是针对推理而非训练工作设计的,一定程度上是为训练设计硬件架构要更加困难:

  • 第一,训练的运算量是推理的 3 倍以上。

  • 第二,因为要将全部激活值存储以进行反向传播,训练过程所需的存储也远比推理高。

  • 最后,训练的可扩展性远不如推理,因为需要进行大量昂贵的序列计算。

但是,为训练设计 ASIC 是有价值的,因为研究者的时间是宝贵的而耐心是有限的,如果一次实验需要跑 30 天甚至更长,大概大多数人会选择放弃探索这个方向。

第二代 TPU 就面向训练开发。Jeff 在多次演讲中提到了一些 TPU v2 的成功应用案例,包括用四分之一个 pod 把谷歌的搜索排序模型的训练提速到 14.2 倍,把处理图片的模型训练提速到 9.8 倍等。

TPUv2 在谷歌内部的应用案例

而且,TPUv2 具有几乎是线性的扩展性,64 块 TPU 可以组成一个 TPU pod,提供最高 11.5 PFLOPS 的算力。用一块 TPUv2 把 ResNet-50 训练到 76% 准确度需要 1402 分钟,用二分之一个 pod(32 块 TPUv2)只需要 45 分钟(31.2 倍速)。

TPUv2 近乎线性可扩展

虽然 TPU 云价格不菲,但时间就是生命,生命就是金钱。另外,如果你是一位有志于机器学习研究并致力于开源自己的工作,谷歌正以 TensorFlow 研究云的形式向研究者免费提供一千块 TPU。

批规模(batch size)

批量是越大越好还是越小越好?这是一个在研究上仍然有争议的问题。

直觉上,理想选择是带有动量的批规模为 1 的随机梯度下降(SGD with momentum at a minibatch size of 1),这时单位计算量带来的准确率提升最大。另外选择一个大于 1 的批规模相当于把输入维度直接提升了一维(Jeff 原话:一想到这儿我就头痛。)然而在当前用于训练的硬件中,以 GPU 为例,它执行程序时的基本单元,即每个 warp 包含 32 个线程(threads),因此如果你的批规模不是 32 的整数倍,将会导致效率降低,所以现行的模型通常都采用 32 或者 64 作为批规模。

批规模与计算效率

但是,从 2017 年开始,有一些看起来前景明朗的研究显示,我们可以用 8192 甚至 32768 作为批规模来高效训练用于图像的卷积神经网络。

直到批规模上升到 8k 左右,验证集的错误率仍然能保持相对低的水平

source:Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour (1706.02677)

值得一提的是,Yann LeCun 对于增加批量持有强烈反对态度,他曾经在今年 4 月份转发一篇支持小批量的论文称,「用巨型批量做训练有害健康……选择 32 而不是 1 做批量只能说明我们的硬件很差劲。」

哦,8192 那篇论文是 Facebook 的工作,作者列表里包括 Ross Girshick,贾扬清,还有何恺明……

稀疏性与嵌入(Sparsity and Embeddings)

「我们想要更大的模型,但希望每一个样本只激活它的一小部分。」又是一个 Jeff 反复提到的趋势。

「我们想要什么样的模型?」

大模型是好的,因为巨大的参数量意味着我们可以记住数据集方方面面的特性。但是如果我们在处理每一个数据的时候都需要激活整个模型,这意味着巨大的计算成本。因此,最理想的状态是拥有一个可以分割成众多独立的小部分的庞大模型,每一部分都承担不同分工,当数据进入模型时,模型按任务需求激活少数几个部,让大部分保持闲置状态。这样的特性又可以称作「粗粒度稀疏性」。

粗粒度稀疏性

Source: Exploring the Regularity of Sparse Structure in Convolutional Neural Networks (1705.08922)

谷歌在 ICLR2017 的一篇论文上就提出了一个叫做混合专家层(MoE)的概念。每一个「专家」相当于神经网络中的一小撮参数,只不过比普通神经网络里的参数更容易训练,而一层由超过 2000 个专家组成。

MoE 层的结构

Source: Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer (1701.06538)

训练过程中,除了学习模型参数,还要学习如何做路由选择(routing),即如何根据一个样本选择激活的「专家」。在语言任务里,模型学会了如何根据语境选择「专家」:专家 381 擅长谈论科学研究,专家 752 擅长「领导力」,如果涉及速度,那就交给专家 2004 吧。

路由选择学到了什么

Source: Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer (1701.06538)

在英-法翻译任务里,相比于之前的 STOA 模型 GNMT,模型的规模上升了 35 倍,却可以用更少的 GPU 在六分之一的训练时间内完成。

相比于 MoE,应用更为广泛的动态路由的案例是嵌入机制。无论是将单词从数万维的独热向量映射到几百维的词嵌入,还是给每一个 YouTube 视频赋予一个数千维的、能够捕捉它与其他视频间关系的表征,都是一个需要为了一个样本,从庞大的数据结构(可能高达数百 G)中随机地读取非常少的数据(数十或数百字节,不到 1KB)。

现有硬件结构里还鲜有专门处理动态路由选择的高效读取的解决方案。

参数量化与提炼(Quantization and Distillation)

稀疏性和嵌入的共同点是保留「大模型」,而关注如何能精确定位到其中的「小部分」。参数量化与提炼则直接追求「小模型」。

参数量化的是低精度运算的另一种说法。

现在常见的做法是,在训练阶段采用浮点数,而在推理中采用定点数。例如在 TPU 的例子中,所有的推理只采用 8 比特定点数表达。其实现原理是在完成训练后,根据各层的参数和激活部分的最大值和最小值,找到表达其整数部分所需的最小比特数,用此表示,然后用 8 比特中剩下的部分表示其小数点后部分。实证研究显示,将精度从 32 比特降低到 8 比特,只会少量影响 GoogLeNet 和 VGG-16 的表现,但是如果继续下降到 6 比特,模型效果就会受到显著影响。

推理参数量化对精度的影响

Source: Going Deeper with Embedded FPGA Platform for Convolutional Neural Network

cadlab.cs.ucla.edu/~jaywang/papers/fpga16-cnn.pdf 

文中提到,只有很少的研究关注了如何在训练阶段采用低精度运算,大多数结果都仍然集中在 MNIST,CIFAR-10 等小数据集上。不过低精度训练也在逐渐获得更多关注,ICLR2018 上,百度和英伟达提出了「混合精度训练法」,在前向、后向计算中使用 FP16 运算,在权重更新时使用 FP32 计算,在 ImageNet 上的分类任务、Pascal VOC 2007 上的检测任务、WMT15 上的翻译任务等多个大型数据集的任务中,达到了使用 FP32 所获得的准确率,同时节省了算力需求和近半的存储需求。如今,英伟达已经给出了用混合精度进行训练的 SDK 范例。

提炼方法是 Hinton 在 NIPS2014 上提出的,试图以先让复杂模型进行学习分类问题,然后将最后一层 softmax 学到的软分类视为知识,训练简单模型以预测软分类。这样的方法得到的简单模型(层数更少、每层神经元更少)也能达到复杂模型同样的准确度。提炼方法让人们思考,是否能够直接训练小模型。小模型和大模型需要的专用硬件特性会截然不同,因此模型的发展方向也是硬件发展方向的重要影像因素。

带有软记忆机制的神经网络(Networks with Soft Memory)

这一部分强调的是一些对存储和存储访问有特殊需求的深度学习技巧,例如注意力机制。传统的记忆机制每次只要访问存储数据的表中的一个值,但是以注意力机制为代表的软记忆机制则需要对表内的所有值进行加权平均。

相比于特定运算的加速,当前问世的或已经进入开发周期后段的深度学习 ASIC 更强调数据流与存储的优化。原 Movidius CEO Remi El-Ouazzane 在谈论其视觉处理单元 VPU 的设计理念时提到,VPU 中的几乎所有架构设计都是为了同一个目标:优化数据流。在当前的终端深度学习计算中,用于数据传输的能量消耗是用于计算的 10 倍乃至更多,因此要使性能最大化并将功耗降至最低,唯一的方法就是增加数据的本地性,减少外部内存访问次数。致力于加速训练的 Intel Nervana NNP 的逻辑也是这样。

FPGA 的逻辑也是如此。大量的引脚和可以根据算法定制数据通路(datapath)的逻辑单元,让它不需要像 GPU 一样需要反复调取片外存储中的数据,理想状态时,只要数据一次性流进去再流出来,算法就完成了。

元学习(Learning to Learn, L2L)

深度学习相比于机器学习的「进步」,就是将人工选择的固定特征提取过程变成了机器选择的可训练特征提取过程。研究者只需要选择一系列基本模型结构和超参数,就可以由机器接手,进行特征提取和分布拟合。

在上述的五个部分里,无论模型采用什么结构、技巧,作出这些决策都仍然是人类的工作。而在元学习的设想里,人类的决策工作进一步被大量的计算和机器自动完成的实验所替代。

在自动机器学习技术的种种方法中,谷歌选择了强化学习的方法。模型的准确度被视为「奖励信号」。在获得了 ICLR2017 最佳论文的《用强化学习进行神经网络结构搜索》中,谷歌的研究员分别为 CIFAR-10 和 PTB 数据集搜索到了最佳的 CNN 和 LSTM RNN 结构。

普通 LSTM 结构和结构搜索出的结构

Source: Neural Architecture Search with Reinforcement Learning (1611.01578)

而事实上不只是模型结构,「用强化学习进行元学习」的思路适用于深度学习的方方面面:选择输入数据预处理路径,选择激活函数、选择优化与更新策略,以及,选择硬件配置。

本次谷歌大脑研究员 Azalia 的演讲就是以优化硬件配置为主题。传统的硬件配置多数以贪婪启发式方法为基础,需要工程师对硬件的方方面面,从算力到带宽,都有深刻的理解。而即便如此,随着模型越来越大,使用的设备越来越多,得到的配置方案也越来越难具有可泛化性。

谷歌大脑研究员 Azalia Mirhoseini

因此,将一种特定配置的收敛时间的期望作为奖励信号来将各运算分配到不同设备上,就变成了一个有吸引力的解决方案。算法学到了并不符合人类直觉的配置,但比专家设计出来的方案快 27.8%,节约近 65 个小时。

元学习得到的运算硬件配置以及效果

Source: Device Placement Optimization with Reinforcement Learning (1706.04972)

元学习指向的道路是让我们更高效地利用大规模的计算资源,同时「节省」机器学习专家的劳动力。除此之外,在这个深度学习算法和计算设备都在快速更新迭代的时期,元学习也奠定了快速进行软硬件结合的系统设计的基础。

将所有这些愿景综合起来,深度学习下一个阶段会以何种形式出现?

Jeff 在演讲中概括为:

  • 只是稀疏地激活的更为庞大的模型。

  • 能够解决多个任务的单一模型。

  • 在庞大的模型中动态地学习新路径,并不断增加新路径。

  • 专用于进行机器学习超算的硬件

  • 高效地配置在硬件上的机器学习模型。

紫色模块为新任务和为此而增加的新节点,加粗的红线表示用于解决新任务的新路径

你的研究思路是否有助于其中一个目标的实现?又是否将从这样的模型中获益?

无论答案是什么,确定的一件事情是:研究者、工程师、体系结构设计者,在当下,想要朝通用人工智能进攻的道路上前行,这些身份,一个都不能少。

]]> 原文: https://ift.tt/2tSelEH
RSS Feed

机器知心

IFTTT

T2F:利用StackGAN和ProGAN从文本生成人脸

项目地址:https://ift.tt/2IDW8yQ

本项目利用深度学习由文本生成人脸图像,除了结合 StackGAN 和 ProGAN,作者还参考了从文本到图像的研究,并修改为从文本合成人脸。

StackGAN++由树状结构的多个生成器和鉴别器组成;从树的不同分支生成对应于同一场景的多尺度图像。ProGAN 的关键思想是逐步增加生成器和鉴别器的表征能力:从低分辨率开始,我们添加了新的层,随着训练的进行,这些层的细节越来越精细。

  • 论文:StackGAN++: Realistic Image Synthesis with Stacked Generative Adversarial Networks

  • 地址:https://ift.tt/2yicnBr


  • 论文:Progressive Growing of GANs for Improved Quality, Stability, and Variation

  • 地址:https://ift.tt/2ywa6CX

数据

Face2Text v1.0 数据集包含来自 LFW(Labelled Faces in the Wild)数据集 400 个随机选择图像的自然语言描述。这些数据已经经过清洗,剔除了不适合、不相关的人像描述。有些文字不仅描述了面部特征,还提供了一些来自图片的隐含信息。例如,其中一张人像的描述这样写道:「图中人物可能为一名罪犯」。由于以上因素及数据集相对较小,我决定使用该数据集来证明架构的概念。最终,我们可以扩展模型,以灌输更大、更多样的数据集。

数据存储地址:data/LFW/Face2Text/face2text_v0.1 

样例:

架构:

视频 Demo:

使用 LSTM 网络将文本描述编码为一个汇总向量。使图中所示的汇总向量,即嵌入(psy_t),通过条件增强块(单一线性层)以获得 GAN 本征向量的文本部分(使用变分自动编码器,如重新参数化技术)作为输入。本征向量的第二部分为随机高斯噪声。由此产生的本征向量被馈送到 GAN 的发生器部分,而嵌入被馈送到鉴别器的最后一层用于条件分布匹配。GAN 的训练进展与 ProGAN 论文所述完全一致;即在增加的空间分辨率上逐层进行。使用淡入技术引入新层以避免破坏先前的学习。

运行代码

代码存在 implementation/子目录中。使用 PyTorch 框架实现。因此,若要运行此代码,请先安装 PyTorch version 0.4.0,然后再继续。

代码组织:

  • configs:包含用于训练网络的配置文件(你可以使用任意一个,也可以自己创建)。

  • data_processing:包含数据处理和加载模块的包

  • networks:包含网络实现的包

  • processed_annotations:目录存储运行 process_text_annotations.py 脚本的输出

  • process_text_annotations.py:处理标题并将输出存储在 processed _ annotations /目录中。(无需运行此脚本;pickle 文件包含在报告中。)

  • train_network.py:运行训练网络的脚本。

示例配置:

# All paths to different required data objects images_dir: "../data/LFW/lfw" processed_text_file: "processed_annotations/processed_text.pkl" log_dir: "training_runs/11/losses/" sample_dir: "training_runs/11/generated_samples/" save_dir: "training_runs/11/saved_models/"  # Hyperparameters for the Model captions_length: 100 img_dims:  - 64  - 64  # LSTM hyperparameters embedding_size: 128 hidden_size: 256 num_layers: 3 # number of LSTM cells in the encoder network  # Conditioning Augmentation hyperparameters ca_out_size: 178  # Pro GAN hyperparameters depth: 5 latent_size: 256 learning_rate: 0.001 beta_1: 0 beta_2: 0 eps: 0.00000001 drift: 0.001 n_critic: 1  # Training hyperparameters: epochs:  - 160  - 80  - 40  - 20  - 10  # % of epochs for fading in the new layer fade_in_percentage:  - 85  - 85  - 85  - 85  - 85  batch_sizes:  - 16  - 16  - 16  - 16  - 16  num_workers: 3 feedback_factor: 7 # number of logs generated per epoch checkpoint_factor: 2 # save the models after these many epochs use_matching_aware_discriminator: True # use the matching aware discriminator 

使用 requirements.txt 安装项目的所有依赖项。

$ workon [your virtual environment] $ pip install -r requirements.txt 

样本运行:

$ mkdir training_runs $ mkdir training_runs/generated_samples training_runs/losses training_runs/saved_models $ train_network.py --config=configs/11.comf
]]> 原文: https://ift.tt/2z2jD5b
RSS Feed

机器知心

IFTTT

六种GAN评估指标的综合评估实验,迈向定量评估GAN的重要一步


论文:An empirical study on evaluation metrics of generative adversarial networks

论文链接:https://ift.tt/2NfLRMU

摘要:评估生成对抗网络(GAN)本质上非常有挑战性。本论文重新讨论了多个代表性的基于样本的 GAN 评估指标,并解决了如何评估这些评估指标的问题。我们首先从一些使指标生成有意义得分的必要条件开始,比如区分真实对象和生成样本,识别模式丢弃(mode dropping)和模式崩塌(mode collapsing),检测过拟合。经过一系列精心设计的实验,我们对现有的基于样本的指标进行了综合研究,并找出它们在实践中的优缺点。基于这些结果,我们观察到,核最大均值差异(Kernel MMD)和 1-最近邻(1-NN)双样本检验似乎能够满足大部分所需特性,其中样本之间的距离可以在合适的特征空间中计算。实验结果还揭示了多个常用 GAN 模型行为的有趣特性,如它们是否记住训练样本、它们离学到目标分布还有多远。

1 引言

生成对抗网络(GAN)(Goodfellow et al., 2014)近年来得到了广泛研究。除了生成惊人相似的图像(Radford et al., 2015; Larsen et al., 2015; Karras et al., 2017; Arjovsky et al., 2017; Gulrajani et al., 2017),GAN 还创新性地应用于半监督学习(Odena, 2016; Makhzani et al., 2015)、图像到图像转换(Isola et al., 2016; Zhu et al., 2017)和模拟图像细化(Shrivastava et al., 2016)等领域中。然而,尽管可用的 GAN 模型非常多(Arjovsky et al., 2017; Qi, 2017; Zhao et al., 2016),但对它们的评估仍然主要是定性评估,通常需要借助人工检验生成图像的视觉保真度来进行。此类评估非常耗时,且主观性较强、具备一定误导性。鉴于定性评估的内在缺陷,恰当的定量评估指标对于 GAN 的发展和更好模型的设计至关重要。

或许最流行的指标是 Inception Score(Salimans et al., 2016),它使用外部模型即谷歌 Inception 网络(Szegedy et al., 2014)评估生成图像的质量和多样性,该模型在大规模 ImageNet 数据集上训练。一些其他指标虽然应用没有那么广泛,但仍然非常有价值。Wu et al. (2016) 提出一种采样方法来评估 GAN 模型的对数似然,该方法假设高斯观测模型具备固定的方差。Bounliphone et al. (2015) 提出使用最大均值差异(MMD)进行 GAN 模型选择。Lopez-Paz & Oquab (2016) 使用分类器双样本检验方法(一种统计学中得到充分研究的工具),来评估生成分布和目标分布之间的差异。

尽管这些评估指标在不同任务上有效,但目前尚不清楚它们的分数在哪些场景中是有意义的,在哪些场景中可能造成误判。鉴于评估 GAN 非常有难度,评估评估指标则更加困难。大部分已有研究尝试通过展示这些评估指标和人类评估之间的关联性来证明它们的正当性。但是,人类评估有可能偏向生成样本的视觉质量,忽视整体分布特征,而后者对于无监督学习来说非常重要。

这篇论文综合回顾了有关基于样本的 GAN 定量评估方法的文献。我们通过精心设计的一系列实验解决了评估评估指标的难题,我们希望借此回答以下问题:(1)目前基于样本的 GAN 评估指标的行为合理特征是什么?(2)这些指标的优缺点有哪些,以及基于此我们应该优先选择哪些指标?实验观察表明 MMD 和 1-NN 双样本检验是最合适的评估指标,它们能够区分真实图像和生成图像,对模式丢弃和崩塌较为敏感,且节约算力。

最后,我们希望这篇论文能够对在实践环境中选择、解释和设计 GAN 评估指标构建合适的原则。所有实验和已检验指标的源代码均已公开,向社区提供现成工具来 debug 和改进他们的 GAN 算法。

源代码地址:https://ift.tt/2KFgmdI

图 1:基于样本的典型 GAN 评估方法。

2.2 基于样本的距离度量

我们主要关注于基于样本的评估度量,这些度量方法都遵循图 1 所示的一般设定。度量计算子是 GAN 中的关键因素,本论文简要介绍了 5 种表征方法:Inception 分数(Salimans et al., 2016)、Mode 分数(Che et al., 2016)、Kernel MMD(Gretton et al., 2007)、Wasserstein 距离、Fréchet Inception 距离(FID,Heusel et al., 2017)与基于 1-最近邻(1-NN)的双样本测试(Lopez-Paz & Oquab, 2016)。所有这些度量方法都不需要知道特定的模型,它只要求从生成器中获取有限的样本就能逼近真实距离。

Inception 分数可以说是文献中采用最多的度量方法。它使用一个图像分类模型 M 和在 ImageNet(Deng et al., 2009)上预训练的 Inception 网络(Szegedy et al., 2016),因而计算:

其中 p_M(y|x) 表示由模型 M 在给定样本 x 下预测的标签分布,

即边缘分布 p_M(y|x) 在概率度量 P_g 上的积分。p_M(y|x) 上的期望和积分都可以通过从 P_g 中采样的独立同分布(i.i.d.)逼近。更高的 IS 表示 p_M(y|x) 接近于点密度,这只有在当 Inception 网络非常确信图像属于某个特定的 ImageNet 类别时才会出现,且 p_M(y) 接近于均匀分布,即所有类别都能等价地表征。这表明生成模型既能生成高质量也能生成多样性的图像。Salimans et al. (2016) 表示 Inception 分数与人类对图像质量的判断有相关性。作者强调了 Inception 分数两个具体的属性:1)KL 散度两边的分布都依赖于 M;2)真实数据分布 P_r 甚至是其样本的分布并不需要使用。

Mode 分数是 Inception 分数的改进版。正式地,它可以通过下式求出:

其中

为在给定真实样本下边缘标注分布在真实数据分布上的积分。与 Inception 分数不同,它能通过 KL(p_M(y) || p_M(y*))散度度量真实分布 P_r 与生成分布 P_g 之间的差异。

Kernel MMD(核最大均值差异)可以定义为:

在给定一些固定的和函数 k 下,它度量了真实分布 P_r 与生成分布 P_g 之间的差异。给定分别从 P_r 与 P_g 中采样的两组样本,两个分布间的经验性 MMD 可以通过有限样本的期望逼近计算。较低的 MMD 表示 P_g 更接近与 P_r。Parzen window estimate (Gretton et al., 2007) 可以被视为 Kernel MMD 的特例。

P_r 与 P_g 分布之间的 Wasserstein 距离(推土机距离)可以定义为:

其中 Γ(Pr, Pg) 表示边缘分布分别为 Pr 与 Pg 的所有联合分布(即概率耦合)集合,且 d(x^r, x^g) 表示两个样本之间的基础距离。对于密度为 pr 与 pg 的离散分布,Wasserstein 距离通常也被称为推土机距离(EMD),它等价于解最优传输问题:

该式表示实践中 WD(P_r, P_g) 的有限样本逼近。与 MMD 相似,Wasserstein 距离越小,两个分布就越相似。

Fréchet Inception 距离(FID)是最近由 Heusel et al. (2017) 引入并用来评估 GAN 的度量方法。对于适当的特征函数φ(默认为 Inception 网络的卷积特征),FID 将 φ(P_r) 和 φ(P_g) 建模为高斯随机变量,且其样本均值为 µ_r 与 µ_g、样本协方差为 C_r 与 C_g。两个高斯分布的 Fréchet 距离(或等价于 Wasserstein-2 距离)可通过下式计算:

1-最近邻分类器用于成对样本检验以评估两个分布是否相同。给定两组样本

,我们可以计算在 S_r 和 S_g 上进行训练的 1-NN 分类器的留一(LOO)准确率,其中 S_r 全部标注为正样本、S_g 全部标注为负样本。与常用的准确率不同,但|S_r|=|S_g|都非常大时,1-NN 分类器应该服从约为 50% 的 LOO 准确率,这在两个分布相匹配时能够达到。当 GAN 的生成分布过拟合真实采样分布 Sr 时,LOO 准确度将低于 50%。在理论上的极端案例中,如果 GAN 记忆住 Sr 中的每一个样本,并精确地重新生成它,即在 S_g=S_r 时,准确率将为零。因为 Sr 中的每一个样本都将有一个来自 S_g 的最近邻样本,它们之间的距离为零。1-NN 分类器成对样本检验族,理论上任意二元分类器都能采用这种方法。我们只考虑 1-NN 分类器,因为它不需要特殊的训练并只需要少量超参数调整。

Lopez-Paz & Oquab (2016) 认为 1-NN 准确率主要作为成对样本检验的统计量。实际上,将其分为两个类别来独立地分析能获得更多的信息。例如典型的 GAN 生成结果,由于 mode collapse 现象,真实和生成图像的主要最近邻都是生成图像。在这种情况下,真实图像 LOO 1-NN 准确率可能会相对较低(期望):真实分布的模式通常可由生成模型捕捉,所以 Sr 中的大多数真实样本周围都充满着由 Sg 生成的样本,这就导致了较低的 LOO 准确率;而生成图像的 LOO 准确度非常高(不期望的):生成样本倾向于聚集到少量的模式中心,而这些模式由相同类别的生成样本包围,因此会产生较高的 LOO 准确率。

3 GAN 评估指标实验

图 2:从真实图像和 GAN 生成图像的混合集合中区分出真实图像。对于有判别力的指标,其分数应该随着混合集合中 GAN 生成样本数量增加而增加。RIS 和 RMS 失败了,因为在 LSUN 上它们的分数随着 S_g 中的 GAN 生成样本数量增加而减少。在像素空间中 Wasserstein 和 1-NN accuracy (real) 也失败了,因为它们的分数没有增加反而下降了。

图 3:模拟模式崩塌实验。指标分数应该增加,以反映随着更多模式向聚类中心崩塌真实分布和生成分布之间的不匹配。所有指标在卷积空间中都作出了正确的响应。而在像素空间中,Wasserstein distance 和 1-NN accuracy (real) 失败了,因为它们的分数没有增加反而下降了。

图 4:模拟模式丢弃实验。指标分数应该增加,以反映随着更多模式丢弃真实分布和生成分布之间的不匹配。所有指标(除了 RIS 和 RMS)都作出了正确的响应,因为在几乎所有模式都丢弃时它们仍然有轻微的上升。

图 5:关于每个指标对小量变换(旋转和平移)的鲁棒性的实验。所有指标应该对真实图像和变换后的真实样本保持不变,因为变换不会改变图像语义。所有指标都在卷积空间中作出了正确的响应,但不是像素空间。该实验证明像素空间中距离的不适应性。

图 6:不同指标在样本数作为 x 轴的函数上的分数。完美指标应该带来 real-real

和 real-fake

曲线之间的巨大差距,以利用尽可能少的样本区分真实分布和伪分布。与 Wasserstein 距离相比,MMD 和 1-NN accuracy 判别真实图像和生成图像所需的样本量更少,而 RIS 在 LSUN 上完全失败,因为其在生成图像上的分数甚至优于(低于)真实图像。

图 8:检测生成样本过拟合的实验。随着更多的生成样本与训练集中的真实样本重叠,验证得分和训练得分之间的差距应该增加至信号过拟合(signal overfitting)。所有指标的行为都是正确的,除了 RIS 和 RMS,因为这两个的分数不会随着重叠样本数量的增加而增加。

4 讨论和结论

基于以上分析,我们可以总结这六个评估指标的优势和本质缺陷,以及它们在什么条件下可以生成有意义的结果。使用部分指标,我们能够研究过拟合问题(详见 Appendix C)、在 GAN 模型上执行模型选择,并基于精心挑选的样本对比不同模型(详见 Appendix D),无需使用人类评估。

Inception Score 展示出生成图像的质量和多样性之间的合理关联,这解释了其在实践中广泛应用的原因。但是,它在大部分情况下并不合适,因为它仅评估 P_g(作为图像生成模型),而不是评估其与 P_r 的相似度。一些简单的扰动(如混入来自完全不同分布的自然图像)能够彻底欺骗 Inception Score。因此,它可能会鼓励模型只学习清晰和多样化图像(甚至一些对抗噪声),而不是 P_r。这也适用于 Mode Score。此外,Inception Score 无法检测过拟合,因为它无法使用留出验证集。

Kernel MMD 在预训练 ResNet 的特征空间中运行时,性能惊人地好。它总是能够识别生成/噪声图像和真实图像,且它的样本复杂度和计算复杂度都比较低。鉴于这些优势,即使 MMD 是有偏的,但我们仍推荐大家在实践中使用它。

当距离在合适的特征空间中进行计算时,Wasserstein 距离的性能很好。但是,它的样本复杂度很高,Arora 等人 2017 年也发现了这一事实。另一个主要缺陷是计算 Wasserstein 距离所需的实践复杂度为 O(n^3),且随着样本数量的增加而更高。与其他方法相比,Wasserstein 距离在实践中作为评估指标的吸引力较差。

Fréchet Inception Distance 在判别力、鲁棒性和效率方面都表现良好。它是 GAN 的优秀评估指标,尽管它只能建模特征空间中分布的前两个 moment。

1-NN 分类器几乎是评估 GAN 的完美指标。它不仅具备其他指标的所有优势,其输出分数还在 [0, 1] 区间中,类似于分类问题中的准确率/误差。当生成分布与真实分布完美匹配时,该指标可获取完美分数(即 50% 的准确率)。从图 2 中可以看到典型 GAN 模型对真实样本(1-NN accuracy (real))的 LOO 准确率较低,而对生成样本(1-NN accuracy (fake))的 LOO 准确率较高。这表明 GAN 能够从训练分布中捕捉模型,这样分布在模式中心周围的大部分训练样本的最近邻来自于生成图像集合,而大部分生成图像的周围仍然是生成图像,因为它们一起崩塌。该观测结果表明模式崩塌问题在典型 GAN 模型中很普遍。但是,我们还注意到这个问题无法通过人类评估或广泛使用的 Inception Score 评估指标来有效检测到。

总之,我们的实证研究表明选择计算不同指标的特征空间至关重要。在 ImageNet 上预训练 ResNet 的卷积空间中,MMD 和 1-NN accuracy 在判别力、鲁棒性和效率方面都是优秀的指标。Wasserstein 距离的样本效率较差,而 Inception Score 和 Mode Score 不适合与 ImageNet 差异较大的数据集。我们将发布所有这些指标的源代码,向研究者提供现成的工具来对比和改进 GAN 算法。

基于这两个主要指标 MMD 和 1-NN accuracy,我们研究了 DCGAN 和 WGAN(详见 Appendix C)的过拟合问题。尽管人们广泛认为 GAN 对训练数据过拟合,但我们发现这只在训练样本很少的情况下才会发生。这提出了一个关于 GAN 泛化能力的有趣问题。我们希望未来的研究能够帮助解释这一现象。

]]> 原文: https://ift.tt/2NdxCIq
RSS Feed

机器知心

IFTTT

LangChain 彻底重写:从开源副业到独角兽,一次“核心迁移”干到 12.5 亿估值 -InfoQ 每周精要No.899期

「每周精要」 NO. 899 2025/10/25 头条 HEADLINE LangChain 彻底重写:从开源副业到独角兽,一次"核心迁移"干到 12.5 亿估值 精选 SELECTED 1000 行代码手搓 OpenAI gpt-oss 推理引...