作者|FAIZANSHAIKH汇编|曹翔、韩晓阳、Aileen神经网络取得了长足的进步,目前对图像和声音的识别水平与人类相当,在自然语言理解方面取得了不错的效果。但即便如此,谈论用机器自动化人工任务似乎有些牵强。毕竟,我们所做的不仅仅是识别图像和声音,或者了解我们周围的人在说什么,不是吗?让我们看一些需要人类创造力的例子:通过学习BigDataDigest上过去的文章,训练人类编写人工智能作者以非常简单的方式向社区发表文章和解释数据科学概念你买不到著名的一位著名画家的画作。但是,你能否通过学习画家过去的作品来创造一个像任何艺术家一样作画的AI画家?这些任务确实很难自动化,但生成对抗网络(GAN)已经开始使其中一些成为现实。可能的。如果你被GAN这个名字吓到,别担心,看完这篇科普文章你会发现这并不是什么高深莫测的东西。在本文中,我将向您介绍GAN的概念,并解释它们的工作原理和面临的挑战。我还将让您了解人们使用GAN所做的一些很酷的事情,并提供指向一些重要资源的链接以深入研究这些技术。请问,什么是GAN?深度学习专家YannLeCun在Quora上写道:“在我看来,生成对抗网络(GAN)及其相关变体是机器学习领域过去十年中最有趣的想法。”他当然会有这样的观点。当我看到GANs发挥到极致时,我同样印象深刻。但是什么是GAN?让我用一个类比来解释这个概念:如果你想在某件事上做得更好,像象棋,你会怎么做?你可能会和一个比你强的对手下棋。你会分析自己做错了什么,对方做对了什么,并思考下一步如何打败他(她)游戏。你会重复这个步骤,直到你打败你的对手。这个概念可以被纳入构建更好的模型。所以简单来说,要获得一个强大的英雄(即生成器),我们需要一个更强大的对手(即判别器)。另一个Real-LifeAnalogy:一个更现实的类比是伪造者和调查者的关系,伪造者的任务是模仿名家的画作,如果伪造的作品能超越原作,那么伪造者就可以卖掉这幅作品为了很多钱。艺术调查员,在o另一方面,他们的任务是抓住这些假冒伪造者。怎么做,他知道什么属性可以区分真品和假货。通过检查他手中的作品是否是真实的,他可以评估他的知识。造假者和调查员之间的竞赛仍在继续,最终产生最好的调查员(不幸的是,最好的造假者)。这是善与恶的较量。GAN是如何工作的现在我们已经对GAN有了一个概述,让我们继续讨论细节。正如我们所见,GAN有两个主要组成部分,即生成器神经网络和鉴别器神经网络。生成网络采用随机输入并尝试输出数据样本。在上图中,我们可以看到生成器G(z)从p(z)中获取输入z,其中z是来自概率分布p(z)的样本。生成器生成一段数据,该数据被送入鉴别器网络D(x)。判别网络的任务是接收真实数据或生成数据,并尝试预测输入是真实数据还是生成数据。它从pdata(x)中获取输入x,其中pdata(x)是我们的真实数据分布。D(x)然后用Sigmoid函数求解一个二分类问题,输出一个0到1的值。我们先定义GAN的标记符号:Pdata(x)->真实数据的分布X->样本P(z)ofpdata(x)->generator的distributionZ->sampleG(z)ofp(z)->GenerateNetworkD(x)->DiscriminatorNetwork现在作为Generator和Discriminator的较量,GAN的训练是完毕。这可以在数学上表示为:在我们的函数V(D,G)中,第一项是熵(Entropy)。鉴别器试图将其最小化为1。第二项是从随机输入(p(z))传递到生成器的数据的熵。生成器生成一个假样本,由鉴别器识别(也称为最坏情况)。在这一项中,鉴别器试图将其最小化为0(即生成的数据为假数据的概率的对数为0)。所以总的来说,鉴别器试图最大化函数V(D,G)。另一方面,生成器的任务是完全相反的,它试图最小化函数V(D,G)来最小化真实数据和假数据之间的差异。也就是说,生成器和判别器在玩猫捉老鼠的游戏。注:这种训练GAN的方法来源于博弈论中的MinimaxGame。如何训练GAN简单来说,训练阶段包括两个依次完成的阶段——Phase1:训练判别器,冻结生成器(冻结意味着不训练,神经网络只向前传播,不进行Backpropagation反向传播)第二阶段:训练生成器,冻结鉴别器。训练GAN的步骤步骤1:定义问题。你想生成假图像或文本吗?您需要完全定义问题并收集数据。第2步:定义GAN的架构。GAN是什么样子的,生成器和判别器应该是多层感知器还是卷积神经网络?此步骤取决于您要解决的问题。第3步:用真实数据训练N个epoch的判别器。训练鉴别器正确预测真实数据为真。这里N可以设置为1到无穷大之间的任意自然数。第4步:使用生成器生成用于训练鉴别器的假输入数据。训练鉴别器将假数据正确预测为假数据。第5步:使用鉴别器的输入和输出训练生成器。当鉴别器被训练时,它的预测被用作标签来训练生成器。训练生成器来混淆鉴别器。第六步:对多个epoch重复第三步到第五步第七步:人工检查假数据是否合理。如果看起来合适就停止训练,否则回到第3步。这是一个手动任务,手动评估数据是检查其伪造程度的唯一方法。当这一步结束时,就可以评估GAN是否表现良好。喘口气,看看这项技术有什么影响。假设您有一个功能齐全的生成器,几乎可以复制任何东西。举几个例子,你可以生成假新闻、不可思议的书籍和小说、自动回复服务等。你可以拥有一个接近现实的人工智能,一个真正的人工智能!那就是梦想。GANs带来的挑战你可能会问,如果我们知道这些美丽的生物(怪物)能做什么,为什么现在什么都没有发生?这是因为我们只触及了它的表面。在创建足够好的GAN的过程中,有太多的障碍没有被清除。整个学术领域都致力于弄清楚如何训练GAN。训练GAN时最重要的障碍是稳定性。你开始训练一个GAN,如果判别器比它对应的生成器更强大,生成器将无法有效地训练。这反过来会影响你的GAN的训练。另一方面,如果鉴别器过于宽松,理论上它可以允许生成器生成任何图像。这意味着你的GAN没有用。另一种看待GAN稳定性的方法是将其视为整体收敛问题。生成器和鉴别器相互竞争,试图保持领先对方一步。此外,他们相互依赖以进行有效的培训。如果其中一个失败,整个系统就会失败。所以你必须确保它们不会散架。就像波斯王子游戏中的影子一样。你必须保护自己免受试图杀死你的阴影的伤害。如果你杀了你的影子,你就会死;但你什么都不做,你也必死无疑!其他问题请参考http://www.iangoodfellow.com/slides/2016-12-04-NIPS.pdf注:以下图片均由GAN在ImageNet数据集上训练生成。计数问题:GAN无法区分特定对象在特定位置应该出现多少次。正如我们在下面看到的,它在头部生成了比自然状态更多的眼睛。透视问题:GAN无法适应3D对象。它不理解透视,前视图和后视图之间的区别。如下所示,它给出了3D对象的平面(2D)展开。全局结构问题:和透视问题一样,GAN不知道整体结构。例如,在左下方的图像中,它给出了四足牛的生成图像,即牛在所有四条腿站立时用后腿站立。这在现实中是绝对不可能的!正在进行大量研究来解决这些问题。许多比过去效果更好的新模型被提出,如DCGAN、WassersteinGan。实现一个简单的GAN让我们实现一个简化的GAN来强化理论。我们将尝试通过在识别数字数据集上训练GAN来生成数字。数据集包含28x28黑白图像,所有图像均为“.png”格式。我们只需要任务中的训练集。您可以在此处下载数据:https://datahack.analyticsvidhya.com/contest/practice-problem-identify-the-digits/。需要安装一些Python包:numpypandastensorflowkeraskeras_adversarial在开始写代码之前,先了解一下内部工作原理,训练GAN的伪代码如下:来源:http://papers.nips.cc/paper/5423-generative-adversarial注:这是论文中发表的GAN的第一个实现。在近期论文的伪代码中可以看到很多改进和更新,比如在生成网络和判别网络中加入批量归一化(BatchNormalization),训练生成器k等。现在开始编码!首先导入所有模块。为了使确定性随机性可重现,请设置一个种子值。设置数据和工作目录的路径。下载数据。让我们绘制一个图表来查看数据的样子。定义稍后将使用的变量。#definevariables#definevarsg_input_shape=100d_input_shape=(28,28)hidden_??1_num_units=500hidden_??2_num_units=500g_output_num_units=784d_output_num_units=1epochs=25batch_size=128现在定义生成器和鉴别器网络。这是我们的神经网络的架构。我们现在定义GAN。首先导入一些重要的模块。编译GAN并开始训练。这就是我们的GAN的样子。我们在训练10个epoch后得到的图表。经过100个Epochs的训练,生成的图像如下。瞧!您已经构建了您的第一个生成模型!应用GAN我们了解了这些东西是如何工作的,以及训练的挑战。我们现在将看到使用GAN进行的前沿研究。1.预测视频中的下一帧:在视频序列上训练GAN并预测下一张照片生成高分辨率相纸会发生什么:https://arxiv.org/pdf/1609.04802.pdf3。InteractiveImageGeneration:绘制简单的笔画,让GAN为你画出令人印象深刻的图画链接:https://github.com/junyanz/iGAN4。图像翻译:从一个图像生成另一个图像。例如,给定左侧标注的街景,可以使用GAN生成真实照片。在右侧,给出手提包图纸的简单草图,您将获得实际的手提包。论文:https://arxiv.org/pdf/1611.07004.pdf5。文本到图像生成:只需告诉GAN你想看到什么,就可以得到描述对象的逼真照片。论文:https://arxiv.org/pdf/1605.05396.pdf资源这里有一些资源可以帮助你更深入地理解GAN:关于GAN的论文:https://github.com/zhangqianhui/AdversarialNetsPapersDeepLearningbookaboutChapter:http://www.deeplearningbook.org/contents/generative_models.htmlIanGoodfellow关于GAN的讲座:https://channel9.msdn.com/Events/Neural-Information-Processing-Systems-Conference/Neural-Information-Processing-Systems-Conference-NIPS-2016/Generative-Adversarial-NetworksNIPS2016关于训练GAN的演讲:https://www.youtube.com/playlist?list=PLJscN9YDD1buxCitmej1pjJkR5PMhenTF我希望你和我一样对未来感到兴奋先读GAN。它们将改变机器可以为人类做的事情。想想看,从准备新食谱到创作图片,GAN拥有前所未有的可能性。原文:https://www.analyticsvidhya.com/blog/2017/06/introductory-generative-adversarial-networks-gans/:BigDataDigest)》】点此查看作者更多好文
