WirelessWire News Technology to implement the future

by Category

ブラウザから手軽に深層学習AIを教育できるオープンソースソフトウェア

You can train a deep neural network on your web browser

2015.12.24

Updated by Ryo Shimizu on December 24, 2015, 06:00 am JST

 先日発表した深層学習(ディープラーニング)をWebブラウザ上から手軽に行うためのオープンソース・ソフトウェア、「DEEPstation(ディープステーション)」をついに公開しました。現在、Githubより誰でもダウンロードして使用することが出来ます(https://github.com/uei/deepstation)。

スクリーンショット 2015-12-23 14.37.21

 DEEPstationは、ディープラーニングを手軽に実験するためのGUIベースのアプリケーションで、以下のような特徴があります。

  • 国産ディープラーニングフレームワークとして人気の高いChainerベース
  • Web経由で全機能を利用可能
  • 学習用データセットの中身の確認/編集が可能
  • 任意のエポックの学習済みモデルとラベルをダウンロード可能

 DEEPstationと同様のWebベースのGUI環境としてはNVIDIA Digits(https://github.com/NVIDIA/DIGITS)がありますが、こちらはカリフォルニア大学のCaffe(https://github.com/BVLC/caffe)ベースであるというのが大きな違いです。

 また、NVIDIA Digitsは必要最低限の機能はあるものの、完全なリモート環境から利用するには無理のある仕様などがあり、UNIXの知識が必要となる部分が多く、クラウド向きではありませんでした。

 DEEPstationは、例えばAmazon Web Servicesのようなクラウド環境からも手軽に利用することができます。

 DEEPstationをインストールする際にはUNIX(LINUX)のコマンドラインに降りる必要がありますが、一度設定してしまえば、後は全く予備知識がなくても使えるようになっています。

 今、ディープラーニングで特に注目されているのは、分類問題、特に画像分類の問題に関してです。

 2015年の頭にGoogleおよびMicrosoftが相次いで達成した誤答率5%未満というスコアは、人間に同じ問題をやらせるよりも好成績です。

 つまりこれまでコンピュータには非常に難しいとされてきた画像認識、画像分類の問題でさえも、ディープラーニングを使うと機械学習で解くことができるのです。

 そして今最も注目を浴びているのもこうした機械学習による画像分類です。
 しかし、とはいえまだまだ「これが万能」という解があるわけではなく、分類したいものによって集めるべきデータの総量や、分類の粒度(何種類に分類するか)、分類の方針(どのように分類するか)といったことに関しては手数が必要な段階です。

 理論的な整備が一通り終わったので、第一線の人工知能研究者たちは次の段階を模索していますが、深層学習されたAIを実用レベルに落とし込もうとするときは、研究者向けとはまた違った視点による人工知能への理解が必要になります。

 元に筆者らのもとには、なんとか日々の業務に深層学習AIの成果を活かせないか思案している方々からの相談が舞い込んできており、それは計算機科学はもちろん、金融から医療、美容まで多岐に渡ります。

 様々な業種、業態が持つローカルなビッグデータを活用し、仕事全体を効率化したり、業務全体を高速化したりするときに、ディープラーニングを活用できないか、というわけです。

 しかしそうした様々な業界の人々のみんながみんな、複雑な数式や専門的な用語、LINUXのコマンドラインなどの知識を擁しているわけではありません。

 そういう人たちにこそ、このDEEPstationを活用していただきたいのです。

 実際に深層学習させる学習データセットというのがどのようなものになっているかというと、下図のように雑多な画像の集まりになっていることが多いのです。

スクリーンショット 2015-12-23 14.38.01

 こうした画像を収集し、分類し、内容を確認することができます。
 ある画像を他の画像と混同するとしたら、それはどういう理由なのか、ということを類推するには、実際に学習に使われたデータを見るのが一番です。

 これはまだ公開されているDEEPstationには入れていない機能ですが、例えば学習済みの各中間層がどのような形になっているかを視覚的に把握することもできます。

 実際にどのようになるか視覚的に説明しましょう。

 まず、顔や自動車、食べ物など、スマートフォンでよく撮影される写真に写っていることが多いものをジャンル別に深層ニューラルネットワークに学習させます。構造としては一般的に研究に用いられるNIN(Network In Network)という畳込みニューラルネットワーク(Convolutional Neural Network)を使います。

 画像データセットはまず普通のOSのファイルシステムを使って作ることが出来ます。

スクリーンショット 2015-12-23 15.49.49

 こんな感じで、分類名ごとに画像をフォルダ分けして、zip圧縮してアップロードするだけです。

 次に学習させるには、「Models」→「New」をクリックして、学習するニューラルネットワークを指定します。

スクリーンショット 2015-12-23 15.50.57

 最初から典型的な画像分類用の深層ニューラルネットワークの構造がプリセットされているので、それを選んでから独自のカスタマイズを加えることもできますし、そのまま学習させることもできます。今回はNINを選んでそのまま学習させてみることにします。

 学習が進んでいくとグラフで表示されます。

 分類方法がマズイと、loss(学習ロス)が下がっているのにaccuracy(正解率)が安定しない状態になります。

スクリーンショット 2015-12-23 14.40.22

 そこで試行錯誤を繰り返してaccuracyを上げるような学習データセットを試行錯誤して作っていくわけです。

 うまく学習できると下図のように綺麗なグラフになります。

スクリーンショット 2015-12-23 14.40.33

 大体数時間である程度の学習は収束します。

 今回は100エポック(学習ループの単位)ほど学習させた結果、第一層は以下のようになりました。

スクリーンショット 2015-12-23 15.30.54

 この図は、赤ほど値が高く、青ほど値が小さい、温度グラフのようになっています。
 それぞれの小さな正方形は、画面全体を小さく畳み込んで学習した結果できたフィルターです。

 このニューラルネットワークに、たとえば女性の顔を見せてみましょう。
 正しく判別できるでしょうか。

 今回は、フリー素材の「ぱくたそ」から画像をお借りしました(https://www.pakutaso.com/20151246350post-6464.html)。

スクリーンショット 2015-12-23 15.25.15

 例えばこの画像ですが、ここから顔の部分だけ切り出します(実際に使用する時は画面の一部に意味がありそうか、顔に見えるか見えないかなどの機械学習手法を組み合わせて特徴になりそうな場所を切り出します)。

paku

 今回は正方形のニューラルネットワークに見せるので、できるだけ正方形に近い形で切り出しました。
 もちろんこれはニューラルネットワークの学習のさせ方によって、正方形ではない場合もあり得ます。

 これを先ほどのフィルターにReLUと呼ばれる活性化関数を通すと以下の様な結果が得られます。

スクリーンショット 2015-12-23 15.37.40
 

 ひとつの小さなマス目がそれぞれ画像全体との相関関係に対応しています。

スクリーンショット 2015-12-23 15.39.30

 赤に近い色が出てるほど、そのニューロンが強く反応しているということです。

 これを畳込みするとフィルターはだんだん小さく、数は多くなっていきます。

 第二層はこんな感じ

スクリーンショット 2015-12-23 15.40.50

 第三層はもっと細かく深く

スクリーンショット 2015-12-23 15.41.01

 第四層はさらに小さく数多くなります

スクリーンショット 2015-12-23 15.41.08

 このように増やしていって、最終的には1000種類の分類にまで落とし込みます。

スクリーンショット 2015-12-23 15.46.33

 今回の場合、6種類の分類なので、こんな感じで左上6種類だけが何らかの結論めいたものを得ています。
 これをSoftmax関数で重み付けしなおすと、次のようになります。

スクリーンショット 2015-12-23 15.47.59

 すると赤が一つだけになります。5番目のニューロンです。今回の学習データでは、5番目のニューロンは女性の顔に対応するニューロンでした。つまりめでたく、顔と認識されたことが確認できました。

 DEEPstation上でも、Webだけで簡単にこの学習が上手くいた事を確認できます。

 「Inspect」ボタンを押して.jpgファイルをアップロードするだけで確認できるのです。

スクリーンショット 2015-12-23 15.56.59

 AIの学習をどうすれば効率的にできるか。
 というのはAIを実用的に使うためにはとても重要なテーマであるものの、いまいち研究したくならない分野です。

 というのも、「こんなふうに学習データセットを作るとうまく学習できる」というのは、AIの研究者にとってはあまり面白味がなく、論文にもなりにくいからです。

 研究者の業績は論文の数で評価されてしまうので、論文にならない研究にはなかなか時間が割かれません。

 一方、我々のような実務家、実業家にとって重要なのは「それがどの程度実用的に使えるのか」「どんなデータなら分類できるのか」「他の方法よりもマシなのか、そうでもないのか」ということを知ることです。

 それがある程度理解できるようになれば、学習用のデータを集めたり、AIが学習しやすいように加工したりすることには非常に大きな意味があります。そのためには専門の研究機関よりも実際にデータを持っていて日々そうした判断に接している人々が手軽に試す環境が必要です。

 その意味で、この分野が実業に降りてくるのはまさにこれからです。

 2016年はきっとそういう年になるでしょう。

 実際、弊社ではDEEPstationの社内βテストが始まった瞬間からプログラミング経験もLinuxの操作の経験もない営業マンが自発的に客先に関係する様々なデータの分類を試し始めました。Webベースだと社内イントラネット上で「この学習データはどこがマズイのか」「どうすればもっと効率的に学習できるか」といったことも議論できるようになっており、これもまた有効なコミュニケーションツールになっています。

  
 DEEPstationはLinuxの知識がなくても、様々な方に使って実験していただけるよう、学習用マシンと初心者向けセミナーの開催も予定しています。

 こちらは年明けくらいにはご紹介できるでしょう。
 ではメリークリスマス

WirelessWire Weekly

おすすめ記事と編集部のお知らせをお送りします。(毎週月曜日配信)

登録はこちら

清水 亮(しみず・りょう)

新潟県長岡市生まれ。1990年代よりプログラマーとしてゲーム業界、モバイル業界などで数社の立ち上げに関わる。現在も現役のプログラマーとして日夜AI開発に情熱を捧げている。

RELATED TAG