隱變量的內插
還記得經典的 word embedding 特性嗎? 在當時 Mikolov 這篇經典的 word2vec 論文可讓人震驚了
eking+(eman−ewoman)≈equeen
enew=te1+(1−t)e2
不管是 VAE, GAN, flow-based, diffusion-based or flow matching models 都是利用 NN 學習如何從一個”簡單容易採樣”的分布, e.g. standard normal distribution N(0,I), 到資料分布 pdata 的一個過程.
x=Decoderθ(z),z∼N(0,I)
Lil’Log “What are Diffusion Models?” Fig. 1. 的 variable z 實務上大多使用 N(0,I) 的設定
(借用 Jia-Bin Huang 影片的圖 How I Understand Diffusion Models 來舉例)
因此如果我們想產生狗和牛的混合體, 是不是可以這樣作?
Decoderθ(tzdog+(1−t)zcow),t∈[0,1]
Decoderθ(cos(tπ/2)zdog+sin(tπ/2)zcow),t∈[0,1]
或簡單說球面內插:
為什麼使用線性內插不好, 而需使用球面內插呢?
聰明的讀者或許會猜因為 z 是 normal distribution 或許是因為空間不是那麼線性的關係?
但就算使用線性內插好了, 也應該是符合 normal distribution 會產生的 sample 點阿?
所以究竟為何線性內插效果不好?
要回答這問題就牽涉到高維度下的常態分佈長相, 可能會跟你想的不一樣, 挺反直覺的!
高維度下的常態分佈
先問一個問題, 我們對一個常態分佈 N(0,σ2I) 採樣, 採樣出來的點大概會落在什麼位置?
我想大部分的回答都是集中在 mean 附近吧.
對, 在低維度下是對的. 但如果維度 D 很大, 其實幾乎只會落在 √Dσ 的距離的球面上
[3] 提到, 對常態分佈, 我們將 Cartesian coordinate 換成角度和距離的座標, 並把角度全部積分只留下距離後得到”距離 r 的 pdf”:
p(r)=SDrD−1(2πσ2)D/2exp(−r22σ2)
重新整理一下把跟 r 無關的常數項合併為另一個常數 c
p(r)=crD−1exp(−r22σ2)
ddrp=ddrcrD−1exp(−r22σ2)=0⟹r2=σ2(D−1)=σ2D,D→∞⟹r=√Dσ,D→∞
也就是說在 ˆr=√Dσ 的距離下 density p(ˆr) 是最大的
[3] 繼續分析到在 ˆr 附近擾動一下 (ε≪ˆr) 的 density 變化為:
p(ˆr+ε)=p(ˆr)exp(−3ε22σ2)
因此我們考慮累積分佈函數 (cdf) 會發現在 ˆr 的值會突然從 0 飆到 1.
高斯分布的 pdf 幾乎存在 ˆr=√Dσ 這個半徑的圓表面上!
💡 數學分析是一回事, 如果想更值觀的理解為何如此, 不妨這麼想. 這些 D 個維度只要有任一維度採樣不在 mean 附近, 整個 z 就不會在 mean 了. 所以當維度一高, 似乎不在 mean 也很合理.
回答為何要球面內插
在來回頭看狗和牛的線性內插
Decoderθ(tzdog+(1−t)zcow),t∈[0,1]
做了線性內插出來的值, 其實根本不符合從 N(0,σ2I) 採樣出來的點.
所以使用球面內插就清楚了然了
Decoderθ(cos(tπ/2)zdog+sin(tπ/2)zcow),t∈[0,1]
後記
在看蘇神的 生成扩散模型漫谈(四):DDIM = 高观点DDPM 時看到使用球面內插. 突然間跟學生時代看的 PRML book 裡提到高微度常態分佈的長相 [3] 連結起來, 這種跨越好幾年把兩個東西連結在一起的感覺真有意思!
總之看到高維度的常態分佈, 腦袋要想的就是這個分布長的就像是只有蛋殼的蛋.
Reference
- 生成扩散模型漫谈(四):DDIM = 高观点DDPM, 或 DDIM 論文 Appendix D.5 裡面都有提及使用球面內插
scipy.spatial.geometric_slerp
, wiki slerp- Bishop PRML book Chapter 1 的 excercise 1.20
- 一些圖的.pptx