Score matching

Score matching 是一种用于估计概率模型参数的技术,由 Aapo Hyvärinen 在 2005 年提出,主要用于那些概率密度函数难以归一化的情况。在许多概率模型中,确切计算模型的归一化常数是不可行的,因为它涉及到整个数据空间的积分或求和,这在高维数据中尤其困难。Score matching 为这类模型提供了一种有效的估计参数的方式。

如何工作?

在讨论 score matching 之前,我们先定义所谓的“得分”是什么:在统计学中,概率模型的“得分”是指对数概率密度函数对数据点的梯度。得分函数反映了数据点的小变化如何影响概率密度的对数值。在得分匹配中,我们的目标是找到模型参数,使模型的得分函数尽可能接近数据生成过程真实的得分函数。
步骤包括:

  1. 定义得分函数: 对于概率密度函数 p ( x ; θ ) p(x;\theta) p(x;θ),其中 x x x 是数据点, θ \theta θ 是模型参数,其得分是 ∇ x log ⁡ p ( x ; θ ) \nabla_x \log p(x;\theta) xlogp(x;θ),即对数概率密度关于 x x x的梯度。
  2. 构建损失函数: Score matching 通过最小化模型得分和数据得分之间的差的二次形式来实现。具体来说,损失函数是模型得分与数据得分之差的平方的期望值,即:
    J ( θ ) = 1 2 E x ∼ p data ( x ) [ ∣ ∇ x log ⁡ p ( x ; θ ) − ∇ x log ⁡ p data ( x ) ∣ 2 ] J(\theta) = \frac{1}{2} \mathbb{E}{x \sim p{\text{data}}(x)} \left[ | \nabla_x \log p(x;\theta) - \nabla_x \log p_{\text{data}}(x) |^2 \right] J(θ)=21Expdata(x)[xlogp(x;θ)xlogpdata(x)2]
    其中, E \mathbb{E} E 表示期望值, p data ( x ) p_{\text{data}}(x) pdata(x)是数据的真实分布。
  3. 简化损失函数: 在实践中,计算 p data ( x ) p{\text{data}}(x) pdata(x)_是不可行的,因此损失函数 _ J ( θ ) J(\theta) J(θ)_被进一步简化,以便移除其中依赖于 _ p data ( x ) p{\text{data}}(x) pdata(x) 的项。简化的结果只依赖于模型概率密度 p ( x ; θ ) p(x;\theta) p(x;θ) 及其导数。
  4. 优化模型参数: 最后,使用梯度下降或其他优化算法最小化损失函数,从而得到模型参数的估计。

优点与应用

Score matching 的一个关键优点是它允许我们直接通过数据来估计模型参数,而不需要知道数据的真实分布或者模型分布的归一化常数。这使得它特别适用于复杂模型,如能量基模型(包括受限玻尔兹曼机和Deep Belief Networks),在这些模型中计算或估计归一化常数可能非常困难或不可行。
此外,score matching 方法通常在数学上较为直接,能够提供有明确物理意义的梯度信息,有助于参数的高效估计。因此,它在无监督学习和深度学习的生成模型训练中被广泛应用。

示例

让我们通过一个简单的概率模型来演示 score matching 的过程。假设我们有一组一维数据 x x x 来自一个未知的真实概率分布 p data ( x ) p_{\text{data}}(x) pdata(x)。我们想要使用一个高斯分布模型来拟合这些数据,即,我们假设数据是由高斯分布生成的,其概率密度函数为:
p ( x ; μ , σ ) = 1 2 π σ 2 exp ⁡ ( − ( x − μ ) 2 2 σ 2 ) p(x;\mu,\sigma) = \frac{1}{\sqrt{2\pi\sigma^2}}\exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right) p(x;μ,σ)=2πσ2 1exp(2σ2(xμ)2)
其中, μ \mu μ σ \sigma σ 是我们想要估计的高斯分布的参数。
在 score matching 中,我们首先计算模型概率密度函数的对数得分,即 ∇ x log ⁡ p ( x ; μ , σ ) \nabla_x \log p(x;\mu,\sigma) xlogp(x;μ,σ)。对于高斯分布,得分函数是:
∇ x log ⁡ p ( x ; μ , σ ) = − ( x − μ ) σ 2 \nabla_x \log p(x;\mu,\sigma) = -\frac{(x-\mu)}{\sigma^2} xlogp(x;μ,σ)=σ2(xμ)
然后,我们构建损失函数 J ( μ , σ ) J(\mu, \sigma) J(μ,σ)来度量模型得分与数据得分的差异的平方。由于计算真实数据得分涉及 p data ( x ) p_{\text{data}}(x) pdata(x)是不实际的,Hyvärinen (2005) 证明了可以使用以下损失函数:
J ( μ , σ ) = E x ∼ p data ( x ) [ ∂ 2 ∂ x 2 log ⁡ p ( x ; μ , σ ) + 1 2 ( ∂ ∂ x log ⁡ p ( x ; μ , σ ) ) 2 ] J(\mu, \sigma) = \mathbb{E}_{x \sim p_{\text{data}}(x)} \left[ \frac{\partial^2}{\partial x^2} \log p(x; \mu, \sigma) + \frac{1}{2} \left( \frac{\partial}{\partial x} \log p(x; \mu, \sigma) \right)^2 \right] J(μ,σ)=Expdata(x)[x22logp(x;μ,σ)+21(xlogp(x;μ,σ))2]
该损失函数的巧妙之处在于它不再依赖于 p data ( x ) p_{\text{data}}(x) pdata(x) 的未知项,并且可以直接从数据中估计。对于高斯模型,可以进一步计算出损失函数的具体形式,然后通过最小化损失函数来估计参数 μ \mu μ σ \sigma σ
使用梯度下降或其他优化算法,我们可以从一组初始参数开始,通过不断迭代更新参数来最小化损失函数 J ( μ , σ ) J(\mu, \sigma) J(μ,σ),直到达到收敛为止。
最终,我们会得到高斯分布的参数 μ \mu μ σ \sigma σ的估计值,这个估计的高斯分布理论上应该与数据的真实分布 p data ( x ) p_{\text{data}}(x) pdata(x) 很接近,尽管我们从未直接知道或使用 p data ( x ) p_{\text{data}}(x) pdata(x)的具体形式。

  • 27
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值