名稱
VQ-VAE: Neural Discrete Representation Learning
時間:17.11
機構:Google
TL;DR
VQ全稱為Vector Quantised,故名思義,本文相對於VAE最大改進是將VAE的latent representation由連續建模為離散。後續stable diffsusion也使用VQ-VAE進行編解碼。
Method
如何離散化?
使用K-means線上聚類embedding space,如架構圖fig1所示,encoder線上提取好連續latent feature之後,使用最近鄰類別中心作為其離散值,並透過EMA線上更新聚類中心embedding space,所以AE的訓練與embedding space的更新是交替進行的,本質上一個線上KMeans演算法詳細參考Appendix。
梯度反傳如何處理?
由上圖紅色箭頭所示,梯度反傳時直接將decoder的梯度複製給encoder,並沒有參考類似於QAT那種梯度反傳(實際上也無法直接參考,因為是聚類中心的離散化,而非數值的離散化),作者表示這麼簡單粗暴的處理實驗證明效果也不錯。
Loss如何設計?
如下公式所示,第一項為重建loss可最佳化encoder與decoder,第二項不產生梯度,第三項用來最佳化encoder產生靠近聚類中心的特徵。
Experiment
效果與連續版本的VAE相當,但是可以將影像壓縮到更小的space空間,比如 128 × 128 × 3 image space -> 32 × 32 × 1 ,方便一些agressive regression任務直接在discrete latent space上進行,從而節省計算量。
總結與發散
論文名稱的VQ全稱為Vector Quantised,但個人認為,這裡Quantised翻譯為“量化”不如翻譯成“聚類”更容易理解,只不過每個聚類中心是一個latent space的feature map。
Q:與SD有什麼關係?
看到實驗部分,就比較容易聯想到為什麼LDM可以用VQ-VAE了,因為這裡已經開始在latent space做PixelCNN了。
相關連結
https://www.cnblogs.com/fariver/p/18063010
VQ-VAE: Neural Discrete Representation Learning
https://spaces.ac.cn/archives/6760