假设我们现在有一批数据,我们想要用一个概率分布去拟合这批数据,概率分布模型的概率密度函数会有一些参数,我们需要参数估计方法获得参数,以得到实际的概率密度函数。
最大似然估计就是一种参数估计方法。
首先,对于一批数据X={x0,...xn}X=\left\{x_{0},...x_{n}\right\}X={x0,...xn},概率分布的参数为θ\thetaθ,有下面式子(贝叶斯公式):p(θ∣X)=p(X∣θ)p(θ)p(X)∝p(X∣θ)p(θ)p(\theta|X)=\frac{p(X|\theta)p(\theta)}{p(X)}\propto p(X|\theta)p(\theta)p(θ∣X)=p(X)p(X∣θ)p(θ)∝p(X∣θ)p(θ)其中,p(θ∣X)p(\theta|X)p(θ∣X)为后验概率,表示给定一组数据,参数出现的概率值。p(X∣θ)p(X|\theta)p(X∣θ)为似然,表示给定参数,数据出现的概率值。p(θ)p(\theta)p(θ)为先验概率,表示参数出现的分布。
先验概率,似然,后验概率的具体含义是根据贝叶斯公式灵活变动的。
由于XXX已经给定,因此,p(X)p(X)p(X)可以认为从一个变化的概率值收敛到一个常数值。因此有上面式子的后验概率正比于似然×先验概率。
此时如果再加上一个假设,我们假设参数的分布是一个均匀分布,对于均匀分布,此时参数的取值,只要在取值范围内,概率都是一样的,可以进一步化简:p(θ∣X)∝p(X∣θ)p(\theta|X)\propto p(X|\theta)p(θ∣X)∝p(X∣θ)此时,我们可以发现,如果要获得最符合XXX的θ\thetaθ(给定XXX,获取出现概率最大的那个参数θ\thetaθ),其实就是最大化似然p(X∣θ)p(X|\theta)p(X∣θ)。
考虑到X={x0,...xn}X=\left\{x_{0},...x_{n}\right\}X={x0,...xn}的样本的出现是独立同分布的,因此有:θ^=argmaxp(X∣θ)=argmax∏inp(xi∣θ)=argmaxlog∏inp(xi∣θ)=argmax∑inlog(p(xi∣θ))\widehat{\theta}=argmax\thinspace p(X|\theta)=argmax\prod_{i}^{n}p(x_{i}|\theta)\\=argmax\thinspace log\prod_{i}^{n}p(x_{i}|\theta)=argmax\sum_{i}^{n}log(p(x_{i}|\theta))θ=argmaxp(X∣θ)=argmaxi∏np(xi∣θ)=argmaxlogi∏np(xi∣θ)=argmaxi∑nlog(p(xi∣θ))以具体分布为例,假设已经知道分布是高斯分布,则有:θ={μ,σ}p(xi∣μ,σ)=12πσ2e(−(xi−μ)2σ2)\theta=\left\{\mu,\sigma\right\}\thinspace p(x_{i}|\mu,\sigma)=\frac{1}{\sqrt{2\pi\sigma^{2}}}e^{(-\frac{(x_{i}-\mu)^{2}}{\sigma^{2}})}θ={μ,σ}p(xi∣μ,σ)=2πσ21e(−σ2(xi−μ)2)将p(xi∣μ,σ)p(x_{i}|\mu,\sigma)p(xi∣μ,σ)代入∑inlog(p(xi∣θ))\sum_{i}^{n}log(p(x_{i}|\theta))∑inlog(p(xi∣θ)),通过计算极值(求偏导数),我们可以找到最大似然对应的参数θ^\widehat{\theta}θ。
结合到有监督学习,此时的数据变为{(x0,y0),...(xn,yn)}\left\{(x_{0},y_{0}),...(x_{n},y_{n})\right\}{(x0,y0),...(xn,yn)},yyy是xxx的标签。样本的概率分布p((xi,yi)∣θ)p((x_{i},y_{i})|\theta)p((xi,yi)∣θ)不知道是正态分布还是任何分布,但可以用深度网络来计算概率,深度网络的参数依然假设服从均匀分布,因此我们可以用最大似然估计参数,优化方法可以使用SGD等。
首先了解信息量,对于一个事件,其信息量有三个特征:
根据这三个特征,事件xxx的信息量被定义为:I(x)=log(1p(x))=−log(p(x))I(x)=log(\frac{1}{p(x)})=-log(p(x))I(x)=log(p(x)1)=−log(p(x))建立在信息量的基础上,有熵(香农熵)的定义(信息量是描述事件的,熵是描述概率分布的):
可以发现,如果概率密度函数比较均匀(这会导致样本出现更加随机,比如硬币正面概率0.5,则出现正面或者反面的概率,相比0.8概率正面的情况更随机)此时熵的值更大。
如果概率密度函数更聚拢,则熵的值更小。
思考一个问题,硬币出现正面的ground truth概率为p(h)=0.5p(h)=0.5p(h)=0.5,则出现反面的概率为p(t)=0.5p(t)=0.5p(t)=0.5,但是如果人类一开始不知道硬币是这样的,我们通过统计实验估计出正面出现频率为q(h)=0.2q(h)=0.2q(h)=0.2,反面频率为q(t)=0.8q(t)=0.8q(t)=0.8。其中,qqq代表我们估计的概率分布。
下面引入交叉熵的定义:假设估计出的概率分布qqq,对于真实的概率分布ppp的平均信息量。
交叉熵表示为:H(p,q)=∑piIiq=∑pilog(1qi)=−∑pilog(qi)H(p,q)=\sum p_{i}I_{i}^{q}=\sum p_{i}log(\frac{1}{q_{i}})=-\sum p_{i}log(q_{i})H(p,q)=∑piIiq=∑pilog(qi1)=−∑pilog(qi)可以理解为,最小化交叉熵,也就是将估计的概率分布调整拟合到ground truth的概率分布。
进一步,过渡到KL散度,这是一种用于量化衡量两个概率分布区别的方法。KL散度等于交叉熵减去熵:D(p∣∣q)=H(p,q)−H(p)=∑piIiq−∑piIip=∑pilog(piqi)D(p||q)=H(p,q)-H(p)=\sum p_{i}I_{i}^{q}-\sum p_{i}I_{i}^{p}=\sum p_{i}log(\frac{p_{i}}{q_{i}})D(p∣∣q)=H(p,q)−H(p)=∑piIiq−∑piIip=∑pilog(qipi)注意,KL散度的值大于等于零,并且:D(p∣∣q)≠D(q∣∣p)D(p||q)\neq D(q||p)D(p∣∣q)=D(q∣∣p)因此,KL散度不能作为一个距离度量指标。
另外:∇θD(p∣∣qθ)=∇θH(p,qθ)−∇θH(p)=∇θH(p,qθ)\nabla_{\theta}D(p||q_{\theta})=\nabla_{\theta}H(p,q_{\theta})-\nabla_{\theta}H(p)=\nabla_{\theta}H(p,q_{\theta})∇θD(p∣∣qθ)=∇θH(p,qθ)−∇θH(p)=∇θH(p,qθ)因此,最小化KL散度等价于最小化交叉熵。
首先认识隐变量图模型,隐变量代表了被观测变量的一些属性,比如下图,被观测变量是一张猫的图像,隐变量为类别的one-hot编码。
隐变量和被观测变量组成了隐变量图模型。
对于变分推理,首先看推理部分,一般来说,我们希望通过观测数据获得数据的知识,即:从被观测变量推理无法观测到的隐变量。从概率的角度有:x∼p(x)z∼p(z∣x)x\sim p(x)\thinspace z\sim p(z|x)x∼p(x)z∼p(z∣x)在贝叶斯公式中,p(z∣x)p(z|x)p(z∣x)可以理解为后验概率(隐变量在给定观测变量下出现的概率):p(z∣x)=p(x∣z)p(z)p(x)=p(x∣z)p(z)∫zp(x,z)dzp(z|x)=\frac{p(x|z)p(z)}{p(x)}=\frac{p(x|z)p(z)}{\int_{z}p(x,z)dz}p(z∣x)=p(x)p(x∣z)p(z)=∫zp(x,z)dzp(x∣z)p(z)通常,边缘分布p(x)=∫zp(x,z)dzp(x)=\int_{z}p(x,z)dzp(x)=∫zp(x,z)dz是难以计算的(详细理解参考下面的example 1),因此,后验分布也是难以计算的。
p(x)p(x)p(x)与最大似然估计中的p(X)p(X)p(X)是不同的,p(X)p(X)p(X)是整体samples出现的概率,由于数据XXX已经是给定的,所以p(X)p(X)p(X)是一个常数。
p(x)p(x)p(x)描述的是具体sample的概率,不同的xxx值对应着不同的p(x)p(x)p(x)值,并且,我们不能武断地假设成样本服从某个已知的分布,再利用该分布的概率密度函数计算概率。
为了解决这个问题,我们使用一个可以参数化的已知概率分布q(z)q(z)q(z)近似真实的后验分布p(z∣x)p(z|x)p(z∣x)。这个近似的过程称之为变分。
使用近似的概率分布,尝试在给定被观测变量情况下,估计隐变量概率分布的过程称为变分推理。如果我们对隐变量进行采样,并且在给定隐变量的情况下,使用似然对被观测变量进行采样,就称为生成过程。
变分推理的描述依然抽象,下面以具体例子来理解。
假设隐变量服从指数分布:z∼p(z)=e−zI(z≥0)z\sim p(z)=e^{-z}I(z\geq 0)z∼p(z)=e−zI(z≥0)其中,I(⋅)I(\cdot)I(⋅)为指示函数(或者说阶跃函数)。
假设被观测变量服从高斯分布:x∼p(x∣z)=N(x∣μ=z,σ=1)=12πe(−12(x−z)2)x\sim p(x|z)=N(x|\mu=z,\sigma=1)=\frac{1}{\sqrt{2\pi}}e^{(-\frac{1}{2}(x-z)^{2})}x∼p(x∣z)=N(x∣μ=z,σ=1)=2π1e(−21(x−z)2)在这样的假设下,联合分布为:p(x,z)=p(x∣z)p(z)=12πe(−12(x−z)2)e−zI(z≥0)p(x,z)=p(x|z)p(z)\\=\frac{1}{\sqrt{2\pi}}e^{(-\frac{1}{2}(x-z)^{2})}e^{-z}I(z\geq 0)p(x,z)=p(x∣z)p(z)=2π1e(−21(x−z)2)e−zI(z≥0)因此边缘分布为:p(x)=∫p(x,z)dz=∫0∞e−z12πe(−12(x−z)2)dzp(x)=\int p(x,z)dz=\int_{0}^{\infty}e^{-z}\frac{1}{\sqrt{2\pi}}e^{(-\frac{1}{2}(x-z)^{2})}dzp(x)=∫p(x,z)dz=∫0∞e−z2π1e(−21(x−z)2)dz在这种情况下,边缘分布是很难甚至没法计算的,因为zzz是连续空间,积分难以找到形式解析解。
由于被观测的数据xxx给定,此时p(x)p(x)p(x)是一个具体的数值(常数),根据贝叶斯公式有:p(z∣x)=p(x,z)p(x)∝p(x,z)=p(x∣z)p(z)=12πe(−12(x−z)2)e−zI(z≥0)p(z|x)=\frac{p(x,z)}{p(x)}\propto p(x,z)=p(x|z)p(z)=\frac{1}{\sqrt{2\pi}}e^{(-\frac{1}{2}(x-z)^{2})}e^{-z}I(z\geq 0)p(z∣x)=p(x)p(x,z)∝p(x,z)=p(x∣z)p(z)=2π1e(−21(x−z)2)e−zI(z≥0)化简后有以下正比关系:p(z∣x)∝12πe(−12(z−(x−z))2)I(z≥0)p(z|x)\propto\frac{1}{\sqrt{2\pi}}e^{(-\frac{1}{2}(z-(x-z))^{2})}I(z\geq 0)p(z∣x)∝2π1e(−21(z−(x−z))2)I(z≥0)我们可以从下图得到验证:
我们发现后验概率正比于联合分布,但是p(x)p(x)p(x)虽然是常数,但xxx不同,常数的值也不同,因此,不能简单的用联合分布去表示后验概率。
在比较概率时,我们不能比较联合分布,应该比较正则化的后验概率分布,图像分类就是比较后验概率的例子。
我们使用KL散度衡量两个分布的差距:D(q∣∣p)=H(q,p)−H(q)=∫q(x)logq(x)p(x)dx=Ex∼q[logq(x)−logp(x)]D(q||p)=H(q,p)-H(q)=\int q(x)log\frac{q(x)}{p(x)}dx\\=E_{x\sim q}[log\thinspace q(x)-log\thinspace p(x)]D(q∣∣p)=H(q,p)−H(q)=∫q(x)logp(x)q(x)dx=Ex∼q[logq(x)−logp(x)]现在我们有一个直观的想法,使用近似分布qθ(z)q_{\theta}(z)qθ(z)近似到p(z∣x)p(z|x)p(z∣x),即:D(qθ(z)∣∣p(z∣x))=Ez∼q[logqθ(z)−logp(z∣x)]=Ez∼q[logqθ(z)−logp(z,x)p(x)]=Ez∼q[logqθ(z)−logp(z,x)]+logp(x)D(q_{\theta}(z)||p(z|x))=E_{z\sim q}[log\thinspace q_{\theta}(z)-log\thinspace p(z|x)]\\=E_{z\sim q}[log\thinspace q_{\theta}(z)-log\thinspace \frac{p(z,x)}{p(x)}]\\=E_{z\sim q}[log\thinspace q_{\theta}(z)-log\thinspace p(z,x)]+log\thinspace p(x)D(qθ(z)∣∣p(z∣x))=Ez∼q[logqθ(z)−logp(z∣x)]=Ez∼q[logqθ(z)−logp(x)p(z,x)]=Ez∼q[logqθ(z)−logp(z,x)]+logp(x)上面式子可以改为:logp(x)=Ez∼q[logp(z,x)−logqθ(z)]+D(qθ(z)∣∣p(z∣x))log\thinspace p(x)=E_{z\sim q}[log\thinspace p(z,x)-log\thinspace q_{\theta}(z)]+D(q_{\theta}(z)||p(z|x))logp(x)=Ez∼q[logp(z,x)−logqθ(z)]+D(qθ(z)∣∣p(z∣x))由于KL散度大于等于0,因此有:logp(x)≥Ez∼q[logp(z,x)−logqθ(z)]log\thinspace p(x)\geq E_{z\sim q}[log\thinspace p(z,x)-log\thinspace q_{\theta}(z)]logp(x)≥Ez∼q[logp(z,x)−logqθ(z)]并且根据等式有,最小化KL散度,等价于最大化Ez∼q[logp(z,x)−logqθ(z)]E_{z\sim q}[log\thinspace p(z,x)-log\thinspace q_{\theta}(z)]Ez∼q[logp(z,x)−logqθ(z)](ELBO,evidence lower bound)。
以实际例子理解,假设隐变量服从指数分布:z∼p(z)=e−zI(z≥0)z\sim p(z)=e^{-z}I(z\geq 0)z∼p(z)=e−zI(z≥0)其中,I(⋅)I(\cdot)I(⋅)为指示函数(或者说阶跃函数)。
假设我们有近似分布qθ(z)q_{\theta}(z)qθ(z):qθ(z)=θe−θzI(z≥0)q_{\theta}(z)=\theta e^{-\theta z}I(z\geq 0)qθ(z)=θe−θzI(z≥0)假设被观测变量服从高斯分布:x∼p(x∣z)=N(x∣μ=z,σ=1)=12πe(−12(x−z)2)x\sim p(x|z)=N(x|\mu=z,\sigma=1)=\frac{1}{\sqrt{2\pi}}e^{(-\frac{1}{2}(x-z)^{2})}x∼p(x∣z)=N(x∣μ=z,σ=1)=2π1e(−21(x−z)2)则ELBO为:L=Ez∼q[logp(z,x)−logqθ(z)]=Ez∼q[logp(x∣z)p(z)−logqθ(z)]L=E_{z\sim q}[log\thinspace p(z,x)-log\thinspace q_{\theta}(z)]=E_{z\sim q}[log\thinspace p(x|z)p(z)-log\thinspace q_{\theta}(z)]L=Ez∼q[logp(z,x)−logqθ(z)]=Ez∼q[logp(x∣z)p(z)−logqθ(z)]以x=1.5x=1.5x=1.5为例,通过计算偏导数∂L∂θ=0\frac{\partial L}{\partial \theta}=0∂θ∂L=0,得到θ=1.186\theta=1.186θ=1.186。因此,我们得到了与真实后验概率近似的近似概率(基底形式为指数函数)。下图可以作为验证:
在VAE中,编码器部分相当于计算后验分布p(z∣x)p(z|x)p(z∣x),解码器部分相当于计算p(x∣z)p(x|z)p(x∣z),对于VAE,我们不一定使用q(z)q(z)q(z)是正态分布的假设,而是假设p(z∣x)p(z|x)p(z∣x)是正态分布:
上一篇:【Golang】gob包