笔记整理:王小草
时间:2019年1月
一、GAN简介
1 背景
全称:generative adversarial network 生成式对抗网络(不一定是深度学习)
论文:https://arxiv.org/abs/1406.2661
提出者:Ian Goodfellow(也是深度学习花园书的作者)
2 Gan能做什么?
2.1 生成图片
下图,第一张图是真实图片,第二张是使用MSE为损失的监督模型生成的图片,第三张是使用GAN生成的图片,很明显,GAN生成的图片更加完整与清晰。
图片来自论文: W., Kreiman, G., and Cox, D. (2015). Unsupervised learning of visual structure using predictive generative networks.
2.2 超分辨率补全图片
再如下图,假设将第一张图片resize成原来的1/4,然后要用一定的技术将其拉伸到原来的大小,那么拉伸的过程必然需要去将丢失掉的像素给补回来。第二张图是用插值法补全的像素,比较模糊;第三张图片是利用一个有监督的神经网络模型SRResNet在MSE损失函数基础之上训练,并预测的图片,比前者要好很多;第四张图片是用GAN生成的,分辨率更高。
图片来自论文:Photo-realistic single image super-resolution using a generative adversarial.
2.3 画画
如下图,随便画一个线条或图像,GAN可以根据它绘制出对应的风景与事物
2.4 图像恢复
如下图,左边是GAN根据分割图回复街景;右边是通过简笔画回复真是的包包照片,虽然和真实的包有一点差异,但不难看出恢复能力惊为天人。
来自论文:image-to-image translation adversarial network
2.5 根据图片预测视频
给定一下给图片,GAN会去将图片生成一个有关的视频
2.6 根据照片生成事物的3D图
2.7 表情生成
给一个人脸的照片,GAN可生成人脸的各种表情与造型,虽然很牛逼但我有点瘆得慌。
二、GAN预备知识–深度学习
预备知识主要是深度学习,虽然GAN不一定要用深度学,但是最近的研究都是聚焦于表现比较好的神经网络的。由于深度学习是另一个大的知识点,各种博客、课程、教程遍地都是,并且我相信知道并想要学习GAN的同学必定是有了深度学习基础的,因此本文不再班门弄斧。
三、GAN网络实战分析–生成手写字体
1 思路
1.1 流程概述
先看下图,绿线是生成样本的概率分布;黑点线是真实样本的概率分布;紫色线是一个判决器,用来判断样本是真的还是假的;z是噪声。
第一步,要做的是要把判别器判断准,使得求得一个阈值,在阈值左边是判断为真实样本,右边判断为生成样本。
第二步,就要使生成的样本去尽量拟合真实的样本,从而去误导判决器
最终,如果生成的样本分布与真实的样本分布一致了,判决器就痴呆了
1.2 同款栗子
上面的讲述若略有抽象,这里来看一个直观的例子。GAN有两个部分组成,一个是生成器,去生成样本用的;一个是判别器,去判别是真实样本还是生成样本。
如上图,
首先画一张很丑的假币(生成一个样本),这个时候教小孩去判别真假币(训练判别器)
在不断模仿真币的过程中,做的假币越来越像真币了,生成了新的假币;此时小孩无法辨别真伪了,他通过学习终于学会了去根据水印判别,拥有了验钞器一样的识别能力。
接着生成器又通过不断学习,生成了更优秀的假币;小孩(判别器)再怎么学习都识别出来真伪了。
以上步骤,就是GAN的通俗解释,生成器在与判别器得对抗