繼續總結花書第20章,這一章花了很大的篇幅介紹玻爾茲曼機及其變種,但實際應用中主要用到的三種方法還是1.自回歸網路Auto-Regressive Networks,又叫做Fully-visible Bayes networks(FVBN)。2.變分自解碼器Variational Autoencoder (VAE)。3.生成對抗網路Generative Adversarial Networks(GAN)。所以這篇會簡要的總結一下玻爾茲曼機以及生成隨機網路,然後著重總結一下自回歸網路。

在第一篇生成模型綜述——深度學習第二十章(一)我們總結了生成模型的譜系,今天總結的幾個模型如下圖紅框所示

玻爾茲曼機

先來總結一下玻爾茲曼機(Boltzmann machine)。玻爾茲曼機是一種基於能量函數的概率模型,其聯合分布概率可表示為 p(vec{v},vec{h})=frac{exp(-E(vec{v},vec{h}))}{Z} ,其中 vec{v} 代表了輸入的觀察到的變數, vec{h} 代表了隱藏變數,Z是配分函數, E(vec{v},vec{h})=-vec{v}^TRvec{v}-vec{v}^TWvec{h}-vec{h}^TSvec{h}-vec{b}^Tvec{v}-vec{c}^Tvec{h} 。而受限玻爾茲曼機(Restricted Boltzmann machine)對這一能量函數進一步簡化,假定了網路中僅有隱藏變數與觀察變數的連接,而觀察變數間沒有連接,隱藏變數間也沒有連接,且隱藏變數可用 n_h 個二進位隨機變數表示,如下圖的無向圖所示

能量函數變為 E(vec{x},vec{h})=-vec{x}^TWvec{h}-vec{b}^Tvec{x}-vec{c}^Tvec{h} 。從聯合分布我們可以推導出條件概率分布 p(vec{h}|vec{v}) = frac{p(vec{h},vec{v})}{p(vec{v})} = prod_{i=1}^{n_h}sigma((2vec{h}-1)odot(vec{c}+W^Tvec{v}))_j

同樣的, p(vec{v}|vec{h}) = prod_{i=1}^{n_v}sigma((2vec{v}-1)odot(vec{b}+W^Tvec{h}))_i

其訓練過程可利用Gibbs sampling(蒙特卡羅方法——深度學習第十七章),我們可以同時sample所有的vec{h},然後再同時sample所有的vec{v}依次交替進行。

以RBM為基礎,我們添加若干層隱藏變數且只有相鄰層間有連接,就可以構成深度玻爾茲曼機,如下圖所示

生成隨機網路

再來看看另一種利用馬爾科夫鏈採樣的生成模型,生成對抗網路GSN,與玻爾茲曼機相比,它不是顯性的定義觀察量與隱藏量的聯合分布,而是在馬爾科夫鏈中利用了兩個條件概率分布:

  1. p(vec{x}^{(k)}|vec{h}^{(k)}) 指導如何根據現在的隱藏變數產生下一個觀察量。
  2. p(vec{h}^{(k)}|vec{h}^{(k-1)},vec{x}^{(k-1)}) 根據前一個狀態的隱藏變數和觀察量更新隱藏變數。

聯合概率分布只是隱性定義的,是馬爾科夫鏈的穩態分布。

自回歸網路

自回歸網路Auto-Regressive Networks,又叫做Fully-visible Bayes networks(FVBN),是一種有向概率圖,其中條件概率用神經網路來表示,利用概率的鏈式法則,它將關於觀察量的聯合概率分布,分為一系列條件概率 p(x_i|x_{i-1},...,x_1) 的乘積形式 p(x)=prod_{i=1}^{n_i}p(x_i|x_{i-1},...,x_1) ,利用之前的變數來預測下一個變數。

簡單的線性自回歸網路結構沒有隱藏變數,也不共享特徵或參數,如下圖所示

上圖是FVBN的有向圖表示,下圖是相應的計算圖

如果我們想增大模型的容量,使其可以近似任意聯合概率分布,則可以加入隱藏變數,另外還可以通過特徵或參數共享使得泛化效果更好,其計算圖如下所示

其優點有在可以表述隨機變數的高階依賴關係的同時減少了模型所需要的參數,例如假設變數可取離散的k種不同的值,則每個 p(x_i|x_{i-1},...,x_1) 可用有 (i-1)	imes k 個輸入及 k 個輸出的神經網路表示,而不需要指數級別的參數。另一個優點是我們不需要對於每一個 x_i 都採用一個不同的神經網路,而是將它們合併為一個神經網路,即用來預測 x_i 的隱藏特徵可以被重複利用來對 x_{i+k} (k>0) 進行預測,這些隱藏單位的參數因此可以通過聯合優化使得序列中所有變數的預測都得到改善。

在生成圖像時,FVBN類模型通常能夠得到更高質量的圖片,由於其直接模擬概率分布,更容易評估訓練效果,其訓練過程也較GAN穩定,但是由於其訓練過程的序列性,訓練過程較為緩慢。

FVBN有兩類模型PixelRNN和PixelCNN在圖像合成方面應用廣泛,尤其是由殘缺圖像補全完整圖像的應用。

其基本思想是從某個角落裡開始,依據之前的像素信息利用RNN或CNN來預測下一個位置的像素值。

對於PixelRNN其過程如下圖所示,其中與之前變數的依賴關係用RNN如LSTM結構來模擬:

對於補全殘缺圖像的任務,其效果如下圖所示

而PixelCNN則利用了Mask CNN結構來模擬依賴於之前變數的條件概率分布,如下圖所示

另外在語音合成領域,FVBN也有較好的效果,例如DeepMind的WaveNet模型就是基於FVBN的原理。

總結

這一篇總結了三種方法,兩種是直接模擬密度概率分布的,即玻爾茲曼機與自回歸網路,另一種是隱性密度模型生成隨機網路,其中自回歸網路生成效果好但訓練速度較慢。下一篇會總結另一個重要的模型變分自編碼器,to be continued。

註:截圖來自Ian Goodfellow等合著的Deep Learning一書以及斯坦福Syllabus | CS 231N中與Generative Model相關的講義,推薦閱讀原書和原課程。


推薦閱讀:
相关文章