概率生成模型

最大似然估计(Maximum Likelihood Estimation)

最大似然估计是用来估计模型参数的一种方法,给定一个包含 m m m个独立同分布的样本的数据集 x i x_{i} xi,这 m m m个样本都是从真实分布 p d a t a ( x ) p_{data}(x) pdata(x)中采样得到的(这 m m m个样本也就是训练集)。

最大似然的第一种理解
模型 p θ ( x ) p_{\theta}(x) pθ(x)在数据集上的似然概率就是 ∏ i = 1 m p θ ( x i ) \prod_{i=1}^m p_{\theta}(x_i) i=1mpθ(xi)。最大似然的原理就是通过优化模型参数 θ \theta θ,使得模型在训练集上的似然概率最大。

在对数空间容易优化,所以通常是优化 ∑ i = 1 m l o g p θ ( x i ) \sum_{i=1}^{m}logp_{\theta}(x_i) i=1mlogpθ(xi)。使得 ∑ i = 1 m l o g p θ ( x i ) \sum_{i=1}^{m}logp_{\theta}(x_i) i=1mlogpθ(xi)最大的参数 θ \theta θ就是最后模型的参数,用数学语言来描述就是
θ ∗ = a r g m a x θ ∑ i = 1 m l o g p θ ( x i ) (1) \tag{1}\theta^{*} = argmax_{\theta}\sum_{i=1}^{m}logp_{\theta}(x_i) θ=argmaxθi=1mlogpθ(xi)(1)
最大似然的第二种理解
这种方法将从 p d a t a ( x ) 与 p θ ( x ) p_{data}(x)与p_{\theta}(x) pdata(x)pθ(x)的KL散度入手。在实际应用中,我们无法获得 p d a t a p_{data} pdata本身,只能获得包含 p d a t a 的 m 个样本的训练数据集 p_{data}的m个样本的训练数据集 pdatam个样本的训练数据集,使用这 m m m个样本可以定义一个经验分布 p θ p_{\theta} pθ来近似 p d a t a p_{data} pdata最小化 p d a t a 与 p θ p_{data}与p_{\theta} pdatapθ的KL散度等价于在训练数据集上最大化似然概率。接下来证明这个结论。

a r g m i n θ K L ( p d a t a ( x ) ∣ ∣ p θ ( x ) ) = a r g m a x θ − K L ( p d a t a ( x ) ∣ ∣ p θ ( x ) ) = a r g m a x θ ∫ p d a t a ( x ) l o g p θ ( x ) d x − ∫ p d a t a ( x ) l o g p d a t a ( x ) d x = a r g m a x θ E x ∼ p d a t a [ l o g p θ ( x ) ] = a r g m a x θ 1 m ∑ i = 1 m l o g p θ ( x ) = a r g m a x θ ∑ i = 1 m l o g p θ ( x ) (2) \begin{aligned} \tag{2} argmin_{\theta} KL(p_{data}(x)||p_{\theta}(x)) = & argmax_{\theta} -KL(p_{data}(x)||p_{\theta}(x))\\ = & argmax_{\theta} \int p_{data}(x)logp_{\theta}(x)dx - \int p_{data}(x)logp_{data}(x)dx \\ = & argmax_{\theta} E_{x \sim p_{data}}[logp_{\theta}(x)] \\ = & argmax_{\theta} {1 \over m}\sum_{i=1}^{m}logp_{\theta}(x) \\ = & argmax_{\theta} \sum_{i=1}^{m}logp_{\theta}(x) \\ \end{aligned} argminθKL(pdata(x)∣∣pθ(x))=====argmaxθKL(pdata(x)∣∣pθ(x))argmaxθpdata(x)logpθ(x)dxpdata(x)logpdata(x)dxargmaxθExpdata[logpθ(x)]argmaxθm1i=1mlogpθ(x)argmaxθi=1mlogpθ(x)(2)

第二行到第三行的解释: ∫ p d a t a ( x ) l o g p d a t a ( x ) d x \int p_{data}(x)logp_{data}(x)dx pdata(x)logpdata(x)dx,是因为 这一项与 θ 这一项与\theta 这一项与θ无关,在 a r g m a x argmax argmax操作中可以省去。

第三行到第四行的解释:从采样与期望一节中知道,期望可以用从分布中依概率采样的 m m m个点的均值来代替,

第四行到第五行的解释:由于是 a r g m a x argmax argmax操作,所以 m m m可乘可不乘,这里将 m m m省去。

上面推导出来了最小化 p d a t a 与 p θ p_{data}与p_{\theta} pdatapθ的KL散度等价于在训练数据集上最大化似然概率,同时又有:
H ( p d a t a , p θ ( x ) ) = − ∫ p d a t a ( x ) l o g p θ ( x ) d x = H ( p d a t a ( x ) ) + K L ( p d a t a ( x ) ∣ ∣ p θ ( x ) ) \begin{aligned} H(p_{data}, p_{\theta}(x))= & -\int p_{data}(x)logp_{\theta}(x)dx \\ = & H(p_{data}(x)) + KL(p_{data}(x)||p_{\theta}(x)) \end{aligned} H(pdata,pθ(x))==pdata(x)logpθ(x)dxH(pdata(x))+KL(pdata(x)∣∣pθ(x))
H ( p d a t a ( x ) ) H(p_{data}(x)) H(pdata(x))是一个常量,所以最小化 p d a t a 与 p θ p_{data}与p_{\theta} pdatapθ的KL散度等价于最小化交叉熵等价于最大化似然函数

生成模型

概率生成模型(Probabilistic Generative Model)又叫做生成模型,生成模型关注的是样本分布本身,也就是关注的是 p d a t a ( x ) p_{data}(x) pdata(x)。但是 p d a t a ( x ) p_{data}(x) pdata(x)是无法得到的,幸运的是,我们可以方便得到一批从 p d a t a ( x ) p_{data}(x) pdata(x)中采样的数据,记为 X X X,定义分布 p θ ( x ) p_{\theta}(x) pθ(x)拟合数据集 X X X,如果我们能求解 p θ ( x ) p_{\theta}(x) pθ(x),那么就可以从 p θ ( x ) p_{\theta}(x) pθ(x)中采样,生成类似 p d a t a ( x ) p_{data}(x) pdata(x)分布规律的数据。 p θ ( x ) p_{\theta}(x) pθ(x)也就是前面提到的似然函数

所以生成模型需要做两件事:

  • 概率密度估计(求解似然函数 p θ ( x ) p_{\theta}(x) pθ(x)
  • 生成样本(从 p θ ( x ) p_{\theta}(x) pθ(x)中采样)

这里再介绍一下判别模型,以便和生成模型对比,更好的理解生成模型。判别模型建模的是条件概率 p ( y ∣ x ) p(y|x) p(yx) y y y是标签,判别模型都是有监督的。逻辑回归就是判别模型,我们关注的是条件概率 p ( y = 1 ∣ x ) 或者 p ( y = 0 ∣ x ) p(y=1|x)或者p(y=0|x) p(y=1∣x)或者p(y=0∣x),这里数据 x x x本身是什么并不是特别需要关注的。

生成模型要做的第一件事就是概率密度估计,根据是否显示的建模 p θ ( x ) p_{\theta}(x) pθ(x)又分为显示密度估计(Explicit Density Estimation)和隐式密度估计(Implicit Density Estimation)。

  • 显示密度估计:显示的定义 p θ ( x ) p_{\theta}(x) pθ(x)并求解参数 θ \theta θ。比如VAE
  • 隐式密度估计:没有显示定义 p θ ( x ) p_{\theta}(x) pθ(x),只是学习到了如何去生成符合 p d a t a p_{data} pdata分布规律的样本。比如GAN。

由于显示密度估计显示定义了 p θ ( x ) p_{\theta}(x) pθ(x)的形式,所以可以算出生成某个样本点的概率,比如VAE的ELBO就可以看做是生成这个样本的概率的取了对数的值。但是隐式密度估计是无法算出样本点的概率的,比如GAN只能生成样本,而无法用数值去衡量生成这个样本的概率的大小。注意虽然鉴别器最后也会输出一个概率值,但这并不是 p θ ( x ) p_{\theta}(x) pθ(x),而是鉴别器认为样本是真实样本的概率,也就是 D ( x ) D(x) D(x)

显示密度估计(Explicit Density Model)

显示密度估计根据 p θ ( x ) p_{\theta}(x) pθ(x)是否容易求解(tractable)又分为tractable densityapproximate density

Tractable density

tractable density模型比如pixelRNN/CNN,NADE等,这类模型的概率密度都是易于求解的。

Approximate density

Approximate density常用的方法有变分近似(variational approximations)和蒙特卡洛近似(Monte Carlo)。变分近似比如VAE,蒙特卡洛近似比如玻尔兹曼机。

有很多情况下直接建模 p θ ( x ) p_{\theta}(x) pθ(x)比较困难,以VAE为例,假设 x x x是由一个隐变量 z z z生成的,通常假设 z z z也服从一个已知的分布 p ( z ) p(z) p(z),从 p ( z ) p(z) p(z)中采样得到 z i z_i zi ,然后 通过 p ( x ∣ z i ) 通过p(x|z_i) 通过p(xzi)得到 x i x_i xi。用贝叶斯公式来描述就是
p θ ( x ) = ∫ p θ ( x , z ) d z = ∫ p θ ( x ∣ z ) p ( z ) d z (3) \tag{3} p_{\theta}(x)=\int p_{\theta}(x,z)dz=\int p_{\theta}(x|z)p(z)dz pθ(x)=pθ(x,z)dz=pθ(xz)p(z)dz(3)

(3)式通常会取对数,也就是
l o g p θ ( x ) = l o g ∫ p θ ( x , z ) d z = l o g ∫ p θ ( x ∣ z ) p ( z ) d z (4) \tag{4} logp_{\theta}(x)=log\int p_{\theta}(x,z)dz=log \int p_{\theta}(x|z)p(z)dz logpθ(x)=logpθ(x,z)dz=logpθ(xz)p(z)dz(4)

p ( z ) p(z) p(z)称为先验,既然称之为先验,那么就是已知的( p ( z ) p(z) p(z)是不含有参数的所以没有下标 θ \theta θ),所以我们只需要求解 p θ ( x ∣ z ) p_{\theta}(x|z) pθ(xz)

如何求解 p θ ( x ∣ z ) p_{\theta}(x|z) pθ(xz)? 当然是极大似然的思想了,VAE也是根据(4)式推导出了ELBO,EBLO是(4)式的紧下界。根据极大似然思想,最大化(4)式,也就是最大化ELBO。从而可以求解 p θ ( x ∣ z ) p_{\theta}(x|z) pθ(xz)

  1. 这里的极大似然思想并不局限于极大似然估计,比如EM算法的推导也是根据极大似然来推导的。
  2. 使用极大似然也可以这么理解,因为我们要得到 p θ ( x ∣ z ) p_{\theta}(x|z) pθ(xz),如何在训练过程中衡量 p θ ( x ∣ z ) p_{\theta}(x|z) pθ(xz)的好坏?当然是能使当前的样本数据生成的概率最大的 p θ ( x ∣ z ) p_{\theta}(x|z) pθ(xz)就是最好的,当前的样本数据生成的概率不就是似然函数 p θ ( x ) p_{\theta}(x) pθ(x)吗?所以似然函数可以用来衡量生成模型的好坏,但是VAE中似然函数又没法直接求解,转而求解似然函数的下界ELBO。
隐式密度模型(Implicit Density Model)

VAE的缺点:
显示密度估计由于显示的定义了(4)式,所以要对 p ( z ) p(z) p(z) p θ ( x ∣ z ) p_{\theta}(x|z) pθ(xz)的具体形式有一个假设。比如VAE在视觉方向通常假设 p ( z ) p(z) p(z)是标准正态高斯, p θ ( x ∣ z ) p_{\theta}(x|z) pθ(xz)是高斯分布,后验 q ϕ ( z ∣ x ) q_{\phi}(z|x) qϕ(zx)也是高斯分布,这样假设一方面是根据经验,另一方面也是为了模型容易求解。

但是真实的图像的分布不一定就是高斯分布,那么是否可以不对真实分布做假设,而是借助神经网络自己学习 p θ ( x ) p_{\theta}(x) pθ(x),这便是GAN的思想了。由于GAN没有显示定义 p θ ( x ) p_{\theta}(x) pθ(x),而是用神经网络去拟合,所以无法求解 p θ ( x ) p_{\theta}(x) pθ(x)的具体形式,只能让模型生成样本。

在GAN中,优化生成器时优化的是 p d a t a 和 p g 的 J S 散度, ( p g 也就是这里的 p θ ) p_{data}和p_{g}的JS散度,(p_g也就是这里的p_{\theta}) pdatapgJS散度,(pg也就是这里的pθ),从而拉近二者之间的距离。这种思想其实和最大似然的第二种理解不谋而合。

参考:
https://sinpycn.github.io/2017/04/29/GAN-Tutorial-How-do-generative-models-work.html
https://www.yuque.com/hellomonica/mpx5dv/sfa641
https://blog.csdn.net/Passenger_zhang/article/details/108303320

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值