最近、いろいろなことろで注目を集めている「AI」「機械学習」「ディープラーニング」。
これらの技術は、画像認識・自然言語処理・音声処理などの分野で幅広く利用されはじめており、専門性をもつ研究者だけが利用するものではなく、ECサイトのおすすめ広告やSNSにおける顔認識、その他Amazon AlexaやGoogle Home, Siriなど、身近な技術に活用されるようになった。
そんな、「AI」「機械学習」「ディープラーニング」に最適化されたマシンとして、NVIDIA社から「ELITE SOLUTION PROVIDER」※として表彰された、GDEP アドバンスの「DeepLearning BOX」がある。これから2回にわたって、このマシンのもつポテンシャルを探っていきたい。
※製品に関する深い知識と販売実績を誇るパートナーに与えられる賞
まず、一回目はマシンにプレインストールされているWindows 10環境を使って、「TensorFlow」と「Cognitive Toolkit(CNTK)」の2つのフレームワークを試してみることにする。
目次
ディープラーニング用にチューニングされた高性能マシン
多くの対応フレームワーク
MNISTを使ったディープラーニング
機械学習における文字認識とは
TensorFlowによる深層学習を試す
Cognitive Toolkit (CNTK)による深層学習を試す
「DLスタートアップサポート」もあり
ディープラーニング用にチューニングされた高性能マシン
今回のマシンのスペックは以下のとおり。
このスペックを見ると、非常に高性能なグラフィックボードや潤沢なメモリが搭載されている。これらは、ディープラーニングで行なう演算や並列処理のために必要になるからだ。
普段、我々が利用するパソコンなどに搭載されているCPUは、OSの処理やアプリケーションでの計算など、あらゆる演算や処理をしている。
このようなCPUは、あらゆる処理ができるよう汎用的な処理能力をもつ。
それに対して、グラフィックボードに搭載されるGPUは、「3D」や「コンピューターグラフィックス」に用いられる行列計算などの演算に強いことが特徴である。
機械学習やディープラーニングにおいて、与えられたデータを使って、「画像」や「音声認識」「未来予測」などを行なうためには、これらの結果もたらすような数式やパラメータを見つけるために、膨大な演算を必要する。
たとえば、気温の予測を考えてみると、1年分の気温情報から明日の気温を推測するには、過去の気温がどのように上下していたかの情報を基に推測する。
このとき、推測の方法として、この気温情報を同じに上下を繰り返す関数の数式を想定する。関数は入力値、重み付け※などのパラメーターから数式を作成し、より現実に近い気温情報が算出できるよう調整する。
そして、実際の気温情報と比較しながら、これらの重み付け部分を調整することで精度を向上させ、その数式が算出する結果が正しいかの検証をする。
※重要度の応じて、たとえば5段階で数字をつけて、重要度を数値で表わすこと。
つまり、ざっくりとまとめると、以下のような手順となる。
- 与えられるデータから未来を予測する数式を考える
- 指定されたパラメータの善し悪しを判定する判定関数で検証
- パラメータの善し悪しの判定を行なう
これらの手順を繰り返し行なうことで、より現実に近いモデルを探し出すことができる。
そして、この処理をするため、高い演算能力が重要となる。
GPUは、画像処理の際の計算に特化しているため、画像処理演算であれば、CPUの数倍から数百倍以上の性能であると言われている。
「DeepLearning BOX」は、高度なGPUをもつグラフィックボードを最大4枚まで同時搭載可能なため、並列演算できるフレームワークを使えれば、GPUの搭載数に応じた演算能力を発揮することができる。
もちろん、GPUほかにも、CPUにXeonプロセッサーを選択できたり、SSDを増やすなど、細かなカスタマイズも可能だ。
また、あらかじめ多くの深層学習フレームワークやサンプルのモデルなどがプリインストールされており、すぐに深層学習が始められることも、特徴のひとつである。
多くの対応フレームワーク
ディープラーニングをはじめるには、まず基盤となるフレームワークの選択から始まる。
「DeepLearning BOX」は、主要なフレームワークに対応しているため、さまざまな選択肢から好みのフレームワークを利用することができる。
また、多くのディープラーニングフレームワークの推奨環境に合わせた機器構成となっているため、ライブラリとの相性も非常にいい。
初学者にとっては、フレームワークを利用する際のトラブルも少なくなる上、ライブラリの性能を充分に発揮することができる。
このように、入り口のハードルが大きく下ることは、大きなアドバンテージと言えるだろう。
DeepLearning BOX 対応フレームワーク
ここで紹介した以外にも、多くのライブラリが利用できる。
MNISTを使ったディープラーニング
ここからはフレームワークを使って、実際にディープラーニングを体験してみることにする。
今回は、多くのフレームワークのチュートリアルで使われている「MNIST」を使った文字認識を行なう。
「MNIST」は、手書きの数字画像に正解ラベルが与えられているデータセットで、以下のような60,000枚の手書き数字画像と10,000枚のテスト画像で構成されている。
各文字の画像は28×28ピクセルで、データサイズもそれほど大きなものではないので、手軽に入手できる。そのため、ディープラーニングのチュートリアルなどでは頻繁に利用されるデータセットだ。
機械学習における文字認識とは
今回、「MNIST」のデータセットを使用して文字認識させるディープラーニングを行なうが、機械学習では文字認識どのように進められるか、簡単に説明しておこう。
機械学習には、気温や株価など時系列に変化するようなデータなどから未来を予測する「回帰」やスパムメール判定や画像認識などの「分類」、画像認識で使用されるようなデータにラベルがついてはいないが「この地域にいる生物はこのような傾向がある」といったデータから傾向や特徴を分類する「クラスタリング」などがある。前者の「回帰」「分類」のように「気温」「この画像は何である」などのラベルが付与されたデータから推論するような学習を「教師あり学習」とよび、「クラスタリング」のようにデータにラベルがついていない学習を「教師なし学習」と呼ぶ。ここで行なうのは「教師あり学習」となる。
「MNIST」の画像は、それぞれ「この文字は1」「この文字は2」といった「正解ラベル」が与えられているデータであり、これらの情報を「ニューラルネットワークモデル」と呼ばれるアルゴリズム・計算式の階層に入力し、計算式に含まれるの重み付けなどのパラメータによって文字を識別する精度を上げていく。
つまり、対象が複雑であればあるほど、この計算式やパラメータは複雑なものとなり、これらの精度を上げるためには、何層もの階層をもつニューラルネットワークによって、多数のデータを使ってパラメータ調整を繰り返す必要がある。
そのため、高度な演算を並列で可能な「DeepLearning BOX」は、手元で手軽に深層学習を試せる環境として、ありがたい存在と言える。
TensorFlowによる深層学習を試す
最初は、Googleが中心となって開発し、オープンソースソフトウェアとして公開されている機械学習ライブラリである「TensorFlow」 で「MNIST」の手書き文字認識のサンプルを実行してみよう。
以下は、実際にDeepLearning BOXを使ってMNIST For ML Beginnersを実行した様子である。
「MNIST For ML Beginners」は、Softmax回帰という関数※を用いた手書き文字認識のチュートリアルとなっており、この段階では精度がおよそ89.97%程度となっていることがわかる。
※ニューラルネットワークの計算に使われる、あるベクトルの各要素の和が1になる、もしくは全要素の和が0~1になる関数。
続けて、「Deep MNIST for Experts」を実行した様子は、以下の通りである。
トレーニングを重ねる都度、精度が向上しており、平均99.2%まで精度を上げることができるようになった。
Cognitive Toolkit (CNTK)による深層学習を試す
次はMicrosoftが開発しているOSSの深層学習フレームワークである「Cognitive Toolkit(CNTK)」で「MNIST」の手書き文字認識のサンプルを実行してみよう。
CNTKは、GPUを活用した並列処理を得意としているライブラリで、深層学習で多く利用されるプログラミング言語Pythonに加えて、C#, C++, Javaなどからも利用できるところが特徴だ。
CNTKのチュートリアルはGitHub上に公開されており、チュートリアルのなかの103シリーズからが「MNIST」を用いた内容となっている。
以下は、CNTKのチュートリアル「畳み込みニューラルネットワークによるMNISTの文字認識」を実行した様子である。
「DLスタートアップサポート」もあり
このように、初学者の筆者であっても、簡単にディープラーニングを試すことができた。
他にも経験豊富なスタッフによるサポートが受けられる「DLスタートアップサポート」などのサービスも用意されており、これから深層学習を利用したいと考えているのであれば、これらのサービスも心強い味方となってくれるだろう。
***
次回は、DeepLearning BOXのLinux版を使って、どのように深層学習を行なえるかレビューしたい。
【関連リンク】
・『DeepLearning BOX』ではじめるディープラーニング② DIGITS + Caffeで画像認識
・株式会社GDEPアドバンス