GAN生成式对抗网络

Posted Debroon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GAN生成式对抗网络相关的知识,希望对你有一定的参考价值。

 


GAN:深度学习新思路

一开始我们通过生成模型让计算机自动生成照片。

使用传统的神经网络方法,希望通过模拟人的大脑思考方式来进行图片的生成。

但是生成的图像质量始终不理想,如果继续对现在的模型进行优化,需要非常大量的训练数据集,而且最终的可行性也不得而知。
 


GAN 的结构

如果不是只用一个神经网络,而是同时使用两个神经网络,会不会有更好的效果呢?

生成对抗网络的两方 —— 生成器与判别器。

  • 生成器 G ( Z ) G(Z) G(Z):输入一个向量,噪点数据(prior),输出需要生成固定大小的像素图像(generated data)
  • 判别器 D ( x ) D(x) D(x):用来判别图片是真是假,输入图片(训练的数据或者生成的数据),输出为判别图片的标签

这个过程和鉴别古董类似。

生成器是一个古董赝品制作者,其成长过程是从一个零基础的“小白”慢慢成长为一个“仿制品艺术家”。

而鉴别器担任的则是一个古董鉴别专家的角色,它一开始也许仅仅是一个普通等级的“鉴别师”,在与赝品制作者的博弈中它逐渐成长为一个技术超群的鉴别专家。

生成器生成,鉴别器鉴别,让俩者相互比拼和较劲。

在经历了N次的互相博弈以后,两者在整个训练过程中都变得非常强,其中的仿造者几乎能制作出以假乱真的作品,而鉴别者也早已是“火眼金睛”的鉴别专家了。

最后一次博弈是这样的:赝品制作者已经完全摸透了鉴别师的心理,虽然他还是没有见过真的古董是什么样子,但是对古董应该具备什么样的特性已经十拿九稳,对于可能的鉴别过程也都了然于心。

对于如此以假乱真的赝品,虽然鉴别者拥有“火眼金睛”,但已然是无能为力了,TA可以做的只能是凭运气猜测是真是假,而无法用确定的理由进行判断。

现在我明白了,师傅之前说的话了 —— 以后,就没有古董专家了。

这就是生成对抗网络最终的目的,而我们所需要做的就是培养出这个能够以假乱真的生成器。

以假乱真的功能,让 GAN生成对抗网络在艺术创作、艺术设计、智能作曲、AI换脸各个领域作出了重大突破。

如,由法国艺术创作团队Obvious使用GAN算法生成的画作以43万美元的高价被拍走,价格甚至远超同场拍卖的毕加索作品。

如,在古典音乐方面,有一家叫作Aiva的公司通过深度学习技术吸收了海量的古典音乐作品。

在演奏时,把AI与作曲家各自作的曲子混在一起,事实是观众认为创作的曲子比真的巴赫更像巴赫。

目前大部分GAN应用领域的工作都集中在图像和视频领域,我偏向图像处理,如AI换脸,以及计算机安全,如对抗攻击。

对于对抗攻击的研究目前依然是一个开放的领域,虽然现在还没有一个完美的研究能够找到应对对抗攻击的方法,但是也没有理论能证明对抗攻击是无法防御的。
 


GAN 思想

GAN 思想:从训练库里获取很多训练样本,从而学习这些训练案例,因为这些真实样本的概率分布是固定的,就生成类似的概率分布。

GAN 训练过程步骤:

  • 黑色虚线:真实样本的概率分布
  • 绿色实线:生成样本的概率分布 G ( Z ) G(Z) G(Z)
  • 蓝色虚线:判别器判断的概率分布 D ( x ) D(x) D(x)
  • z 表示噪音
  • z - x 表示生成器生成的概率分布映射

整个过程:

  • 建立好 GAN 结构:这时候生成器生成的分布和真实分布区别较大,并且判别器判别出样本的概率不稳定,形如左边第一幅图。
  • 训练判别器,能够辨别真假:在真实数据上训练 n epochs 判别器,产生假数据并训练判别器识别为假 ······ 通过多次训练判别器达到第二副图的样本状态,此时判别样本区分得非常显著。
  • 训练生成器,使得生成假样本接近真实样本的分布,达到欺骗效果:经过多次反复训练迭代后,训练生成器达到第三副图的状态,此时生成器分布相比之前,非常逼近真实样本的分布。 最终希望能够达到第四副图状态,生成样本分布拟合于真实样本分布,并且判别器分辨不出样本是生成的,还是真实的。

通过学习大量数据,从而具备能够产生同类型新数据的能力。

那么有哪些方法,可以实现这个功能呢?

  • 自动编码器
     

自动编码器

自动编码器,一开始的功能主要是数据去噪和数据压缩。

后来也用于实现生成模型的功能,一种使用神经网络学习数据值编码的无监督方式。

  • 使用编码器对某类型数据训练后,编码器、解码器分别具备了此类型的编/解码功能
  • 训练后,解码器作为生成模型,输入任意数据,解码器都可以生成对应的数据


数字 2 经过解码器后,输出了一个与原始数据非常接近的输出图像,虽然压缩有所损失,但轮廓是一致的。

实现自动编码器:

  • 搭建一个编码器
  • 搭建一个解码器
  • 设定一个损失函数

过程:

  • 输入数据给编码器,编码成一个 CODE,经过解码器,变成了一个新的 CODE
  • 俩个 CODE 进行损失衡量

 


GAN 的数学原理

GAN 可以无中生有,生成任意图片、视频。

比如下图的人物都是 GAN 生成的:

而生成这些人物,只靠一个数学公式:

这个公式真的很美,不过很长,拆分是理解的第一步,再精确到每个字符的理解。


 


价值函数 V ( D ,   G ) V(D,~G) V(D, G)

V ( D ,   G ) V(D,~G) V(D, G) 是价值函数 Value Function 的简写。

价值函数,是强化学习里面的内容。

有监督学习、无监督学习、强化学习的区别:

  • 有监督的学习就如同凡事你都学习你的上级之前的做事方法,但是水平也不会高出他们太多。

  • 无监督的学习就是没人管,自己做,到年底上级根据你的表现给你奖金,奖金就是你做事的目标函数。

  • 强化学习就是没人管你怎么做,如果做得好,上级及时给你反馈;如果做坏了,对你进行批评。

强化学习不是通过数据采集,事先没有各种标注好的数据,而是通过行动后的反馈来调整。

比如小的时候喜欢摸灶台,我并不知道灶台上的东西是什么,但摸到的反馈会改变了我的动作:

  • 如果我摸到特别烫的,烫到我了,反馈就是 -100,我再也不敢摸了
  • 如果我摸到特别好吃的,反馈就是 +100,我会继续摸下去
  • 当然,我也可以什么都不做,此时反馈就是 0

目标是让,价值函数最大!

那么,什么是价值函数最大?

  • 学会选择 即时奖励 最大的动作,比如上例中 +100 > 0 > -100

学习过程:

  • 通过观测环境得到自己所处的状态(state),接下来根据 策略(policay)决策,做出一个动作

  • 这个动作会使得环境中转移到一个新状态(state),并且在转移时会获得一个 即时奖励(reward)

  • 又可以在新状态(state)继续选择,这样累积很多即时奖励(reward)

  • 目标是,在到达终点时累积的即时奖励 (reward)最大

这个过程具体就是,一个数学公式:


翻译一下:

  • 把所有即时奖励 (reward)累积起来: r 1 + r 2 + ⋅ ⋅ ⋅ + r t r_1+r_2+···+r_t r1+r2++rt

  • 但并不是每个即时奖励 (reward)都很重要,越是开始,因为随机性大,就越没那么重要: 0.1 r 1 + 0.2 r 2 + ⋅ ⋅ ⋅ + 0.7 r t 0.1r_1+0.2r_2+···+0.7r_t 0.1r1+0.2r2++0.7rt

 


m i n   m a x   V ( D ,   G ) min~max~V(D,~G) min max V(D, G)

价值函数的最终状态是,生成器G 最小,判别器D 最大。


 


l o g D ( x )   a n d   l o g ( 1 − D ( G ( z ) ) ) logD(x)~and~log(1-D(G(z))) logD(x) and log(1D(G(z)))

 


E x ~ P d a t a ( x )   a n d   E z ~ P z ( z ) E_x~Pdata(x)~and~E_z~Pz(z) ExPdata(x) and EzPz(z)

以上是关于GAN生成式对抗网络的主要内容,如果未能解决你的问题,请参考以下文章

生成式对抗网络GAN 的研究进展与展望

GAN生成式对抗网络的原理

GAN生成式对抗网络

GAN生成式对抗网络

不要怂 就是"干"如何用 TensorFlow 实现生成式对抗网络(GAN)

生成式对抗网络模型综述