Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
最近のTensorFlowの話
Search
Norihiro Shimoda
April 30, 2017
1
1.4k
最近のTensorFlowの話
TFUG Utsunomiya (
https://tfug-utsunomiya.connpass.com/event/55503/
) の発表資料
Norihiro Shimoda
April 30, 2017
Tweet
Share
More Decks by Norihiro Shimoda
See All by Norihiro Shimoda
ぼくのかんがえたさいきょうの機械学習プロジェクト進行法(PoC/デモ編)
rindai87
10
19k
FindYourCandyでの転移学習の話
rindai87
4
14k
Google I/O 報告会(ML)担当
rindai87
3
9.4k
TensorFlowとGCPの簡単な紹介
rindai87
3
4.4k
TensorFlowの基礎
rindai87
2
4.3k
TFv1.0の概要+HighLevelAPI/Keras
rindai87
4
2.1k
How should engineers survive during AI era
rindai87
5
27k
Let's stand up against "Do Artificial Intelligence" with proper knowledge
rindai87
6
1.8k
Talk about ML and DL for happy engineer's life
rindai87
40
15k
Featured
See All Featured
What's new in Ruby 2.0
geeforr
341
31k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
How to name files
jennybc
77
99k
4 Signs Your Business is Dying
shpigford
180
21k
How STYLIGHT went responsive
nonsquared
95
5.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
327
21k
10 Git Anti Patterns You Should be Aware of
lemiorhan
653
59k
Teambox: Starting and Learning
jrom
132
8.7k
Practical Orchestrator
shlominoach
186
10k
Pencils Down: Stop Designing & Start Developing
hursman
119
11k
Code Reviewing Like a Champion
maltzj
519
39k
Transcript
最近のTensorFlowの話 By Norihiro Shimoda 1
⾃自⼰己紹介 • 下⽥田倫倫⼤大(@rindai87) • データ分析専業の企業のエンジニアマネージャー • TensorFlow User Group(TFUG)主催者 •
最近GDE(Google Developer Expert)のML Expertになりました
本⽇日のAgenda • TensorFlowのご紹介 • TFUG(TensorFlow User Group)のご紹介 • TF v1.0以降降の状況についてのご紹介
3
TensorFlow概要 by Norhiro Shimoda 4
TensorFlowとは? • Googleによって2015年年11⽉月に公開されたオー プンソース – Google内部で多数の使⽤用実績があるらしい Google Photo 画像の⾃自動分類 Google
翻訳 翻訳の⾃自動学習 Gmail スパムフィルタ OK Google ⾳音声認識識 5
TensorFlowの歴史
Googleトレンドで⽐比較 7
TensorFlowのモデル 1. 学習モデルをグラフと して定義する 2. 学習を実際にどう⾏行行う かも定義する – 学習の評価⽅方法 –
最適化の⽅方法 – CPU or GPU – スタンドアロン or 分散 3. 定義に従って計算処理理 をデバイス上で実⾏行行さ せる
いろんなデバイスで動きます 9 CPU GPU Android iOS RasberryPi etc…
TensorBoardなどのツール
11 きゅうりの規格の⾃自動仕分け From: http://workpiles.com/2016/02/tensorflow-‐cnn-‐cucumber/
アイドル顔の⾃自動⽣生成 12 From: http://memo.sugyan.com/entry/2016/10/12/084751
空撮写真からの⾞車車両カウント 13 From: http://www.brainpad.co.jp/news/2016/09/02/3454
技術的な部分での基本を もっと知りたいという⽅方は 14 From: https://goo.gl/7cgzwR
ここまでのまとめ • TensorFlowは全世界的に⼤大⼈人気 – Googleが使ってるものが使える! – AlphaGOのインパクト! • TensorFlowに関わる⼈人もいろいろ –
研究で使ってる学⽣生、先⽣生 – 趣味の延⻑⾧長で触っているWeb系開発者 – ディープラーニングを案件として扱う分析の会社 – Android/iOS等のモバイルアプリの開発者 – 組み込み系のハードウェア寄りの開発者 – etc… 15
TFUGのご紹介 by Norhiro Shimoda 16
What is TFUG ? • 分散機械学習フレームワークであるTensorFlow のコミュニティです。 • 2016年年10⽉月に⽴立立ち上がりました。
Meetup • ⽉月に⼀一度度程度度のペースでミートアップイベント を開催しています。
Number of our members 19
Regional TFUG • TFUG AIZU(2016年年末に始動) • TFUG Utsunomiya • TFUG
KANSAI(5⽉月始動) • その他も増えるかも。。。? 20
TFUGの分科会 • TFUGハード部 – ハードウェアを中⼼心に話す会。異異常に熱量量が⾼高い • NN論論⽂文を肴に酒を飲む会 – ⽂文字通り論論⽂文を肴にゆる〜~く論論⽂文を読んで共有する会 •
TFUGモバイル部 – モバイル(主にAndroid)上でTFを動かす話を⾏行行う 21
How to join? グループ名:TensorFlow User Group Tokyo イベント情報を管理理しています。 https://tfug-‐‑‒tokyo.connpass.com/ グループ名:TensorFlow
User Group 各種情報交換の場として利利⽤用されています。 https://www.facebook.com/groups/17855923 5921208/
TensorFlow v1.0の概要
V1.0を三⾏行行でまとめると… Fast Flexible Production-‐‑‒ready
三⾏行行まとめをもう少し詳しく • Fast – めっちゃパフォーマンス良良くなりました • Flexible – ⾼高レベルAPIが本格的に導⼊入されました •
Production-‐‑‒ready – APIは安定させます • その他もいろいろあります – デバッガ(tfdbg)、多⾔言語対応など
Fast • パフォーマンスの⼤大幅な向上 – 64GPU上でのInception v3の処理理が58倍⾼高速になっ た! • XLAの導⼊入 –
Accelerated Linear Algebraの略略 – コンパイラ https://developers-‐‑‒jp.googleblog.com/2017/03/xla-‐‑‒tensorflow-‐‑‒compiled.html
Flexible • High Level APIの本格的な導⼊入 – この後詳細をお話します • Kerasとの統合 –
割と個⼈人的にはビッグニュース
Production Ready • APIの安定化 – V0.11, v0.12辺りの混乱が収束するはずJ – が、後⽅方互換性崩れてますL –
が、移⾏行行ツールが提供されていますJ https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/compatibility
その他 • デバッガ(tfdbg) – 待望のデバッグツール – まだちゃんと触れていませんが期待⼤大 • 多⾔言語対応 –
JavaとGoがExperimentalながら対応
High Level API / Keras
TensorFlowの超基本 1. ⼊入⼒力力⽤用にplaceholderを⽤用意 2. 重みやバイアス⽤用にVariableを⽤用意 3. 活性化関数を使って層を定義 4. ロス値を定義 5.
最適化の⽅方法を定義 6. セッションを定義して学習を実⾏行行
この後のサンプルコード • わかりやすくDNN – 隠れ層3層で全て全結合層 – ユニット数は10,20,10 • サンプルデータとしてはirisデータ –
クラス数は3 – 特徴量量の次元数は4 • サンプルコード⾃自体はQiitaで解説付きで公開し ています – http://qiita.com/rindai87/items/72651c702e926 5595047 http://qiita.com/rindai87/items/72651c702e9265595047
None
None
⽣生TensorFlow⾟辛い問題 • APIがけっこう低レベルなため、アルゴリズム 構築に集中したい⼈人には⾮非常に敷居が⾼高い – TensorFlowのパラダイムへの理理解が必須 – そのため、学習コストが⾼高い • PlaceholderとかVariableとかSessionとか
従来の⽣生TF⾟辛い問題の解決法 • tf.contrib.learn – ⾼高レベルなAPI • Keras – TensorFlowのラッパー –
作者がGoogleの中の⼈人 • その他いろいろ – SlimとかTFLearnとか
tf.contrib.learn • V1.0以前から導⼊入されていた⾼高レベルAPI – 今も残っていて現役で使える • もともとはSkFlowという外部ライブラリ – scikit-‐‑‒learnライクにTF使いましょう、というコンセ プト
• V0.8からTF本体に取り込まれて TFLearn(tf.contrib.learn)となる
None
Keras • TensorFlowとTheanoのラッパーライブラリ • ネットワークを直感的に記述できる – ⽣生TFのようにTensorFlowの流流儀を覚える必要がない • アルゴリズム側に集中したい⼈人にとっては良良い 選択肢
• 全機能がラップされているわけではない
None
V1.0で⾊色々整理理されはじめます • V1.0で混沌としていた⾼高レベルAPI周りの整理理 とロードマップの提⽰示が⾏行行われました – Layers – Estimator • Kerasを正式にサポート
– そもそもKerasの中の⼈人はGoogler
None
Layers • モデル(ネットワーク)を定義するためのAPI 群 • Kerasのように直感的にモデルを記述していく ことができる • Variableの概念念は登場しない –
Layersのオブジェクトを直接触ることも可能なので、 その場合はPlaceholderは登場する
Layersのイメージ Input (4dim) hidden1 hidden2 hidden3 Output (3classes) IrisデータをDNNでモデルを 作る簡単な例例で⾒見見てみる
・4次元データ ・クラスは3 ・隠れ層は3層
Layersのイメージ input hidden1 hidden2 hidden3 output input_̲layer=tf.reshape(features, [-‐‑‒1, 4])
Layersのイメージ hidden1=tf.layers.dense( inputs=input_̲layers, units=10, activation=tf.nn.relu) input_̲layer=tf.reshape(features, [-‐‑‒1, 4])
input hidden1 hidden2 hidden3 output
Layersのイメージ hidden1=tf.layers.dense( inputs=input_̲layers, units=10, activation=tf.nn.relu) input_̲layer=tf.reshape(features, [-‐‑‒1, 4])
hidden2=tf.layers.dense(…) input hidden1 hidden2 hidden3 output
Layersのイメージ hidden1=tf.layers.dense( inputs=input_̲layers, units=10, activation=tf.nn.relu) input_̲layer=tf.reshape(features, [-‐‑‒1, 4])
hidden2=tf.layers.dense(…) hidden3=tf.layers.dense(…) input hidden1 hidden2 hidden3 output
Layersのイメージ hidden1=tf.layers.dense( inputs=input_̲layers, units=10, activation=tf.nn.relu) input_̲layer=tf.reshape(features, [-‐‑‒1, 4])
output_̲layer=tf.layers.dense( inputs=hidden3, units=3) hidden2=tf.layers.dense(…) hidden3=tf.layers.dense(…) input hidden1 hidden2 hidden3 output
Estimator • モデルを使った学習、評価、推論論のタスクを記 述するための標準的なインターフェイスを提供 するAPI群 • Scikit-‐‑‒learn経験者にはおなじみにインター フェース+α – fit():学習
– evaluate():評価 – predict():推論論 – etc…
Estimatorのイメージ input Model output 実際はこれだけではなくて
Estimatorのイメージ input Model Training 記述したモデルを使って 学習、(学習モデルの)評価、推定を⾏行行う Evaluation Prediction
Estimatorのイメージ input Model Training 学習、評価、推定に関わるタスクは全てEstimator内に 隠蔽して標準的なインターフェースを提供 TensorFlowの種々の概念念もEstimator内に内包 Evaluation Prediction fit()
evaluate() predict() session graph etc… Estimator
Estimator導⼊入の良良さ • アルゴリズム実装者視点 – インターフェースが統⼀一されたため、実装の際の指 針になる • アルゴリズム利利⽤用者視点 – インターフェースが統⼀一されたため、APIを読み込ま
なくても利利⽤用⽅方法が類推できる – 様々なアルゴリズム(Estimator)を基本的には同じ データで呼び出し⽅方を変えるだけで使える(はず) 54
Canned Estimator • Layers, Estimatorのお陰で、モデルに対して標 準的なインターフェースが提供されている状態 になる • これを利利⽤用して、様々なEstimator(つまりア ルゴリズム)を提供していく
– インターフェースが共通化されているので、同⼀一 データに対して様々なアルゴリズムを簡単に試せる ようになる • 要は、今後たくさんのアルゴリズムが TensorFlow上で実装、提供されてきます、とい うことです – おっとこれはscikit-‐‑‒learnな感じですね、と思ったあ なた、正解です
Kerasの正式サポート • LayersをKerasの層を定義するレイヤー(Dense など)と互換性のあるものとする • EstimatorとKerasでの互換性を担保する設計 • これまで通りTFをラップしたKeras • tf.kerasの導⼊入により、TF内部でkerasのコードが
動くようになる? → なります
57
Keras正式サポートの恩恵 • 今までKerasから使えていなかった各種TFの機能 が使えるようになる – 分散処理理による学習 – CloudMLでの実⾏行行 • これまではCloudMLのプロビジョニングの段階で
Kerasをpip installするというハックで解決してい た • なお、この解決⽅方法を使ってもKerasからはGCSに 置いているデータを読みにいけないという問題が 残っている – TensorFlow Serving – etc…
None
60 Thank You!