Notebook

#3 Self-Attention Generative Adversarial Networks

※この記事は以下の論文を翻訳したものです.学習不足のため至らない点,意味不明な翻訳あるかと思いますが了承してください.なにもかも了承ください.

#8 Self-Attention Generative Adversarial Networks - HackMD

https://arxiv.org/abs/1805.08318

要旨

SAGANは注視駆動のGANである.従来の畳み込み層を用いたGANは低解像度の潜在因子空間の局所点から,高解像度の画像を生成しているがSAGANは,全潜在因子空間からのキューを用いて画像を生成する. さらに良い特徴として,ディスクリミネータが,画像の離れた部分の特徴が互いに一致しているかどうかを確認することが可能になる. また,ジェネレータに条件付けを設けるとGANのパフォーマンスに影響を与えることが最近の研究で判明している. この結果を利用して,GANのジェネレータにスペクトル正規化を適用し,訓練の改善を行った.

導入

DCGANは多クラスを含むデータセットの訓練において,まともな画像を生成することは難しい. 例えば,ImageNet GANのモデルでは,テクスチャで区別されるような,空や海などといった画像の生成には優れているが,ジオメトリによって区別されるような複雑な構造パターンを含むような画像生成には向いていない. これは,畳み込み演算は局所的な受容野を擁しているため,長距離依存はいくつかの畳み込み層を超えた後にのみ処理を行うことが可能になる. カーネルサイズを大きくすることで,この問題はある程度解決することが可能であるが,局所的畳み込みを利用することで得られるような計算効率や統計効率といった恩恵を失ってしまう.

SAGANでは,Self-Attentionのメカニズムを畳み込みGANに導入することで,長距離性と計算効率をともに解決した.

関連論文

GAN

Spectral Normalization

https://arxiv.org/abs/1802.05957

Attention Models

大域的な依存性を抽出するうえで,Attentionモデルは非常に重要である.

Self-Attention Genarative Adversarial Networks

従来のGANで最もよく使われている畳み込み層は局所近傍の情報を処理している.そのため,長距離依存性をモデル化する上で,計算機の性能などの面からでも不向きであるモデルといえる.

https://arxiv.org/abs/1711.07971

そのため,上記論文の非局所的モデルを適用し,ジェネレータ,ディスクリミネータともに空間的に離れた構造関係に対して効率的に対処する.

image alt

ある層に対して,そのひとつ前からの隠れ層の出力(つまり自身の入力)を$x\in \mathbb R^{C\times N}$とする.この行列に対してattentionを算出するために写像$f,g$を定める. ただし,$f(x)=W_f x,g(x)=W_g x$とする.また,$\beta_{j,i}$を以下のように定義する. これは,$j$番目の領域を合成する際にモデルが$i$番目の位置にどの程度関与するかを示す量といえる.

$$ \beta_{j,i}=\frac{\exp(s_{ij})}{\sum_{i=1}^{N}\exp(s_{ij})},\text{where}~~ s_{ij}=f(x_i)^Tg(x_j) $$

次にattention層の出力$o=\{o_1,o_2, ...,o_j,...o_N\}\in \mathbb R^N$を, $$ \displaystyle o_j=\sum^N_{i=1}\beta_{j,i}h(x_i),\text{where}~~~ h(x_i)=W_h x_i $$ と定義する.

SAGANは上記パラメータのうち,$W_g\in\mathbb R^{\bar{C}\times C},W_f\in\mathbb R^{\bar{C}\times C},W_h\in\mathbb R^{C\times C}$を$1\times 1$畳み込み層を用いて実装を行い,学習させる

この論文では$\bar{C}=C/8$として実験を行った.

最後に,アウトプットをスケーリングし,入力をつけ足したものを最終的な出力とした.すなわち,最終的な出力$y_i$は $$ y_i=\gamma o_i+x_i $$ と表せる.ただし,$\gamma$ははじめ,0で初期化を行う.すなわち,これによって学習の初めの段階は局所近傍を主に学習し,学習を重ねていくうちに漸次的に大域性を増して学習を行うことが可能になる.

損失関数は以下のものを使用する.(https://arxiv.org/abs/1705.02894) $$ \begin{eqnarray} L_D&=&-\mathbb E_{(x,y)\sim p_{data}}[\min(0,-1+D(x,y))]- \mathbb E_{z\sim p_z,y\sim p_{data}}[\min(0,-1-D(G(z),y))]\\ L_G&=&-\mathbb E{z\sim p_z,y\sim p_{data}}D(G(z),y) \end{eqnarray} $$

GAN学習安定化を支える技術

スペクトル正規化を両モデルに適用

https://arxiv.org/abs/1802.05957 の論文で提案されたスペクトル正規化はディスクリミネータにのみ適用されていたが,これをジェネレータにも同様に適用させる.スペクトル正規化は他の正規化処理と比較してハイパーパラメータチューニングを行うことがないことが大きな特徴である.

ジェネレータにスペクトル正規化を適用させることでパラメータの大きさが爆発的に増加することを抑えることが可能になり,勾配爆発の問題を避けることができるようになる.

両モデル間の学習率を不均衡にさせる

ディスクリミネータに正規化を課すと,GANの学習過程が遅れてしまうということが従来の研究により分かっている.実際,ジェネレータの1回の更新の間にディスクリミネータは数回(5回あたりが多い)の更新を行うという実装をしているものが多く見受けられる.

https://arxiv.org/abs/1706.08500

この方法とは別に,上記論文にて,ジェネレータとディスクリミネータにそれぞれ別の学習率を使用することを提案している. 数度のディスクリミネータの更新がいらなくなるため,同一時間に行える学習回数の向上が見受けれられる.