EAE:自编码器 + BN + 最大熵 = 生成模型
?PaperWeekly 原創(chuàng) ·?作者|蘇劍林
單位|追一科技
研究方向|NLP、神經(jīng)網(wǎng)絡(luò)
生成模型一直是筆者比較關(guān)注的主題,不管是 NLP 和 CV 的生成模型都是如此。
這篇文章里,我們介紹一個新穎的生成模型,來自論文 Batch norm with entropic regularization turns deterministic autoencoders into generative models [1],論文中稱之為?EAE(Entropic AutoEncoder)。
它要做的事情給變分自編碼器(VAE)基本一致,最終效果其實也差不多(略優(yōu)),說它新穎并不是它生成效果有多好,而是思路上的新奇,頗有別致感。
此外,借著這個機(jī)會,我們還將學(xué)習(xí)一種統(tǒng)計量的估計方法—— k 鄰近方法,這是一種很有用的非參數(shù)估計方法。
自編碼器vs生成模型
普通的自編碼器是一個“編碼-解碼”的重構(gòu)過程,如下圖所示:
▲ 典型自編碼器示意圖
其 loss 一般為:
當(dāng)訓(xùn)練完成后,我們自然可以針對每一幅圖像 x,得到它的編碼 ?z=E(x) 以及重構(gòu)圖 ,而當(dāng) x 與 足夠接近時,我們就可以認(rèn)為 z 是 x 的有效表征,它已經(jīng)充分包含了 x 的信息。
那么,生成模型又是什么情況呢?“生成”指的是隨機(jī)生成,也就是說允許我們能隨機(jī)構(gòu)建一幅圖像來,對于自編碼器的解碼器 D(z),并不是每一個 z 解碼出來的? D(z) 都是一幅有意義的圖像,因此普通的自編碼器并不能視為生成模型。
如果我們能夠事先知道所有的x編碼出來的 z=E(x) 所構(gòu)成的分布,并且這個分布是一個易于采樣分布,那么就可以實現(xiàn)隨機(jī)采樣生成了。
所以,從自編碼器到生成模型,缺的那一步就是確定隱變量 z 的分布,更準(zhǔn)確來說,是迫使隱變量 z 服從一個易于采樣的簡單分布,比如標(biāo)準(zhǔn)正態(tài)分布。VAE 通過引入 KL 散度項來達(dá)到這一點,那么 EAE 又是怎么實現(xiàn)的呢?
正態(tài)分布與最大熵
我們知道,最大熵原理是一個相當(dāng)普適的原理,它代表著我們對未知事件的最客觀認(rèn)知。最大熵原理的一個結(jié)論是:
在所有均值為 0、方差為 1 的分布中,標(biāo)準(zhǔn)正態(tài)分布的熵最大。
如果讀者還不了解最大熵的相關(guān)內(nèi)容,可以參考舊作《“熵”不起:從熵、最大熵原理到最大熵模型(二)》[2]。
上述結(jié)論告訴我們,如果我們能有某種手段保證隱變量的均值為 0 和方差為 1,那么我們只需要同時最大化隱變量的熵,就可以得到“隱變量服從標(biāo)準(zhǔn)正態(tài)分布”這個目的了,即:
其中 是超參數(shù),而:
是隱變量 z=E(x) 對應(yīng)的熵,最小化 意味著最大化 ,即最大熵。
問題是如何保證這兩個約束呢?如果計算隱變量的熵呢?
均值方差約束與BN
先來解決第一個問題:如何達(dá)到——至少近似地達(dá)到——“隱變量的均值為 0、方差為 1 ”這個約束?因為只有滿足這個約束的前提下,最大熵的分布才是標(biāo)準(zhǔn)正態(tài)的。解決這個問題的辦法是我們熟悉的批歸一化,也就是 BN(Batch Normalization)。
在 BN 的訓(xùn)練階段,我們會直接對每個變量減去其 batch 內(nèi)的均值并且除以 batch 內(nèi)標(biāo)準(zhǔn)差,這保證了訓(xùn)練階段每個 batch 的變量均值確實為 0,方差確實為 1。
然后,它會將每個 batch 內(nèi)的均值方差滑動平均并緩存下來,用于推斷階段的預(yù)測。
總而言之,就是將 BN 應(yīng)用于隱變量,就可以使得隱變量(近似地)滿足相應(yīng)的均值方差約束。
此時,我們就得到:
這里的 代表 BN 層。
熵的采樣估計
現(xiàn)在,來到了整個 EAE 模型的最后一部分、同時也是最硬核的一部分了,也就是如何估計熵 H(Z)。理論上來說,為了算 H(Z) 我們需要知道 p(z),但我們現(xiàn)在只有樣本 而不知道 p(z) 的表達(dá)式,在這種前提下對 H(Z) 做的估計叫做非參數(shù)估計。
先給結(jié)論:
熵的最臨近估計 設(shè) 是從 采樣出來的 n 個樣本,記 為 到它最鄰近的樣本的距離,即 , 是 d 維單位球的體積, 是歐拉常數(shù) [3],則:
拋開跟優(yōu)化不相關(guān)的常數(shù),上述結(jié)論實際上就是說 ,這就是我們需要添加到 loss 的項。
這個看上去很奇怪、實際上確實也不容易理解的結(jié)果是怎么得來的呢?事實上,它是一種重要的估計方法—— k 鄰近方法——的經(jīng)典例子。下面將會給出它的推導(dǎo)過程,該過程參考自論文《A non-parametric k-nearest neighbour entropy estimator》[4]。
讓我們考慮特定的樣本 ,設(shè) 是它的第 k 個最鄰近的樣本,即將所有的 按照 從小到大排列,第 k 個就是 ,記 ,我們現(xiàn)在考慮 的概率分布。
假設(shè) ,那么就意味著剩下的 n-1 個樣本之中,有 k-1 個落在了“以 為球心、以 為半徑”的球內(nèi),有 n-k-1 個落在了“以 為球心、以 為半徑”的球外,剩下一個夾在兩球之間,不難得到這種情況發(fā)生的概率是:
其中 代表著從 n-1 個樣本中挑出 1 個樣本夾在兩球之間的組合數(shù),而 則是從剩下的 n-2 個樣本中挑出 k-1 個樣本放到球內(nèi)的組合數(shù)(剩下的 n-k-1 個自動就在球外了); 是單個樣本位于球內(nèi)的概率,即:
所以 是挑出來的 k-1 個樣本都在球內(nèi)的概率, 是 n-k-1 個樣本都在球外的概率, 則是一個樣本在球間的概率,所有項乘起來就是式(6),而展開并只保留一階項得到近似式:
注意上式描述了一個合理的概率分布,因此它的積分必然為 1。
現(xiàn)在我們可以做個近似假設(shè),值得注意的是,這是整個推導(dǎo)過程的唯一假設(shè),而最終結(jié)果的可靠程度也取決于這個假設(shè)的成立程度:
其中 就是半徑為 的球的體積,上述假設(shè)就是說 p(z) 在半徑為 的球內(nèi)的均值約等于它在球中心的值,并且積分的有效半徑只有 。根據(jù)這個近似我們有 ,或者:
用(8)乘以上式兩端,并對 積分(積分區(qū)間為 ,或者等價于對 在? [0,1] 積分)。除 外,其余幾項都是跟 無關(guān),所以積分后依然等于自身,而:
其中 代表著雙伽馬函數(shù)(別問我這些積分是怎么算出來的,我也不知道,但我知道用 Mathematica 軟件能把它都算出來)。
于是我們得到近似:
所以最終熵的近似為:
這是比式(5)更一般的結(jié)果。事實上式(5)是上式 k=1 時的結(jié)果,因為 ,而 ,這些變換公式都可以在維基百科上找到。
開頭就已經(jīng)提到過,k 鄰近方法是一種很有用的非參數(shù)估計方法,它還跟筆者之前介紹過的 IMLE 模型 [5] 有關(guān)。但筆者本身也不熟悉 k 鄰近方法,還需要多多學(xué)習(xí),目前找到的資料是《Lectures on the Nearest Neighbor Method》[6] 。
此外,關(guān)于熵的估計,還可以參考斯坦福的資料《Theory and Practice of Differential Entropy Estimation》[7] 。
進(jìn)一步思考與分析
有了(5)或(13),式(4)所描述的EAE的loss就完成了,所以 EAE 模型也就介紹完畢了。剩下的是實驗結(jié)果,就不詳細(xì)介紹了,反正就是感覺生成的圖像跟 VAE 差不多,但指標(biāo)上更優(yōu)一些。
▲ 來自EAE論文的實驗對比
▲ 來自EAE論文的效果圖示
那 EAE 相比 VAE 的好處在哪呢?在 VAE 中,比較關(guān)鍵的一步是重參數(shù)(可以參考筆者的變分自編碼器(一):原來是這么一回事),就是這一步降低了模型訓(xùn)練的方差(相比 REINFORCE 方法,可以參考筆者的《漫談重參數(shù):從正態(tài)分布到Gumbel Softmax》[8]),從而使得 VAE 可以有效地訓(xùn)練下去。
然而,雖然重參數(shù)降低了方差,但事實上方差依然不小,簡單來說就是重參數(shù)這一步帶來較大的噪聲(尤其是訓(xùn)練早期),導(dǎo)致 decoder 無法很好地利用 encoder 的信息,典型的例子就是將 VAE 用在 NLP 時的“ KL 散度消失”現(xiàn)象。
但是 EAE 基本上不存在這個問題,因為 EAE 基本上就是普通的自編碼器,多加的 BN 不會對自編碼性能有什么影響,而多加的熵正則項原則上也只是增加隱變量的多樣性,不會給編碼信息的利用與重構(gòu)帶來明顯困難。
筆者認(rèn)為,這就是 EAE 相對于 VAE 的優(yōu)勢所在。當(dāng)然,筆者目前還沒有對 EAE 進(jìn)行太多實驗,上述分析多為主觀推斷,請讀者自行甄別。如果筆者有進(jìn)一步的實驗結(jié)論,到時會繼續(xù)在博客與大家分享。
最后補(bǔ)上一個小結(jié)
本文介紹了一個稱之為 EAE 的模型,主要是把 BN 層和最大熵塞進(jìn)了普通的自編碼器中,使得它具有生成模型的能力。原論文做的不少實驗顯示 EAE 比 VAE 效果更好,所以應(yīng)該是一個值得學(xué)習(xí)和試用的模型。
此外,EAE 的關(guān)鍵部分是通過 k 鄰近方法來估計熵,這部分比較硬核,但事實上也很有價值,值得對統(tǒng)計估計感興趣的讀者細(xì)細(xì)閱讀。
參考鏈接
[1] https://arxiv.org/abs/2002.10631
[2] https://kexue.fm/archives/3552
[3]?https://en.wikipedia.org/wiki/Euler%E2%80%93Mascheroni_constant
[4] https://arxiv.org/abs/1506.06501
[5] https://kexue.fm/archives/6394
[6]?https://link.springer.com/book/10.1007/978-3-319-25388-6
[7] https://web.stanford.edu/~yjhan/diff_entropy.pdf
[8]?https://kexue.fm/archives/6705
點擊以下標(biāo)題查看更多往期內(nèi)容:?
變分推斷(Variational Inference)最新進(jìn)展簡述
變分自編碼器VAE:原來是這么一回事
圖神經(jīng)網(wǎng)絡(luò)三劍客:GCN、GAT與GraphSAGE
如何快速理解馬爾科夫鏈蒙特卡洛法?
深度學(xué)習(xí)預(yù)訓(xùn)練模型可解釋性概覽
ICLR 2020:從去噪自編碼器到生成模型
#投 稿?通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優(yōu)質(zhì)內(nèi)容以更短路徑到達(dá)讀者群體,縮短讀者尋找優(yōu)質(zhì)內(nèi)容的成本呢?答案就是:你不認(rèn)識的人。
總有一些你不認(rèn)識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學(xué)者和學(xué)術(shù)靈感相互碰撞,迸發(fā)出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優(yōu)質(zhì)內(nèi)容,可以是最新論文解讀,也可以是學(xué)習(xí)心得或技術(shù)干貨。我們的目的只有一個,讓知識真正流動起來。
?????來稿標(biāo)準(zhǔn):
? 稿件確系個人原創(chuàng)作品,來稿需注明作者個人信息(姓名+學(xué)校/工作單位+學(xué)歷/職位+研究方向)?
? 如果文章并非首發(fā),請在投稿時提醒并附上所有已發(fā)布鏈接?
? PaperWeekly 默認(rèn)每篇文章都是首發(fā),均會添加“原創(chuàng)”標(biāo)志
?????投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發(fā)送?
? 請留下即時聯(lián)系方式(微信或手機(jī)),以便我們在編輯發(fā)布時和作者溝通
????
現(xiàn)在,在「知乎」也能找到我們了
進(jìn)入知乎首頁搜索「PaperWeekly」
點擊「關(guān)注」訂閱我們的專欄吧
關(guān)于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學(xué)術(shù)平臺。如果你研究或從事 AI 領(lǐng)域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結(jié)
以上是生活随笔為你收集整理的EAE:自编码器 + BN + 最大熵 = 生成模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 科技昨夜今晨 1007:小米 15 等新
- 下一篇: 怎么贷款10万