生成模型与判别模型
判别模型:由数据直接学习决策函数Y=f(X)或条件概率分布P(Y|X)作为预测模型,即判别模型。判别方法关心的是对于给定的输入X,应该预测什么样的输出Y。
生成模型:由数据学习联合概率分布P(X,Y), 然后由P(Y|X)=P(X,Y)/P(X)求出概率分布P(Y|X)作为预测的模型。该方法表示了给定输入X与产生输出Y的生成关系。
如LR,SVM等均值直接根据输入样本的特征X来判断得出结果Y。而朴素贝叶斯则是借助联合分布来判断样本的类别,P(Y|X)=P(X,Y)/P(X)
判别模型与生成模型的比较
1、生成模型可以转化为判别模型,但判别模型不能转化为生成模型。
2、生成模型收敛速度比较快,当样本数量较多时,生成模型能更快。地收敛于真实模型。
3、判别模型比较节省计算资源,需要的样本数量也少于生成模型。
对抗生成网络(GAN)的作用
目前在做深度学习中,大部分是使用对样本数量比较依赖的监督学习。而实际中,很难在每一方面都能找到大量的数据样本用于监督学习模型的训练。而GAN将在一定程度上摆脱对大量数据样本的依赖,因为GAN能够去学习生成与真实样本很像的假的样本,这些假样本连分类器都难以很好的区分真假,从而在一定程度上弥补了深度学习模型对样本的依赖。
如上图,左边是真实的mnist数据集中的手写数字,右边是用GAN的生成器G生成的手写数字,两边数字如果混在一起的话,一般人根本分不清谁真谁假。
GAN的工作原理
工作原理
GAN主要是由一个生成器G(Generator)和一个判别器D(Discriminator)组成。生成器去生成假样本,而判别器则去分辨这个生成的样本是真实的样本还是生成的假样本。生成器的任务是提高作假能力去生成逼真的样本使判别器分辨不出真假,而判别器的任务则是提高分辨能力去分辨样本的真假。
GAN的一个形象比喻:用一个形象的比喻来说,生成器就像一个作假画的人,判别器就像一个警察。作假画的人想要做出假画让警察查不出来,于是他就要学习不断提高他的作假能力,而警察为了打假,不断去提高他的分辨假画的能力。两者不断对抗博弈,直到作假画的人成功骗过警察,警察再也分辨不出画的真假。
生成器
对于生成器,输入需要一个n维度向量,输出为图片像素大小的图片。因而首先我们需要得到输入的向量。输入向量一般只需服从某一分布即可(一般用高斯分布),且向量的长度不宜太小。
判别器
判别器就类似于一般深度学习中使用的分类器,如CNN,来分辨真伪。
训练过程
如下图:
黑色虚线表示真实样本分布,绿色实线表示生成器生成的数据分布,蓝色虚线表示判别器
(a)一开始的时候,生成器生成的数据并不很像真实数据,判别器能够大致分出真伪,但分的不好
(b)生成器不动,判别器训练若干次之后,判别器能够较好的分别真伪
(c)判别器不动,生成器经过训练之后,生成的样本更加贴近真实样本
(d)经过上面b、c步骤的循环训练,最终生成器非常贴近真实数据,判别器已经无法分辨真伪
GAN中训练优化的目标函数如下
公式中,先固定生成器不变,训练得到使误差最大的判别器(因为判别器的任务就是使误差最大以便分辨真假),然后再固定判别器不变,训练得到使误差最小的生成器(因为生成器的任务就是减小误差达到难以分辨)
论文中给出的训练过程如下