【生成模型】Pixel Recurrent Neural Networks翻譯


Pixel Recurrent Neural Networks

目前主要在用的文檔存放: https://www.yuque.com/lart/papers/prnn

github存檔: https://github.com/lartpang/Machine-Deep-Learning

image.png

介紹

  • Google DeepMind
  • generative model

引言

生成圖像建模是無監督學習中的核心問題。 在無監督學習中,自然圖像的分布建模是一個具有里程碑意義的問題。此任務需要一個圖像模型,它同時具有表現力、可伸縮和可擴展性。

概率密度模型可用於各種各樣的任務,從圖像壓縮和重建外觀,例如圖像修復和去模糊,到新圖像的生成。當模型以外部信息為條件時,可能的應用還包括_基於文本描述創建圖像_或_在有計划的任務中模擬未來幀_。生成建模的一大優勢是可以從中學習無窮無盡的圖像數據。然而,因為圖像是高維和高度結構化的,所以估計自然圖像的分布是極具挑戰性的

對於生成模型一個最重要的阻礙是構建復雜而具有表現力的可跟蹤的和可擴展的模型。這種權衡導致了各種各樣的生成模型,每種模型都有其優勢。大多數工作關注隨機隱變量模型,例如VAE旨在提取有意義的表示,但往往會出現一個難以推斷的推理步驟,這會阻礙他們的表現。一種有效的方法是可跟蹤地模擬圖像中的像素的聯合分布,把它看作是條件分布的乘積。這個方法已經應用在了自回歸模型,例如NADE和fully visible neural networks。因式分解(factorization)將聯合建模問題轉化為序列問題,在這個問題中,給定所有先前生成的像素,學習預測下一個像素。但要對像素之間的高度非線性和長程相關性進行建模,並且復雜的條件分布導致必須建立高度表現力的序列模型。遞歸神經網絡(RNN)是一個強大的模型,提供了一系列條件分布的緊湊的又共享的參數化表示。RNNs已被證明擅長硬序列問題(hard sequence problems),從手寫生成,字符預測和機器翻譯。二維RNN已經在建模灰度圖像和紋理上產生了非常有前途的結果。

PixelRNN

本文提出了二維 RNNs,並將其應用於自然圖像的大規模建模。由此產生的 PixelRNNs 由多達 12 個快速的二維LSTM層組成。這些層使用LSTM單元在他們的狀態上,並采用卷積,沿着數據的空間維度之一,來計算一次所有的狀態。我們設計了兩種類型的圖層。第一種類型是Row LSTM層,該層沿每一行應用卷積。第二種類型是對角線BiLSTM(Diagonal BiLSTM)層,其中卷積是沿圖像的對角線以新穎的方式應用。該網絡還把殘余連接用在LSTM層周圍;我們觀察到,這有助於為多達12層的PixelRNN的訓練。

文章提出了一種深度神經網絡,該網絡沿着兩個空間維度依次預測圖像中的像素。該方法建模原始像素值的離散概率,並編碼圖像中的完整依賴集合。架構創新包括快速二維遞歸層和在深層遞歸網絡中有效使用殘余連接。

PixelCNN

我們還考慮了第二個簡化的結構,它與PixelRNN共享相同的核心組件。我們觀察到卷積神經網絡(CNN),通過使用蒙版卷積(Masked Convolutions),也可以作為有着固定依賴范圍的序列模型

PixelCNN架構是一個由15個層組成的全卷積網絡,保留其輸入在各層的空間分辨率,並在每個位置輸出條件分布。

Both

  • 二者捕獲像素間依賴關系的完整通用性(capture the full generality),而不需要引入如_潛在變量模型_里的獨立假設。依賴關系也保持在每個像素內的RGB顏色值之間。
  • 此外,與以前的建模像素為連續值的方法相比,我們使用一個簡單的softmax層實現的多項式分布將像素建模為離散值。我們觀察到,這種方法為我們的模型提供了可表示性的和訓練優勢。

本文的貢獻如下:

  1. 我們設計了兩種類型的PixelRNN,對應於兩種類型的LSTM層;
  2. 我們描述了純卷積PixelCNN,這是我們最快的架構;
  3. 我們設計了一個多尺度的PixelRNN版本
  4. 我們展示了在模型中使用離散softmax分布以及為LSTM層采用殘余連接的相對好處。
  5. 接下來,我們在MNIST和CIFAR-10上測試模型,並表明它們獲得的對數似然分數比以前的結果要好得多。
  6. 我們還提供了在大規模ImageNet數據集(大小為32×32和64×64像素)上的結果;據我們所知,生成模型的似然值以前沒有在此數據集上報告過。
  7. 最后,我們給出了從PixelRNNs生成的樣本的定性評價。

建模

image.png

我們的目標是估計自然圖像的分布,可以用來跟蹤計算圖像的似然,並產生新的。網絡一次掃描圖像一行,每一行中一次掃描一個像素。對於每個像素,它預測在給定掃描上下文的可能像素值的條件分布。圖2說明了此過程。將圖像像素的聯合分布分解為條件分布的乘積。預測中使用的參數在圖像中的所有像素位置共享。

為了捕捉生成過程,Theis & Bethge(2015)建議使用二維LSTM網絡,從左上角的像素開始,然后向右下角的像素前進。LSTM網絡的優點是它有效地處理了對對象和場景理解至關重要的長程依賴關系。二維結構保證了信號在從左到右和從上到下的方向都很好地傳播。

分布

目標是將概率p(x)分配給由 n×n 像素組成的每個圖像 x。我們可以將圖像x作為一維序列 x1,...,xn2,其中像素是從圖像逐行提取。為了估計聯合分布 p(x),我們把它寫成像素上條件分布的乘積:

image.png

值 p(xi | x1,…,xi-1)是 i-th 像素的概率x(給定所有以前的像素 x1,…,xi-1)。生成將按行進行,並按像素進行像素。圖2(左)說明了條件的情況方案。

每個像素xi依次由三個值共同確定,每個顏色通道分別為紅色、綠色和藍色 (RGB)。我們重寫分布 p(xi | x<i) 作為以下乘積:

image.png

因此,每種顏色都取決於其他通道以及先前生成的所有像素。

請注意,在訓練和評估期間,在像素值上的分布並行計算,而圖像的生成是連續的
以前的方法使用圖像中的連續分布的像素值。相比之下,我們將 p(x) 建模為離散分布,

image.png

方程 2 中的每個條件分布都是一個用 softmax 層建模的多項式。每個通道變量 xi,* 只需要 256 個不同的值之一。離散分布表示簡單,具有任意多模態而沒有形狀先驗的優點(見圖 6)。實驗發現相比連續分布的設定,離散分布是容易學習,更容易產生更好的性能。

Pixel Recurrent Neural Networks

Row LSTM

行 LSTM 是一個單向層,它每次從上到下逐行處理圖像,為每行計算特征;計算使用一維卷積執行。對於像素 xi,該層捕獲像素上方的三角形的上下文區域,如圖4中心所示。一維卷積的核具有 k×1 的大小,其中 k≥3;k的值越大,捕獲的上下文區域越寬。卷積中的權重共享可確保計算特征沿每一行的平移不變性。

計算結果如下。LSTM 層有一個_input-to-state_組件和一個循環_state-to-state_組件,它們一起確定LSTM核心內部的四個門

仔細想來,LSTM中的門實際上做的也就是input-to-statestate-to-state**的計算。

為了增強 Row LSTM 中的並行化,首先對整個二維輸入圖計算_input-to-state_組件;為此,k×1 卷積用於沿着 LSTM 本身的行的方向。卷積被掩蓋(masked)只包括“合理”的上下文 (見 3.4 節),並產生大小 4h×nxn 的張量,表示輸入映射中每個位置的四個門向量(看來四個門是學習模擬出來的,真實並不存在),其中 h 是輸出特征圖的數量。

為了計算 LSTM 層的 state-to-state 組件的一步,需要給出以前的隱藏狀態和細胞狀態格狀態 hi-1 和 ci-1,每個大小為 h×n×1 的新的隱藏和細胞狀態 hi,ci 可以由下式所得:

image.png

其中 h×n×1 大小的 xi 是輸入圖的行 i,並且  表示卷積運算和元素乘法。權重 Kss 和 Kis 是state-to-state和input-to-state組件的核權重,如前所述。

在輸出,忘記和輸入門為 oi,fi 和 ii 的情況下,激活 σ 是 logistic sigmoid 函數,而對於內容(上下文)門 gi,σ 是 tanh 函數。

不同門的權重一樣么?

image.png

每個步驟一次為輸入圖的整行計算新狀態。由於 Row LSTM 具有三角形感受野(圖4),因此無法捕獲整個可用上下文。

Diagonal BiLSTM

對角 BiLSTM 的目的是並行計算和捕獲任何圖像大小的整個可用上下文。每個層的兩個方向都以對角線方式掃描圖像,從頂部的一個角開始,並到達底部的相反角。計算中的每個步驟一次計算圖像中沿對角線的 LSTM 狀態。圖 4右說明了該計算和由此產生的感受野。

對角計算如下:

  1. 我們首先將輸入圖傾斜映射到另一個空間,使它很容易沿對角線應用卷積。傾斜操作將輸入圖的每一行相對於上一行偏移一個位置,如圖 3 所示;這導致一個大小為 n×(2n-1) 的映射。
  2. 此時,我們可以計算對角 BiLSTM 的input-to-state和state-to-state組件。對於兩個方向,input-to-state組件只是 1×1 卷積 Kis然后state-to-state的遞歸組件用列卷積 Kss 來計算**,它有一個大小為 2×1 的核。該步驟采用以前的隱藏狀態和細胞狀態,結合input-to-state組件的貢獻,並生成下一個隱藏狀態和細胞狀態,如方程 3。
  3. 輸出特征圖然后通過刪除偏移位置,被傾斜回一個 n×n 圖。這兩個方向每一個都重復計算。
  4. 給定兩個輸出圖,為了防止層看到未來的像素右輸出圖_左輸出圖

除了達到完整的依賴區域,對角 BiLSTM 具有額外的優勢,它使用大小為 2×1 的卷積核,在每個步驟處理最少的信息量,產生了高度的非線性計算。大於 2×1 的核大小並不是特別有用,因為它們不會擴展對角 BiLSTM 的已有的全局感受場

Residual Connections

image.png

我們訓練多達十二層的PixelRNN。作為增加收斂速度和更直接地通過網絡傳播信號的手段,我們將殘余連接從一個 LSTM 層到下一層上。圖 5 顯示了殘余塊的圖。

對於 PixelRNN LSTM 層的輸入圖具有 2h 特征。input-to-state組件通過為每個門生成 h 維特征來減少特征數。應用遞歸層后,通過 1x1 卷積將輸出圖上采樣回每個位置為 2h 維特征,並將輸入圖添加到輸出圖中。

這種方法與以前的方法(沿遞歸網絡的深度使用門控)有關,但它的優點是不需要額外的門。

除了殘余連接之外,還可以使用從每一層到輸出的可學習的跳躍連接。在實驗中,我們評估了剩余和層到輸出跳過連接的相對有效性。

Masked Convolution

網絡中每個層的每個輸入位置的 h 特征分為三個部分,每個部分對應於 RGB 通道之一。

  • 預測當前像素 xi 的 R 通道時,只使用生成的 xi 的左側和上面的像素作為上下文。
  • 在預測 G 通道時,除了先前生成的像素外,R 通道的值也可以用作上下文。
  • 同樣,對於 B 通道,可以使用 R 通道和 G 通道的值。

為了將網絡中的連接限制為這些依賴關系,我們將掩碼(mask)應用於_input-to-state_卷積和 PixelRNN 中的其他純卷積層。

我們使用兩種類型的掩碼,我們用掩碼 A 和掩碼 B 表示,如圖2右所示。

  • 掩碼 A 僅應用於 PixelRNN 中的第一個卷積層,並限制與相鄰像素和當前像素中已預測的的那些顏色的連接。
  • 另一方面,掩碼 B 應用於所有后續input-to-state卷積轉換,並通過允許從顏色到自身的連接來放松掩碼 A 的限制。

掩碼可以很容易地實現,通過在每次更新后的input-to-state卷積中置零相應的權重。類似的掩碼也被用於變分自動編碼器。

PixelCNN

行和對角線 LSTM 層在其感受野內具有潛在的無邊界的依賴范圍。這有一定的計算成本,因為每個狀態需要按順序計算。一個簡單的解決方法是使接受野增大,但不是無界的。我們可以使用標准卷積層來捕獲有界的感受野,並計算所有像素位置的特征。

PixelCNN 使用多個卷積層來保留空間分辨率,不使用池化層。掩碼在卷積中采用,以避免看到未來內容;掩碼以前也被用於非卷積模型,如 MADE 。

請注意,與 PixelRNN 相比,PixelCNN 的並行功能的優勢僅在訓練或評估測試圖像時可用。圖像生成過程對於兩種網絡都是連續的,因為每個采樣的像素需要作為輸入返回到網絡。

Multi-Scale PixelRNN

多尺度的 PixelRNN 由一個非條件的 PixelRNN 和一個或多個條件的 PixelRNN 組成。

無條件網絡首先以標准的方式生成一個較小的 sxs 圖像,該圖像是從原始圖像中采樣的。然后,條件網絡將 sxs 圖像作為附加輸入,生成更大的 nxn 圖像,如圖2中間所示。條件網絡類似於標准的 PixelRNN,但每個層都帶有小 sxs 圖像的上采樣版本。

上采樣和偏置處理定義如下。

  • 在上采樣過程中,利用具有反卷積層的卷積網絡構造一個放大的 cxnxn 大小的特征圖,其中 c 是上采樣網絡的輸出圖中的特征數。
  • 然后,在偏置過程中,對於條件 PixelRNN 中的每個層,簡單地將 cxnxn 條件圖映射到一個 4hxnxn 的圖上,該圖加到相應層的輸入到狀態圖中;這是使用 1x1 沒有掩碼的卷積執行的。
  • 然后像往常一樣生成較大的 nxn 圖像。

模型設定

在本節中,我們給出了實驗中使用的 PixelRNNs 的規格。我們有四種類型的網絡:

  • 基於行 LSTM 的 PixelRNN
  • 基於對角 BiLSTM 的網絡
  • 完全卷積的網絡
  • 多尺度網絡

image.png

表 1 指定單尺度網絡中的每個層。

第一層是使用 A 型掩碼的 7x7 卷積,這兩種類型的 LSTM 網絡使用可變數量的遞歸層。該層中的輸入到狀態卷積使用類型 B 的掩碼,而狀態到狀態卷積不使用掩膜。Pixel CNN 使用大小為 3x3 的卷積與 B 型掩膜。然后,頂部的特征映射通過由整流線性單元(ReLU) 和 1x1 卷積組成的幾個層。對於 CIFAR-10 和 ImageNet 實驗,這些層有 1024 個特征圖; 對於 MNIST 實驗,有 32 個特征圖。殘余和層到輸出的連接,在所有三個網絡的層使用。

實驗中使用的網絡具有以下超參數。

  • 對於 MNIST,我們使用一個有 7 層的對角 BiLSTM 和一個 h=16 的值(圖 5 右)。
  • 對於 CIFAR-10,Row and Diagonal BiLSTMs具有 12 個層和數量 h=128 個單元。Pixel CNN 有 15 層和 h=128。
  • 對於 32x32 ImageNet,我們采用 12 層行 LSTM,h=384 單位,對於 64x64 ImageNet,我們使用 4 層行 LSTM,h=512 單位;后者模型不使用剩余連接。

實驗

Evaluation

我們所有的模型都是使用來自離散分布的對數使然損失函數來進行訓練和評估。雖然自然圖像數據通常使用密度函數的連續分布建模,但是我們是可以用我們的結果與以前的最優結果按照以下方式比較的.

在文獻中,目前最好的做法是,當使用密度函數時, 向像素值添加實值噪聲來_去量化_數據。當均勻噪聲被添加(在區間 [0,1] 的值),然后連續和離散模型的對數似然直接可以比較。

在我們的情況下,我們可以使用離散分布的值作為分段均勻連續(piecewise uniform continuous)函數,每個間隔([i,i + 1],i = 1,2,……256)都有一個常量值.此對應的分布將具有與原始離散分布(離散數據)相同的對數似然(在添加噪聲的數據上)。

  • 對於 MNIST,我們在 nats 中報告負對數似然,因為它是文獻中的常見實踐。
  • 對於 CIFAR-10 和 ImageNet,我們報告每個維度比特的負對數似然。

總離散對數似然由圖像的維數(例如,32x32x3 = 3072 CIFAR-10)來歸一化。這些數字被解釋為基於該模型的壓縮方案需要壓縮每個 RGB 顏色值的位數; 在實踐中由於算術編碼, 也有一個小的開銷。

Training Details

我們的模型使用torch工具箱在 gpu 上進行訓練。從不同的參數更新規則嘗試, RMSProp 給出了最佳的收斂性能,並用於所有實驗。已手動設置學習率計划到每個數據集的最高值,允許快速收斂。不同數據集的批處理大小也有所不同。

  • 對於較小的數據集,如 MNIST 和 CIFAR-10,我們使用較小的批大小的 16,因為這似乎是對模型的一個正則化。
  • 對於 ImageNet,我們使用的批量大小為

允許的 GPU 內存; 這對應於 32 × 32 ImageNet的 64 images/batch  和 64 × 64 ImageNet的 32 圖像/批處理 。

在網絡的輸入, 除了縮放和取圖像中心,我們不使用任何其他的預處理或增強。對於多項式損失函數,使用原始像素顏色值作為類別。對於所有的 PixelRNN 模型,我們學習初始遞歸網絡的狀態。

Discrete Softmax Distribution

除了直觀和容易實現,我們發現,在離散像素值上使用 softmax 而不是連續像素值的混合密度方法會得到更好的結果。對於帶有 softmax 的輸出分布的行 LSTM 模型,在 CIFAR10 驗證集上獲得 3.06 bits/dim 的輸出分布。對於使用MCGSM(Mixture of Conditional Gaussian Scale Mixtures)的相同模型,我們獲得 3.22 bits/dim。

在圖 6 中,我們展示了來自模型的一些softmax激活。雖然我們不嵌入關於
256 顏色類別的含義或關系,例如像素值 51 和 52 是鄰居,模型的分布預測是有意義的,並且可以是多模態,傾斜,峰值或長尾。

還請注意,值
0 和 255 經常得到一個更高的概率,因為他們更頻繁出現。離散分布的另一個優點是,我們不擔心在區間[0,255]之外分布的部分,這是在連續分布中常要遇到的一些事情。

Residual Connections

網絡的另一個核心組件是殘余連接。在表 2 中,我們顯示了在 12 層 CIFAR-10 Row LSTM 模型中,具有標准跳躍連接或有殘余連接或者同時具有二者的結果。

image.png

我們看到,使用剩余連接與使用跳躍連接一樣有效; 同時使用這兩個連接也是有效的並保留了優勢。當使用殘余連接和跳約連接時,我們在表 3 中看到,Row LSTM 的性能隨着深度的增加而提高。這可以容納多達 12個 LSTM 層。

image.png

MNIST

雖然我們的工作的目標是大規模建模自然圖像,我們也嘗試將模型用在二值版本的MNIST上,因為這是一個良好的理智檢查(sanity check),有很多以前的優秀工作在這個數據集上進行比較。在表 4 中,我們報告了對角 BiLSTM 模型的性能和以前發布的結果。據我們所知,這是迄今為止在 MNIST 上最好的報告結果。

image.png

CIFAR-10

image.png

接下來我們在 CIFAR-10 數據集上測試模型。表 5 列出了我們的模型和以前發布的方法的結果。我們所有的結果都沒有數據增強。對於所提出的網絡,對角 BiLSTM 具有最佳的性能,其次是行 LSTM 和 PixelCNN。這與各自感受野的大小相吻合: 對角 BiLSTM 有一個全局視圖,行 LSTM 有一個部分遮擋的視圖,Pixel CNN 在上下文中看到最少的像素。這表明有效地捕捉大的感受野是重要的。圖 7左 顯示了從對角 BiLSTM 生成的 CIFAR-10 樣本。

image.png

ImageNet

雖然我們知道在 ILSVRC ImageNet 數據集上沒有發布結果,我們可以比較我們的模型,我們給出我們的 ImageNet 對數似然性能在表 6 中 (沒有數據增強)。

image.png

在 ImageNet 上,當前的 Pixel RNN 並沒有表現為過擬合, 正如我們看到,它們的驗證性能隨着尺寸和深度的提高而提高。模型大小的主要約束是當前的計算時間和 GPU 內存。

請注意,ImageNet 模型通常比 CIFAR-10 圖像更不可壓縮。ImageNet 有更多的圖像,相比於 ImageNet 圖像中使用的, CIFAR-10 的圖像最有可能使用不同的算法縮放大小。ImageNet 圖像不那么模糊,這意味着相鄰像素的相關性較小,因此更難預測。由於下采樣方法會影響壓縮性能,所以我們已經制作了使用了下采樣的圖像。

image.png

圖 7右 顯示從我們的 32 × 32 樣品, 這來自在 ImageNet 上訓練的模型。圖 8 顯示了來自同一模型的 64 × 64 樣本,並且沒有多尺度調節。最后,我們還在圖 9 中展示了來自模型的圖像補全樣本。

image.png

總結

  • 本文將深度遞歸神經網絡作為自然圖像生成模型進行改進和構建。我們描述了新的二維 LSTM 層: 行 LSTM 和對角 BiLSTM,這更容易擴展到更大的數據集。對模型進行訓練,對原始 RGB 像素值進行建模。
  • 我們在條件分布中使用 softmax 層將像素值視為離散隨機變量。
  • 我們使用掩膜卷積允許 PixelRNNs 模擬顏色通道之間的完全依賴關系。
  • 我們提出並評估了這些模型的結構改進,導致高達 12 LSTM 層的 PixelRNNs。
  • 我們已經表明,PixelRNNs 顯著改善了 MNIST 和 CIFAR-10 數據集上的最佳狀態。

我們還提供了在 ImageNet 數據集上生成圖像建模的新基准。基於從模型中提取的樣本和補全結果,我們可以得出結論,PixelRNNs 可以模擬空間上局部和遠程相關性,能夠產生尖銳和連貫的圖像。考慮到這些模型隨着我們使它們變得更大而改進,並且實際上有無限的數據可供訓練,更多的計算和更大的模型可能會進一步改進結果(Given that these models improve as we make them larger and that there is practically unlimited data available to train on,more computation and larger models are likely to further improve the results.)。

疑惑

關於Diagonal BiLSTM,文中提到:

Given the two output maps, to prevent the layer from seeing future pixels, the right output map is then shifted down by one row and added to the left output map.

image.png

這里應該顯示的是一個所謂的 left output map,那所謂的 right output map 也就是計算的是從右上到左下的過程,但是 right output map 向下移動一行,再加到 left output map 上,那輸出尺寸不就變了么? 而且為什么會認為 "seeing future pixels" ?

不理解的名詞

  • unconditional PixelRNN
  • one or more conditional PixelRNNs
  • log-likelihood performance

擴展閱讀


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM