這是一篇論文筆記: “Sliced-Score-Matching-A-Scalable-Approach-to-Density-and-Score-Estimation”
建議看本文前請先參前兩篇: Score Matching 系列 (一) 和 Score Matching 系列 (二)
雖然 DSM (文章在系列二) 比起 SM 可以非常有效率的訓練, 但最多只能還原到 noisy 的分布, 且加噪的強度不易調整.
本篇 SSM or SSM-VR 則不會有此缺點, 且效果可以接近原來的 SM.
背景回顧
真實資料的 pdf pd(x) 和其 score function 定義如下:
sd(x)≜∇xlogpd(x)
Model 的 non-normalized density ˜pm(x;θ) 和 pdf p(x;θ) 以及 score function 定義如下:
pm(x;θ)=˜pm(x;θ)Zθ,sm(x;θ)≜∇xlogpm(x;θ)=∇xlog˜pm(x;θ)
最原始的 loss function (Fisher divergence), 或在我們前面的文章稱 Explicit Score Matching (ESM):
L(θ)≜12Epd[‖sm(x;θ)−sd(x)‖22]
其中式 (1) 等價於下式的 Implicit Score Matching (ISM) 的目標函式:
J(θ)=Epd[tr(∇xsm(x;θ))+12‖sm(x;θ)‖22]
雖然 ISM 可以計算, 但需要用到二次微分, 當 network 參數量大的時候, Hessian matrix 效率很低. 同時 x 維度高的時候效率也是很低 (無法很好 scalable)
為此, 上一篇 DSM 利用加入 noise 的方式避掉這兩個問題, 但有兩個缺點
- 最多只能學到加噪聲的分布
- noise 的 level, i.e. σ2, 很難調
SSM(-VR) 能改善這兩個缺點
Sliced Score Matching (SSM)
本篇 sliced score matching 則利用另一種想法, 不在高維度的 score function 上比較, 而是將 score function randomly 投影在低維度上再比較, 因此目標函式從 (1) 變成下式:
L(θ;pv)≜12EpvEpd[(vTsm(x;θ)−vTsd(x))2]
其中 v 是 random direction, v∼pv, x∼pd are independent, 同時要求
Epv[vvT]≻0,Epv[‖v‖22]<∞
如同 ESM 推導成等價的 ISM (式 (1) 到 (2) 去掉 sd), (3) 也可以將 sd 去掉:
J(θ;pv)≜EpvEpd[vT∇xsm(x;θ)v+12(vTsm(x;θ))2]
基本上對每個 sample 出來的 xi, 我們都可以 sample 出 M 個投影向量, 所以 empirical expecation 寫法如下:
ˆJ(θ)≜1N1MN∑i=1M∑j=1vTij∇xsm(xi;θ)vij+12(vTijsm(xi;θ))2
同時如果 pv 是 multivariate standard normal or Rademacher distribution, 則可以簡化為:
ˆJvr(θ)≜1N1MN∑i=1M∑j=1vTij∇xsm(xi;θ)vij+12‖sm(xi;θ)‖22
稱為 Sliced Score Matching with Variance Reduction (SSM-VR)
文章說 SSM-VR 比 SSM 表現更好, 同時投影向量的數量, M, 選擇 1 個就很好了
看到這可能還是有疑問, 看起來還是得算 Hessian matrix, ∇xsm(x;θ), 阿? 不是說要可以加速有效率?
其實是這樣的, 先算 vTsm(x;θ) 對 x 的微分, 由於是 scalar 的 backprob 就快很多, 因此得到 vT∇xsm(x;θ), 然後再跟 v 內積就結束了
因此算法如下
Codes 可以參考 https://github.com/Ending2015a/toy_gradlogp/blob/master/toy_gradlogp/energy.py#L152
實驗
SM loss 指的是式 (1) 的 loss, SM 算法則是式 (2) Implicit Score Matching (ISM)
DSM 指的是 Denosing Score Matching. 先忽略 CP 和 Approx BP (因為我沒看 XD)
從 Figure 1 可以看出 SSM(-VR) 的 performance 可以達到跟 SM 接近, 也比 DSM 好上一截.
而 Figure 2 可以看出 SSM(-VR) 的 scalibility (DSM 也很有效率), 這是原來的 SM 達不到的 (因為要算 Hessian)
Table 1 也可以看出 DSM 對於 noise 的強度 (σ) 較敏感.
總之, SSM(-VR) 可以跟 DSM 一樣 scalable 和 efficient, 且 performance 比 DSM 好又接近原來的 SM.
另外提一下這篇的作者, Yang Song, 對於 score matching 以及後來的 diffusion probabilistic model 都有很重要的著作和進展, 值得讀他的論文 👏