[CVPR 2018 Tutorial on GANs] Introduction to Generative Adversarial Networks

CVPR 2018 Tutorial on GANsにおけるPart1 Ian GoodfellowのパートのYoutube動画の読解メモ。Youtubeの音声が荒れまくっているので基本的には資料とYoutubeの自動字幕でうまくいっている部分を読みながら追ったメモとなります。また、なるべくさらに正確な情報を得るためのリンクも添付しています。
記述に誤り等ありましたらご教授頂けますと幸いです。

# 出典

## チュートリアルホームページ
https://sites.google.com/view/cvpr2018tutorialongans/
## 発表資料
[[slides](http://www.google.com/url?q=http%3A%2F%2Fefrosgans.eecs.berkeley.edu%2FCVPR18_slides%2FIntroduction_by_Goodfellow.pdf&sa=D&sntz=1&usg=AFQjCNGQC1UbRdaQTfKnoHl-NqQ0dDYvtg)] [[video](https://youtu.be/EXLRZr0k8ok?t=2m41s)]
## 発表者
Ian Goodfellow, Google Brain

# 概要
GANの著者であるIan GoodfellowによるGANのイントロダクション。大部分はGoodfellowが最近(2nd authorとして)発表した Self-Attention GAN (SAGAN)の発表スライドのようである。SAGANのスライド解説は下記が詳しい。
https://www.slideshare.net/DeepLearningJP2016/dlselfattention-generative-adversarial-networks-100362745
本発表ではGANの一般的な解説やアプリケーション例を交えつつ、主には最初のGANの発表から最近のSAGANに到るまでに導入された考え方、数学的な裏付けを伴うテクニックを説明している。

# 内容
まずオリジナルのGANの説明であるがこれは既にネット上に無数のGAN入門コンテンツがあるので割愛。ここではGoodfellowが当時既に囲碁においてAI同士でひたすら対局させて成果を出したAlphaGOなどに代表されるSelf Play(図1)に着想して考案したものであることを言っていると思われる。

<img width="753" alt="スクリーンショット 2018-09-03 22.28.05.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/f6e82f8c-3900-7afa-1764-f7022b44c764.png">
図1

## 顔画像生成、ImageNet画像生成の進歩
次にここ数年の顔画像生成(図2)とImageNet画像生成（図3）における進歩を紹介している。

<img width="826" alt="スクリーンショット 2018-09-03 22.32.45.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/296e00e9-e35f-7273-7cdf-5f42341b137c.png">
図2

<img width="799" alt="スクリーンショット 2018-09-03 22.32.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/113923/496cd28d-5b7e-f835-008a-95edf0878fb0.png">
図3

## 導入された技術要素
ここ数年の進歩を順に追って説明する。
### ネットワークを深くした&CNNの導入
DCGAN[Radford2015]ではネットワークを深くした&CNNを導入した。
https://qiita.com/triwave33/items/35b4adc9f5b41c5e8141

### Conditional GAN
generator, discriminatorの学習時にラベル情報を使うようにした。
https://qiita.com/triwave33/items/f6352a40bcfbfdea0476
Class-Conditional GANs[Mirza and Osindero2014]をベースとしてAC-GAN[Odena,2016], SN-GAN[Miyato2017]などがある。

### Spectral Normalization
Discriminatorの各層（の重みパラメータ？）に正規化の一種であるSpectral Normalizationを適用。Spectral NormalizationはGANの要件であるDiscriminatorのLipschitzs制約を重要視して設計された正規化。安定性が向上。
Spectral Normalization[Miyato2017]
[Miyato2017]のざっくり解説。
https://github.com/arXivTimes/arXivTimes/issues/388
なお、SAGANでは さらにGeneratorにもSpectral Normalizationを適用している。

### Hinge loss
hinge lossの導入
https://mathwords.net/hinge
GANの誤差関数にヒンジ関数を導入[Miyato2017, Lim2017, Tran2017]。これも収束の安定性向上？

### Two-Timescale Update Rule
Two-Timescale Update Ruleの導入[Heusel2017]
GANがちゃんと収束する(ナッシュ均衡に収束する)ためのgeneratorとdiscriminatorの学習率の決め方。

### Self-attention
空間的な整合性を考慮。具体的には画像中の画素間の類似度を表現するSelf Attention Mapを導入している。Self AttentionはSAGANが初出ではなく、自然言語処理のAttention Is All You Need (Transformer)[Vaswani2017]で提案されたものを画像生成GANに応用したものらしい。
[Vaswani2017]についての解説は下記。
http://deeplearning.hatenablog.com/entry/transformer
SAGANについてのざっくり解説は下記。
https://urusulambda.wordpress.com/2018/07/15/saganself-attention-generative-adversarial-network%E3%81%AEself-attention%E6%A9%9F%E6%A7%8B%E3%82%92%E3%81%96%E3%81%A3%E3%81%8F%E3%82%8A%E7%90%86%E8%A7%A3%E3%81%97%E3%81%9F/

## その他のGANの応用事例
このあといくつかGANの応用事例として以下の４つを紹介している。

### Semi-supervised Learning

GANを使うことで正解をラベリングする数を減らすことを可能にした半教師あり学習。
Semi-Supervised Learning with Generative Adversarial Networks [Odema2016]
https://arxiv.org/abs/1606.01583

### Model-based optimization

Generating and designing DNA with deep generative models [Killoran2017]
https://arxiv.org/abs/1712.06148

### Extreme personalization


### Program synthesis

Synthesizing Programs for Images using Reinforced Adversarial Learning
[Ganin2018]
https://arxiv.org/abs/1804.01118