明敏 發自 凹非寺
量子位 | 公眾號 QbitAI
由於在影象生成效果上可以與GAN媲美,擴散模型最近成為了AI界關注的焦點。
谷歌、OpenAI過去一年都提出了自家的擴散模型,效果也都非常驚豔。
另一邊,劍橋大學的學者David Krueger提出,自動編碼器會不會捲土重來成為研究熱潮。
就在最近,DeepMind的一位研究科學家Sander Dieleman基於以上兩股熱潮,提出了自己的觀點:
擴散模型就是自動編碼器啊!
這一觀點立刻引起了不少網友的注意,大家看了Sander的闡述,都覺得說得很有道理,並且給了自己不少啟發。
那麼,他到底是如何論證自己這一觀點的呢?
我們一起來看。
去噪自動編碼器=擴散模型
想要看透這二者之間的聯絡,首先要看看它們自身的特點。
擴散模型是一種新的影象生成方法,其名字中的“擴散”本質上是一個迭代過程。
它最早於2015提出,是定義了一個馬爾可夫鏈,用於在擴散步驟中緩慢地向資料新增隨機噪聲,然後透過學習逆轉擴散過程從噪聲中構建所需的資料樣本。
相比GAN、VAE和基於流的生成模型,擴散模型在效能上有不錯的權衡,最近已被證明在影象生成方面有很大的潛力,尤其是與引導結合來兼得保真度和多樣性。
比如去年穀歌提出的級聯(Cacade)擴散模型SR3,就是以低解析度影象為輸入,從純噪聲中構建出對應的高解析度影象。
OpenAI的GLIDE、ADM-G也是用上了擴散模型,以此能生成更加更真實、多樣、複雜的影象。
△GLIDE模型效果
接下來,再來看自動編碼器的原理。
自動編碼器可以理解為一個試圖去還原原始輸入的系統,模型如下所示:
它的主要目的是將輸入轉換為中間變數,然後再將中間變數轉化為輸出,最後對比輸入和輸出,使它們二者之間無限接近。
當模型框架中存在瓶頸層或者輸入被損壞時,自動編碼器能夠學習輸入本質特徵的特性,就可以大顯身手了。
在這裡,作者主要拿來和擴散模型對比的,便是去噪自動編碼器。
它可以將損壞資料作為輸入,透過訓練來預測未損壞的原始資料作為輸出。
看到這裡是不是有點眼熟了?
向輸入中加入噪聲,不就是一種破壞輸入的方法嗎?
那麼,去噪自動編碼器和擴散模型,原理上不就是有著異曲同工之妙嗎?
二者是如何等價的?
為了驗證自己的這一想法,作者從原理方面對擴散模型進行了拆解。
擴散模型的關鍵,在於一個分數函式 (score function)
。
需要注意的是,這和
不同。(求梯度的引數不同)
通過後者,我們可以知道如何改變模型引數來增加向下輸入的可能性,而前者能夠讓我們知道如何改變輸入本身來增加可能性。
在訓練過程中,希望在去噪中的每一點都使用相同的網路。
為了實現這個,需要引入一個額外的輸入
,由此可以看到在去噪中進行到了哪一部分
。
當t=0時,對應無噪聲資料;t=1時,對應純噪聲資料。
訓練這個網路的方法,就是用新增噪聲
來破壞輸入x。然後從
中預測
。
需要注意的是,在這裡方差大小取決於t,因為它可以對應特定點的噪聲水平。損失函式通常使用均方誤差(MSE),有時會用 λ(t)進行加權,因此某些噪聲水平會優先於其他噪聲水平:
假設λ(t)=1時,一個關鍵的觀測值為
或 x(它們二者是等價的),在這裡可以用公式:
為了確保它們是等價的,可以考慮使用訓練模型
來預測
,並加上一個新的殘差連線。從輸入到輸出的比例係數均為-1,這個調整後的模型則實現了:
由此,一個擴散模型便逐漸變成一個去噪自動編碼器了!
One More Thing
不過部落格的作者也強調,雖然擴散模型和去噪自動編碼器的效果等價,但是二者之間不可完全互換。
並且以上得到的這個去噪自動編碼器,和傳統型別也有不同:
- 第一,附加輸入t可以使單個模型用一組共用引數來處理噪聲級別不同的情況;
- 第二,因為更加關注模型的輸出,所以內部沒有瓶頸層,這可能會導致“弊大於利”的結果。
而作者更想強調的是這二者之間存在的聯絡。
此外他還表示,模型效果好的關鍵應該在於共用引數,這種方法已經被廣泛應用在表示學習上。
從這些成果中也能發現一個規律:
- 噪聲含量越高的模型,往往更容易學習到影象的特徵;
- 噪聲含量越低的模型,則會更專注於細節。
作者認為以上規律值得進一步研究:
這意味著隨著噪聲水平逐步降低,擴散模型能夠補充影象細節也就越來越多。
最後,我們再來介紹一下這一發現的提出者——Sander Dieleman。
他現在是DeepMind的一位研究科學家,主要研究領域為生成模型和音樂合成。
參與的主要研究工作有Spotify音樂平臺的內容推薦模型。
參考連結:
[1]https://benanne.github.io/2022/01/31/diffusion.html
[2]https://twitter.com/sedielem
— 完 —
量子位 QbitAI · 頭條號簽約
關注我們,第一時間獲知前沿科技動態