Skip to content

Energy-Based Model (EBM)

约 717 个字 7 张图片 预计阅读时间 4 分钟

Pθ(x)=1Z(θ)gθ(x),其中 Z(θ)=gθ(x)dxgθ 有非常灵活的选择,一般选择较为简单的,可以计算积分的,然后用这种较小的块去搭建更大、更复杂的模型,例如

  • Autoregressive:products of normalized objects Pθ(x)Pθ(x)(y)
xyPθ(x)Pθ(x)(y)dydx=xPθ(x)dx=1
  • Latent variables:Mixture of normalized objects αPθ(x)+(1α)Pθ(x)
xαPθ(x)+(1α)Pθ(x)dx=α+(1α)=1

一般选择令

Pθ(x)=1Z(θ)expfθ(x)

Z(θ)=xexpfθ(x)dx 称为 partition function,当维度太高时,基本无法计算

Training

目标:最大化 exp{fθ(xtrain)}Z(θ),即让分母尽可能小,分子尽可能大

Contrastive Divergence

由于 Z(θ) 很难算出,可以用 MC 估计:采样 xsample 服从 Pθ ,计算

θ(fθ(xtrain)fθ(xsample))

称为 Contrastive divergence,推导:

θlogexp{fθ(xtrain)}Z(θ)=θfθ(xtrain)θlogZ(θ)=θfθ(xtrain)θZ(θ)Z(θ)=θfθ(xtrain)1Z(θ)xθexp{fθ(x)}dx=θfθ(xtrain)1Z(θ)xexp{fθ(x)}θfθ(x)dx=θfθ(xtrain)xexp{fθ(x)}Z(θ)θfθ(x)=θfθ(xtrain)Exxsample[θfθ(x)]θfθ(xtrain)θfθ(xsample)

这里 xsamplePθ(x)=exp(fθ(x))Z(θ),难以取样得到,可以采用下述两个迭代算法:

都需要迭代取样,非常慢。可以改进为 training without sampling,使用 score function

sθ(x)=xlogpθ(x)=xfθ(x)

也就是计算对数化之后的梯度,可视化:

Score Matching

参考 Score-Matching

直观上看,就是想要先让梯度近似相等,然后在除以 partition function Z(θ) 的时候并不会影响梯度,那么两个分布就应该很接近了。最终结果:

DF(pdata,pθ)1ni=1n12xlogpθ(xi)2+tr(x2logpθ(xi))=1ni=1n12xfθ(xi)2+tr(x2fθ(xi))

问题是,计算 trace 太过 expensive。

Noise Contrastive Estimation

参考 Noise-Contrastive-Estimation

Z(θ) 看作是一个独立的参数,模型从 pθ(x) 变成了 pθ,Z(x),最后结果只需要分别采样 x1,,xnpdata(x),y1,,ynpnoise(y),然后计算 NCE loss:

1ni=1n[fθ(xi)logsumexp(fθ(xi),logZ+logpnoise(xi))+logZ+pnoise(y)logsumexp(fθ(yi),logZ+logpnoise(yi))]

推导:

Adversarial Training

Summary

Support Me!