具体的な実装レベルのお話のまとめ記事作りました。
TensorFlowをAndroidで実行するための方法 自分用まとめ(更新通知用)
DevFest Tokyo 2016
はじめましてこんにちは。DevFest Tokyo 2016 主催コミュニティのひとつである、日本Androidの会でコミュニティ運営委員をしております、古川新と申します。当日は午前中があいにくの雨でしたが、午後には天気も回復し、多くの方にご来場いただきました!ありがとうございました!
私はスタッフをすると共に、スピーカーもさせていただきました。本記事では、軽いノリで話した内容についてまとめようかなと思っています。
ちなみに、当日のセッションは一部を除いて無料で視聴可能です。
こちらは Room C の配信です。(私の発表は2:35:00辺りからです)
https://abemafresh.tv/tech-conference/45511
緊張で声が震えてます。
スライドはこちらでダウンロードできます。スライドと照らし合わせながら読んでいただけると幸いです。
https://speakerdeck.com/ornew/tensorflow-on-android
まあ「これ見てね!以上!」でもいいんですが、補足情報をつけて記事にしようと思った次第です。先に発表を観てもらったほうがいいかもしれません。
"TensorFlow on Android"
Deep Learning、Androidで使いたくないッスか??
最近流行りの Deep Learning、皆さんはどんなものだと考えていますか?
きっと、イメージの一つとして、すごくコストがかかるってイメージがあると思います。
莫大な学習コスト
Deep Learning には、莫大な学習コストがかかります。2012年に話題を呼んだ「Googleの猫」は、1600ものコアを3日間もフル稼働して、やっと猫の概念を取得しました。猫を学習するだけで、こんなコストがかかるんですね。もちろん2012年から更に技術は進歩して、専用のハードウェアも出始めています。ですから猫のために3日間かかるなんて事はもうありませんが、それでもやっぱりたくさんの計算資源を要求します。
Facebook to open-source AI hardware design
こちらは、Facebookの記事です。記事に載っている写真を見ていただくと手っ取り早いのですが、この写真に映るマシンには見えるだけでも NVIDIA Tesla M40 が7枚も挿さっています。
これがどれだけのスペックかと言うと、CIFAR10の学習で、正答率が9割を超えるまで学習するのに30分くらいです。4枚挿しだと1、2時間くらい(実際にやりました)かかります。ちなみに、MacBook Pro だと3日かかっても終わらないらしいです。一般人が手に入る最高ランクの GTX 1080 一つ挿しなら、多分1日か2日くらいで終わるんじゃないでしょうか。
こういった Deep Learning に特化したハードウェアを用いても、やはりたくさんの時間がかかります。
じゃあ、Androidで動かすとか、無理じゃん…。
いえいえ、諦めるのはまだはやいです。それを説明するには、「学習と利用の非対称性」について理解する必要があります。
人工知能は筋肉と同じ
皆さん、筋トレしてますか?自分はしてないので、また太りました。
「ああ、ある日突然ムキムキになれたらいいのに。。。」
毎日そんなことを考えてます。無理ですね(笑)
筋肉を育てるのは大変なことです。毎日、食事に気を使い、ジムにいって高価なマシンで筋トレをしたり、たくさんの時間とお金をかけてはじめて育ちます。一方で、**筋肉を使うのは簡単です。**走ったり、モノを持ち上げたりするのは難しいことではありませんね。「いや、俺は走るために1時間エネルギーを貯めないといけないんだ…」とかないですよね。
実は人工知能も全く同じなんです。
学習と利用の非対称性
人工知能の学習(Deep Learning)に莫大なコストがかかるというのは先程お話ししたとおりですが、実は利用にはほとんどコストがかかりません。
人工知能は筋肉と同じと言いました。これは、実は例え話ではありません。むしろ本質的な話です。
現在、一般的に人工知能という言葉が指すのはニューラルネットワークと呼ばれるものです。Deep Learning は、 ディープなニューラルネットワークの学習のことを指します。このニューラルネットワークは、そもそもとして地球上の生物共通している神経系のシステムを模擬的に数式化したものなのです。筋肉も神経によって制御されていますから、実を言うと似ているのは当たり前なんです。
では、なぜ利用のコストは小さいのでしょうか?やはり一番の理由は反復学習にあります。機械学習では、1万、10万、100万…莫大な回数の反復学習を行って、はじめて実用的なレベルの人工知能が出来上がります。筋肉と同じです。学習とは、繰り返しなのです。しかし、利用は反復を伴いませんね。これだけで、もうコストの差は歴然です。
大事なのは、**「学習コスト>>>>>利用コスト」**であり、
学習済みモデルを利用するだけならば、モバイルでも動くということです。
例えば、iOS 10 では保存された写真に写っている人を識別して自動でアルバムを作成したりなどの機能がついていますね。実際にモバイル端末で動かしているアプリが少しずつ現れています。
というわけで、やってみた。
今年の7月ごろから、個人的にお寿司Projectを立ち上げ、*「Androidと人工知能」*をテーマにアプリを開発しています。お寿司に意味はありません。
これは、リバーシのアプリです。(オセロです。ただ、オセロは商標登録されておりますので、、、)。
画面はデバッグモードで、人工知能(白)が考えている*「そこに置くべきかどうかの確率」*を可視化しています。このスクリーンショットでは、行列で言うと(4,1)、xyの2次元配列で言えば(0,3)の場所が一番置きたいと考えているようですね。
この人工知能は、TensorFlowで作られており、またこの結果を取得するにあたり、AndroidアプリにTensorFlowが組み込まれております。
また、このアプリでプレイしたデータはFirebaseを通してサーバへ送られ、サーバ側で学習データとして使われます。そして、人工知能が更新されると、自動的に手元のアプリに反映されます。
私のアプリはリバーシですが、リアルタイム画像解析などもできます。(ただ、画像解析に関しては演算量が増えるのは事実なので、あまりに安物のスマホでは厳しいかもしれません。Nexusとかなら余裕です。非リアルタイムであれば安物のスマホでも余裕だと思います)
ちなみにこのアプリは、11月19日に開催される ABC 2016 Autumn にて一般にお披露目予定です。ぜひ来てくださいね!
まとめ
「DeepLearningはお金のある大企業や大学のやること」
今やそんなことはありません。
既にユーザレベルは個人にまで広がっており、一般のモバイルアプリケーションに組み込むことも可能なレベルに技術は達しています。
DeepLearningを使うことで、今までにない機能をモバイルアプリケーションに組み込むことができるかもしれません。
新しいユーザエクスペリエンスが誕生し、ITの新しい市場となるかもしれません。
その可能性をDeepLearningは十分に秘めていて、その先駆者となる可能性はまだ私達にもあるのです。
Deep Learning を学びたい学生さんのためのサービスをはじめました
MaruLaboというサービスをつい先日開始しました!これは、Deep Learning を学びたいけど、計算資源がない学生さんとか、交流の場を求めている学生さんとかのためのサービスです!
NVIDIAさんやさくらインターネットさんにご寄贈頂いた超火力マシンが2台(近日中に3台になる予定)、学生に提供されています!お金もいただきません!ぜひ、MaruLaboで Deep Learning の研究をしませんか?
どんなに優秀であっても、今の日本の学生には Deep Learning の開発・学習のための環境がありません。未来を担う学生の育成・研究のため、ぜひご協力をお願いします。
私はこのサービスのサーバ管理やサービス管理を担当しております。企業や個人の方等、マシンのご寄贈や、サービスの宣伝など、ご協力いただける方がいらっしゃいましたら、ぜひご連絡ください。
ちょっと待ってよ!詳しい話がないじゃん!
今回の発表は20分しかなかったので、このくらいが限界でした/(^o^)\
具体的な実装レベルのお話は、私のブログで順次公開していきます。
古川新 ブログ: http://ornew.net/
また、先程も書きましたが11月19日に開催される ABC 2016 Autumn にて1トラックまるまるお話させていただく予定なので、ぜひそちらにもお越しくださいませ!
普段はFacebookに生息しております。何かご連絡ありましたらこちらまでお気軽にどうぞ!