什么是GAN
这两年来,GAN生成对抗网络非常火,时不时的有新奇应用爆出来。比如机器创作名画、二次元头像,还有生成非常美的摄影作品,甚至在某些网站出现AI换脸的骚操作。
实际上这些都属于生成任务,给定一个输入,得到我们的目标输出。类似于之前讲RNN时,序列模型可以输出诗文创作以及音乐创作。比较典型的应用是翻译,生成模型基本结构如下所示
通过将输入进行编码后生成一个向量,再通过解码生成一个输出
假设正在处理一个图片任务,input 是一只猫,最终得到一个output图片,我们通过训练使得output的图片逼近于input。这样中间的code向量,就必然是附带图片特征的一个向量(向量的某个位置的数值控制图片的对应特征)
分开来看后半部的解码器就是一个生成器,通过输入向量就可以得到一个输出,随着输入向量的数值变化就可以观察到输出图片特征变化。
但是通过这种方式训练(output的图片逼近于input)可能会有瑕疵,因为机器在判断图片之间的相似时,其实是一种像素级别的相似性判断(类似像素平均值),比如下图,偏离的像素点和相对不那么偏离的像素点两种场景,对于机器来讲区别不大,但是对于人类的知识判断来讲却差之千里。
但是GAN模型通过在生成模型上增加了判别器,判别器可以更好得判断图片的好坏,通过判别器来反向调教生成器有更好的表现
基础GAN模型
GAN模型是由一个生成器与判别器组成
判别器:可以对输入的图片进行打分。判别器训练的目标函数是对真实对象打越高的分,对生成器的数据打越低的分;所以对于判别器来讲,人类提供的样本就是好的,打高分,生成器生成的样本就是差的,打低分;判别器是带着天然偏见的,人类并没有定义偏见本身,但是这里样本和生成对象的差距就成了判别器打分的特征点。
生成器:丢进一个低维向量,通过生成器后会生成一个高维矩阵对象(文本/图像/音频)。生成器的训练的目标函数是努力使得生成结果在判别器那里越高越好。
这时候我们把两个模型放在一起训练,这里举一个形象的例子说明下:生成器就像是一只“舔狗”,而判别器是被舔对象,被偏爱的有恃无恐,人家心里的目标是那种纯天然高富帅,而不是生成器这种穷矮矬;可是生成器不甘心,想着咱都是人,能有啥不一样的,怎么就不同待遇呢?生成器就从自身找原因,看不上咱咱改还不成吗,于是生成器每取得一次进步就去“舔”一次,尽管每次心都碎了,但是呢判别器渐渐的对它的评价逐渐高了起来。终于皇天不负有心人,最后成功舔到判别器觉着这个人好像还可以,跟自己心目中的白马王子挺相符的。从此,生成器说啥,判别器都觉着对!
这个就是所谓的对抗过程,判别器以其正例样本为标准,拿着皮鞭教育生成器做人,生成器本身也希望得到对方的认可而不断努力,最终的达到一个各方都满意的结果,类似于博弈论中的那什均衡。此时得GAN就可以用来生成符合人们预期的任务了。棍棒之下,表现还很优异呢~
条件GAN模型
条件GAN顾名思义,就是在生成的基础上增加了条件限制,最终生成的对象不仅仅要符合真实对象,而且必须和条件相关。训练过程不仅仅将附加条件输入生成器,还会将条件加入判别器。这样判别器在拿着皮鞭教生成器作人的时候,不仅仅教它作人,还教作怎样的人。
有了条件GAN后,我们的生成模型更有实际的任务意义,而不是仅仅生成一堆符合人类认知的对象。
CycleGAN
CycleGAN 的特点在于G循环,一张图片(声音也可以)input后,生成一张目标图片,然后再经过生成器生成图片,我们的训练目标是output与input尽量相同。这样中间的图片一定会保留关键的内容特征,然后中间图片在判别器的皮鞭之下可以进行其他图片风格的转换(对应声音可以变音色)。这样的过程是无监督的,只需要提供判别器所需要的例子即可~
GAN的模型好几十种,但都是应用对抗的思路使得模型在某些任务表现更好,这里就不多做表述;
GAN应用
图片-图片
图片创造
可以通过GAN来生成各种图片:人脸、卡通人物、风景、商品等。可能存在以下潜在应用场景:
1、通过生成人脸来规避部分商业场景中的肖像问题
2、通过生成景色或许可以解决拍电影时的背景问题,增加虚拟画面的质感
3、卡通形象可以满足一些头像场景,将真人转化为某种卡通人物的头像
4、通过给定粗糙的轮廓(有条件的),将图片转换为非常美的风景(已经有类似的画图应用)
图片改动
GAN可以将图片中的部分非常自然的加以更改:风格、人物动作、人物衣着、像素增强、补充。可能存在以下场景:
1、风格迁移在GAN的模型下,效果会更好;通过衣服与鞋子的风格转移,可以搭配风格一致的衣服
2、改变照片中的人物动作、以及衣着可以在电商场景应用,用户可以试着“穿”衣服;
3、改变照片中人的发色或者肤色,可以规划适合自己的发型与风格
4、改变人物的表情可以在社交场景有所应用,增加很多趣味性
5、可以给老照片增加颜色,增强像素或者补全残缺信息(小程序:你我当年)
6、增加原图的像素可以再影视业务上提供一些分辨率增强的操作
文字-图片
给定一段文字,生成对应的图片;比如:“马儿在吃草”,最终生成一张马儿在吃草的照片
可能应用在教育场景,通过和幼儿交互,生成照片供幼儿使用
声音-声音
类似于图片,我们也可以在音频场景中增加或者去除一些杂音;也可以使用GAN通过小样本来进行音色转化。
(笔者正寻求NLP、人机对话方向产品职位 微信:cheng390552021)