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
15k
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
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
7.9k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Build The Right Thing And Hit Your Dates
maggiecrowley
32
2.4k
Code Reviewing Like a Champion
maltzj
519
39k
Automating Front-end Workflow
addyosmani
1365
200k
Making Projects Easy
brettharned
115
5.9k
Scaling GitHub
holman
458
140k
Happy Clients
brianwarren
97
6.7k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
355
29k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.6k
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!