今天我们来聊一聊一个比较有趣的话题, 那就是近年来在人工智能深度学习领域的热点 -- 生成式对抗网络(GAN).
GAN 本来的目的是用来生成图片, 比如生成人脸照片, 生成油画, 生成海报等, 但是人们发现, GAN 除了以上功能外, 还能更好地获取图片中物体的特征, 能更好地解释图片中的语义, 还能用于研究无监督学习和少样本学习, 一些专家相信, GAN 在某种程度上已经开始理解它们所见到, 所听到的世界的底层结构.
对于这些新的发现, 深兰科学院高级研究员, 教授, 专家方林博士受邀在 2018 全球机器学习大会上做了一些精彩演讲, 今天给大家分享下.
什么是生成式对抗网络?
生成对抗网络 (Generative adversarial networks, 简称为 GAN) 是 2014 年由 Ian J. Goodfellow 首先提出来的一种学习框架, 说起 Ian J. Goodfellow 本人, 可能大家印象不深刻, 但他的老师正是 "深度学习三巨头" 之一的 Yoshua Bengio(另外两位分别是 Hinton 和 LeCun), 值得一提的是, Theano 深度学习框架也是由他们团队开发的, 开启了符号计算的先河.
方博士讲到, GAN 主要包括了两个部分, 即生成器 generator 与判别器 discriminator. 生成器主要用来学习真实图像分布从而让自身生成的图像更加真实, 以骗过判别器. 判别器则需要对接收的图片进行真假判别.
在整个过程中, 生成器努力地让生成的图像更加真实, 而判别器则努力地去识别出图像的真假, 这个过程相当于一个二人博弈, 随着时间的推移, 生成器和判别器在不断地进行对抗, 最终两个网络达到了一个动态均衡: 生成器生成的图像接近于真实图像分布, 而判别器识别不出真假图像, 对于给定图像的预测为真的概率基本接近 0.5(相当于随机猜测类别).
GAN 的训练步骤有三步:
1, 用真实样本训练判别器, 对于给定的真实图片(real image), 判别器要为其打上标签 1;
2, 用假样本训练判别器, 对于给定的生成图片(fake image), 判别器要为其打上标签 0;
3, 用假样本训练生成器, 对于生成器传给判别器的生成图片, 生成器希望判别器打上标签 1.
因此, 对于 GAN 更加直观的理解可以用一个例子来说明: 造假币的团伙相当于生成器, 他们想通过伪造金钱来骗过银行, 使得假币能够正常交易, 而银行相当于判别器, 需要判断进来的钱是真钱还是假币. 因此假币团伙的目的是要造出银行识别不出的假币而骗过银行, 银行则是要想办法准确地识别出假币.
方博士指出, CycleGAN 用于不同风格间图片的变换, GAN 可以对图片进行各种修改, 比如把油画和照片互相切换, 把马变成斑马, 骏马变斑马, 冬天变夏天等.
方博士认为, GAN 目前有两个根本问题需要解决, 首先是生成器的梯度是通过判别器传递过来的, 判别器判别的效果越好, 生成器生成的效果就越差.
GAN 并不希望判别器的准确率达到 1, 而是 0.5; 当我们 "一不小心" 把判别器的准确率优化到接近 1 时, 再把它 "拉回" 到 0.5 就变得十分困难.
所有对 GAN 的改进都是基于最优化目标的, 数学上如何理解把目标优化到 "一半好"?
他提出了解决办法, 在优化判别器时, 一旦发现它对某种类样本的辨别准确率达到 0.5 时, 应该停止该种类样本对它的优化.
GAN 的另外一个根本问题是, 根深蒂固的模型坍塌问题(Model Collapse).
对于此类问题, 方博士也提出解决方案, 一个是从 Encoder 和 Decoder 之间的 embedding 向量入手; 另外一个是如果 embedding 满足平均分布或者正太分布, 则该向量就已经是随机向量了.
方博士还分享了团队人员训练出的一个 GAN 系统, 而这个系统可以生成很多张根本不存在, 但看起来十分真实的人脸照片,
方博士团队还成功地用 GAN 来抓去了人脸的特征. 下面每对图片的左图是人脸照片, 右图是用特征复现人脸的效果: 如下图:
实生成式对抗网络, 让机器带来一种类似人类想象力的能力, 因此可能让它们变得不再那么依赖人类, 但同样也把它们变成了一种能力惊人的数字造假工具.
来源: https://www.qcloud.com/developer/article/1357266