#はじめに
この記事は『Deep Learning初心者,プログラミング初心者だけどDeep Learningしてみたいな~でもやり方わからないしな~』といった人向けであります.
#動機
これまででせっかくNNCもある程度使えるようになったし,
自分の好きなAuto-Encoder*(AE)でやりたい...やりますか!
データセットの入れ替えとかもやってみたいし!
です.
*Autoencoderの表記は『Autoencoder』,『Auto-encoder』,『Auto encoder』,この3つの『encoder』の『e』が大文字バージョンと割りと豊富にあります.元が『Auto-Associators』であったことから『-』を入れたいところですね.
今回は今の気分で『Auto-Encoder』にします.
#この記事の目的
NNCでAE使って任意のデータセットで入力を再構成できるようになる.
~その3~:AEを動かしてみる
~その4~:データセットの作成,入れ替え
#扱うNeural Network
AEのみ!!
さっそくAEを動かしてみましょう!!
#AEを動かす
##そもそもAEとは?
入力隠れ出力の3層のニューラルネットワークです.
入力層と隠れ層の間では符号化操作(encode)が行われます.
隠れ層と出力層の間では復元操作(decode)が行われます.
入力と出力が同じになるようにネットワークを調整していきます.
最終的,出力層で入力層を再構成できるようになると,
隠れ層で入力の特徴表現するようになります,
##いざ実行
サンプルにある06_auto_encoderを開きます.
※使ったプロジェクト順に上に並ぶので,自分のは一番上にありますが,みなさんのは6番目にでもあるのではないでしょうか.
いつものごとくTrainingとEvaluationしましょう.
まずは,Trainingから(右の赤丸でTRAININGタブに切り替えて左の再生ボタンをポチりましょう).
今日も気持ちよく精度が上がっていきますね.
素晴らしい.
さて,Evaluationしましょう(右の赤丸でEVALUATIONタブに切り替えて左の再生ボタンをポチりましょう).
なんでしょうこれ.
x'の所に画像が出てきています.
これまでのMulti-Layer Perceptron(MLP)やConvolutional Neural Network(CNN)とは全く異なる結果が出てきましたね.
これはびっくり.
...いえいえ,AEの構造上出力は入力の再構成になるので画像が出てくるのは当たり前ですよね.
さて,こんなに簡単にうまくいってしまったら逆に面白くないですね.
ではうまくいかなくなるためにはどうしたらよいでしょうか.
そうです.
その通り.
単純に学習のエポック数を減らしてしまえばいいのです.
『CONFIG』でエポックとついでにバッチサイズも変えてみましょう.
右上にある『CONFIG』タブで画面を切り替えましょう(黄色丸).
水色の四角に注目.
上が『エポック』,下が『バッチサイズ』です.
エポックは『データセットを何回使いまわすか』,
バッチサイズは『どれくらい更新値を溜めてから適用するか』です.
詳しくはまたそのうちに◎
さて,エポックをぐっと減らして5エポックに設定(水色四角の上).
ついでにバッチサイズも変えてしまいましょう.
とりあえず,500にしましょう(水色四角の下).
そしてSaveしましょう(右上の赤丸).
いざ,Training!
(右の赤丸でTRAININGタブに切り替えて左の再生ボタンをポチりましょう)
ほほう.
0.02を下回っていたのが,0.06を上回った状態で止まっていますね.
先ほどと比べて学習がうまくいっていません.
続いて,Evaluationしましょう.
(右の赤丸でEVALUATIONタブに切り替えて左の再生ボタンをポチりましょう)
...やりましたね!!
先ほどは入力っぽい出力が得られていましたが,
今回はちゃんど(?)学習できなかったので,
っぽい画像が出力されていますね.
この『エポック』と『バッチサイズ』はネットワークのチューニングに使える知識なので覚えておくと幸せになれると思います.また,この2つに加えて学習率やネットワークの構成など,人間の手で決めておくパラメータをハイパーパラメータといいます.
さて!
お次はデータセットを作成するところに挑戦してみましょう.