2015年7月8日水曜日

ディープラーニングを小学生でも使えるようにしてみる

http://wirelesswire.jp/2015/06/32460/

この一ヶ月で、ディープラーニングが急激に使いやすくなってきています。
Google傘下のディープラーニング研究グループDeep Mindでインターンをしているスタンフォード大学の学生はこんな台詞をツイートしています。
スクリーンショット 2015-06-30 5.57.49
「ディープラーニングに関して、新しくクールな論文が発表される速度は、それを読める速度より速い」
それこそ毎日のようにディープラーニングに関する何らかの新しい話題が出てきます。
それくらい、ディープラーニングは盛り上がっているのです。
「人工知能は人間を超えるか」を記した東京大学の松尾豊先生によれば、「ディープラーニングはWebの発明に匹敵するほどの発明」とのことでしたが、なぜそれほどまでに世界中の研究者が夢中になるのか、筆者も自分がディープラーニングの世界にどっぷりと漬かってみることによつてようやく理解できてきました。
そしてその興味はいまや確信に変わりつつあります。
確かにこれはWebの発明、いや、ひょっとするとコンピュータそのものの発明に匹敵するくらいのインパクトを生み出すのではないかと。
この数十年、人工知能の研究は「機械学習」と呼び替えられ、迷惑メールフィルタやAmazonなどのオススメ商品の推薦といった分野にもっぱら使われてきました。
しかしここに来て突然、ディープラーニングは脚光を浴びることになります。
理由はいくつかあります。
機械学習を理解するには、相当な数学的センスと知識が必要でした。
これは今でもあまり変わっていません。
昨日、ふと秋葉原の書泉ブックタワーにでかけていって、ディープラーニングに関して言及した書籍を探してみると、まず技術書の中で、ディープラーニングを専門的に扱っている本は一冊も見つかりませんでした。
Amazonで検索すると、辛うじて「深層学習(機械学習プロフェッショナルシリーズ)」という本が引っかかります。
そして他の「機械学習」はどれもディープラーニング以前の時代に書かれたものばかりなのです。
こういう光景には、見覚えがあります。
それは1994年の書泉ブックタワーでした。

大学に入学したばかりの私は、当時3Dプログラミングにどっぷりと浸かっていました。
その頃はまだプレイステーションすらも発売されておらず、リアルタイム3Dを駆使したゲームは、片手で数えるほどしかない、そんな時代です。
新潟の片田舎から上京してきた私は、東京の秋葉原の書店ならきっとたくさんの本があるのだろうと期待に胸を膨らませながら書泉ブックタワーに向かいました。
その頃はAmazonのような便利なしくみがなかったので、本を探したければ、足で探すしかなかったのです。この時代はGoogleはおろかYahooすらありません(Konishikiというコードネームでスタンフォード大学のジェリー・ヤンとデビッド・ファイロがYahooの原型を作っていた頃です)。
ところが東京の書店に来ても、リアルタイムの3D処理について言及している書籍はほとんどありませんでした。
肩を落とした私は、ふと、見慣れない書籍がずらりと並ぶコーナーを訪れます。
そこは輸入書のコーナーでした。
するとそこには、リアルタイム3D処理に関する書籍がずらりと並んでいたのです。
私は衝撃を受けました。
日本語の書架をみれば、当時はリアルタイム3D処理に関して日本人の誰もが興味を持っていないことは明らかでした。書籍を書けるほどの知識も蓄積されておらず、学生が書く連載が1,2本、雑誌に載っているだけでした。
一方、海外では、信じられないほど多くの人がリアルタイム3D処理に熱中し、研究し、日本の何年も先を行っていたのです。

この時、私は時代の風を感じました。
今自分が見つめるこの場所が、紛れも無いフロンティアであることを知ったのです。
その年の暮れにプレイステーションが発売され、当初の予想を覆すほどの大ヒットとなりました。

私はゲーム業界に身を投じ、3年後にはリアルタイム3D処理に特化した書籍を執筆し、ちょっとしたベストセラーとなって、それがきっかけで在学中に米Microsoft corpの仕事を引き受けることになります。今やリアルタイム3D処理は、スマートフォンのブラウザーですら当たり前のように用いられています。あの頃、日本人の技術者、プロのエンジニアと呼ばれる人たちがまるごと無視していた領域にこそ、本当のフロンティアがあったのです。
この頃はまさに時代の潮目であり、それを最初に感じたのはあの書泉での体験でした。

ディープラーニングに関して、私は今同じような感覚を感じています。
大半のビジネスマンは未だディープラーニングをバズワードの一種と捉えています。確かにこれまで、似た考え話にたくさんの肩透かしを食らってきました。
文字認識、音声認識、といった分野は今も着々と認識率を上げていますが、それでも100%とは程遠いといった印象です。Siriに一発で自分の言葉を意思どおりに入力できる人はまだ少ないでしょう。
要するに機械学習の一番身近な成果は、Siriの音声認識やWindowのタブレットに搭載されている文字認識であり、それが100%とは程遠いことを人々は体験的に知っているからです。
そしてディープラーニングによる画像分類も、確かに認識率だけ見れば、まだ良くて96%程度と、音声認識が99.8%くらいまで迫っているのに比較するとまだまだという印象を拭えません。

しかし決定的な違いは、ディープラーニングによる分類には汎用性があるのに対し、音声認識や文字認識といった分野は汎用性が狭いことです。文字認識なら文字認識に特化したノウハウが必要ですし、音声認識なら音声認識に特化したノウハウが必要です。
ディープラーニングはそのどちらにも応用可能であるだけでなく、もっと他のことにも応用が期待されます。

一例を挙げれば、例えばPhotoshopなどで使われる画像フィルタの入力画像と出力画像のペアをディープラーニング・ニューラルネットワークに大量に学習させると、そのニューラルネットワークがそれまで見たことがない画像を入力しても、Photoshopのフィルタと全く同じように画像を処理するようになります。これは、単純なアルゴリズムなら、ニューラルネットワークが学習・模倣できてしまうことを意味します。

文字認識や音声認識はクリティカルな使用法を想定するから問題が起きるのであって、クリティカルでない使用法を想定すれば、もっと自由に使えるようになります。

さらにプリファード・ネットワーク(PFN)のオープンソースフレームワーク、Chainerの出現です。

Chainerはそれまで機械学習の専門的知識を持った人のみを対象としていた学習環境に比べて、ディープラーニングによるニューラルネットワークをより簡単に素早く扱えるように設計された新世代のフレームワークです。
Chainerは、それまでディープラーニングの主流フレームワークのひとつであった、カリフォルニア大学バークレー校を中心にGoogle、NVIDIAで使用されているCaffeというフレームワークの1/10の記述量で画像分類のニューラルネットワークを記述することができるというシンプルさがウリです。

さらに、jetpac Deep Belief SDKというオープンソースのライブラリを使用すると、ディープラーニングされた画像認識エンジンをだれでも簡単に扱うことができるようになります。
このSDKでは、「jpcnn_classify_image」という関数をひとつ呼ぶだけで、画像を認識し、その画像に含まれるものをテキストで返します。
いわば画像を入力するとテキストが返ってくるブラックボックスなわけですが、これをツールとしてスマートフォンアプリやRaspberry Piに組み込むことで様々な分野へ応用できるというわけです。
ここまで簡単になると、もはやディープラーニングは研究者の手を離れて、エンドユーザーに近い人々が何か新しい利用法を考える段階と言えます。

そこで試しに、弊社で開発中のiOS向けプログラミング開発環境MOONBlock DXにこの機能を組み込んでみました。

MOONBlock DXはスマートフォンだけで独立してアプリを開発することができる開発環境ですが、例えば画像認識するプログラムはこのように書くことが出来ます。
スクリーンショット 2015-06-30 6.34.43
これは、ボタンが押された時に写真を撮影し、「画像認識」というブロックに「写真」を渡すと、認識された画像の候補をアラートボックスに表示するという簡単なサンプルです。ものの数十秒で作ることが出来ます。
早速実行してみましょう。
スクリーンショット 2015-06-30 6.34.49
起動すると、シンプルに撮影ボタンだけが表示されます。
これをタップするとカメラが起動します。
スクリーンショット 2015-06-30 6.34.59
試しに会社の机にあったディキシーカップを撮影してみます。
すると、数秒も待たずして内蔵されたニューラルネットワークから推定結果が返ってきます。
スクリーンショット 2015-06-30 6.35.04
このDeep Belief SDKに内蔵されたニューラルネットワークは当然海外で教育・訓練を受けたものなので、日本人がイメージするようなものとは違うものを教育されています。それでもディキシーカップを認識したのは優秀だと思います。
他のものも試してみましょう。
スクリーンショット 2015-06-30 6.35.11
筆者のMicrosoft Surface3はどうでしょうか。
スクリーンショット 2015-06-30 6.35.16
とにかくコンピュータと認識されているようです。
このMOONBlock DXに搭載されたニューラルネットワークは、およそ1000種類の画像を判別します。
ですが日本向けにニューラルネットワークを教育しなおしたほうが良い結果が得られそうです。
たとえば郵便ポスト一つとっても各国で形が異なります。
今後はニューラルネットワークのローカライズが重要になってくるでしょう。
しかしここまで来ると、名実ともに、ニューラルネットワークを手軽に使える時代がやってきました。
画像分類タスクはひとつの例に過ぎませんが、今後もディープラーニングを応用した様々なタスクが現れ、そしてこんなふうに簡単に使えるようになっていくでしょう。

こういう時代は控えめに言って、驚くべき時代です。
これまで、プログラミングといえば、プログラマーの独擅場でした。
プログラマーは全てのロジックを理解し、積み上げ、デバッグして納品する、それが当たり前の作り方でした。
これからはそのワークフローが少し変化するかもしれません。
プログラマーがプログラムを組むのはしばらくは変わりませんが、それと並行してプログラマーではない人、たとえば仮にそれを「AIトレーナー」と呼ぶことにしますが、彼または彼女が、チームリーダーの指示にしたがって人工知能を教育するための学習データを収集・整備し、次々と人工知能を教育(トレーニング)していきます。

実際、弊社ではディープラーニング用の学習画像データ・セットを集めているのはアルバイトや事務、秘書など、それまで全くコンピュータやAIに対する専門性を持っていなかった人々です。そして一口に「学習画像データセット」と言っても、無数の可能性があります。インターネットで画像を拾ってくるだけでは、本当の意味での現実世界の認知は不可能です。

つまり学習画像データ・セットを集めるには文字通り教育的なノウハウが必要で、そうしたノウハウはむしろAIの専門家よりも人間の教育の専門家の方がよほど効果的に学習データを集めることができるようになるかもしれません。
それはそれまで存在しなかったタイプのノウハウです。この学習データセットを収集するというのも立派にひとつの仕事として成り立っていくでしょう。

プログラムを納品する段階でトレーニングしたAIと、プログラム本体を一緒に納品し、さらに納品後も次々とAIのトレーニングを続け、精度を上げていきます。
こうした従来型のプログラミングパラダイムと、AIという新しいパラダイムのハイブリッドが、近い将来のソフトウェア像になるのではないでしょうか。

もはやディープラーニングは、対岸の火事ではありません。
全てを飲み込む可能性を秘めた情報産業全体のブレークスルーとなる可能性があります。

IoTのセンサーネットワークやゲーム、映画、検索エンジン、Eコマースなどなど、ありとあらゆる分野にAIが応用されていくでしょう。それはもう夢物語ではなくなってきています。

シンギュラリティ、技術的特異点と呼ばれる世界では、AIを使いこなした人だけが活躍していくことになるでしょう。
そしてAIを使いこなすということは、すなわちAIをプログラミングするということと、AIを教育・訓練することの2つです。
そしてAIを利用したプログラムは、先ほど示したようにとても簡単にできるようになります。

あとはこれをどのように使っていくか、イマジネーションの勝負です。

明日から東京ビッグサイトで開催されるプロダクションEXPO内では、弊社、株式会社ユビキタスエンターテインメント(UEI)の展示ブースでもディープラーニングに関するささやかな参考出品を行う予定です。

0 件のコメント:

コメントを投稿