手把手帶你快速弄懂擴散模型背后的數學詮釋生成,簡單易理

? ? ? ?人工智能領域中一個比較有趣的方向是生成式模型,最初的代表是 GAN 系列算法,通過生成器和判別器的博弈,訓練得到生成模型,但此類算法需要同時訓練兩個網絡,訓練的難度大、收斂困難且不穩(wěn)定,模型只關注如何騙過判別器,導致生成的效果多樣性較差。擴散模型(Diffusion Model)的學習和生成過程更加簡單,通過結合前向擴散過程和逆向生成過程,打開了生成式模型訓練的新方向。DALL.E 2、stable-diffusion、Imagen 等主流的文本轉圖像模型,都采用了擴散模型作為圖像生成模型。。

? ? ? 前向擴散過程:向原始輸入中不斷的添加高斯噪音,直到變成隨機噪音,每一個時刻都會添加噪音,后一時刻是在前一時刻的基礎上增加噪音得到,這個過程的本質是不斷構建噪音標簽。

? ? ? ?前向擴散過程的公式推導相對簡單,其中β是自定義的參數,隨著時間推移β值要越來越大,論文中從 0.0001 到 0.002。Z 是噪音,這也就意味著時刻越大,噪音所占的比重越來越大。我們希望能夠通過原始輸入數據 X0 直接推導 T 時刻的加噪數據 Xt,每次增加的噪音都符合高斯分布,因此合并后仍服從,最終的推導公式可以歸納出:任何時刻的結果都可以通過累乘和初始時刻 X0 的狀態(tài)計算出來。

? ? ? 逆向去噪過程的公式推導相對復雜,我們希望已知XT時刻的結果,反推出初始時刻的狀態(tài)X0,根據貝葉斯公式及前向傳播的推導,通過合并、配方的化簡操作,可以得到初始狀態(tài)X0的高斯分布的均值和方差,其中方差是與α和β相關的固定值,而均值則與Xt和Zt相關,Zt是需要估計的每個時刻的噪音。

? ? ?前向過程的訓練階段流程圖如下:生成一個batch的訓練數據,為每個樣本選擇不同的符合均勻分布的加噪周期,隨機生成符合高斯分布的噪音標簽,選擇unet模型,輸入Xt時刻狀態(tài)和加噪周期t,得到模型預測的噪音,與標簽做損失后反傳更新模型參數,最終得到模型能夠很好的擬合每個時刻的噪音。

? ? ?反向過程的采樣階段流程圖如下:隨機生成符合高斯分布的Xt時刻狀態(tài),循環(huán)加噪周期T,在每一個大于1的時刻,隨機生成符合高斯分布的噪音Z,根據前面推導的公式及前向過程訓練得到的噪音模型,反向計算每一個時刻的去噪結果,最終得到X0時刻的狀態(tài)。

? ? ?從上述的推導過程和流程圖中可以直觀的感受到擴散模型的大道至簡,雖然需要一堆復雜的數學公式來推導,但最終的結果應用及模型訓練遠比GAN系列算法更加簡單,同時效果具有更好的多樣性。不禁感嘆:一系列正確的數學推導,竟可以比近十年的大規(guī)模調試超參數的網絡結構更加有效,數學功底永遠是黑馬,但他的采樣過程比較繁瑣,計算和時間成本相對較高。

? ? ?目前擴散模型已經被應用在各個方向,很多小伙伴都體驗過文字生圖的魅力,其驚艷效果已經讓繪圖設計工作者產生焦慮。在這個人工智能大模型層出不窮的時代,真的需要不斷地輸入、緊跟前沿才能時刻發(fā)現機遇和挑戰(zhàn),人工智能替代部分從業(yè)者的吶喊聲來勢洶洶,唯有知己知彼方能做足多方向的準備,在挑戰(zhàn)中乘風破浪,在機遇中勇往直前!
?