跳转到内容

输入关键词开始搜索

    得分匹配(Score Matching)

    概念更新 2026-07-13置信度 high#概念#扩散模型#生成模型#深度#基础

    训练扩散模型的核心方法:让神经网络回归得分函数 logpt(x)\nabla\log p_t(x)(对数似然的梯度)。因边缘得分不可算,改回归可解析的条件得分(去噪得分匹配),二者梯度相同。

    得分函数(score function)指概率分布 q(x)q(x) 的对数密度梯度 logq(x)\nabla\log q(x)——它指向似然增长最快的方向,是一个处处定义的向量场。扩散模型不直接建模密度,而是学习每个噪声水平 tt 下的边缘得分 logpt(x)\nabla\log p_t(x)

    得分匹配(Score Matching)就是训练一个得分网络 stθ(x)s_t^\theta(x) 去逼近 logpt(x)\nabla\log p_t(x) 的方法。它与 流匹配 是同一套“条件→边缘→边缘化 trick”框架的两个投影:流匹配学向量场,得分匹配学得分

    1. 它是扩散模型(DDPM/Score-based SDE)的训练根基:Song et al. 的 score-based 生成模型与 Ho et al. 的 DDPM 本质都在做得分匹配——DDPM 的“噪声预测”只是得分的一个重参数化。
    2. 得分解锁 SDE 采样与引导:一旦学到得分,就能用 SDE 扩展 trick 在保持边缘分布不变的前提下注入任意扩散系数 σt\sigma_t(随机采样),也能用贝叶斯拆分做 无分类器引导
    3. 与向量场可互换:对高斯概率路径,得分与向量场通过线性公式互相恢复(见下)——学会其一即学会另一,这解释了“流匹配阵营”与“扩散/得分阵营”为何殊途同归。

    与向量场完全平行,边缘得分是条件得分按后验加权的平均:

    logpt(x)=logpt(xz)pt(xz)pdata(z)pt(x)dz\nabla\log p_t(x)=\int \nabla\log p_t(x\mid z),\frac{p_t(x\mid z),p_{\text{data}}(z)}{p_t(x)},dz

    高斯概率路径 pt(z)=N(αtz,βt2Id)p_t(\cdot\mid z)=\mathcal{N}(\alpha_t z,\beta_t^2 I_d),条件得分有闭式解:

    logpt(xz)=xαtzβt2\nabla\log p_t(x\mid z)=-\frac{x-\alpha_t z}{\beta_t^2}

    理想的得分匹配损失 LSM=E[stθ(x)logpt(x)2]\mathcal{L}_{\text{SM}}=\mathbb{E}\big[\|s_t^\theta(x)-\nabla\log p_t(x)\|^2\big] 因边缘得分不可算而无法直接优化。改用可算的条件(去噪)得分匹配损失

    LCSM(θ)=Et,zpdata,xpt(z)[stθ(x)logpt(xz)2]\mathcal{L}{\text{CSM}}(\theta)=\mathbb{E}{t,,z\sim p_{\text{data}},,x\sim p_t(\cdot\mid z)}\big[|s_t^\theta(x)-\nabla\log p_t(x\mid z)|^2\big]

    关键定理:LSM(θ)=LCSM(θ)+C\mathcal{L}_{\text{SM}}(\theta)=\mathcal{L}_{\text{CSM}}(\theta)+CCCθ\theta 无关,故 θLSM=θLCSM\nabla_\theta\mathcal{L}_{\text{SM}}=\nabla_\theta\mathcal{L}_{\text{CSM}}。最优解 stθ=logpts_t^{\theta^*}=\nabla\log p_t。这与流匹配里 LFM=LCFM+C\mathcal{L}_{\text{FM}}=\mathcal{L}_{\text{CFM}}+C完全对偶的结论

    代入高斯条件得分并令 x=αtz+βtϵx=\alpha_t z+\beta_t\epsilon

    LCSM=E[1βt2βtstθ(αtz+βtϵ)+ϵ2]\mathcal{L}_{\text{CSM}}=\mathbb{E}\Big[\tfrac{1}{\beta_t^2},|\beta_t s_t^\theta(\alpha_t z+\beta_t\epsilon)+\epsilon|^2\Big]

    1/βt21/\beta_t^2βt0\beta_t\to 0 时数值不稳定。DDPM 的做法是丢弃该系数,并把网络重参数化为噪声预测器 ϵtθ=βtstθ\epsilon_t^\theta=-\beta_t s_t^\theta,得到极简目标:

    LDDPM(θ)=E[ϵtθ(αtz+βtϵ)ϵ2]\mathcal{L}_{\text{DDPM}}(\theta)=\mathbb{E}\big[|\epsilon_t^\theta(\alpha_t z+\beta_t\epsilon)-\epsilon|^2\big]

    即“网络学习预测被加进去的噪声”。详细的加噪/去噪公式推导见 DDPM 前向与反向扩散公式推导

    对高斯概率路径(Proposition 1):

    uttarget(x)=atlogpt(x)+btx,at=(βt2α˙tαtβ˙tβt),  bt=α˙tαtu_t^{\text{target}}(x)=a_t,\nabla\log p_t(x)+b_t,x,\qquad a_t=\Big(\beta_t^2\tfrac{\dot\alpha_t}{\alpha_t}-\dot\beta_t\beta_t\Big),\ \ b_t=\tfrac{\dot\alpha_t}{\alpha_t}

    因两侧都是 x,zx,z 的线性函数,可互相恢复。训练好向量场即等价于知道得分,反之亦然——因此对高斯路径无需分别训练两个网络

    给定得分,可为任意 σt0\sigma_t\geq 0 构造保持同一边缘 ptp_t 的 SDE:

    dXt=[uttarget(Xt)+σt22logpt(Xt)]dt+σtdWtdX_t=\Big[u_t^{\text{target}}(X_t)+\tfrac{\sigma_t^2}{2}\nabla\log p_t(X_t)\Big]dt+\sigma_t,dW_t

    σt=0\sigma_t=0 退化为确定性 ODE 采样;σt>0\sigma_t>0 引入随机性(与 Langevin 动力学同源)。实践中存在经验最优 σt\sigma_t(权衡训练误差与模拟误差)。

    维度 得分匹配(Score Matching) 流匹配
    学习目标 得分 logpt(x)\nabla\log p_t(x) 向量场 uttarget(x)u_t^{\text{target}}(x)
    可算损失 去噪得分匹配 LCSM\mathcal{L}_{\text{CSM}} 条件流匹配 LCFM\mathcal{L}_{\text{CFM}}
    采样 SDE(可退化为 ODE) ODE(可扩展为 SDE)
    典型实现 DDPM 噪声预测 ϵθ\epsilon_\theta 速度预测 v=zϵv=z-\epsilon
    关系 高斯路径下二者线性可互换 同上

    一句话:流匹配和得分匹配不是两种模型,而是同一生成框架在“向量场”与“得分”两个坐标下的表述

    • 2005: Hyvärinen 提出原始 Score Matching。
    • 2011: Vincent 提出去噪得分匹配(Denoising Score Matching),与去噪自编码器建立联系。
    • 2019–2020: Song & Ermon(NCSN)、Ho et al.(DDPM)把得分匹配推向大规模图像生成。
    • 2021: Song et al. 用 SDE 统一 score-based 模型,“Creating noise from data is easy; creating data from noise is generative modeling”。
    • 2022–: 与 流匹配 在理论上被统一(本页据 MIT 6.S184 讲义整理)。
    • 「得分就是梯度下降的梯度」:得分是对数似然对数据 xx 的梯度xlogpt(x)\nabla_x\log p_t(x)),不是对参数 θ\theta 的梯度;它是一个数据空间的向量场。
    • 「DDPM 和得分匹配是两回事」:DDPM 的噪声预测损失就是去噪得分匹配丢掉 1/βt21/\beta_t^2 系数后的重参数化,二者训练目标同源。
    • 「学了得分还得再学向量场才能采样」:对高斯路径二者线性可互换,训练一个即可。