Pixel Recurrent Neural Networks 和 autoregressive models 自迴歸模型

Pixel Recurrent Neural Networks

pixel rnn 是 生成模型的一種,基於autoregressive models。他的思想很簡單,就是最大似然估計的方式去擬合圖像數據。將二維的圖像數據比作序列數據,以條件概率的方式,逐點預測和計算。並且每個像素點的預測都在[0-255]之間,(單通道情況下)如下圖1所示:

圖1,autoregressive models 在二維圖片上的預測方式。

其公式也很簡單,就是將聯合概率拆成了條件概率累乘的形式,從而使得每一個像素點都可以計算。公式1,如下所示:

那麼對應到圖1,就可以知道,當預測第i個點的時候,我們就要考慮從第1個,到第i-1個所有點的情況,根據這些條件,計算第xi的像素值。

那麼實際上,這篇論文提出了三個變體,如下圖2所示:

圖2 ,三個版本的autoregressive models

分別爲基於CNN、Row LSTM和BILSTM,Row LSTM和BILSTM 現在這兩個版本不是非常常用,雖然這兩個版本利用RNN的計算形式,對輸入也沒有限制,而且能夠捕捉圖像空間的長依賴關係,但是這兩個版本不利於並行,而且這三個版本最開始出來的時候,差距也差不多,PixelCNN 也沒有差太多。所以後面大家都用這個版本,並且其變體也已經超越了上述的版本。

本着功利的角度,只介紹pixel CNN,因爲其他兩個訓練效率不行,而且效果也都差不多,有興趣的同學可以自行了解。

實際上,要實現圖1的效果,做法就是,將特徵圖進行padding ,然後再用卷積核在特徵圖上卷積,但是同時屏蔽卷積核後面的幾個參數,就可以實現上述過程。如圖3,所示,舉一個粗暴的例子:

圖3,假設紅色的部分爲卷積核,==》4*7大小,然後綠色的部分爲被設爲0 的卷積核權重,整張圖爲一張特徵圖。

通過這樣,我們就能實現,“只看見前面,來預測後面的值”。並且,保證每一次卷積核後,特徵圖大小不變,那麼,層層計算就都是這種形式。那有人會問,上面這張圖後面上特徵圖咋整? 那就給特徵圖右邊 padding 3列,這樣,卷積核就能移到外面,並且能夠計算上數下,第4行,第7個的特徵值了。

基於pixel rnn 的變體還有很多 pixel rnn, pixel cnn, pixel cnn++, PixelsNail,還有Conditional 的版本。但是最核心的就是這個卷積方式,以及最後的基於像素的多分類交叉熵。目標函數可以改,其目的就是達到極大似然估計的目的。

pixel rnn, pixel cnn, pixel cnn++, PixelsNail,還有Conditional  可以再自行了解一下,每一個都有自己的改進。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章