能生成Deepfake也能诊断癌症,GAN与恶的距离

能生成Deepfake也能诊断癌症,GAN与恶的距离

大数据文摘出品

来源:floydhub

编译:栾红叶、张大笔茹、小七

GAN可能是最近人工智能圈最为人熟知的技术之一。

但是它的爆火不仅是由于这个技术出神入化的好用,还因为由他催生的相关应用导致了各种伦理道德问题。

最受关注的当然是Deepfake(深度伪造),这款操作容易且效果完美的换脸应用,让人们谈“GAN”色变。

能生成Deepfake也能诊断癌症,GAN与恶的距离

朱茵的脸被换成了杨幂

而近期,Deepfake甚至有了升级版,走红网络的一键生成裸照软件DeepNude,只要输入一张完整的女性图片就可自动生成相应的裸照,由于广泛传播而造成了预料之外的后果,开发者最终将APP下架。

能生成Deepfake也能诊断癌症,GAN与恶的距离

被一键脱衣的霉霉

相关技术引发了一系列社会后果,并且引发了政府立法部门的重视。2019年6月13日,美国众议院情报委员会召开关于人工智能深度伪造的听证会,公开谈论了深度伪造技术对国家、社会和个人的风险及防范和应对措施。

让人嗤之以鼻的同时,真正的研究者们也在用GAN推动人类社会的发展。据《MIT科技评论》报道,吕贝克大学研究人员近期刚刚利用deepfake背后同样的技术,合成了与真实影像无异的医学图像,解决了没有足够的训练数据的问题,而这些图像将可以用于训练AI通过X光影像发现不同的癌症。

那么,技术本身就存在原罪么?又是哪里出了错呢?

让我们回到GAN诞生的那天,从头回顾这一让人又爱又恨的技术发展的前世今生。

GAN的诞生故事:一场酒后的奇思妙想

时间拉回到2014年的一晚,Ian Goodfellow和一个刚刚毕业的博士生一起喝酒庆祝。在蒙特利尔一个酒吧,一些朋友希望他能帮忙看看手头上一个棘手的项目:计算机如何自己生成图片。

研究人员已经使用了神经网络(模拟人脑的神经元网络的一种算法),作为生成模型来创造合理的新数据。但结果往往不尽人意。计算机生成的人脸图像通常不是模糊不清,就是缺耳少鼻。

Ian Goodfellow朋友们提出的方案是对那些组成图片的元素进行复杂的统计分析以帮助机器自己生成图片。这需要进行大量的数据运算,Ian Goodfellow告诉他们这根本行不通。

边喝啤酒边思考问题时,他突然有了一个想法。如果让两个神经网络相互对抗会出现什么结果呢?他的朋友对此持怀疑态度。

当他回到家,他女朋友已经熟睡,他决定马上实验自己的想法。那天他一直写代码写到凌晨,然后进行测试。第一次运行就成功了!

那天晚上他提出的方法现在叫做GAN,即生成对抗网络(generative adversarial network)。

能生成Deepfake也能诊断癌症,GAN与恶的距离

Goodfellow自己可能没想到这个领域会发展得如此迅速,GAN的应用会如此广泛。

下面我们先来看几张照片。

能生成Deepfake也能诊断癌症,GAN与恶的距离

如果你没有亲眼看到我去过的地方,那就可以认为这些照片完全是假的。

当然,我并不是说这些都是ps的或者CGI编辑过的,无论Nvidia称他们的新技术是如何了得,那也只是图片,不是真实的世界。

也就是说,这些图像完全是用GPU计算层层叠加,并且通过烧钱生成的。

能够做出这些东西的算法就是对抗生成网络,对于那些刚开始学习机器学习的人而言,编写GAN是一个漫长的旅途。在过去的几年中,基于对抗生成网络应用的创新越来越多,甚至比Facebook上发生的隐私丑闻还多。

能生成Deepfake也能诊断癌症,GAN与恶的距离

2014年以来GANs不断进行改进才有了如今的成就,但是要一项一项来回顾这个过程,就像是要重新看一遍长达八季的“权力的游戏”,非常漫长。所以,在此我将仅仅重温这些年来GAN研究中一些酷炫成果背后的关键思想。

我不准备详细解释转置卷积(transposed convolutions)和瓦瑟斯坦距离(Wasserstein distance)等概念。相反,我将提供一些我觉得比较好的资源链接,你可以使用这些资源快速了解这些概念,这样你就可以看到它们在算法中是如何使用的。

下文的阅读需要你掌握深度学习的基础知识,并且知道卷积神经网络的工作原理,否则读起来可能会有点难度。

鉴于此,先上一张GAN发展路线图:

能生成Deepfake也能诊断癌症,GAN与恶的距离

GAN路线图

图中的过程我们将在下文一步一步地讲解。让我们先来看看内容大纲吧。

  • GAN:Generative Adversarial Networks
  • DCGAN:Deep Convolutional Generative Adversarial Network
  • CGAN:Conditional Generative Adversarial Network
  • CycleGAN
  • CoGAN:Coupled Generative Adversarial Networks
  • ProGAN:Progressive growing of Generative Adversarial Networks
  • WGAN:Wasserstein Generative Adversarial Networks
  • SAGAN:Self-Attention Generative Adversarial Networks
  • BigGAN:Big Generative Adversarial Networks
  • StyleGAN:Style-based Generative Adversarial Networks
  • GAN:Generative Adversarial Networks

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    看到这张图你首先想到的是什么,是不是觉得这像素也太低了,还看得人难受,尤其是对于密集恐惧症患者来说,这张图片看起来像是某个数学书呆子在excel表中放大了一张缩小的照片。

    我们来看看这图片究竟是什么?

    看完视频是不是发现除了Excel,其他都猜对了。

    早在2014年,Ian Goodfellow提出了这个革命性的想法——让两个神经网络互相竞争(或合作,这是一个视角问题)。

    感兴趣的同学可以查看Ian Goodfellow 提出GAN时的原文。

    论文链接:

    https://arxiv.org/abs/1406.2661

    代码链接:

    https://github.com/goodfeli/adversarial

    作者相关论文链接:

    https://arxiv.org/abs/1701.00160

    一个神经网络试图生成真实数据(注意:GAN可用于给任何数据分布建模,但近来其主要用于图像),而另一个神经网络则试图判别真实数据和生成器网络生成的数据。

    生成器网络使用判别器作为损失函数,并更新其参数以生成看起来更真实的数据。

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    另一方面,判别器网络更新其参数以使其更好地从真实数据中鉴别出假数据,所以它这方面的工作会变得更好。

    这就像猫和老鼠的游戏,持续进行,直到系统达到所谓的“平衡”,其中生成器能够生成看起来足够真实的数据,然后判别器则轻易就能正确判断真假。

    到目前为止,如果顺利的话,你的代码无误,亚马逊也没有毙掉你的spot实例(顺便说一句,如果使用FloydHub就不会出现这个问题,因为他们提供了备用的GPU机器),那么你现在就留下了一个能从同样的数据分布中准确生成新数据的生成器,它生成的数据则可以成为你的训练集。

    这只是非常简单的一种GAN。到此,你应该掌握GAN就是使用了两个神经网络——一个用于生成数据,一个是用来对假数据和真实数据进行判别。理论上,您可以同时训练它们,然后不断迭代,直至收敛,这样生成器就可以生成全新的,逼真的数据。

    DCGAN:Deep Convolutional Generative Adversarial Network

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    论文:

    https://arxiv.org/abs/1511.06434

    代码:

    https://github.com/floydhub/dcgan

    其他文章:

    https://towardsdatascience.com/up-sampling-with-transposed-convolution-9ae4f2df52d0

    看原文是非常慢的,看本文将为您节省一些时间。

    先来看几个公式:

    卷积=擅长图片

    GANs=擅长生成一些数据

    由此推出:卷积+GANs=擅长生成图片

    事后看来,正如Ian Goodfellow自己在与Lex Fridman的播客中指出的那样,将这个模型称为DCGAN(“深度卷积生成对抗网络”的缩写)似乎很愚蠢,因为现在几乎所有与深度学习和图像相关的内容都是深度的(deep)和卷积的(convolutional)。

    此外,当大多数人了解到GANs时,都会先学习“深度学习和卷积”(deep and convolutional)。

    然而,有一段时间GANs不一定会使用基于卷积的操作,而是依赖于标准的多层感知器架构。

    DCGAN通过使用称为转置卷积运算(transposed convolution operation)来改变了这一现状,它还有个不太好听的名字——反卷积层( Deconvolution layer)。

    转置卷积是一种提升运算,它帮助我们将低分辨率图像转换为更高分辨率的图像。

    但是严格来说,如果您要掌握转置卷积原理,只看上文介绍不够,是需要深入研究链接里的资源,毕竟这是现代所有GAN架构的基础。

    如果你没有足够多的的时间来看,我们可以通过一个总结得很好的动画来了解转置卷积是如何工作:

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    在一般的卷积神经网络中,你会用一系列卷积(以及其他操作)将图像映射到通常是较低维度的向量。

    类似地,运用多个反卷积允许我们映射出单个低分辨率的阵列,并使之成为鲜明的全彩图像。

    在我们继续之前,让我们尝试使用GAN的一些独特方法。

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    你现在的位置:红色的X

    CGAN:Conditional Generative Adversarial Network

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    论文:

    https://arxiv.org/abs/1411.1784

    代码:

    https://github.com/PacktPublishing/Advanced-Deep-Learning-with-Keras

    博客:

    https://wiseodd.github.io/techblog/2016/12/24/conditional-gan-tensorflow/

    原始GAN根据随机噪声生成数据。这意味着你可以在此基础上训练它,比如狗的图像,它会产生更多的狗的图像。

    您也可以在猫的图像上训练它,在这种情况下,它会生成猫的图像。

    您也可以在尼古拉斯·凯奇(Nicholas Cage)图像上训练它,在这种情况下,它会生成尼古拉斯·凯奇(Nicholas Cage)图像。

    你也可以在其他图像上训练它,以此类推。

    但是,如果你试图同时训练狗和猫的图像,它会产生模糊的半品种。

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    CGAN旨在通过只告诉生成器生成一个特定物种的图像来解决这个问题,比如一只猫,一只狗或一个尼古拉斯·凯奇。

    具体地来说,CGAN将单编码向量yy连接到随机噪声向量zz,产生如下所示的体系结构:

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    现在,我们可以用同一个GAN同时生成猫和狗。

    CycleGAN

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    论文:

    https://arxiv.org/abs/1703.10593v6

    代码:

    https://github.com/junyanz/CycleGAN

    其他项目及文章:

    https://junyanz.github.io/CycleGAN/

    https://towardsdatascience.com/turning-fortnite-into-pubg-with-deep-learning-cyclegan-2f9d339dcdb0

    GANs并不仅仅用于生成图像。他们还可以创建“马+斑马”这样的新生物,如上图所示。

    为了创建这些图像,CycleGAN旨在解决“图像到图像”转换的问题。

    CycleGAN并不是一个推动艺术图像合成的新GAN架构,相反,它是使用了GAN的智能方式。因此,您可以自由地将此技术应用于您喜欢的任何架构。

    此时,我会建议你阅读一篇论文(
    https://arxiv.org/abs/1703.10593v6)。写得非常好,即使是初学者也很容易理解。

    CycleGAN的任务是训练一个网络G(X)G(X),该网络会将图像从源域XX映射到目标域YY。

    但是,你可能会问:“这与常规的深度学习或样式迁移有什么不同。”

    嗯,下面的图片很好地总结了这个问题。CycleGAN将不成对的图像进行图像平移。这意味着我们正在训练的图像不必代表相同的东西。

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    如果我们有大量的图像对:(图像,达芬奇的绘画图像)(图像,达芬奇绘画图像),那么训练达芬奇的绘画图像就会(相对)容易一些。

    不幸的是,这个家伙并没有太多的画作。

    然而,CycleGAN可以在未配对的数据上进行训练,所以我们不需要两个相同的图像。

    另一方面,我们可以使用样式迁移。但这只会提取一个特定图像的风格并将其转移到另一个图像,这意味着我们无法转化一些假设性事物,如将马转化为斑马。

    然而,CycleGAN会学习从一个图像域到另一个域的映射。所以我们就说一下所有的莫奈画作训练。

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    他们使用的方法非常优雅。CycleGAN由两个生成器GG和FF,以及两个判别器DXDX和DYDY组成。

    GG从XX获取图像并尝试将其映射到YY中的某个图像。判别器 DYDY预测图像是由GG生成还是实际在YY中生成。

    类似地,FF从YY接收图像并尝试将其映射到XX中的某个图像,而判别器DXDX 预测图像是由FF生成还是实际上是在XX中。

    所有的这四个神经网络都是以通常的GAN方式进行训练,直到我们留下了强大的生成器GG和FF,它们可以很好地执行图像到图像的转换任务,乃至愚弄了DYDY 和DXDX。

    这种类型的对抗性损失听起来是个好主意,但这还不够。为了进一步提高性能,CycleGAN使用另一个度量标准,循环一致性损失。

    一般来说,优秀的转换应该具备以下属性,当你来回转换时,你应该再次得到同样的东西。

    CycleGAN用巧妙的方式实现了这个想法,它迫使神经网络遵守这些约束:

    F(G(x))≈x,x∈XF(G(x))≈x,x∈X

    G(F(y))≈y,y∈YG(F(y))≈y,y∈Y

    在视觉上看,循环一致性如下所示:

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    总损失函数是以惩罚网络不符合上述特性的方式构造的。我不打算在这里写出这个损失函数,因为这会破坏它在文章中汇总的方式。

    好的,七龙珠还没有召唤完,让我们回到我们找寻更好的GAN架构的主要任务。

    CoGAN:Coupled Generative Adversarial Networks

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    论文:

    https://arxiv.org/abs/1606.07536

    代码:

    https://github.com/mingyuliutw/CoGAN

    博客:

    https://wiseodd.github.io/techblog/2017/02/18/coupled_gan/

    你知道比一个GAN更好的网络是什么吗?两个GAN!

    CoGAN(即“Coupled Generative Adversarial Networks”,不要与CGAN混淆,后者代表的是条件生成对抗网络)就是这样做的。它会训练两个GAN而不是一个单一的GAN。

    当然,GAN研究人员不停止地将此与那些警察和伪造者的博弈理论进行类比。所以这就是CoGAN背后的想法,用作者自己的话说就是:

    在游戏中,有两个团队,每个团队有两个成员。生成模型组成一个团队,在两个不同的域中合作共同合成一对图像,用以混淆判别模型。判别模型试图将从各个域中的训练数据分布中绘制的图像与从各个生成模型中绘制的图像区分开。同一团队中,参与者之间的协作是根据权重分配约束建立的。

    这样就有了一个GAN的多人局域网竞赛,听起来不错,但你怎么能让它真正起作用呢?

    事实证明这并不复杂,只需使网络对某些层使用完全相同的权重。

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    在我认为(可能不太谦虚),关于CoGAN最酷的事情不是提高图像生成质量,也不是你可以在多个图像域中进行训练的事实。

    而是,事实上,你获得两张图片的价格仅是之前的四分之三。

    由于我们共享一些权重,因此CoGAN将比两个单独的GAN具有更少的参数(因此将节省更多的内存,计算和存储)。

    这是一种微妙技术,但是有点过时,所以我们今天看到的一些新GAN并不会使用这种技术。

    不过,我认为这一想法会在未来再次得到重视。

    ProGAN:Progressive growing of Generative Adversarial Networks

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    论文:

    https://arxiv.org/abs/1710.10196

    代码:

    https://github.com/tkarras/progressive_growing_of_gans

    其他文章及视频:

    https://towardsdatascience.com/progan-how-nvidia-generated-images-of-unprecedented-quality-51c98ec2cbd2

    https://www.youtube.com/watch?v=G06dEcZ-QTg

    训练集GAN存在许多问题,其中最重要的是其不稳定性。

    有时,GAN的损失会发生振荡,因为生成器和判别器会消除对方的学习。也有时,错误会在网络收敛后立即发生,这时图像就会看起来很糟糕。

    ProGAN是一种通过逐步提高生成图像的分辨率来使其训练集稳定的技术。

    常识认为,生成4×4的图像比生成1024×1024图像更容易。此外,将16×16的图像映射到32×32的图像比将2×2图像映射到32×32图像更容易。

    因此,ProGAN首先训练4×4生成器和4×4判别器,并在训练过程的后期添加相对应的更高分辨率的层。我们用一个动画来总结一下:

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    WGAN:Wasserstein Generative Adversarial Networks

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    论文:

    https://arxiv.org/abs/1701.07875v3

    代码:

    https://github.com/eriklindernoren/Keras-GAN

    其他资源:

    http://www.depthfirstlearning.com/2019/WassersteinGAN

    https://lilianweng.github.io/lil-log/2017/08/20/from-GAN-to-WGAN.html

    https://www.alexirpan.com/2017/02/22/wasserstein-gan.html

    https://medium.com/@jonathan_hui/gan-wasserstein-gan-wgan-gp-6a1a2aa1b490

    这篇文献可能是此列表中最具理论性和数学性的论文。作者在文中用了一卡车的证据、推论以及另一种数学术语。因此,如果积分概率计量和Lipschitz连续与你无关,我们也不会在这个上花太多时间。

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    简而言之,WGAN(’W’代表Wasserstein)提出了一个新的成本函数,这些函数在纯数学家和统计学家中风靡一时。

    这是GAN minimax函数的旧版本:

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    这是WGAN使用的新版本:

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    在大多数情况下,你需要知道WGAN函数是清除了旧的成本函数,该函数近似于称为Jensen-Shannon散度的统计量,并在新的成本函数中滑动,使其近似于称为1-Wasserstein距离的统计量。

    看了下图您就知道为什么要这么做。

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    当然,如果您感兴趣的话,接下来的是对数学细节的快速回顾,这也是WGAN论文备受好评的原因。

    最初的GAN论文里认为,当判别器是最优的时,生成器以最小化Jensen-Shannon散度的方式更新。

    如果你不太明白的话,Jensen-Shannon散度是一种衡量不同两种概率分布的方法。JSD越大,两个分布越“不同”,反之亦然。计算公式如下:

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    然而,把JSD最小化是最好的选择吗?

    WGAN论文的作者认为可能不是。出于特殊原因,当两个发行版完全不重叠时,可以显示JSD的值保持为2log22log?2的常量值。

    具有常量值的函数有一个梯度等于零,而零梯度是不好的,因为这意味着生成器完全没有学习。

    WGAN作者提出的备用距离度量是1-Wasserstein距离,也称为搬土距离(EMD距离)。

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    “搬土距离”来源于类比,想象一下,两个分布中的一个是一堆土,另一个是一个坑。

    假设尽可能有效地运输淤泥,沙子,松土等物品,搬土距离测量将土堆运输到坑中的成本。这里,“成本”被认为是点之间的距离×土堆移动的距离×移动的土堆量。

    也就是说(没有双关语),两个分布之间的EMD距离可以写成:

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    当inf是最小值时,xx和yy是两个分布上的点,γγ是最佳运输计划。

    可是,计算这个是很难的。于是,我们计算完全不同的另一个值:

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    这两个方程式之间的联系一开始似乎并不明显,但通过一些称为Kantorovich-Rubenstein二重性的复杂数学(试着快读三次),可以证明这些Wasserstein / Earth mover距离的公式在试计算同样的东西。

    如果你跟不上我提供的链接中的的论文和博客文章中的一些重要的数学概念,也不要过于担心。关于WGAN的大部分工作都是为一个简单的想法提供一个复杂的理由。

    SAGAN:Self-Attention Generative Adversarial Networks

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    论文:

    https://arxiv.org/abs/1805.08318v1

    代码:

    https://github.com/heykeetae/Self-Attention-GAN

    其他资源:

    https://lilianweng.github.io/lil-log/2018/06/24/attention-attention.html

    https://towardsdatascience.com/not-just-another-gan-paper-sagan-96e649f01a6b

    由于GAN使用转置卷积来“扫描”特征映射,因此它们只能访问附近的信息。

    单独使用转置卷积就像绘制图片,只在画笔的小半径范围内查看画布区域。

    即使是能完善最独特和复杂细节的最伟大的艺术家,在创作过程中也需要退后一步,看看大局。

    SAGAN(全称为“自我关注生成对抗网络”)使用自我关注机制,由于迁移模型架构,近年来这种方式已经变得十分流行。

    自我关注让生成器退后一步,查看“大局”。

    BigGAN:Big Generative Adversarial Networks

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    论文:

    https://arxiv.org/abs/1809.11096v2

    代码:

    https://github.com/huggingface/pytorch-pretrained-BigGAN

    其他资源:

    https://www.youtube.com/watch?v=ZKQp28OqwNQ

    https://thegradient.pub/bigganex-a-dive-into-the-latent-space-of-biggan/

    https://medium.com/syncedreview/biggan-a-new-state-of-the-art-in-image-synthesis-cf2ec5694024

    经过四年漫长的岁月,DeepMind前所未有地决定与GAN合作,他们使用了一种深度学习的神秘技术,这种技术非常强大,是最先进的技术,超越了先进技术排行榜上所有其他的技术。

    接下来展示BigGAN,GAN绝对没有做什么(但是运行了一堆TPU集群,却不知何故应该在这个列表中)。

    能生成Deepfake也能诊断癌症,GAN与恶的距离

    来源:大数据文摘

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2019年6月3日
    下一篇 2019年6月3日

    相关推荐