「話題」から「実用」へ - ディープラーニングとは

ディープラーニング(深層学習)の成果を企業活動に生かそうという取り組みが活発化している。ベンダー各社によるツールの展開が進んだことで、一般企業でもディープラーニングの成果を利用しやすくなってきているのだ。

ニューラルネットワーク
ニューラルネットワークとは、神経細胞(ニューロン)を数学的にモデル化し学習器に応用したもの。ニューロンは興奮状態が伝わると電位のレベルが上昇し、閾値(いきち)を超えると自ら発火して次のニューロンに興奮状態を伝える。こうしたニューロンの動きを数学的に模擬することを念頭において考え出されたものが、現在のディープニューラルネットワークに繋がっている

従来、機械学習の技術を使って、さまざまな認識や自動分類をさせる場合に大きな課題となっていたのは、対象となるデータからいかに有効な特徴量を抽出するかという点であった。ディープラーニングが登場するまでは、特徴抽出の部分を試行錯誤で人間が探索していたため、そこには相当の知見や技術が求められ、膨大な工数が必要となっていた。

一方、ディープラーニングでは、この特徴抽出の部分をデータから学習させることができる。人の手を介さず、データで学習させることができるのが大きな違いだ。特に、近年注目されている「畳み込みニューラルネット(CNN)」では、畳み込み層、プーリング層、正規化層といった層を積み上げて、深いネットワークを構成することで画像のカテゴリ認識と呼ばれるタスクにおいてその精度を飛躍的に向上させることに成功している。

ディープラーニングでは、特徴抽出もデータから学習可能。これまで人間が試行錯誤しながら探索していたが、人の手を介さず、データで学習させることができるようになった

この畳み込みニューラルネットは現在、ディープラーニングの代表格とも言えるもので、コンピュータによる画像の認識精度向上に取り組む国際コンペティション「ILSVRC」においても、2012年に登場した畳み込みニューラルネットは、それまでの誤り率の記録を10ポイント以上も更新して、世界の研究者たちを驚かせた。

参考:
ディープラーニングの研究開発で、交通事故の減少に取り組む
- デンソーアイティーラボラトリ
http://news.mynavi.jp/series/mwj/002/

同技術はその後、実用化へ向けた動きが加速しているが、そのためのフレームワークのひとつとして注目されているのが、本稿で紹介するMathWorksが提供する科学技術計算のための統合開発環境である「MATLAB」だ。

MATLABであれば、ディープラーニングがわずか数分で利用可能に

MATLABには、コマンドやライブラリを追加して機能を強化できるツールボックスという仕組みがある。機械学習に関するツールボックスの1つである「Neural Network Toolbox」では、従来から分類や回帰に利用されている2層のニューラルネットワークや自己組織化マッピングを始めとしたさまざまな手法をサポートしている。

特に、2016年にリリースされたR2016aからは「畳み込みニューラルネット(Convolutional Neural Network: CNN)」「リカレントニューラルネット(Recurrent Neural Network)」「積層自己符号化器(Stacked Autoencoders)」などのアルゴリズムも追加され、ディープラーニングをどのような組織でも、容易に活用を行うことが可能となった。

MATLAB(R2016a以降)のディープラーニング提供図。ニューラルネットワークツールボックスにより、ディープラーニングを簡単に利用できる。インストール後すぐに利用でき、サポートも充実している点が特徴だ

MATLABでは、Neural Network Toolboxをインストールすればすぐに利用でき、画像認識を活用したアプリケーションも数分もあれば開発できるようになっている。本稿の後半では、MATLABを用いた「PCとWebカメラを使って、特定の時間内にカメラにどんな物体が写ったかをディープラーニングを用いて識別するアプリケーション」の開発についても紹介するので、ぜひ参考にしてほしい。

「転移学習」で畳み込みニューラルネットの成果を活用

先ほど「数分もあれば開発できる」と記載したディープラーニングだが、膨大なデータを使って学習させる必要がある背景で、わずか数分でディープラーニングを活用したアプリケーションを開発することは通常かなり難しい。たとえば、先に述べたILSVRCと呼ばれるコンペティションでは、1000カテゴリの物体を認識させるために、各カテゴリ毎に1000枚の画像が用意されており、こうした大量の画像の学習には、高性能なGPUを利用したとしても、数日は必要となると言われている。

企業が何か新しいアプリケーションや研究開発を行う際に、そうした大量の画像データを用意して、ゼロから畳み込みニューラルネットを学習させていては、時間も手間もかかってしまい、誰もが試せるようなものではなくなってしまうだろう。そこで考えだされたのが「転移学習」と呼ばれる手法である。

転移学習転移学習とは、学習済みのネットワークを他のタスクに転用する手法を指す。大量の画像を使って学習させた畳み込みニューラルネットを、画像の特徴抽出器として使い、新たな分類器を組み合わせることで、新しい分類のタスクに転用する手法である

この転移学習では、あらかじめ大量の画像で学習させておいたニューラルネットを準備しておく。たとえば、2012年のILSVRCで優勝した Alex Netと呼ばれるネットワークを準備しておく。そして、もしもイヌとネコの画像のカテゴリ分類をすることが必要になった場合、畳み込みニューラルネットワークをゼロから学習させるのではなく、この Alex Net をこのタスクに転用する。つまり、このネットワークを使って画像からの特徴抽出を行い、新しい分類器と組み合わせることでゼロからの畳み込みニューラルネットワークの学習を避けることができる。こうして作った分類器は性能も比較的高いうえに、学習のための計算量も少ないというメリットを持っている。

畳み込みニューラルネットと転移学習。転移学習は、学習済みのネットワークを他のタスクに転用する手法。新しく付けた分類器でのみの学習で済むので計算が軽くなるうえ、高性能だという

一般的にディーブラーニングによる画像認識を行う場合には、膨大な数の画像と、高性能なGPUが必須となるが、、転移学習の手法を応用することで、そうした手間やコストは回避することが可能となるのだ。カメラで撮影したような自然画像であれば、こうしたやり方で高性能な画像認識のシステムを手軽に作ることができるのだ。

たとえば、一見すると非常に似通った「タンポポ」と「フキタンポポ」の分類なども、この転移学習を使うことで簡単に実現することができる。

転移学習を使った応用例。畳み込みニューラルネットを特徴抽出器として転移学習を行い、人間の目では見分けがつきにくいタンポポとフキタンポポを見分けている

人間の目では見分けがつきにくい画像の分類という点では、医療画像への応用も考えられる。下の画像は、マラリア、トリパノソーマ症、バベシア症といった感染症に感染した血液の顕微鏡画像であるが、こうした画像の分類もこの転移学習を使うことで、簡単に実現することができる。

医療画像への応用例。転移学習を使い、マラリア、トリパノソーマ症、バベシア症といった感染症を識別している

さらに製造業や小売業での利用も進んでいる。製造業で最近特に多いのは、自動運転にかかわる画像認識だ。道路上の白線を認識して走行を制御したり、車間距離の測定、前方や後方の障害物の測定など、画像認識の活用範囲は多岐にわたっている。小売業では、店舗への来店数の把握のほか、店舗内での顧客の動線把握、陳列棚での目線の移動の把握といったことに使われている。学習を進めることで、より画像の正確な認識把握が可能になる。

画像認識の応用例はアイデア次第で今後大きく広がる可能性を秘めている。畳み込みニューラルネットと転移学習は、そうしたビジネスを支える強力なツールになっているのだ。

ディープラーニング活用におけるMATLABの強み

ここまで触れてきた通り、MATLABは、ディープラーニングのビジネス活用にさまざまなメリットをもたらす。大きな特徴として挙げられるのは、さまざまな機器と連携がしやすく、使い勝手がよいこと。そして、ディープラーニングを含めたさまざまなアプリケーションを開発するためのツールボックスが集約されている点にある。

たとえば、PCとWebカメラを使って、特定の時間内にカメラにどんな物体が写ったかを識別するアプリケーションを開発することを考えてみる。カメラの映像として映るのは、電話、スマートフォン、照明、人物、ネコなどさまざまなものがある。

一般的には、カメラの制御、映像の解析、統計処理、ディープラーニングなどを開発していく必要がある。だが、MATLABなら、ニューラルネットワークのための「Neural Network Toolbox」、映像解析のための「Computer Vision System Toolbox」、画像処理のための「Image Processing Toolbox」、統計と機械学習のための「Statistics and Machine Learning Toolbox」などをインストールし、コードから呼び出すだけで、簡単にアプリケーションが開発できてしまうのだ。

実際に、ImageNetと呼ばれる学習済みの畳み込みニューラルネットを呼びこむ際には、以下のように指定すればいい。簡単な指定で開発できるというのが、お分かりいただけるだろう。

convnet =helperImportMatConvNet('imagenet-caffe-alex.mat');

この中には、大量の画像データを学習させたニューラルネットの情報が集約されている。画像データベースは、1000のカテゴリを持ち、各カテゴリが1000枚以上の画像からなっている。それをconvnetとして利用可能だ。

次に、以下のようにすれば、「im」という変数に入った画像をこのニューラルネットに認識させ、「Ypred」と「score」という変数で認識結果を得られる。

[Ypred, score] = classify(convnet, im_);

また、Webカメラ映像から移った物体の画像をimとして取り込む際は、以下のようにすればいい。

wcam = webcam;
im = snapshot(wcam);

MATLABで提供しているツールボックスの一部

取得したデータは日時や物体名とともに統計処理することもできる。画像の取得からディープラーニングを使った画像認識までがわずか数行で実現できてしまうのだ。

MATLABではこのように、ツールボックスを連携させることで、さまざまな解析をスムーズ行うことができる。ツールボックスは90ほどあり、どんなアプリケーションを作りたいかに応じて適切なものを柔軟に組み合わせることが可能だ。

ソフトウェアだけでなく、ハードウェアとの連携も容易だ。例えば、RasberryPiと組み合わせてセンサデータを取得したり、iOSから3軸の加速度データやジャイロのデータをストリーミングで取得するといったことも可能である。

各種ドキュメントが閲覧できるサポートページや、ユーザー投稿も含めた充実したサンプルコードを利用できるFile Exchangeなどを用意していることで、初めてMATLABを利用する場合でもすぐに必要な作業を開始することができる

MATLABはすでにものづくりの現場で長い実績のあるツールだ。Webサイト上での情報の多さ、充実したコミュニティ、エンジニア経験のあるスタッフによる手厚いサポートなど、MATLABの良さは、そのままディープラーニングの取り組みでも活用することができる。初心者にも使いやすく、畳み込みニューラルネットなどの最先端の技術にも対応する製品として、うまくビジネスに生かしてほしい。

関連サイト

Webセミナー:MATLAB によるディープラーニング
http://jp.mathworks.com/videos/deep-learning-with-matlab-119998.html

解説:MATLAB による機械学習
http://jp.mathworks.com/solutions/machine-learning/

(マイナビニュース広告企画:提供 MathWorks Japan)

[PR]提供: