Re:ゼロから始めるML生活

機械学習ド素人が、流行に乗ってニューラルネットとかその他いろいろ勉強してみるブログ

【論文メモ:DCGAN】Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks

論文

[1511.06434] Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks

著者

Alec Radford, Luke Metz, Soumith Chintala

indico Research, Facebook AI Research

背景

ラベルなしのデータセットから特徴を学習する教師なし学習は近年注力されている分野で、とくにコンピュータビジョンの画像分類(image classification)の分野等が注目されている。 従来では、k-meansのようなクラスタリングのあとで、分類の評価値を調整する方法が一般的であった。 中でも階層化クラスタリングが、強力な画像表現を学習したモデルとして挙げられる。

また、オートエンコーダを学習させる方法がある。 オートエンコーダによって画像をコードに変換し、コードから画像を再構築する(デコード)プロセスを学習させる。 これにより、最適な特徴抽出が可能になる。

近年の先行研究では、教師なし学習による画像分類では、GAN(Generative Adversarial Networks)という手法が提案されている。 しかし、GANは学習が不安定であることが指摘されている。 しばしばおかしな出力を出すことが知られており、GAN(特にマルチレイヤのGAN)は限定された研究にとどまっている。 本論文ではDCGANを提案し、GANによる学習によって構築されたDiscriminatorとGeneratorを教師あり学習として活用できることを示す。

目的とアプローチ

目的

  • 教師なし学習による画像分類の精度の向上

アプローチ

  • DCGAN(Deep Convolutional GAN)の使用

提案手法

本論文の提案手法であるDCGANの要点を下記に示す。

  1. 畳み込みにおけるpoolingの排除
  2. バッチノーマライゼーションによるGenerator学習の効率化
  3. 全結合層の排除
  4. Generatorの出力層にtanh関数を採用
  5. Discriminatorの全ての活性化関数をLeakyReLUに変更

ネットワーク構成

f:id:nogawanogawa:20180401151039j:plain

その他

初期化

全てのネットワークの重みの初期値は下記の正規分布に従うものとする。

LeakyReLU

Leak部の傾き:0.2

最適化
  • Adam Optimizer
  • Learning rate:0.0002
  • mometam term:0.5

評価

CIFER-10

CIFER-10ベンチマークでのAccuracyを下記に示す。

f:id:nogawanogawa:20180401222327j:plain

比較対象のExemplar CNNより精度が劣るものの、同じ教師なし学習の3層k-meansより高い精度を達成している。

SVHN

SVHNのerror rateを下記に示す。

f:id:nogawanogawa:20180401223121j:plain

比較対象のモデルと比べて、最も低いerror rateを達成している。

Discriminator

DiscriminatorのFilterの学習結果を下記に示す。 f:id:nogawanogawa:20180401224432j:plain

Generator

サンプルの画像とGeneratorが生成した画像の比較を下記に示す。 f:id:nogawanogawa:20180401224409j:plain

実装

※実装のサンプルです。細かいとこ間違ってたらごめんなさい。

gist.github.com

その他、githubはこちら。

https://github.com/nogawanogawa/DCGAN_tensorflow.git

実行結果

epochを2で設定しているにも関わらず、ほぼ丸一日かかりました。 パフォーマンスが悪い原因はマシンの限界なのか、SSE命令が使えていないからなのか、どちらにせよそのうちなんとかします。

流石に時間がかかり過ぎだと思いますが、一応画像は出てきていたので、参考までに乗せておきます。

i=0

f:id:nogawanogawa:20180331104855p:plain

i=5

f:id:nogawanogawa:20180331105000p:plain

i=55

f:id:nogawanogawa:20180331105123p:plain

i=109

f:id:nogawanogawa:20180331105139p:plain

感想

だんだん実装と数式が難しくなってきました。 なれてこないと、実装は時間かかりますね。

あとMacBook Airだと実行がしんどくなってきた感じがしました。 環境周りの問題はなんとかしたいので、そのうちクラウドでやりたいですね。