28
TensorFlow on Mobile 日本Androidの会 学生部 古川新

TensorFlow on Mobile

  • Upload
    -

  • View
    165

  • Download
    1

Embed Size (px)

Citation preview

TensorFlow on Mobile日本Androidの会 学生部

古川新

古川 新 Arata Furukawa

● 日本Androidの会 運営委員● 日本Androidの会 学生部でイベント企画や

開発、運営をしています。● ピカピカのだいがく1年生● プログラミング、イラスト、デザインが趣味● なんでもします!

TensorFlowとは

人工知能ライブラリでしょ、そのくらい知ってるよ

確かにTensorFlowは、機械学習の研究を行っていたGoogleのエンジニアや研究者によって開発されました。

しかし、実はTensorFlow自体は機械学習のためだけのライブラリではありません。

“TensorFlow™ is an open source software library for numerical computation using data flow

graphs.

データフローグラフ型汎用数値演算ライブラリ

Deep Learningは莫大な計算資源を要求します。

その要求に応えるためには、抽象的でスケーラビリティかつポータビリティな、非同期並列に実行可能な数値演算の仕組みが必要でした。

TensorFlowはまさにそれを実現するライブラリです。

Deep Learningに限らず、このライブラリ自体はどんな計算であっても応用可能です。

(オープンソース・ソフトウェア)

TensorFlow Graph

TensorFlowはあらゆる数学演算をノードとエッジの有向グラフで表現します。

また、TensorFlowグラフはProtocol Buffers形式でシリアライズできます。

シリアライズされた抽象グラフは他のプラットフォーム・アーキテクチャ・デバイスでも扱えます。

Deep Neural Networks

TensorFlowは、グラフで表現可能な演算であれば、なんでも扱えます。

ディープニューラルネットワーク(DNN)は巨大な行列演算の式で表現されます。

つまり、DNNも同様にTensorFlowグラフとして表現することができます。

Distributed TensorFlow

TensorFlowの真価は分散処理にあります。TensorFlowではデータ並列が透過的に行なえます。

コードにほとんど手を加えることなく、マシンリソースにスケールした適切なスケジューリングの最適化などを行い、並列演算をスケールアウトします。

高度な分散処理数値演算ライブラリ、それがTensorFlowの真の姿です。

「Large Scale Distributed Systems for Training Neural Networks (Jeff Dean & Oriol Vinyals Google)」より引用

学習と実行の非対称性

一般的な演算コスト

学習コスト > 実行コスト

学習の演算コスト

1. 膨大な回数の反復学習が必要↑ほぼこれ

2. 誤差の逆伝搬など学習用の計算量が多い

一般的に知られているように、訓練には莫大な計算資源が必要となる。

「AlphaGo の試合に用いられた Google のディープラーニング専用サーバ」Google Cloud Platform Japan Blogより

実行の演算コスト

1. 反復実行

→要らない2. 誤差逆伝搬したりする分の計算量

→要らない

学習に莫大なコストがかかるニューラルネットワークも(実行するだけなら)

モバイルで動きます

“TensorFlow Android Camera Demo

https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android

GitHubのTensorFlowリポジトリにAndroidでTensorFlowを実行するサンプルが公開されている。

http://goo.gl/

CtLXYm

※使用は自己責任でお願いします※他の場所にアップロードしたり しないでください

モバイルアプリに組み込んでみた

TensorFlowによるリバーシAIAndroidアプリ

Android Firebase

プレイデータを自動送信AIが定期的に自動更新される

TensorFlow

DataServer

RunTensorFlow

FirebaseRealtime Database

C++ Java

Protocol Buffers

JNIReversi

OSUSHIの構成:Androidアプリ側

HTTPS

Android App

True Portability

TensorFlowグラフは非常にポータビリティが高い。

配布されたモデルを利用したり、更にそのモデルを訓練したりすることが容易です。

→抽象化されたグラフを表現したProtocol Buffers形式のテキストorバイナリデータでしかないから。

「モデルさえあれば…」

実際に配布されているモデルも出始めており、今後増加すると思われます。

もしかしたら、モデルリポジトリなんてものが今後出てくるかも?

新しいアプリ開発の形?

ニューラルネットワークは処理能力に乏しいモバイルプラットフォームでも利用できます。

Deep Learningは、モデルさえあれば一般的なアプリに組み込むことが可能な段階にあるのです。

ご清聴ありがとうございました。