ReCall
Gaussians and Score Function
已知 p(z)=N(0,I) , x=u+Σ21z
则 p(x)=N(u,Σ) , p(x)=(2π)d/2∣Σ∣1/21e−21(x−u)TΣ−1(x−u)
logp(x)=−21(x−u)TΣ−1(x−u)
∇xlogp(x)=−Σ−1(x−u)
假设 x=u+Σ21z ,即 x 是 u 的带噪声版本, 如何从这个带噪声的 x (observation) 中恢复出原始的 u 呢?
E[u∣x]=x+Σ∇xlogp(x)
在diffusion model中, 有
p(xt∣x0)=N(αˉtx0,(1−αˉt)I)
观测的随机变量为xt
则应用Tweedie公式,得
Ex0∼p(x),xt∼pσ(xt)[αˉtx0∣xt]=αˉtE[x0∣xt]=xt+(1−αˉt)∇xlogp(xt∣x0)
- 这里化边缘分布为条件分布,和score function 类似
E[x0∣xt]=αˉt1(xt+(1−αˉt)∇xlogp(xt∣x0))
Inverse Problems
问题定义:
已知观测 y, 其符合 y=A(x)+σz,z∼N(0,I), 如何找到对应于该观测 y 的原始数据点 x
- A 为观测算子
- z 为观测噪声
- 去模糊,超分,inpaint,都可以看作是逆问题。要从观测 y (一张模糊的图像,一张低分辨率的图像,一张带掩码的图像) 恢复到diffusion 学习到的原始正常图像 x

Methods
方法:已知观测 y 以及diffusion model学习到的∇xlogp(xt), 计算 ∇xlogp(xt∣y) 来引导 y 恢复为 x
∇xtlogp(xt∣y)=∇xtlogp(xt)+∇xtlogp(y∣xt)
∇xlogp(xt) 通过diffusion model可以得到,问题转化为如何不用训练就计算∇xlogp(y∣xt)
结论:
p(y∣xt)≈N(Ax0∣t,Σ)
- 其中Σ=r2AAT+σ2
考虑特殊的情况,A(x)是一个线性变换,
则A(x)可以用一个线性矩阵A 表示
y=A(x0)+σz=Ax0+σz,
- 其中 z∼N(0,I)
则
p(y∣x0)=N(Ax0,σ2I)
令 x0∣t=E[x0∣xt] , p(x0∣xt)≈N(x0∣t,r2I)
又:
p(y)=∫p(y∣x0)p(x0)dx0
加上 xt 的条件:
p(y∣xt)=∫p(y∣x0,xt)p(x0∣xt)dx0
因为 xt 是从 x0 采样得到,故对于y没有提供额外信息:
=∫p(y∣x0)p(x0∣xt)dx0
因为
p(y∣x0)=N(Ax0,σ2I)
令p(x0∣xt)≈N(x0∣t,r2I)
所以
p(y∣xt)≈N(Ax0∣t,(r2AAT+σ2)I)
令 Σ=r2AAT+σ2
则
p(y∣xt)≈N(Ax0∣t,Σ)
logp(y∣xt)≈−21(y−Ax0∣t)TΣ−1(y−Ax0∣t)
∇xtlogp(y∣xt)=∂x0∣t∂logp(y∣xt)⋅∂xt∂x0∣t≈∂x0∣t∂(−21(y−Ax0∣t)TΣ−1(y−Ax0∣t))⋅∂xt∂x0∣t=ATΣ−1(y−Ax0∣t)⋅∂xt∂x0∣t=AT(σ2I+r2AAT)−1(y−Ax0∣t)⋅∂xt∂x0∣t
当 σ=0 时,表示 y 没有观测误差
∇xtlogp(y∣xt)=r21AT(AAT)−1(y−Ax0∣t)⋅∂xt∂x0∣t
- 此时 AT(AAT)−1 是 A 的一个伪逆矩阵
- 当非线性时,需要人工构造伪逆函数,保证 AA−1A(x)=A(x)
当 r=0 时,
p(y∣xt)≈N(Ax0∣t,σ2I)
- 不需要 AAT 矩阵,因此可以去掉A(x)是一个线性变换的前提, 适用于广泛的观测算子
p(y∣xt)≈N(A(x0∣t),σ2I)
∇xtlogp(y∣xt)=2σ21∇xt∣∣y−A(x0∣t)∣∣2

References