上一期为大家说明了什么是无监督生成模型。在无监督生成模型中,极大似然法一直扮演着非常核心的位置,我们必须对它有深刻的理解,本期小米粥将为大家讲一下极大似然法的那些事情。
作者&编辑 | 小米粥
1 一个小游戏:取球猜概率
我们先来看一个简单有趣的例子。一个盒子中有黑色、白色两种颜色的球,然后你从盒子中取出一个球,记下其颜色,将球放回到盒子里,再取出一个球记录其颜色......重复1000次上述操作,这时你发现黑球出现了600次,白球出现了400,那我若问你盒子中黑球的概率是多少?你会不假思索回答:0.6。
我们对上述回答进行几个讨论。首先,0.6的答案是否正确?可以明确的是,这不是一个严谨的答案,若盒子中黑球的概率不是0.6而是0.5,0.4甚至0.0001,也有可能在1000次的取球中出现600次黑球,400次白球的情况,只不过黑球概率越偏离0.6,出现这样情况的可能性越小,故严谨的回答是:黑球概率最可能是0.6。这便是一个简单的使用极大似然的场景,根据黑白球的出现情况去对黑球概率这个参数进行估计,做估计的依据是:概率是什么数值时最符合当前的情况,即当前情况的可能性最大,换成数学点的语言就是似然极大。因为黑球概率为0.6时最可能出现这样的情况,故“盲猜”为0.6。需要说明的是,我们仅将讨论范围限制在频率学派,并不涉及贝叶斯学派的想法。
第二个讨论是,如果小明想复刻一个完全一样的盒子,需要怎么做?有放回地取1000次球,发现黑球出现了600次,白球出现了400,然后使用极大似然法估计黑球出现概率为0.6,接着他可以在盒子里放置若干数量的球,将黑球概率调整为0.6。其实他已经搭建了一个生成模型,他从训练数据集中估计出了黑球概率这个参数,接着调整盒子中黑球的数量,然后以后需要产生样本时,只需在他复刻的盒子中有放回采样即可。这只是一个十分简单的例子,实际使用极大似然法时要复杂得多,但是其本质是一样的。
2 极大似然法
在生成模型中,概率密度函数p(x)一直扮演着核心的位置。对于一批从pdata(x)中独立采样得到的训练样本集x(1),x(2)...x(N),(注意我们要求训练样本集的数据是独立同分布的),我们希望用训练数据来训练一个生成模型pg(x),这个生成模型可以显式或隐式地学习到数据的分布pdata(x)或者获得pg(x)的(近似)表达式,即pdata(x) ≈pg(x)。接下来在推断过程中,可以通过在pg(x)上显式或隐式地采样而得到一批样本,并且使获得的样本(近似)符合概率分布pdata(x)。
我们先介绍使用极大似然估计的生成模型,充分理解极大似然原理对理解生成模型有非常重要的意义。需要说明,并不是所有的生成模型都使用极大似然法,有些生成模型默认不使用极大似然法, 但是也可以做一些修改令其使用最大似然法 (GAN就属于这一类)。
极大似然估计是对概率模型参数进行估计的一种方法,例如有一个包含N个样本的数据,数据集中每个样本都是从某个未知的概率分布pdata(x)中独立采样获得的,若我们已经知道pg的形式,但是pg的表达式里仍包含未知参数θ,那问题就变成了:如何使用数据集来估算pg(x)中的未知参数θ?例如 pg(x) 是一个均值和方差参数还未确定的正态分布,那么如何用样本估计均值和方差的准确数值?
在极大似然法中,首先使用所有样本计算似然函数L(θ):
似然函数是一个关于模型参数θ的函数,当选择不同的参数θ时,似然函数的值是不同的,它描述了在当前参数θ下,使用模型分布pg(x;θ)产生数据集中所有样本的概率。一个朴素的想法是:在最好的模型参数θML下,产生数据集中的所有样本的概率是最大的,即
但实际在计算机中,多个概率的乘积结果并不方便储存,例如计算过程中可能发生数值下溢的问题,即对比较小的、接近于0的数进行四舍五入后成为0。我们可以对似然函数取对数来缓解该问题,即log[L(θ)],并且仍然求解最好的模型参数θML使对数似然函数最大,即
可以证明两者是等价的,但是将似然函数取对数后会把概率乘积形式转换为对数求和的形式,大大方便了计算。将其展开后,有
可以发现,使用极大似然估计时,每个样本xi都希望拉高它所对应的模型概率值pg(x(i);θ),如图所示,但是由于所有样本的密度函数pg(x(i);θ)的总和必须是1,所以不可能将所有样本点都拉高到最大的概率;一个样本点的概率密度函数值被拉高将不可避免的使其他点的函数值被拉低,最终的达到一个平衡态。
我们也可以将上式除以N,便可以看到极大似然法最大化的目标是在经验分布下样本概率对数的期望值,即
另一种对极大似然估计的理解是:极大似然估计本质在最小化训练集上的经验分布和模型分布pg(x;θ)之间的KL散度值,即
而KL散度的表达式为
由于θ值与第一项无关,故只考虑第二项,有
可以发现两者是完全一样的,也就是说极大似然估计就是希望 pg(x;θ) 和pdata(x)尽量相似,最好相似到无任何差异(KL散度值为0),这与生成模型的思想是一致的。但实际的生成模型一般不可能提前知道pg(x;θ)的表达式形式而只需要估计表达式中的参数,实际中的生成模型非常复杂,往往对pg(x;θ)无任何先验知识,只能对其进行一些形式上的假设或近似。
很多生成模型可以使用最大似然的原理进行训练。只要得到关于参数θ的似然函数L(θ)后,我们只需最大化似然函数即可,只是不同模型的差异在于如何表达或者近似似然函数L(θ)。下图的左边分支均为显式概率模型,其中完全可见置信网络模型对pg(x;θ)做出了形式上的假设,而流模型则通过定义一个非线性变换给出了pg(x;θ)的表达式,这两个模型其实都给出了似然函数L(θ)的确定表达式;而变分自编码器模型则采用近似的方法,只获得了对数似然函数log[L(θ)]的一个下界,通过最大化该下界近似地实现最大似然;玻尔兹曼机使用马尔科夫链对似然函数的梯度进行了近似。接下来,我们将分别介绍这些模型,并讨论他们的优缺点。
[1] 伊恩·古德费洛, 约书亚·本吉奥, 亚伦·库维尔. 深度学习
[2]李航. 统计机器学习
总结
本期带大家学习了非常有用的极大似然法,它对于我们深刻理解生成模型有非常重要的意义。下一期我们将对完全可见置信网络进行探讨。