社会人からはじめる機械学習勉強 Week 11 – Theano tutorial Auto Encoder

2016/3/14~3/20

ディープラーニング実践勉強 Theano

先週から引き続き、ディープラーニングの実践勉強。

先週、MLPとCNNを学び、教師あり学習をすべて終えたので、今週からは教師なし学習編。Auto Encoder, Denoising AutoencodersとStacked Denoising Auto-Encodersの部分、ということでAuto Encoderを一気にマスターする。

教師なし学習の意義・手法

教師なし学習というと、ラベル付けがされていない(正解が存在しない)データからある特定のデータの偏り方の分布=クラスタを見つけてグループ分けするというイメージ。(Coursera “Machine Learning” by Andreaw Ng ではそういった紹介もされていた。)しかし、教師なし学習のもう一つの利用法として教師あり学習の効率化のために用いることもできる。

deelplearning.netのTutorialでは一貫してMNISTのクラス分類タスクを課題としている。これは正解となるラベルが与えられているので、わざわざ教師なし学習をするメリットがないように思うかもしれない。しかし、教師なし学習を導入することで、各層の事前学習(Pretraining)が行えるようになりディープラーニングを効率化させることができる。

ディープラーニングで層を深くしていくと全体の層を一度にうまく学習させるのが難しくなってくる。例えば、Sigmoid関数を活性化関数として利用する場合には活性前の値が小さかったり大きかったりするとほぼ0か1に張り付いてしまい、その後の学習が現実時間では進まなくなる。そこで、全体を一度に学習させるのではなく、初めの各層を”データの特徴抽出をするための層”として事前学習させてあげることで本番の学習時に上記のような、学習がストップしてしまうといったことを回避することができディープラーニングをより深い層まで構築していくことができるようになる。

教師なし学習は、正解ラベルをみずに、入力データの統計的偏りだけを見ている→”データの特徴抽出”を行っており、全体の層を用いずに初めの各層だけでの事前学習を可能にする。

deelplearning.netのTutorialで紹介されている教師なし学習は大まかに分類すると2つで、Auto EncoderとRestricted Boltzmann Machineとなる。今週はAuto Encoderを勉強する。

まとめ

  • 教師なし学習の本質は”データの潜在的な特徴抽出”を行えるということ。
  • 教師なし学習の2大手法
    • Auto Encoder  (オートエンコーダ)
    • Restricted Boltzmann Machine (制約ボルツマンマシン)

構成

4章で教師なし学習の”Auto Encoder”、それを改良したモデルである”Denoising Autoencoders”について学ぶ。

5章でAuto Encoderを複数層重ねて、教師あり学習に組み込むためのテクニックとして”Stacked Denoising Autoencoders”について学ぶ。

4章 Auto Encoders, Denoising Autoencoders

教材

細かい説明は上のリンクがわかりやすいので省略。

仕組みとしては、オートエンコーダは入力データを1.エンコード→2.デコードというプロセスで学習させる。入力データを復元できるようにエンコードするということは入力データの特徴をしっかりととらえているという事。デコード後の出力が入力と等しくなるようにするという問題設定をすることで、教師あり学習と同じように学習が行える。用いるのモデルは以前学習済みのMLP。

また、入力(画像)にノイズを加えてから入力してモデルを学習させることで、より本質的的な特徴量を見出すことができるようになり学習の効果があがる(事が多い)。→Denoising Auto Encoder。

5章 Stacked Denoising Auto-Encoders 

教材

同上で詳細は略。

はじめに事前学習としてDenoising Auto Encoderで1層目を学習させ、学習済みパラメータを用いた1層目と新たに足された2層目でDenoising Auto Encoderで2層目を学習させる。。。というように1層ずつ事前学習を積み重ねていくことができる。最後にきちんと事前学習されたパラメータから初めて通常の教師あり学習をすることで学習の効果を上げる・学習を安定させて進めることができる。というもの。

設定している目標

2章/週のペースの勢いでやっていって4月末までに全部終わらせたい。

「深層学習」読了

今まで読んできた、「深層学習」を読み終わった。

ディープラーニングについての理論が学べる本は少なかったのでとてもよかった。特に、CNN, RNN, RBMについて学ぶことができた。

Waifu2xの仕組み理解

先週CNNも勉強したことだし、そろそろ2月頭から興味をもっていたwaifu2xの動作も理解できるかな。という事でwaifu2xの勉強開始。

オリジナルのアイデアである、SRCNNの論文読んだ。

アイデアはCNNを使って、よく行われるタスクである画像のClassificationの代わりに、拡大画像の復元を行うというだけのものなので理解は簡単にできた。

ただ、オリジナルの論文とwaifu2xでは層の深さや畳み込みフィルターのサイズなどのパラメータ設定値が結構違う模様。このあたり(NNのパラメータ設計)がパフォーマンスにどのように影響してくるのかは興味あるところ。

waifu2xリンク集:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です