【GAN优化】GAN优化专栏上线,首谈生成模型与GAN基础
大家好,今天小米粥在有三AI开设新专栏《GAN的优化》。在这个专栏中,我们会讲述GAN的相关背景、基本原理、优化等相关理论,尤其是侧重于GAN目标函数的优化。小米粥和有三将带领大家从零学起,深入探究GAN的点点滴滴。
本专栏将比较着重于理论,每周更新一次,欢迎大家和我一起学习。本人才学疏浅,有诸多不到之处还请各位包涵指正。
作者 | 小米粥
编辑 | 言有三
今天是第一期,在正式进入GAN之前,我们有必要先介绍一些GAN的背景知识,理一理各种生成模型的那些千丝万缕的联系,然后深入到GAN中去。
1 生成模型
在机器学习或者深度学习领域,生成模型具有非常广泛的应用,它可以用于测试模型的高维概率分布的表达能力,可以用于强化学习、半监督学习,可以用于处理多模输出问题,以及最常见的产生“真实”数据问题。
我们有必要先说明一个问题,本专栏所讲述的GAN包括的VAE、玻尔兹曼机等其他生成模型均属于无监督学习的范畴,这与李航老师的《统计学习方法(第一版)》里的有监督学习生成方法有所区别。简单而言,有监督学习与无监督学习的区别之处在于是否存在标签信息。
在有监督学习生成方法中,我们学得联合概率分布P(X,Y),然后求出生成模型P(Y|X),其重点在于学习联合分布。例如,在朴素贝叶斯方法中,我们通过数据集学习到先验概率分布P(Y)和条件概率分布P(X|Y),即可得到联合概率分布P(X,Y);在隐马尔可夫模型中,我们通过数据集学习到初始概率分布、状态转移概率矩阵和观测概率矩阵,即得到了一个可以表示状态序列和观测序列的联合分布的马尔可夫模型。而在GAN、VAE等无监督生成模型中,只存在关于X的数据集,我们的目标是近似得到P(X)的概率密度函数,或者直接产生符合X本质分布的样本。
2 极大似然估计
我们从最简单的生成模型开始说起。考虑这样一个问题,依概率P(X)在X中独立采样n次构建一个包含n样本的数据集,如何根据这个数据集来求得X的概率密度函数P(X)。其实这个问题并不容易解决,可是如果再额外提供一些关于X的先验知识,比如X服从正态分布,那这个问题便可以使用极大似然法轻松搞定。
如若X服从正态分布,则概率密度函数P(X)的表达式形式已知,只需要再确定均值、方差两个参数值便可以得到P(X)。接下来便是计算数据集的似然函数,对似然函数取负对数,然后最小化即可,即
其实,对随机变量X的概率密度函数的建模源于先验知识,极大似然估计只是一个参数估计的方法。容易证明,极大似然法本质上是在最小化数据集的经验性分布和模型分布之间的KL散度,而且当具备某些条件时,参数的极大似然估计值会趋近于真实值。
3 显式的概率密度函数
当不知道X的概率密度函数P(X)的表达形式,或者该表达式极其复杂的时候,我们如何对P(X)建模?这时,借用神经网络强大的函数拟合能力、表达能力,我们可以用来拟合相关函数来显式地构造P(X)。
例如在自回归网络中,我们将d维随机变量X的联合概率分布通过链式法则进行分解,
其中的条件概率分布由神经网络进行表示。
图3.1 神经自回归网络
另一类是以深度信念网络、深度玻尔兹曼机以及各种变体为代表的通过加入隐变量来建模P(X)的方法。它们的结构分为可见层和隐层,可见层用于接受输入,隐层单元用于特征表示。隐变量类似于多层感知器中的隐藏单元,用来模拟可见层的高阶交互,可提高网络的表达、拟合能力。训练目标均是使可见层节点的分布最大可能接近样本的真实分布。其区别之处在于深度玻尔兹曼机是一个完全无向模型,而深度信念网络的是有向图和无向图的混合模型,是受限玻尔兹曼机的堆叠。
图3.2 深度信念网络
图3.3 深度玻尔兹曼机
以深度玻尔兹曼机为例,使用能量函数定义联合概率分布,其中Z为朴素的归一化配分函数。
我们仍然可以使用极大似然法进行训练,但是需要解决两个困难的计算问题,一个是边缘化隐变量时的推断问题,一个是配分函数的梯度求解问题。
再一种是基于可微生成器网络,使用可微函数g(z)将隐变量z的样本变换为样本x上的分布。其典型代表便是VAE,其将x显式建模为
VAE中也需要使用变分法近似最大似然函数。
无论如何显式地定义概率密度函数P(X),其基本思路都是极大化样本集的似然函数,最终求解出P(X)中的参数,某些模型需要加一个边缘化隐变量的操作。在自回归网络中,计算难度不算太大,但是在深度玻耳兹曼机、深度信念网络中涉及到图模型和隐变量时,不可避免要使用马尔可夫链近似、变分推断等技术。
4 GAN
再思考一个问题,依概率P(X)在X中独立采样n次构建一个包含n样本的数据集,如何根据这个数据集来训练一个模型,使得模型能源源不断产生符合X概率分布的样本?
如若只是产生样本,生成模型不必非要去显式定义概率密度函数,然后近似求解P(X),就比如在深度玻尔兹曼机中,不仅训练时运算复杂,采样产生样本时还需要Gibbs采样技术。
还是在可微生成器网络中,不同于VAE,我们使用可微函数g(z)将潜变量z变化为样本x,全程没有任何显式地出现过概率密度函数,直接做一个end-to-end的模型。g(z)的本质是一个参数化计算过程,它能很好地学习到z排布情况以及从z到x的映射。我们所做的就是根据训练数据来推断参数,然后选择合适的g,其代表便是GAN。
GAN(对抗生成网络)是一种深度生成模型,由Gooldfellow于2014年首次提出,现已发展成时下最火热的模型之一。其设计灵感来自于博弈论,一般由生成器和判别器两个神经网络构成,通过对抗方式进行训练,最后得到一个性能优异的生成器。
图4.1 GAN结构
GAN的核心任务是:使生成器G产生的样本的概率分布尽量接近训练集的概率分布。判别器D的功能类似于逻辑回归,对于一个样本x,判别器D(x)将给出该样本来源于训练集的概率,所以一个“完美”的判别器应该对来自于训练集的样本输出概率1,对来自于生成器的生成样本输出概率0;对于生成器G,它试图捕捉到训练集的本质模式,生成样本并将样本送至判别器D,最好能使该样本“欺骗”判别器,使判别器误认为该样本来源于训练集而输出概率1。通过这个对抗生成过程,GAN没有显式地建模P(x),也可以得到满足P(x)分布的样本。
4.1 判别器
训练判别器,就是在做类似于有监督学习中的逻辑回归的问题。用于训练的样本包括两部分,原始训练集(其标签为1)、生成样本集(其标签为0),还是使用极大似然方法便可以得到其目标函数。
图4.2 判别器
接下来,我们看下最优判别器。我们训练判别器,理论上存在一个最优解,我们来求解一下这个解。
理想状态下的最优判别器的数学表达式还是非常“简单而务实”的,也非常符合我们的直觉。
4.2 生成器
论文最开始提出的生成器是全连接网络,它不断优化,使产生的样本尽量欺骗判别器(即使判别器输出值尽量大)。
图4.3 生成器
我们来看一下,生成器的目标函数到底是什么。将最优判别器代入,可有
其实真正在指导生成器进行训练的是隐式定义的分布和数据集真实分布的JS散度。当两个分布完全重合时,生成器的目标函数值达到最小-lg4,且此时的判别器也为最优,对任意输入,均给出D(x)=0.5。理论上可证明,只要有足够的精度,模型一定能收敛到最优解。
另外,在训练生成器时,可使用另一个目标函数trick,我们来看看这个目标函数的本质。
单纯从数学的角度来看,这个目标函数是自相矛盾的,最大JS散度的同时减少KL散度,这样的训练可以认为是没有什么意义的。
5 作者介绍
小米粥,本科就读于吉林大学物理学院、经济学院,现为中科院二年级直博生,主要研究方向为机器学习、GAN。
总结
今天向大家讲了讲一部分关于的生成模型的内容,从极大似然法到显式的定义概率密度函数到隐式定义概率密度函数的GAN。在GAN中,我们介绍了基本结构,推导了几个基本结论,内容比较简单。
下期预告:度量与fGAN