2016年11月19日土曜日

世界ランキング34位の性能のDeep Learning Pythonコードまで学べる!

別記事でもご紹介した、下記の書籍(A5版全298ページ):

斎藤康毅著
「ゼロから作るDeep Learning - Pythonで学ぶディープラーニングの理論と実装」

 隅々まで完全理解とまでは行かないが、最後のページまで来た。途中でPythonコードをタイプしながら実行したり、考え込んだりだったが、Deep Learningの基本をソースコードレベルで一定の理解ができた。この書籍は、how toものではない。理論がしっかり分かる。しかも、基礎にとどまらず、最新の技術も取り入れている。そのため、最終的に作ったPythonコードは、MNIST(手書き数字画像セット)に対する世界コンテストランキングの第34位にあたる認識率(= 99.35%)を誇る!

 このランキングを以下に示すが、認識率ではなく、誤認識率(エラー率)で順位づけしている。100% - 99.35% = 0.65%が今回の対応性能である。

MNISTの誤認識率(error %)世界第34位の性能!

 1万件の手書き数字画像(学習用の6万件とは独立に用意された)の誤認識率が、わずか0.65%というのは驚きではないでしょうか!

認識率 99.35% !(背景は誤認識となった数字画像例。確かに紛らわしいですね。)

この書物は、入門的ではありますが、次のように、最新技術も取り入れたDeep Learningをやるという意欲的な取組みがあってのことです。

以下のような多層の畳込みニューラルネットワーク構造を採用
 conv - relu - conv- relu - pool -
 conv - relu - conv- relu - pool -
 conv - relu - conv- relu - pool -
 affine - relu - dropout - affine - dropout - softmax

重み初期値設定にHe法、重み更新法にAdam最適化を適用

 しかし、それだけのことはあります。上記にような認識率(誤認識率)を得るために学習にはかなりの計算時間がかかります。最近では、CPUではなくGPUの数値(並列)演算を利用するようです。ですが、ここでは、手持ちのNote PC(2コアCPU、2.4GHz)でやって見ました!実に、約6時間かかりました。もちろん、このNote PC、CPU稼働率100%近くで6時間走り続けましたが無事でした。この学習結果をPythonのピックルファイルに格納して利用することで、評価結果(認識結果)はすぐに得られます。

0 件のコメント:

コメントを投稿