目錄
一、基礎知識
1、數學期望
2、概率表示
3、KL散度
二、擴散過程
三、理想的去噪過程
四、真實的去噪過程
五、噪聲生成?
導言
? ? ? ?筆者早些時候曾粗略看過擴散模型的流程,但對于底層算法(尤其是概率論方面),理解不夠透徹,所以重新解釋底層算法。
一、基礎知識
1、數學期望
? ? ? ?在擴散模型中經常使用數學期望來計算擴散模型的損失函數,其中期望符號的寫法與概率論有所不同。
? ? ? ? 期望計算:對于變量x在概率密度函數為p(x)下的期望(亦說為變量x在p(x)分布下的期望)記作:。由于一般來說概率密度函數p(x)已知,所以也縮寫為
。而擴散模型中分布函數未知,所以記作前者。
2、概率表示
? ? ? ??表示:0時刻下的概率分布。
? ? ? ??表示:0到T時刻下,變量x的聯合概率分布,此時不一定等于
,因為不一定相互獨立。
? ? ? ??表示:考慮0時刻情況
成立下,1到T時刻下,變量x的聯合概率分布。
? ? ? ? 由于擴散模型遵循馬爾科夫鏈,所以一定有1時刻完全依賴于0時刻,2時刻完全依賴于1時刻,則可以理解為相互獨立。
? ? ? ? 此時遵循貝葉斯公式:。
? ? ? ? 對于T時刻與0時刻之間的關系:
3、KL散度
? ? ? ? KL散度定義:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? KL散度用來描述兩個分布之間的距離,KL散度為0則兩個分布相同,散度越大則越不相關。
? ? ? ? KL散度非負性證明?
? ? ? ? 從凸函數定義延伸出Jetson不等式:
凸函數定義:
Jensen不等式(琴生不等式):當是區間
的凸函數,則對于任意實數
,對所有非負實數?
?,且
,下式成立:
? ? ? ??
由KL散度定義:
? ? ? ??
其中:
? ? ? ??
由于為凹函數所以提取負號,進行變換:
? ? ? ??
因此KL散度恒為非負。
二、擴散過程
? ? ? ? 擴散模型就是逐次往圖片里加入高斯噪聲直到完全變為噪聲的過程,問題在于噪聲如何加,與上一幀的加權關系。
? ? ? ? 噪聲模型,本身是從一個正態分布中采樣而來,分布遵循N(0,I)。
? ? ? ? 擴散前提:保證擴散后圖像仍然是一個高斯噪聲圖像。
? ? ? ? 擴散迭代公式:,保證擴散過程是一個均值
,方差為
的正態分布,
是一個隨時間變化的值,滿足特定的差異時間表。
? ? ? ? 均值為什么要乘以?
? ? ? ? 由于時刻,保證
仍然是一個正態分布,但顯然現實場景T達不到無窮大,該想法只是一個理想條件。
? ? ? ? 擴散模型滿足馬爾科夫鏈:
? ? ? ? 對于擴散模型T時刻的通項公式:
? ? ? ? 通項公式計算如下:
? ? ? ? 令
三、理想的去噪過程
? ? ? ? 去噪過程的思想就是從隨機噪聲中還原一個圖像。
? ? ? ? 目的:求出迭代公式。
? ? ? ? 但由于我們無法通過原有的來反向推導該目標,所以我們嘗試用神經網絡(一般用u-net)擬合一個
,與目標近似。
? ? ? ? 迭代公式推導主體思想:化反向過程為前向過程!
? ? ? ? 首先對于公式進行轉化:
? ? ? ? 7.1步用貝葉斯公式替換,7.2步乘法公式展開,7.3步進行整理,7.4步帶入正態分布函數公式,由于差了一個,所以不完全等價,保證正比于。7.5步轉換為關于
的二次項函數,此時可以抽出方差和均值,這兩者均
有關。
? ? ? ??迭代公式:
? ? ? ? 最后證明為一個變量為t-1時刻的前向過程。
四、真實的去噪過程
? ? ? ? ?真實的去噪過程是預測噪聲分布,一般計算變分自編碼器的最大化證據下界,訓練方法就是最小化負對數似然。
? ? ? ? 上面結果中第一項約束最終第T步得到的加噪結果?接近于完全的高斯噪聲,最后一項約束模型生成的結果與真值接近,而中間的?t-1?項約束逆向過程的馬爾科夫鏈中,神經網絡估計出的每一個條件分布接近于對應的真實的數據分布。
? ? ? ? ?中間的第t項的KL散度可以進行化簡,最后將收斂于真實噪聲,如下。
? ? ? 代入推導出來的均值,此時正比于一個真實噪聲與預測噪聲的均方誤差,這個結構最后作為損失函數用于最小化。
五、噪聲生成?
? ? ? ? 噪聲生成模型一般用U-net或U-net結合transformer,輸入帶有噪聲的圖像和時間步t,輸出是預測出的,損失函數用真實噪聲與預測噪聲的均方誤差。
參考一年前我寫過的擴散模型:NLP(6)--Diffusion Model_diffusion model nlp-CSDN博客