2020-4-8 深度学习笔记18 - 直面配分函数 1 ( 配分函数概念,对数似然梯度)

第十八章 直面配分函数 Confronting the Partition Function

中文
英文

在16.2中,我们看到许多概率模型(通常是无向图模型)由一个未归一化的概率分布 p ~ ( x , θ ) \tilde{p}(x, \theta) p~(x,θ)定义。 我们必须通过除以配分函数 Z ( θ ) Z(\theta) Z(θ)来归一化 p ~ \tilde{p} p~,以获得一个有效的概率分布:
p ( x ; θ ) = 1 Z ( θ ) p ~ ( x ; θ ) p(x;θ)=\frac1{Z(θ)} \tilde p(x;θ) p(x;θ)=Z(θ)1p~(x;θ)
配分函数是未归一化概率所有状态的积分(对于连续变量)或求和(对于离散变量):
∫ p ~ ( x ) d x 或 ∑ x p ~ ( x ) ∫ \tilde p(x)dx \quad或\quad \sum_x \tilde p(x) p~(x)dxxp~(x)
对于很多模型而言,以上积分或求和难以计算。

有些深度学习模型被设计成具有一个易于处理的归一化常数,或被设计成能够在不涉及计算 p ( x ) p(x) p(x)的情况下使用。 然而,其他一些模型会直接面对难以计算的配分函数的挑战。 在本章中,我们会介绍用于训练和评估那些具有难以处理的配分函数的模型的技术。

配分函数补充–举例
比如,要统计一个村村民的平均收入水平,你会怎么做?
除了挨家挨户去调查以外,还有一种统计的办法,步骤如下:

step1 . 把这个村村民按照收入水平Vi的高低划分成不同的等级(比如,一百,一千,一万等等)
step2. 然后抽样调查每个等级的村民所占的比例Pi(也就是出现概率,抽样落在该等级人数占总抽样人数的比例)
step3. 然后将每一个收入等级所占比例都乘以对应收入即Pi*Vi,最后再把每个乘积项求和即 ϕ = ∑ i ∞ P i ∗ V i \phi=\sum_i^{\infty}Pi*Vi ϕ=iPiVi ,这个就是配分函数

用这个函数乘以村民总数就可以得到你们村的平均收入了。

在统计物理里面也一样,就是一个统计函数,用这个函数来乘以系统的原子个数就得到了整个系统的物理量统计平均值,这样做的目的是因为微观粒子数目太多了,没办法一个一个数过去,所以发明这个工具。

对数似然梯度

通过最大似然学习无向模型特别困难的原因在于配分函数依赖于参数
对数似然相对于参数的梯度具有一项对应于配分函数的梯度:
∇ θ l o g p ( x ; θ ) = ∇ θ l o g p ~ ( x ; θ ) − ∇ θ l o g Z ( θ ) ∇_θlogp(x;θ)=∇_θlog\tilde p(x;θ)−∇_θlogZ(θ) θlogp(x;θ)=θlogp~(x;θ)θlogZ(θ)
这是机器学习中非常著名的正相和负相的分解。
对于大多数感兴趣的无向模型而言,负相是困难的。 没有潜变量或潜变量之间很少相互作用的模型通常会有一个易于计算的正相。

当满足一些特定条件时,有:
∇ θ ​ l o g Z = E x ∼ p ( x ) ​ ∇ θ ​ l o g p ~ ​ ( x ) ∇_θ​logZ=E_{x∼p(x)}​∇_θ​log\tilde p​(x) θlogZ=Exp(x)θlogp~(x)
这将问题分为了正相和负相。在正相中,我们增大从数据中采样得到的 l o g p ~ ( x ) log\tilde p(x) logp~(x)。在负相中,我们降低从模型分布中采样的 l o g p ~ ( x ) log\tilde p(x) logp~(x)

你可能感兴趣的:(深度学习,IT,深度学习)