Data
Analysis /
1.深層学習モデルの可視化
レポート 研究員 田中樺
・概要
その昔。
Cのプログラマーが最初にモニターに書くのは「Hello World」でした。
無限の可能性を感じる良い言葉ですね。
今のJAVA技術者もそうなのでしょうか・・。
さて、近年の機械学習ライブラリの最初のサンプルはMNIST数字画像を学習し、0~9の画像を認識できるモデルを作ることが一般的になっています。
今回、MNISTデータセットを学習する深層学習モデルを作ってみました。
このモデルが高次元空間の中でいかに画像情報を保持しているかを可視化することで、機械学習という分野の特徴を表し、テンパスラボの最初のコンテンツとして発表したいと思います。
まさに「Hello World」!
・用語説明
1.Keras
Kerasは深層学習のpythonライブラリで、最も一般的なものです。
2.MNISTとは
MNISTは0~9の数字画像のデータセットでです。
28×28の小さい画像で、合計7万枚。
・モデル構成
画像は28×28であるため、入力データは784次元になります。
右図の構成でモデルを実装し、20回学習を行なった結果、最終精度は99.3%に達しました。
・可視化
最終出力層は直前の128次元の内部状態を10次元の出力ベクトルに変換し、Softmaxで確率分布にします。
出力層の入力データをチェックすれば、数字画像がうまく学習されたかを検証することができます。
ここでは、128次元のデータはそのまま表示できないため、PCAで2次元に次元圧縮し、各数字に色を付けて表示しました。
テスト用の1万枚の画像を1万の点であらわしています。
ご覧の通り、同じ数字の画像は概ねグルーピングされていて、きれいに分離されています。
・最後に
高次元データは実は非常に複雑な形状になっているのですが、MNISTはシンプルなサンプルであるため、可視化の結果は非常に分かりやすくなります。
でも、実際のデータなかなかこうはなりません。
次はもっと難しい例でお話ししようと思います。
我々は、機械学習の技術を活かし、現実の課題に有効なソリューションを作り出していきたいと思っています。