导读:你一定看过很多换脸视频了,今天我们聊聊这些视频背后的技术——GAN。
作者:木羊同学
来源:大数据DT(ID:hzdashuju)
01 什么是GAN
今天聊GAN。这要从一个新闻说起,2020年圣诞流出一段诡异的视频,英国那位超长待机的老婆婆先是在视频里来了一段放飞自我的演讲,把以前绝对不适合在正式场合讲的话统统一吐为快,然后干脆彻底放飞自我,直接跳上桌子上来了一段TikTok热舞,场面一度十分混乱。
当然,听过新闻的同学应该已经知道了,这位放飞自我的老太太只是用深度伪造技术(DeepFake)山寨出来的Deepfake Queen,但是那段视频实在过于逼真,大家都不禁去想,视频中的老太太如果不是太反常理,恐怕会有不少人信以为真。再细想开去,没有不可怕,只有脑洞不够大。
深度伪造技术早已惹得满城风雨,连2021年1月1日才新鲜出炉的《民法典》都专门作出了规定,严禁利用深度伪造侵犯肖像权。不过,亦正亦邪的深度伪造我们下次再找机会细聊,今天只说它的核心技术。
深度伪造最早是以“换脸”(Face-Swap)的形象出现在世人面前,当然,现在深度伪造早已开枝散叶,远不止是换脸,但所使用的核心技术却始终如一,这就是我们今天的主角,GAN。
GAN是三个英文单词的首字母简写,全称Generative Adversarial Network,中文叫作“生成(式)对抗网络”。这个名字神秘中带点厉害,又是生成又是对抗的,感觉像是个多人联机游戏,它到底是什么,我们后面细说。
GAN现在是深度学习中很重要的一个分支,说到这个还有一段小插曲。GAN最早2014年由 Ian Goodfellow在论文《Generative Adversarial Networks》中提出来的,现在提到“GAN之父”,说的就是这位“好家伙”。
论文提出之后,大家都乐了,原来都觉得深度学习的走位已经风骚到了极致,没想到这风骚还能翻倍。于是,大家纷纷直接一句好家伙,连Yann LeCun这样咖位的大神都一顿商业互吹,说GAN是“过去十年间机器学习领域最让人激动的点子”。
你要知道Yann LeCun是谁,他就是那位发明了CNN的大神,我们不好说是Yann LeCun已一己之力支棱起了深度学习,但深度学习称得上奠基人的一定得把他包含在内。
说实话,GAN刚出来的时候有点简陋,如果你看过那篇GAN的创始论文,也就是上文所说的《Generative Adversarial Networks》,你会觉得这个点子微妙中带着尴尬。
在机器学习中,有一种将模型一分为二的分法,一种称之为判别模型,也就是我们最常见的各种分类器,另一种则称之为生成模型,它会“创作”一点东西。GAN是一种生成模型,它名字中的“生成对抗网络”中的“生成”,指的就是这个。
那GAN之父好家伙在创始论文中用GAN生成了什么呢?玩过深度学习的同学应该都熟悉MINST数据集,在论文里,好家伙正是用GAN生成了MINST数据集里的数字。
我很早就知道GAN了,这些年深度学习新奇的玩具发明了不少,善终的还真不多。现在GAN生成的这玩意不人不鬼,怎么想早晚也要销声匿迹吧。结果,大神就是大神,眼界远不是我等肉眼凡胎所能比拟。现在GAN果然大放异彩,而很多人都认为这还仅仅只是开始。
口说无凭,还是让我们看图说话,下面这位金发妹子并不是真人,而是网站thispersondoesnotexist.com使用StyleGAN2生成的高清图片。多说一句,StyleGAN2也是目前图片生成能力最强的GAN模型,英伟达荣誉出品,出手就是1024X1024的高清大图,连汗毛都根根可见,远不是创世论文里面那个只能生成32X32的弱鸡可比。
02 GAN的结构
GAN的核心原理,在于名字中的两个字,对抗。
先介绍一下GAN的基本结构。GAN自2014年诞生起就不断出现各种变种,数量非常惊人。你可以觉得有个百来种差不多了,Github有人维护一个叫GAN ZOO的项目,目的就是尽可能全地收集各类的GAN变种,现在你去看,已经有五百多个GAN的变种模型。
不过,变种虽然多,但GAN的基本结构相当稳定,就两样东西,一个叫D,一个叫G。这两个都分别是独立的深度学习模型。
D代表Discriminator Network,中译“判别神经网络”。记得我们前面说,机器学习有一种将模型一分为二的分法吗?没错,这里的判别神经网络,就是一种采用深度神经网络实现的判别模型。
判别神经网络我们很熟悉,深度学习当年一战成名,就是靠一款使用了CNN的神经网络模型AlexNet,在ImageNet的图像识别任务中取得了惊为天人的高分,把第二名甩得连车尾灯都看不见。而这个AlexNet,就是典型的判别模型。
G代表Generator Network,中译“生成神经网络”。相比你已经猜到,这个生成神经网络属于生成模型,算是GAN的核心部件。生成模型是个很有意思的话题,我们多说一点。
我经常看到有人讨论一个话题,问人工智能到底有没有想象力。常见一种说法,是说现在人工智能进步很大,但总的来说只是模仿人类,而缺乏想象力,没有创造性的产品。这种说法,给我的感觉是把动物世界里的智能标准搬到了人工智能这里来,觉得自然界有很多动物都有模仿能力,但缺乏人类这样的想象能力。
当然,对于什么是想象力现在没有一个公认的定义,如果说指的是无中生有地生产一些天马行空的信息,那生成神经网络是有这样的能力的,而且绝对能够保证比人的想象要更加天马行空。这个其实不难理解,最常见的生成模型是回归模型,想象一下,让回归模型胡乱“吐”一些莫名其妙的数字,真的会很难吗?非常简单,反而是要符合未来走势的数字会更难。
这个例子也许不够直观,毕竟我们直觉觉得吐数字和想象力没啥关系,那不妨找一下生成模型所生成的图像或者文本,譬如说花书的封面,那种超乎认知逻辑的诡异画面,究竟算不算人工智能具有了“想象力”呢?
说得有点远了。简单来说,生成模型就是具有“生成能力”的模型,用专业术语来说,就是能够生成服从特定密度函数分布特征的样本的一类模型。生成模型最大的问题不是有无的问题,而是生成效果好坏的问题。
一般来说,生成模型分成两类,一类称为显式密度模型(Explicit Density Model),能够显式地构建出样本的密度函数,并以MLE来求解参数,知名度高的包括深度信念网络和VAE。
这两个模型都比较经典,如果你去翻深度学习的教科书譬如花书,应该还可以看到大段的介绍,特别是这个VAE,一度在生成精度方面占据优势,在GAN出来以后好一段时间还呈现出两类模型分庭抗礼的态势。
不过,在业界实践中这些模型最近都很少听说了,究其原因,是显式密度模型依赖密度函数,限制了神经网络的发挥空间。
那业界爱用哪一类呢?就是GAN所在的另一类生成模型,称为隐式密度模型,既然叫“隐式”,和前者最大的区别自然就是去掉了密度函数。扔掉了密度函数的束缚,深度神经网络就能放开手脚大干一场,最终达到比显式密度模型还要好的生成效果。
03 GAN的原理
不过,这首先就有一个问题:把密度函数作为包袱丢掉容易,可接下来应该依据什么来生成符合特定分布的样本呢?
答案就藏在GAN的名字里,这同样也是多人联机游戏的核心内容:对抗。具体来说,就是G和D的对抗。
有一些介绍GAN的文章,喜欢用周伯通的左右互搏来形容GAN这里的对抗。可惜我对周伯通的了解仅限于知道他叫老顽童,不太清楚这个比喻是不是能够清楚介绍为什么能够通过对抗就能使得G和D——当然主要是G——的性能不断提升。
其实这个概念并不难介绍,首先,我把创始论文中的公式丢在下面:
别怕!
这条式子是GAN理论中最经典的式子,我知道等号的右边看起来很可怕,不过,最精髓的部分在左边,而可怕的右边实际基本上只是一条交叉熵的表达式,交叉熵在机器学习中非常重要,用于度量两个概率分布的差异性,譬如经典的分类模型逻辑回归就使用了交叉熵作为损失函数。
不过,我不想作过多展开,而且这里也是GAN研究中更新换代最密集的地方,现在早已物是人非,你只需要简单掌握它的核心功能是评估模型D的判别准确性,输出值越高,表示模型D的判别结果越准确。
现在看左边。左边有一个奇怪的符号minmax,在GAN里叫Minmax Game,有人翻译成最大化最小化博弈,也有人翻译成最大化最小化游戏,我个人倾向第一种。
这个符号不常见,常见的是单个的max或者单个的min,意思是通过调整参数,使得函数取得最大/最小值。这里确实有个函数,是函数V,函数V就是交叉熵,前面我们说过,它的值越大,表示判别越准。
这里有意思的地方来了:max下面有个D,意思是通过训练模型D,也就是判别网络,使得函数V的取值变大。可是max旁边还有个min,min下边有个G,意思是通过训练模型G,也就是我们的生成模型,使得函数V取值变小。
好了,上面这一串对符号的解释也许有点拗口,其实很简单。首先我们要搞清楚,这里要判别的是什么?两样东西,真样本,以及由生成模型G生成的假样本。
接下来的是就好说了,一句话,判别模型D希望通过不断训练提升判别的准确性,最终目标是真样本假样本一看一个准,判别结果自然就Max了。
那模型G呢?它是个捣蛋鬼,尽想着让模型D的判别结果挂零蛋,最好一个也猜不中,也就是Min。一边想要Max,一边想要Min,判别结果是个此消彼长的过程,这就是所谓的“对抗”。在这个最大化最小化的博弈过程中,攻防双方肯定都将不断成长。
不妨举个现实的例子,烂片鉴定。而模型G和模型D的关系,有点像自恋导演和杠精观众。只导演一拍新片,观众就开始杠,不如那部经典的XXX。导演觉得自己这么优秀当然不接受,就照着XXX一顿临摹,又出了新片,观众也不是信男善女,当然要绞尽脑汁挖掘出新的黑点。
导演不断拍,观众不断杠,直到导演拍出的新片真的达到了XXX的水平,观众这样才终于杠不动了。这就是“对抗”带来的共同进步,学术一点的说法请见下图:
那对抗有没有止境呢?虽然广告常说,进无止境,但这种对抗产生的进步是有止境的。前面我们说,杠精观众也终会有杠不动的那一天,同样,当模型D再也分别不出这是真样本,还是生成的假样本时,用术语来说,就是真样本和生成样本,在分布特征上已经趋于一致时,模型G也就臻于化境了。
关于作者:莫凡,网名木羊同学。娱乐向机器学习解说选手,《机器学习算法的数学解析与Python实现》作者,前沿技术发展观潮者,擅长高冷技术的“白菜化”解说,微信公众号“睡前机器学习”,个人知乎号“木羊”。
延伸阅读《神经网络与深度学习》
点击上图了解及购买
转载请联系微信:DoctorData
推荐语:豆瓣评分9.5!复旦大学邱锡鹏教授力作,周志华、李航联袂推荐,深受好评的深度学习讲义“蒲公英书”正式版!系统整理深度学习的知识体系,由浅入深地阐述深度学习的原理、模型以及方法。更适合中文读者自学与入门的深度学习图书!使你掌握神经网络与深度学习技术的基本原理,知其然也知其所以然。上市不到一周即荣登京东和当当新书榜榜首!
扫码关注【华章计算机】视频号
每天来听华章哥讲书
更多精彩回顾
书讯 | 8月书讯(上)| 这些新书不可错过
书讯 | 8月书讯(下)| 这些新书不可错过
资讯 | Rust跨界前端全攻略
书单 | 2021半年盘点,不想你错过的重磅新书
干货 | Rust跨界前端全攻略
收藏 | 快收藏!!整理了100个Python小技巧!!
上新 | 【新书速递】深入浅出Pandas,用好Python必备
赠书 | 【第66期】火山引擎Redis云原生实践
点击阅读全文购买