Self-Attention Generative Adversarial Networks

GANsで高精細な画像を生成する手法を提案した"Self-Attention Generative Adversarial Networks"のレビュー.

元論文はこちら

Abstract

Convolutional GANsにself-attention mechanismを導入したSelf-Attention Generative Adversarial Networks (SAGANs)を提案.

Self-attentionモジュールは,畳み込み操作を補完し,画像内の広範囲の依存関係のモデリングを可能にする. こうしたself-attentionの仕組みを導入することで,generatorはより高精細な画像の生成が可能になり,discriminatorはより正確に生成画像に対する複雑な幾何学的制約を加えることができるようになる.

Self-attetnionに加えて,SAGANsでは従来discriminatorのみに適用されていたspectral normalizationをgeneratorにも適用することを提案している.

f:id:noconocolib:20190221111419p:plain

Self-Attention Generative Adversarial

f:id:noconocolib:20190221111447p:plain

多くの画像生成のためのGANsは畳み込みレイヤを採用している.畳み込み操作は局所近傍の情報を処理するため,畳み込みレイヤのみを使って画像内の広範囲をモデリングすることは計算量的に非効率.

これを可能にするため,論文ではself-attentionモジュールを導入する.

Attentionを計算するため,一つ前までの層の出力する特徴マップ x\in{\mathbb{R}^{C\times{N}}}を2つの特徴空間 f gに分解する.ここで f(x) = W_f x,\ g(x) = W_g x

 \beta_{j,i} = \frac{\exp (s_{ij})}{\sum^{N}_{i=1} \exp (s_{ij})},\ s_{ij} = f(x_{i})^{T} g(x_{j})

Attentionレイヤの出力 o = (o_1, o_2,\dots,o_j,\dots,o_N)\in{\mathbb{R}^{C\times{N}}}は,

 o_{j} = \sum^{N}_{i=1} \beta_{j,i} h(x_{i}),\ h(x_{i}) = W_{h} x_{i}

最終的な出力は,attentionの出力にスケーリングファクタをかけて入力に足したものになる.

 y_i = \gamma o_i + x_i

Technique to stabilize GAN training

GANsの学習の安定化のためにいくつかのテクニックを導入している.

Spectral normalization for both generator and discriminator

Spectral normalizationのもともとの論文では,GANsの学習の安定化のためにspectral normalizationをdiscriminatorのみに適用していた.これは,discriminatorがLipschitz連続性を満たすようにするため.

ここで,この論文ではspectral normalizationはdiscriminatorだけでなく,generatorにとっても有効であると主張し,両方に適用することで実験的に学習の安定化を達成.

Imbalanced learning rate for generator and discriminator updates

従来はgeneratorを一回更新するたびにdiscriminatorを複数更新するテクニックが使われていたが,その代わりにgeneratorとdiscriminatorの学習率を不均衡にすることを提案.

Experiments

  • SAGANとResidual blockを用いたGANsとの比較.
  • FID,ISともにSAGANがより良い結果を得られている.

f:id:noconocolib:20190221111957p:plain

  • いろいろなクラスの画像のSAGANによる生成結果.
  • かなりきれいな画像が生成できていることがわかる.

f:id:noconocolib:20190221112008p:plain

実装例