资料来源:【论文复现代码数据集见评论区】全网最细讲解,原生GAN带你窥探无中生有生的奥秘~
Generative Adversarial Nets
Net后面跟着一个s代表:不只一个网络,代表很多个网络。多个网络之间的关系是Adversarial对抗的。多个网络之间互相对抗,彼此作用产生的效用是生成式模型Generative。
所以从标题出发:看出几个对抗性的网络来搭建了一个生成式的网络模型。
前期知识储备:
卷积神经网络、概率论(贝叶斯公式)、机器学习、pytorch
生成器的目标是学习到样本的数据分布,从而能生成样本欺骗判别器;
判别器的目标是判断输入样本是生成/真实的概率。
公式中P(AB)为事件AB的联合概率。即A和B同时发生的概率。解释条件概率表中的第一个概率。
当x=0时(条件),y=0的概率:先算P(X,Y)联合概率即同时发生的概率(频数),即x和y同时等于零的频数为2,总数为4,所以P(x=0, y=0)的概率为1/2。见右表联合概率中的第一个概率1/2。P(x=0)=2/4 = 1/2。所以条件概率:P(y=0|x=0)=P(x=0, y=0)/P(x=0) = (1/2)/(1/2) = 1。
判别式模型:
- 模型学习的是条件概率分布P(Y|X)
- 条件概率:任务是从属性X(特征)预测标记Y(类别)。
生成式模型
- 模型学习的是联合概率分布P(X,Y)。
- 联合概率:任务是得到属性为X且类别为Y时的联合概率。
- 联合概率需要将所有样本总数作为分母,所以难度更大一些。
判别式模型:
- 线性回归
- 逻辑回归
- K近邻(KNN)
- 支持向量机(SVM)
- 决策树
- 条件随机场(CRF)
- boosting方法。(后三者在推荐算法中比较常用。现在更多用图神经网络。)
生成式模型:
- 朴素贝叶斯
- 混合高斯模型
- 隐马尔可夫模型(HMM)
- 贝叶斯网络
- 马尔可夫随机场(前五个是概率模型。)
- 深度信念网络(DBN)
- 变分自编码器。
GAN的历史意义:
- 使AI具备了图像视频的创作编辑能力
- 启发了无/弱监督学习的研究。
GAN结构:
生成器G:多层感知机、ReLU、Sigmoid。
判别器D:多层感知机、Maxout(已淘汰)、Dropout。
几个函数的叫法:
价值函数、目标函数:最大化的。
损失函数、代价函数:最小化的。
判别器的最优解:
当Pdata=1时,数据来源于真实数据:此时Pg=0,那么判别器输出为1。
当Pdata=0时,数据来源于生成数据:此时Pg=1,判别器输出为为0。
与我们真实需求一致。
判别器取得最优解时,生成器的最优解:
Pg = Pdata。
信息熵:
一个概率分布的复杂程度。一个分布越复杂,越混乱无序,那么信息熵就越大。
KL散度:
基于分布Q来描述分布P所需的额外信息量;
比如:已知昨天的天气来描述今天的天气。今天下雨的概率和昨天一样,但是今天天晴的概率要比昨天小0.1。而是阴天的概率比昨天大0.1。已知一些信息,再给我们一些额外的信息,我们就可以描述当前的状态。
KL散度可以衡量P和Q之间的差异,非对称性的度量。基于Q来测量P所需要的信息,和基于P来测量Q所需的信息,并不对等。
为了解决非对称问题:提出了JS散度。
JS散度:
基于KL散度,解决了KL散度非对称的问题。
前面是基于P或Q分布,JS散度,在两个分布P1和P2之间通过一个中间的平均分布(P1+P2)/2来分别求解KL散度。
如果两个分布距离较远,没有重叠部分时,KL散度是没有意义的,而JS散度为常数1。
GAN的优劣势
缺点:
- 没有显示表示的Pg(x)
- 必须同步训练G和D,可能会发生模式崩溃。
优点:
- 不使用马尔科夫链,在学习过程中不需要推理。
- 可以将多种函数合并到模型中。
- 可以表示非常尖锐、甚至退化的分布
- 不是直接使用数据来计算loss更新生成器,而是使用判别器的梯度,所以数据不会复制到生成器的参数中。
GAN与VAE的比较:
- VAE是从编码器生成的高斯分布中进行采样。
- GAN从随机噪声分布中采样。
价值函数:借鉴一个Min-Max Game;
训练过程:交替训练判别器与生成器。
理论证明:通过JS散度和KS散度来证明了全局最优解,通过次导数、次梯度下降证明了可收敛性。
“你必须从反对者中看到好的一面,我需要敌人,我毫不介意人们恨我,因为这能助我进步。”
You have to see the good things from the haters. I need the enemy. I don't mind people hating me, because it pushes me.
代码:github改良版本与汇总:https://github.com/eriklindernoren/PyTorch-GAN
其他的生成式模型:VAE、自回归模型(Deepmind的星际争霸AI,AlphaStar、号称宇宙中最强大的模型,计算复杂度太高了)。