PixelCNNの論文メモ

未完
# PixelCNNとは
PixelCNNは[Pixel Recurrent Neural Networks](https://arxiv.org/abs/1601.06759) (Aaron van den Oord)で発表された自己回帰型の生成モデルです。画像の右上から順にピクセルが並んでいると考えて、予測したいピクセルをより前のピクセルを基に予測します。

# PixelCNN++とは
概要
PixelCNNは最近提案された扱いやすい尤度を持つ強力な生成モデルのクラスです。ここでは、[github](https://github.com/openai/pixel-cnn)で利用可能なPixelCNNの実装について述べます。私たちの実装は構造の単純化とパフォーマンス改善のため多くの修正を元のモデルに加えました。(1)学習のスピードを上げることが分かっている256-wayのソフトマックスでなく、離散混合ロジスティック尤度をピクセルに使います。(2)モデル構造を簡単にするため、R/G/Bのサブピクセルでなく、全てのピクセルで条件付けします。(3)複数の解像度の構造を効率的に捉えるためにダウンサンプリングを使います。(4)最適化をよりスピードアップするため追加のショートカットコネクションを導入します。(5)ドロップアウトを使ってモデルをregularizeします。
最後にこれらの修正の有効性を示すためCIFAR-10の最新の対数尤度の結果を提示します。

1、Introduction
van den Oordらによって提唱されたPixelCNNは扱いやすい尤度を持つ画像の生成モデルです。このモデルは
```math
p(x)= \prod_{i}p(x_i|x_{<i})
```
として、画像Xの確率密度関数を全てのサブピクセルに対して(カラーチャンネルも含む)完全に分解します。
条件付き分布
```math
p(x_i|x_{<i})
```
はCNNでパラメータ化され、全てのパラメータを共有する。PixelCNNはこれらの条件付けのfunctional form がとても柔軟な強力なモデルである。加えて、観測された画像xに対し、GPUで全ての条件を並列に処理できるので、計算が効率的になる。これらのプロパティのおかげで、PixelCNNは、生成モデリングで対数尤度評価した際、現在のstate-of-the-artを示す。画像生成に使われる以外に、PixelCNNモデルは最近、オーディオ、ビデオ、テキストをモデル化するよう拡張された。私たちの研究に使用するため、PixelCNNの内部実装を発展し、構造を簡素化し、パフォーマンスを改善するため、ベースモデルに多くの修正を施した。コミュニティへ広がるように役立つ事を期待し、[github](https://github.com/openai/pixel-cnn)に実装を公開する。修正はsection2、評価実験はsection3で。state-of-the-artの対数尤度の結果は有用性を裏付けている。

2 PixelCNNの修正
van den oordによって述べられたPixelCNNのモデルアーキテクチャに行った最も重要な修正を説明する。詳細はgithubへ。

2.1 離散混合ロジスティック尤度
標準のPixelCNNモデルはサブピクセル、またはピクセルのカラーチャンネル条件付き分布をfull 256-way softmaxで指定する。これはモデルに多くの柔軟性をもたらすが、メモリのコストが多くかかる。さらに、特にトレーニングの初期にネットワークのパラメータに関する勾配をとてもまばらにできる。標準的なパラメタ化では、モデルは128が127や129に近い値であると知らないので、モデルをよりハイレベルの構造にする前に、この関係を初めに学習する。特定のサブピクセル値が観測されない極端な場合は、モデルは確率0を割り当てる事を学習する。これは通常の8bitよりも高い精度でピクセルが観察されたデータに特に問題になる。非常に高い精度で値が観測される極端な場合、現在の形式のPixelCNNは法外な量のメモリと計算が必要となるが、学習はとても遅い。したがって、観察された離散ピクセル値の条件付き確率を計算するため別のメカニズムを提案する。わたしたちのモデルではVAEのように、連続分布を持つ潜在color intensity v を仮定し、観測されたサブピクセル値xを与えるために最も近い8ビット表現に丸める。vのモデル化にシンプルな連続分布を選ぶ事で、(like the logistic distribution as done by Kingma et al.)xの滑らかでメモリ効率が良い予測分布を得る。ここで式(2)としてこの連続一変量分布を、観測された離散値xに対し確率を簡単に計算できる混合ロジスティック分布とする。0と255のエッジケースを除く全てのサブピクセル値xに対し、以下である。
```math
v \sim \sum_{i=1}^K \pi_illogistic(\mu_i,s_i) (1) \\
P(x|\pi, \mu, s) = \sum_{i=1}^K \pi_i[\sigma((x+0.5-\mu_i)/s_i) - \sigma((x-0.5-\mu_i)/s_i)](2)
```
ただし、$ \sigma() $はロジスティックシグモイド関数である。エッジケース0は$ x-0.5 $を$ -\infty $に、255は$ x+0.5 $を$ \infty $に置き換える。コードには、(2) の確率の対数を計算するための数値的に安定した実装が含まれている。私たちのアプローチは連続混合モデルを使った以前の研究(Domke et al., 2008; Theis et al., 2012; Uria et al., 2013; Theis & Bethge, 2015)を踏まえているが、vをxへ丸める事を明示的にモデリングする事で、有効範囲[0,255]の外に確率質量を割り当てる事を回避する。加えてedge values0と255に隣接する値よりも、figure1に示すように観測されたデータ分布とよく一致する自然に高い確率を割り当てる。実験的に、正確にピクセルの条件付き分布をモデル化するためには比較的少ないmixture components (たとえば5)のみが必要とされる。よって、ネットワークのアウトプットはかなり低い次元で、パラメータに関して損失の勾配がより密集する事になる。実験では、最適化の間、特に学習の初期段階で収束がとても高速化した。しかし、pixelcnnと比べ、私たちのアーキテクチャは他にも変更があるため、これが元のpixelcnnにも当てはまるとは言えない。

figure1 cifar-10の全てのサブピクセルの周辺分布。edge value 255は周辺値よりもかなり多い。これは、rounding based approach を使ってモデル化すると用意だが、連続または打ち切り分布を使うと困難になる。

2.2　ピクセル全体の条件付け
カラー画像のピクセルはR,G,Bの色の強度から与えられる3つの実数からなる。元のpixelCNNはこれらの3つのサブピクセルに対し生成モデルを分解する。これはとても一般的な依存構造を許すが、モデルが複雑になる。feature mapの空間位置を追跡し続けるだけでなく、現在位置のR/G/Bのサブピクセルが見えるかによって、全てのfeature mapを3つのグループに分けなければならない。ピクセルのカラーチャンネル間の依存関係は比較的シンプルでモデル化に深いネットワークを必要としないように思えるので、この複雑さの追加は必要ないようである。したがって、代わりに画像の左上のピクセル全体のみを条件として、予測ピクセルの3チャンネルに対して結合予測分布を出力する。ピクセル自身の予測分布は、シンプルな分解されたモデルとして解釈できる。2.1で説明したように、離散混合ロジスティック分布を使って、初めにRチャンネルを予測する。次に、同様の形式の予測分布を使用して、Gチャンネルを予測する。ここで、混合成分の平均がRのサブピクセル値に線形依存する事を許可する。最後に同様にして、Bチャネルをモデル化する。ここでも、RとGチャンネルの線形依存のみを許可する。画像の(i,j)に位置するピクセル$(r_{i,j},g_{i,j},b_{i,j})$に対して、context$C_{i,j}$を条件とする分布は、混合指標と前のピクセルから構成せれ、次のようになる
```math
P(r_{i,j},g_{i,j},b_{i,j}|C_{i,j}) = 
```
$\alpha, \beta, \gamma$のスカラー係数は混合成分と前のピクセルに依存する。
混合インジケータは3つの全てのチャンネルで共有される。すなわち、私たちの生成モデルは、最初に混合インジケータをサンプリングし、次に対応する混合コンポーネントからカラーチャンネルを１つずつサンプリングする。ロジスティックの代わりに離散混合一変量ガウス分布をサブピクセルに使用すると、これは完全な共分散を持つ(離散)混合3次元ガウス分布を使って完全なピクセルを予測する事に相当する。ロジスティックとガウス分布はとても似ているので、これは私たちが最終的に行うことにとても近いものだ。詳細の完全な実装はgithub。
2.3 ダウンサンプリングとdilated畳み込み
元のpixelcnnは小さな受容野の畳み込みのみを使用する。このような畳み込みは局所的な依存性をキャプチャするのに良いが、広範囲の構造のモデル化には適さない。大抵はこれらの局所的な依存性をキャプチャすることで非常に優れた対数尤度を得るのに十分であることが分かるが(table 2)、モデルが広範囲の依存関係をキャプチャするように明示的に奨励する事で、生成画像の知覚的なクオリティを向上させることができる(fig3 compare fig5)。ネットワークが複数の解像度で構造をモデル化することを可能にする方法の一つは、Oordらが提案したdilated convolutionをモデルに導入することだ。ここでは、代わりにストライド2の畳み込みを使ってダウンサンプリングする事を提案する。ダウンサンプリングは、dilated convolutionsによって行われるのと同じ複数の解像度処理を成し遂げるが、計算コストは削減される。dilated convolutionが増加するサイズ(ゼロパディングのため)の入力に対して動作する場合、ダウンサンプリングは入力サイズを1/4に縮小する(ストライドが2で2次元)。ダウンサンプリングを使用することの欠点は情報の損失だが、次のセクションで述べるように、ネットワークに追加のショートカット接続を導入することでこれを補うことができる。これらの追加のショートカット接続により、ダウンサンプリングのパフォーマンスが膨張畳み込みと同じであることがわかった。
2.4 ショートカットコネクションの追加
サイズ32*32の入力には5 ResNet layerの6 blockから構成されるモデルが提案される。1番目と2番目のブロックの間、また2番目と3番目も同様にstrided convolutionによるサブサンプリングを行う。4番目と5番目、5番目と6番目のブロックの間で、transposed strided convolutionによって、アップサンプリングを行う。このサブサンプリングとアップサンプリングプロセスは情報を失うので、モデルの低レイヤから情報を復元するために、追加のショートカットコネクションをモデルに導入する。ショートカットコネクションは最初のブロックのResNet layerから6番目のブロックの対応するレイヤまで行われ、同様に2番目と5番目のブロック、3番目と4番目のブロックの間でも行われる。この構造はthe VAE model with top down inference used by Kingma et al. (2016), と　画像セグメンテーションのためのthe U-net used by Ronneberger et al. (2015) に似ている。Figure 2はモデル構造をグラフィカルに表す。
Figure2:van den Oord et al. (2016c)のように、私たちのモデルはresidual connectionを持つ畳み込みアーキテクチャの2つのストリーム(downward, downward+rightward)に従う。しかし接続性には2つの大きな違いがある。初めに、私たちのアーキテクチャはダウンサンプリングとアップサンプリングを含むため、ネットワークの内部パーツはより大きなspatial scaleに対し働き、計算効率が向上する。次に、long-range skip-connectionを使うことで、それぞれのk番目のレイヤは直接入力を(K-k)番目のレイヤに提供する。ここで、Kはネットワークのレイヤの総数である。ネットワークは6レイヤのシーケンスにグループ化され、ほとんどのシーケンスはダウンサンプリングかアップサンプリングに分けられる。

2.5 ドロップアウトを使ったREGULARIZATION
PixelCNNモデルはトレーニングデータに過学習になるほどパワフルだ。さらにトレーニング画像を単に再生成するのでなく、過学習モデルは低いperceptual qualityの画像を生成することがわかった。Figure 8に示す。NNのregularizingする効果的な一つの方法はドロップアウトだ。私たちのモデルは最初の畳み込みの後のresidual pathに標準のバイナリドロップアウトを適用する。これはZagoruyko & Komodakis (2016)の幅広いresidual networksに適用されるドロップアウトを適用する方法に似ている。ドロップアウトを使うと過学習を避け、高品質の生成を行いながら、正常に高いキャパシティのモデルを学習できる。(figure 8と3を比較)