LoginSignup
26
38

More than 3 years have passed since last update.

Neural Network Consoleで遊んでみる~その1~

Last updated at Posted at 2017-12-17

はじめに

この記事は『Deep Learning初心者,プログラミング初心者だけどDeep Learningしてみたいな~でもやり方わからないしな~』といった人向けであります.

動機

簡単にDeep Learningしたい.
C++とかPythonとかverilogとか,
ソフトウェアでもハードウェアでも実装してみましたけど,
設計からコーディングまで工程数が多いこと...

それが!なんと!!GUIでできる!!!とのこと.
SONYから提供されているNeural Network Console(NNC)!
これはやるしかない.やりましょう.
※2017年12月18日投稿時の話です.

この記事の目的

NNCで(ある程度)任意のネットワークでMNISTデータセットの線形分類をできるようになる.
~その1~:インストール,とりあえず実行
~その2~:改造に挑戦

※MNISTデータセット:グレースケール手書き数字画像のデータセット.
 1つの画像の大きさは縦横28*28ピクセル.
 クラス数は10で学習用60000枚,テスト用10000枚(クラス毎に枚数は異なる).
 クラス分類タスクの評価指標によく使われる.

扱うNeural Network

~その1~:Multi-Lyaer Perceptron(MLP)
~その2~:Convolutional Neural Network(CNN)

まずはNNCのインストール

今回はwindowsアプリ版を使います.
まずは公式HPにアクセス.
ここからインストール完了までの手順は3つ.
1.メールを送ってインストーラの入手
2.ダウンロード
3.解凍するだけ
悔しいことに簡単です.
※.zipで993MB,解凍して2.34GBとまぁまぁ重いのでインストールする場所を選びましょう.

環境

自分の環境は次の通りです.
OS:Windows 10 Education 64bit
CPU:Intel Core i7-4771
メモリ:8GB
GPU:なし

既存のNN(MLP)でやってみる

とりあえず,定番中の定番『MNISTをMLPで分類』をやってみます.
と,その前にセットアップですね.

セットアップ(スクショ取り忘れました)

neural_network_console.exeを初めて開くとSetupウィンドウが表示されます.
GPUも積んでいないので,とりあえず規約を読んでapplyしてみる.

動きました.
※『Visual Studio 再頒布パッケージ2015がない』と言われた方はこちらから入手,インストールしてください.

そもそもMLPとは?

Multi Layer Perceprtonの略です.
perceprton(パーセプトロン,神経細胞)があるlayer(層)をmulti(複数)並べたものです.
そのまんまですね.
こんな感じです.bは趣味で書いたので気にしないでください.

(入力データ,ラベル)←このセットで覚えさせます.
教師あり学習といいます.
理論について詳しくはまたいずれ...
深層学習に使われる多くのニューラルネットワークの”基本形”ですね.

動かします

HOME->PROJECT->10_deep_mlp.sdcprojと移動します.
※この時点でMNISTデータセットのインストールを求められます.気持ちよく引き受けましょう.
NNCdeep_mlp.png

学習させてみます.
この再生ボタンをポチるだけ.
NNCdeep_mlp_result.png

するとグラフがぬるぬると描かれます.
これは楽ちん.
赤い実線が学習できているかを表します.点線は汎化能力を試すためのものです.
ここでは過学習という現象が起きていますが,本題とは関係ないのでスルーしましょう.

評価もしてみましょう.
この再生ボタンをポチるだけ.
NNCdeep_mlp_evaluate.png

『4』と『9』...そうですか.
いや,この画面,なんぞや.

ここで,学習させたデータセットについてみてみましょう.
水色の丸のDATASETに移動します.
NNCdeep_mlp_dataset.png

前述の通り,MLPは(入力データ,ラベル)のセットで学習させます.
ここでは(4or9の画像,0or1)になっています.紺色の枠と赤の枠ですね.
さて,ラベルですが,黄色の丸の縦ライン示す通り,
yが9じゃない(4)ならラベル0
yが9ならラベル1
ですね.

※0から9まで全部学習させているのかと思いきや,4と9の2つだけでした.ご愛敬.

さて,これを踏まえて先ほどの評価結果を見てみましょう.
NNCdeep_mlp_evaluate_detail.png

実は『y'』が出力値なんですけど(先に言えよ)
index1の結果は『4の画像を入力したら0.00117776328698っていう値が出たからほぼ0だし分類的にはラベル0だと思います』ということですね.
一方で,
index3の結果は『9の画像を入力したら0.988236129284っていう値が出たからほぼ1だし分類的にはラベル1だと思います』ということですね.

ラベル0は4,ラベル1は9,と学習させたので...
えぇ,見事に分類できてますね.
とても簡単にDeepLearningできちゃいましたね.

さ!次は改造してみましょう.

26
38
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
38