「NVIDIA Deep Learning Institute 2017」では、NVIDIAのディープラーニング用システムである「DIGITS」を用いたハンズオントレーニング(実習)「DIGITSで始めるディープラーニング画像分類」が行われた。講師はNVIDIAのディープラーニング部に所属する森野慎也シニアCUDAエンジニアである。
この実習の目的は、ディープラーニングのイントロダクションとしてニューラルネットワークのトレーニング(学習)を行い、トレーニングの結果を理解することである。そのためのハンズオンとしてCaffeとDIGITSを使用して画像分類を行う。
一方、この実習ではディープラーニングの基本的な説明は行わないし、ニューラルネットワークの正確な定式化やCaffeやDIGITSなどの詳しい機能の説明も行わない。当然であるが、この実習をやったからと言って、最先端のディープラーニング企業になれるというような過大な期待を抱いてはいけない。
この実習を行うに当たってはディープラーニングの知識は、午前中の村上氏の導入程度の知識があれば十分で、それ以外にはWebブラウザの操作ができれば良いとのことである。
そして、この実習を受けると、ディープラーニングのワークフローが理解でき、CNN(Convolutional Neural Network)のセットアップやトレーニングができるようになる。また、本当のエキスパートになるための最初のステップになるとのことである。
この実習で使用するCaffeはカリフォルニア大学バークレイ校BVLC(Berkeley Vision and Learning Center)で開発されたディープラーニング用のフレームワークシステムで、コマンドライン、Python、MATLABから使うことができ、リファレンスモデルやサンプルも入っているというものである。
現在では、数多くのフレームワークが使用可能になっているが、Caffeは老舗で広く利用されているフレームワークである。
Caffeは次の図に書かれた各種のフォーマットのデータを扱うことができ、各種のプリプロセスツールやデータ変換の機能を備えている。
そして、NVIDIAのDIGITSはデータの準備、DNN(Deep Neural Network、ここではCNNと同義)の設定、トレーニングの進行のモニタなどを行うことができ、結果の可視化などを行うことができるNVIDIAのツールである。
この実習ではディープラーニングのワークフローを学ぶことが目的で、そのために手書き文字の認識を体験し、さらに、複数の異なる手法を試して結果を改善するということを行う。
今回は、MNISTという手書き文字のデータベースを使って手書き文字認識を行った。このデータベースはニューヨーク大学のYann LeCun教授が、手書きの郵便番号の認識システムを開発する際に作成したものである。
それぞれの文字データは28×28ピクセルのグレースケール画像で、ピクセルの値は0~255、トレーニングデータ画像は6万枚、テスト用データ画像は1万枚である。なお。右側の図は0~9までの手書き数字の画像の一部を示したものである。
そして、この実習で使うのはLeCun教授が開発した次の図のようなニューラルネットワークである。このニューラルネットワークは開発者の名前をとって「LeNet」と呼ばれている。
LeNetは、28×28ピクセルの画像を入力として2~5層で特徴を抽出し、それ以降の全対全層でどの特徴を併せ持つかで0~9までの10個の最終結果を出力している。
このネットワークを細かく見ると、1層目の5×5の領域を入力とし、この領域を1ピクセルずつ移動することにより、2層目への出力は24×24となる。そして異なる特徴を抽出するため20個のフィルタが並んでいる。第2層から第3層の接続では2×2の領域の最大値を取るMax poolingによりマップのサイズを12×12に減少させている。
そして、3層目は12×12のフィルタが20枚並んでいる。4層目は、3層目の5×5の領域を入力とするので、サイズは8×8に減少するが、ここではフィルタを50枚に増やしている。5層目は、4層の2×2の領域のMax poolingを取るのでサイズは4×4となる。5層目も50枚のフィルタが並んでいる。
最後の3層は全対全で接続して、5層目で抽出した特徴の組み合わせで最終出力をつくる。ReLUとSoftmaxは図に書かれた式のようになっており、非線形性を入れる活性化関数である。
次回は3月10日に掲載予定です。