一文读懂生成对抗网络GANs(附学习资源)
- 格式:doc
- 大小:31.50 KB
- 文档页数:9
生成对抗网络GAN综述生成对抗网络(Generative Adversarial Networks,GAN)是一种机器学习技术,旨在通过两个对抗性的神经网络模型,即生成器和判别器,来进行生成模型的训练和生成样本的推断。
GAN的目标是使生成器能够生成与真实样本相似的新样本,以此来提高生成器的效果。
GAN的基本原理是使用生成器模型生成虚假样本,并使用判别器模型判断这些样本是真实样本还是虚假样本。
生成器和判别器通过对抗学习的方式进行训练,生成器试图欺骗判别器,而判别器试图准确区分真实和虚假样本。
通过不断的对抗学习训练,生成器和判别器逐渐提高,最终达到生成逼真样本的目的。
GAN能够用于各种生成任务,如图像生成、音频生成和文本生成等。
其中,图像生成是GAN应用最广泛的领域之一。
在图像生成任务中,生成器的输入通常是一个随机向量,经过一系列变换生成一张逼真的图像。
而判别器则是一个二分类模型,用来判断输入的图像是真实样本还是生成样本。
在GAN的训练过程中,有两个重要的损失函数需要优化,即生成器的损失函数和判别器的损失函数。
生成器的损失函数用来衡量生成器生成的样本与真实样本之间的差异,判别器的损失函数用来衡量判别器对真实样本和生成样本进行判断的准确性。
GAN的训练过程通常是通过交替训练生成器和判别器来完成的。
首先,生成器生成一批虚假样本,并将其输入到判别器中进行判断。
判别器输出判别结果,根据判别结果计算判别器的损失,并更新判别器的参数。
然后,生成器再次生成虚假样本,并通过判别器进行判断,计算生成器的损失,并更新生成器的参数。
通过反复迭代这个过程,生成器和判别器会逐渐提高。
然而,GAN的训练过程也存在一些挑战。
首先,GAN的训练过程相对不稳定,容易产生模式崩溃或模式塌陷现象。
其次,GAN的训练需要大量的样本数据来获得良好的生成效果,但有时很难获得足够数量的样本数据。
此外,GAN的训练时间较长,需要较高的计算资源和算法优化。
生成对抗网络(GANs)介绍从生成图像到风格转换的应用生成对抗网络(GANs)是一种机器学习模型,由生成器和判别器组成。
生成器负责生成与真实样本相似的图像或数据,而判别器则负责判断给定的图像或数据是真实的还是生成的。
GANs的主要目标是让生成器能够生成足够逼真的图像,以至于判别器无法区分它们是真实的还是生成的。
GANs的应用非常广泛,从生成图像到风格转换都得到了极大的发展和应用。
下面将介绍几个主要的应用领域。
一、生成图像生成图像是GANs最为广泛应用的领域之一。
通过训练生成器和判别器,GANs可以生成各种类型的图像。
通过输入一些随机噪声向量,生成器可以产生逼真的图像,这些图像与真实图像非常相似。
生成图像的应用包括艺术创作、图像增强和图像合成等。
二、图像修复GANs还可以用于图像修复。
在真实世界中,图像常常因为噪声、遮挡或其他原因而受损。
通过训练生成器,可以用损坏的图像作为输入,生成修复后的图像作为输出。
生成器能够学习到图像修复的模式和规律,从而为受损图像提供有效的修复方案。
三、图像转换GANs可以实现图像的风格转换。
通过训练生成器,可以将输入图像的风格转换为另一种风格。
这个应用非常有趣,它可以将一幅油画转换为素描或者印象派的风格。
GANs的图像转换应用对于艺术创作和设计等领域具有很高的实用价值。
四、视频合成除了图像处理,GANs还可以应用于视频合成。
通过利用时间维度上的连续性,GANs可以生成具有连贯动画效果的图像序列。
这种方法可以用于视频游戏、影视特效等应用领域。
五、虚拟现实GANs在虚拟现实(VR)方面也有应用。
VR技术需要生成逼真的虚拟环境,而GANs可以通过生成器生成逼真的图像和场景,从而提供更加真实的VR体验。
六、医学图像处理GANs在医学图像处理方面也有广泛的应用。
通过训练生成器,可以生成逼真的医学图像,用于医学诊断和研究。
此外,GANs还可以用于图像分割、病变检测等医学图像处理任务。
了解生成对抗网络(GAN)的原理和应用场景生成对抗网络(Generative Adversarial Network,简称GAN)是一种机器学习模型,由两个神经网络组成:生成器(Generator)和判别器(Discriminator)。
GAN的目标是通过让生成器和判别器相互对抗来提高生成器生成的样本的质量。
一、GAN的原理GAN的基本原理是通过对抗学习的方式训练生成器和判别器。
生成器的任务是从随机噪声中生成尽可能逼真的样本,而判别器的任务是判断一个样本是来自真实数据集还是由生成器产生。
具体来说,生成器接收一个随机噪声向量作为输入,并将其转换为一个与真实数据相似的样本。
判别器接收一个样本作为输入,并输出该样本来自真实数据集的概率。
生成器和判别器通过对抗学习的方式进行迭代训练,生成器试图欺骗判别器,生成更加真实的样本,而判别器则试图辨别出生成的样本。
二、GAN的应用场景1. 图像生成GAN在图像生成任务中取得了很大的成功。
生成器可以从噪声中生成逼真的图片,如逼真的人脸、自然风景等。
GAN还可以用于图像超分辨率,即从低分辨率图像生成高分辨率图像。
2. 数据增强GAN可以用于数据增强,通过对真实数据进行少量的扰动和变换生成更多的训练样本。
这些生成的样本可以提高训练的泛化能力和鲁棒性。
3. 语音合成GAN可以用于语音合成,生成逼真的说话声音。
通过训练生成器,可以使合成的语音达到接近真实语音的水平。
4. 强化学习GAN可以与强化学习相结合,用于生成虚拟环境中的训练数据。
生成器可以生成逼真的环境和状态,而判别器可以评估生成的状态的好坏,从而对生成器进行优化。
5. 动态物理模拟GAN可以用于动态物理模拟,生成逼真的物理场景和运动轨迹。
这在游戏开发和虚拟现实领域有着广泛的应用。
三、GAN的挑战和未来发展尽管GAN已经在许多领域取得了显著的成果,但它仍面临一些挑战。
其中一个挑战是模式坍塌问题,即生成器输出的样本变得相似度太高,缺乏多样性。
掌握深度学习中的生成对抗网络和变分自编码器生成对抗网络(GANs)和变分自编码器(VAEs)是深度学习中广泛应用的两种生成模型。
它们在模拟和生成数据方面有着独特的优势。
本文将介绍这两种模型的原理、应用和发展趋势。
一、生成对抗网络(GANs)生成对抗网络(GANs)由生成器(Generator)和判别器(Discriminator)组成。
生成器试图生成与真实数据相似的假数据,而判别器则负责将真实数据与生成的假数据区分开来。
在训练过程中,生成器和判别器不断通过对抗的方式进行优化,最终生成器能够生成高质量的假数据。
GANs的应用非常广泛。
例如,在计算机图像生成中,GANs可以用于生成逼真的人脸图片。
此外,在自然语言处理领域,GANs也可以用于生成写作风格独特的文章或诗歌。
近年来,GANs在医药领域也有突破性进展,可以用于生成新的分子结构,帮助药物发现研究。
GANs的发展也面临着一些挑战。
首先,GANs的训练过程不稳定,容易出现模式崩溃或模式坍塌的问题。
其次,GANs的训练需要大量的数据和计算资源,对硬件设备和数据集的要求较高。
此外,对于GANs 生成的假数据,如何进行评估和量化也是一个难题。
相对于GANs,变分自编码器(VAEs)是一种更为稳定和迅速的生成模型。
二、变分自编码器(VAEs)变分自编码器(VAEs)是一种基于概率模型的生成模型。
它将输入数据通过一个编码器(Encoder)映射到潜在空间,并在潜在空间中进行采样。
然后,通过解码器(Decoder)将潜在空间的向量解码为生成的数据。
与GANs不同,VAEs通过最大化数据的后验概率进行训练。
VAEs的应用也非常广泛。
在图像生成方面,VAEs可以用于生成逼真的人脸、动物等图像。
在自然语言处理领域,VAEs可以用于生成有逻辑和上下文的文章段落。
此外,VAEs还可以应用于数据压缩和降维等领域。
VAEs也面临一些挑战。
例如,VAEs生成的数据相对于GANs的输出来说可能不够清晰和逼真。
图解生成对抗网络GAN原理超详解生成对抗网络(Generative Adversarial Networks, GANs)是深度学习领域中一种强大的生成模型,其由一个生成器网络(Generator)和一个判别器网络(Discriminator)组成。
GAN的目标是通过训练生成器和判别器来使生成器能够生成接近真实数据分布的样本。
GAN的训练过程可以简述为生成器和判别器之间的博弈过程。
生成器的目标是生成看起来像真实数据的样本,而判别器的目标是尽可能准确地区分生成器生成的样本和真实数据。
生成器和判别器通过对抗训练,相互提高,从而达到提高生成器生成样本质量的目的。
以下是GAN的训练过程的详细步骤:1.初始化生成器和判别器的参数。
生成器的输入是一个随机噪声向量,输出是一个与真实数据相同形状的样本。
判别器的输入可以是生成器生成的样本或真实数据,输出是一个标量,表示输入为真实数据的概率。
2.从真实数据集中随机选择一个真实样本,将其输入到判别器中,判别器输出一个标量,表示输入为真实数据的概率。
3.从生成器的输入分布中采样一个随机噪声向量,并将其输入到生成器中,生成器输出一个样本。
4.将生成器生成的样本和真实样本分别输入到判别器中,判别器输出两个标量,分别表示输入为生成器生成的样本和真实样本的概率。
5.计算生成器的损失函数,生成器的目标是使其生成的样本被判别器判断为真实样本的概率尽可能高。
6.计算判别器的损失函数,判别器的目标是使其能够准确地判断生成器生成的样本和真实样本的概率。
7.更新生成器的参数,通过梯度下降的方法最小化生成器的损失函数。
8.更新判别器的参数,通过梯度下降的方法最小化判别器的损失函数。
9.重复步骤2到8,直到生成器生成的样本质量满足要求或达到预设的迭代次数。
通过以上步骤,在迭代的过程中,生成器会逐渐学习到如何生成逼真的样本,而判别器会逐步提高其判别的准确性。
最终,生成器生成的样本将趋近于真实数据的分布。
深度学习技术中的生成对抗网络详解生成对抗网络(Generative Adversarial Networks,简称GAN)是一种在深度学习领域中备受关注的技术。
它由两个神经网络模型组成:生成器网络(Generator)和判别器网络(Discriminator)。
生成器网络通过学习数据的分布情况来生成新的数据样本,而判别器网络则根据输入的数据样本判断其是真实样本还是生成器生成的伪样本。
在训练过程中,生成器网络和判别器网络相互博弈、相互优化,逐渐提升其性能,从而达到生成高质量样本的目的。
生成对抗网络的核心思想是通过两个网络的竞争和合作来提高模型的表现能力。
生成器网络的目标是尽可能生成与真实样本相似的样本,以骗过判别器网络。
判别器网络的目标则是尽可能准确地区分出真实样本和生成样本。
这种竞争和合作的过程迭代进行,直到生成器网络生成的样本足够逼真、不容易被判别器网络辨别出来。
生成对抗网络的训练过程可以形象地比喻为一个假币制造者和一个专家鉴赏家的博弈场景。
假币制造者(生成器网络)致力于制造尽可能接近真实货币的假币,而专家鉴赏家(判别器网络)则要尽可能准确地辨别真货币和假币。
随着时间的推移,假币制造者不断改进技术,使生成的假币越来越难以鉴别,而专家鉴赏家也在不断学习、提高辨别能力。
生成对抗网络的架构和训练方法相对简单,但其在各种领域中表现出了令人印象深刻的结果。
GAN在计算机视觉、自然语言处理、声音合成等任务中都取得了显著的成果。
下面将介绍一些GAN在不同领域中的应用。
在计算机视觉领域,生成对抗网络被用于图像生成、图像编辑和图像增强等任务。
通过学习大量真实图像数据,生成器网络可以生成逼真的图像,甚至可以创造出从未存在的图像。
例如,GAN可以通过学习猫的图像数据,生成新的猫的图像,同时保持其猫的特征和真实度。
此外,GAN还可以用于图像编辑,例如通过修改生成器网络中的输入向量来改变生成图像的特定属性,如改变猫的毛色或眼睛颜色。
了解机器学习中的生成对抗网络GAN生成对抗网络(GAN)是一种在机器学习领域中广泛应用的模型,它以一种非监督学习的方式通过训练生成器和判别器来实现数据生成和判别的任务。
GAN 的核心思想是通过两个互相博弈的神经网络模块来进行学习。
在本文中,我们将详细讨论GAN 的原理、应用和未来发展方向。
一、GAN 的原理GAN 由生成器(Generator)和判别器(Discriminator)两个模块组成。
生成器负责生成数据样本,而判别器则负责判断生成的样本是真实的还是伪造的。
两个模块通过博弈的方式相互对抗,并通过反复迭代的训练过程来提高整个模型的性能。
生成器的目标是生成尽可能接近真实数据的样本,而判别器的目标是尽可能准确地区分真实数据和生成数据。
在训练过程中,生成器通过学习真实数据的分布特征,逐渐生成出越来越逼真的样本。
而判别器通过不断学习鉴别真实数据和生成数据的差异,提高自己的判断准确率。
二、GAN 的应用1. 图像生成GAN 在图像生成任务中表现出色。
生成器可以通过学习真实图片的特征分布,生成具有相似特征的虚拟图片。
判别器会对生成的图片进行评估,通过不断训练提高生成图片的质量。
这些生成的图片可以应用于广告设计、电影特效等领域。
2. 文本生成GAN 在文本生成任务中也有广泛应用。
生成器可以通过学习输入文本的语义和上下文关系,生成具有逻辑结构的虚拟文本。
判别器则用来判断生成的文本是否真实,通过训练生成更加准确的文本。
3. 视频生成GAN 在视频生成任务中也有很多研究。
生成器可以通过学习真实视频的帧之间的关系,生成具有逻辑连贯性的虚拟视频。
判别器则用来判断生成的视频是否真实。
三、GAN 的发展方向1. 改进训练稳定性目前GAN 存在训练不稳定的问题,容易出现模式崩溃或训练卡住等情况。
未来的发展方向之一是改进GAN 的训练算法,提高模型的稳定性和收敛速度。
2. 提高生成样本质量生成样本质量是GAN 面临的另一个挑战。
了解生成对抗网络(GAN)及其在AI中的应用生成对抗网络(GAN)是一种近年来在人工智能领域快速发展的重要技术。
它由一组博弈模型组成,包括生成器网络和判别器网络。
生成器网络旨在生成具有与训练数据相似统计特征的新样本,而判别器网络则旨在鉴别生成器网络生成的样本与真实样本之间的差异。
这两个网络相互博弈,并通过反复迭代来提高各自的表现。
GAN 可以被广泛应用于人工智能领域的多个任务,如图像生成、图像修复、语音合成等。
本文将详细介绍生成对抗网络的原理及其在人工智能中的应用。
一、GAN的原理生成对抗网络的核心理念是通过让生成器网络和判别器网络相互博弈来实现训练过程。
生成器网络以随机噪声作为输入,并生成类似于训练数据的样本。
判别器网络则负责将生成器网络生成的样本与真实样本区分开来。
在每一轮迭代中,生成器网络通过生成样本来欺骗判别器网络,而判别器网络则尽可能准确地判断样本的真假。
通过反复的迭代训练,生成器和判别器网络逐渐提高自己的能力,最终达到一种动态平衡。
二、GAN在图像生成中的应用GAN在图像生成领域有着广泛的应用。
通过训练生成器网络,我们可以生成具有逼真外观的新图像。
这对于电影特效、游戏设计等领域有着重要意义。
GAN还可以用于图像超分辨率重建,通过学习高分辨率图像与低分辨率图像之间的映射关系,我们可以从模糊的图像中还原出更加清晰的图像。
三、GAN在图像修复中的应用图像修复是指通过补全丢失或损坏的图像部分来恢复原始图像的过程。
GAN可以通过学习训练集中的图像上下文信息,帮助我们实现图像修复任务。
生成器网络可以根据已有的图像来生成缺失部分的内容,判别器网络则负责判断修复后的图像是否真实。
通过迭代训练,我们可以得到高质量的图像修复结果。
四、GAN在语音合成中的应用GAN在语音合成领域也具有潜力。
通过训练生成器网络,我们可以生成逼真的人工合成语音。
这对于语音助手、虚拟主播等技术应用有重要作用。
GAN还可以用于情感语音合成,即根据文字输入生成带有特定情感的语音。
生成对抗网络的深度学习原理解析-生成对抗网络(GAN)是一种深度学习模型,它由两个神经网络组成:生成器和判别器。
生成器的目标是生成逼真的数据样本,而判别器的目标是区分真实数据和生成器生成的数据。
这两个网络相互竞争,不断提高对方的表现,最终使生成器生成的数据与真实数据难以区分。
生成对抗网络的原理是通过优化生成器和判别器的参数,使它们在训练过程中不断提高表现,最终达到生成逼真数据的目的。
生成对抗网络的核心思想是博弈论。
在博弈论中,博弈的双方通过不断优化策略,最终达到一个均衡点。
在生成对抗网络中,生成器和判别器也是通过相互竞争,不断调整参数,最终达到一个动态平衡。
这种竞争机制使得生成对抗网络能够生成高质量的数据样本,比如逼真的图像、音频等。
生成对抗网络的训练过程可以分为两个阶段:生成阶段和判别阶段。
在生成阶段,生成器接收一个随机向量作为输入,输出一个与真实数据相似的数据样本。
在判别阶段,判别器接收真实数据或生成器生成的数据样本,判断其真实性。
生成器和判别器通过反复迭代优化参数,使得生成器生成的数据逼真度不断提高,判别器的判断能力也不断增强。
生成对抗网络的工作原理可以用以下公式描述:\[ \min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{\text{data}}(x)}[\log D(x)] + \mathbb{E}_{z \sim p_z(z)} [\log(1 - D(G(z)))] \]其中,G是生成器,D是判别器,x表示真实数据样本,z表示生成器的输入随机向量,p_{\text{data}}(x)表示真实数据分布,p_z(z)表示随机向量的分布。
公式中的第一项表示判别器对真实数据的判断,第二项表示判别器对生成器生成的数据的判断。
生成对抗网络的优化目标是找到一个动态均衡点,使得生成器生成的数据接近真实数据,同时判别器无法区分真实数据和生成器生成的数据。
生成对抗网络的训练过程通常是一个迭代优化过程。
一文读懂生成对抗网络GANs(附学习资源)原文标题:AnIntuitive Introduction to Generative Adversarial Networks作者:KeshavDhandhania、ArashDelijani 翻译:申利彬校对:和中华本文约4000字,建议阅读10分钟。
本文以图像生成问题引出GAN模型,并介绍了GAN模型的数学原理和训练过程,最后提供了丰富的GAN学习资料。
本文讨论生成对抗网络,简称GANs。
在生成任务或更广泛的无监督学习中,GANs是为数不多在此领域表现较好的机器学习技术之一。
特别是他们在图像生成相关任务上拥有出色表现。
深度学习领域先驱Yann LeCun,称赞GAN是机器学习近十年来最好的想法。
最重要的是,GAN相关核心概念很容易理解(事实上,读完本文后你就可以对它有个清晰的认识)。
我们将GANs应用在图像生成任务中,并以此来解释GANs,下面是本文的概要:简单回顾深度学习图像生成问题生成任务中的关键问题生成对抗网络挑战进一步阅读总结简单回顾深度学习(前馈)神经网络示意图,棕色为输入层,黄色为隐藏层,红色为输出层我们先简单介绍一下深度学习。
上图是神经网络示意图,它是由神经元组成,神经元之间通过边相互连接,而且神经元按层排列,中间为隐藏层,输入层和输出层分别在左右两侧。
神经元之间的连接边都有权重,每一个神经元都会根据与其连接的神经元的输入值加权求和,然后带入非线性激活函数中计算,这类激活函数有Sigmoid和ReLU。
例如,第一层隐藏层神经元对来自输入层神经元的值进行加权求和,然后再应用ReLU函数。
激活函数引入了非线性,它使神经网络可以模拟复杂的现象(多个线性层等价于一个线性层)。
给一个特定的输入,我们依次计算每个神经元输出的值(也称为神经元的活性)。
从左到右,我们利用前层计算好的值来逐层计算,最后得到输出层的值。
然后根据输出层的值和期望值(目标值)定义一个损失函数,例如,均方误差损失函数。
其中,x是输入,h(x)是输出,y 是目标值,总和包含数据集中所有数据点。
在每步中,我们的目标是以合适的数值优化每条边的权重,从而尽可能降低损失函数的大小。
我们计算出梯度值,然后利用梯度具体优化每一个权重。
当我们计算出损失函数值,就可以用反向传播算法计算梯度。
反向传播算法的主要结果是:利用链式求导法则和后一层参数的梯度值来计算这层的梯度。
然后,我们通过与各个梯度成比例的量(即梯度下降)来更新每个权重。
如果你想要进一步了解神经网络和反向传播算法的细节,我推荐你阅读Nikhil Buduma写的简单学习深度学习(Deep Learning in aNutshell)nikhilbuduma./2014/12/29/deep-learning-in-a-nutshell/图像生成问题图像生成问题上,我们希望机器学习模型可以生成图像。
为了训练模型,我们得到了一个图像数据集(比如从网络下载的1,000,000图片)。
在测试的时候,模型可以生成图像,这些图像看起来像属于训练集,但实际上并不是训练集中的图像。
也就是说,我们想生成新的图像(与单纯地记忆相反),但仍然希望它能捕获训练数据集中的模式,从而使新的图像感觉与训练数据集相似。
图像生成问题:没有输入,所需的输出是一个图像需要注意的一点是:在测试或预测阶段,这个问题没有输入。
每次“运行模型”时,我们希望它生成(输出)一个新的图像。
这可以说输入将从一个容易抽样的分布(例如均匀分布或高斯分布)中随机抽样而来。
生成任务中的关键问题生成任务中的关键问题是:什么是一个好的损失函数?假如你有两机器学习模型生成的图片,我们如何决定哪一个更好,好多少呢?在以前的方法中,这个问题最常见的解决方案是计算输出图像和训练集中最邻近图像的距离,其中使用一些预定义的距离度量标准来计算距离。
例如,在语言翻译任务中,我们通常有一个源语句和一个小的(约5个)目标句子集,也就是由不同翻译人员提供的译文。
当模型生成一个译文,我们把译文与提供的目标句子比较,然后根据它距离哪个目标句子最近,分配一个相应的分数(特别是,我们是用BLEU分数,它是根据两个句子之间有多少个n-grams 匹配的距离度量标准)。
但这是一种单句子翻译方法,当目标是一个较大的文本时,同样的方法会使损失函数的质量严重恶化。
例如,我们的任务可能是生成给定文章的段落摘要,那么这种恶化源于少量的样本无法代表在所有可能的正确答案中观察到的变化围。
生成对抗网络GAN针对上面问题的回答是:用另外一个神经网络---记分神经网络(称为判别器Discriminator),它将评估生成神经网络输出的图像的真实性。
这两个神经网络具有相反的目标(对抗),生成网络的目标是生成一个看起来真实的假图像,判别网络的目标是区分假图像和真实图像。
这将生成任务的设置类似于强化学习的双人游戏(如象棋,Atari games or 围棋),在强化学习中我们有一个从零开始通过自我对抗不断改进的机器学习模型。
象棋或者围棋这些游戏的对抗双方总是对称的(尽管并非总是如此),但对于GAN的设置,两个网络的目标和角色是不相同的。
一个网络产生假的样本,而另一个网络区分真的和假的样本。
生成对抗网络的示意图,生成器网络标记为G,判别器网络标记为D 如上图所示,是生成对抗网络示意图。
生成网络G 和判别网络D在进行一场双方极大极小博弈。
首先,为了更好地理解这种对抗机制,需要注意到判别网络(D)的输入可以是从训练集中抽样出的样本,也可以是生成网络(G)的输出,不过一般是50%来自训练集,剩余50%来自G。
为了从G中生成样本,我们从高斯分布中提取潜在的向量并输入生成网络(G)。
如果我们想生成200*200的灰度图像,那么生成网络(G)的输出应该是200*200的向量。
下面给出目标函数,它是判别网络(D)做预测的标准对数似然函数。
生成网络(G)是最小化目标函数,也就是减小对数似然函数或是说“迷惑”判别网络(D)。
也就是说,无论何时从生成网络(G)输出中抽取样本作为判别网络(D)的输入,都希望判别网络识别为真样本。
判别网络(D)是要最大化目标函数,也就是要增大对数似然函数或者说是把真实样本和生成样本区分开。
换句话说,如果生成网络(G)在“迷惑”判别网络(D)上效果很好,也就会通过增大公式第二项中D(G(z))来最小化目标函数。
另外,如果判别网络(D)能很好地工作,那么在从训练数据中选择样本的情况下,会通过第一项(因为D(x)很大)增大目标函数,也会通过第二项减小它(因为D(x)很小)。
如同平常的训练过程一样,使用随机初始化和反向传播,此外,我们需要单独交替迭代更新生成器和判别器。
下面是在特定问题上应用GANs的端到端的工作流程描述:1. 决定GAN网络架构:G的架构是什么?D的架构是什么?2. 训练:一定数量的交替更新更新D(固定G):一半样本是真的,另一半是假的更新G(固定D):生成所有样本(注意,即使D保持不变,梯度流还是会经过D)3. 人工检查一些假样本,如果质量很高(或者质量没有提升)则停止,否则重复2。
当G和D都是前馈神经网络时,我们得到的结果如下(在MNIST数据集中训练)来自Goodfellow et. Al,从训练集开始,最右边一列(黄色框)图像与其紧邻左边一列的图像最接近。
其它所有图像都是生成的样本关于G和D我们可以使用更复杂的架构,例如使用跳格卷积(strided convolutional)和adam优化器来代替随机梯度下降。
另外,还有其它一些方面的改进,例如优化架构,使用超参数和优化器(具体可参考论文)。
改进后,我们得到了如下的结果:卧室图片,来自Alec Radford et. Al 挑战训练GANs最关键的挑战是有可能不收敛,有时这个问题也被称为模式崩溃(mode collapse)。
举个例子,来简单解释这个问题。
假设任务是生成数字图像,就像MNIST数据集中的一样。
可能出现的问题(实践中确实出现)是生成器G开始生成数字6,而不能生成其它数字。
一旦D适应G的当前行为,为了最大限度地提高分类的准确性,它开始把所有的数字6归为假,所有其它数字都是真实的(假设它不能分辨假的6和真实的6)。
然后G又适应了D的当前行为,开始只生成数字8而不生成其它数字。
然后D又适应,开始把数字8归为假,其它的都是真。
接着G又开始只生成3,如此循环下去。
基本上,生成器G仅生成与训练数据集的一个小的子集相似的图像,而一旦识别器D开始把这个小的子集与其余的区分开,生成器G又转换到另外的子集,它们将一直简单的来回震荡。
虽然这个问题没有被完全解决,但还是有一些方法可以避免这个问题。
这些方法涉及小批量特征(minibatch features)和多次更新D的反向传播。
我们不再讨论这些方法的细节,如果要了解更多信息,请查看下一节中的建议阅读材料。
进一步阅读如果你想更深一步了解GANs,我建议你阅读ICCV 2017 tutorials on GANs(https://sites.google./view/iccv-2017-gans/home),那里有很多最新的教程,并且它们对GANs的不同方面各有侧重。
我还想说一点关于条件GANs(Conditional GANs)的概念,条件GANs,是在输入的条件下产生输出。
例如,任务可能是输出与输入描述相匹配的图像。
所以,当你输入狗时,输出的应该是狗的图像。
下面是一些最近研究的成果(附论文)。
文本到图像合成(‘Text to Image synthesis’)成果,作者Reedet. al超分辨率图像(Image Super-resolution)成果,作者Ledig et. Al图像到图像转换(Image to Image translation)成果,作者Isola et. Al生成高分辨率名人相(Generating high resolution‘celebritylike’images),作者Karras et. Al 最后也是最重要的,如果你想阅读更多关于GANs资料,请查看这个按照GANs的应用分类的论文列表:https://github./zhangqianhui/AdversarialNetsPapers100+GAN的变种论文清单:https://deephunt.in/the-gan-zoo-79597dc8c347 总结通过这篇文章,希望你可以理解深度学习领域中的一种新技术—生成对抗网络。
它们是无监督机器学习中少数成功的技术,并且这种技术正在快速革新我们执行生成任务的能力。
过去的几年中,我们发现了一些让人印象深刻的成果。
GANs 应用在语言任务中,提高语言任务的稳定性和训练的方便性,等等,也是研究的热点。