最近のTensorFlowの話

B5e4cea01a88ca6e79a962b3e0004405?s=47 Norihiro Shimoda
April 30, 2017
1.2k

 最近のTensorFlowの話

TFUG Utsunomiya (https://tfug-utsunomiya.connpass.com/event/55503/) の発表資料

B5e4cea01a88ca6e79a962b3e0004405?s=128

Norihiro Shimoda

April 30, 2017
Tweet

Transcript

  1. 最近のTensorFlowの話 By  Norihiro Shimoda 1

  2. ⾃自⼰己紹介 • 下⽥田倫倫⼤大(@rindai87) • データ分析専業の企業のエンジニアマネージャー • TensorFlow User  Group(TFUG)主催者 •

    最近GDE(Google  Developer  Expert)のML   Expertになりました
  3. 本⽇日のAgenda • TensorFlowのご紹介 • TFUG(TensorFlow User  Group)のご紹介 • TF  v1.0以降降の状況についてのご紹介

    3
  4. TensorFlow概要 by  Norhiro Shimoda 4

  5. TensorFlowとは? • Googleによって2015年年11⽉月に公開されたオー プンソース – Google内部で多数の使⽤用実績があるらしい Google  Photo 画像の⾃自動分類 Google

     翻訳 翻訳の⾃自動学習 Gmail スパムフィルタ OK  Google ⾳音声認識識 5
  6. TensorFlowの歴史

  7. Googleトレンドで⽐比較 7

  8. TensorFlowのモデル 1. 学習モデルをグラフと して定義する 2. 学習を実際にどう⾏行行う かも定義する – 学習の評価⽅方法 –

    最適化の⽅方法 – CPU  or  GPU – スタンドアロン or  分散 3. 定義に従って計算処理理 をデバイス上で実⾏行行さ せる
  9. いろんなデバイスで動きます 9 CPU GPU Android iOS RasberryPi etc…

  10. TensorBoardなどのツール

  11. 11 きゅうりの規格の⾃自動仕分け From:  http://workpiles.com/2016/02/tensorflow-­‐cnn-­‐cucumber/

  12. アイドル顔の⾃自動⽣生成 12 From:  http://memo.sugyan.com/entry/2016/10/12/084751

  13. 空撮写真からの⾞車車両カウント 13 From:  http://www.brainpad.co.jp/news/2016/09/02/3454

  14. 技術的な部分での基本を もっと知りたいという⽅方は 14 From:  https://goo.gl/7cgzwR

  15. ここまでのまとめ • TensorFlowは全世界的に⼤大⼈人気 – Googleが使ってるものが使える! – AlphaGOのインパクト! • TensorFlowに関わる⼈人もいろいろ –

    研究で使ってる学⽣生、先⽣生 – 趣味の延⻑⾧長で触っているWeb系開発者 – ディープラーニングを案件として扱う分析の会社 – Android/iOS等のモバイルアプリの開発者 – 組み込み系のハードウェア寄りの開発者 – etc… 15
  16. TFUGのご紹介 by  Norhiro Shimoda 16

  17. What  is  TFUG  ? • 分散機械学習フレームワークであるTensorFlow のコミュニティです。 • 2016年年10⽉月に⽴立立ち上がりました。

  18. Meetup • ⽉月に⼀一度度程度度のペースでミートアップイベント を開催しています。

  19. Number  of  our  members 19

  20. Regional  TFUG • TFUG  AIZU(2016年年末に始動) • TFUG  Utsunomiya • TFUG

     KANSAI(5⽉月始動) • その他も増えるかも。。。? 20
  21. TFUGの分科会 • TFUGハード部 – ハードウェアを中⼼心に話す会。異異常に熱量量が⾼高い • NN論論⽂文を肴に酒を飲む会 – ⽂文字通り論論⽂文を肴にゆる〜~く論論⽂文を読んで共有する会 •

    TFUGモバイル部 – モバイル(主にAndroid)上でTFを動かす話を⾏行行う 21
  22. How  to  join? グループ名:TensorFlow User  Group  Tokyo イベント情報を管理理しています。 https://tfug-‐‑‒tokyo.connpass.com/ グループ名:TensorFlow

    User  Group 各種情報交換の場として利利⽤用されています。 https://www.facebook.com/groups/17855923 5921208/
  23. TensorFlow v1.0の概要

  24. V1.0を三⾏行行でまとめると… Fast Flexible Production-‐‑‒ready

  25. 三⾏行行まとめをもう少し詳しく • Fast – めっちゃパフォーマンス良良くなりました • Flexible – ⾼高レベルAPIが本格的に導⼊入されました •

    Production-‐‑‒ready – APIは安定させます • その他もいろいろあります – デバッガ(tfdbg)、多⾔言語対応など
  26. Fast • パフォーマンスの⼤大幅な向上 – 64GPU上でのInception  v3の処理理が58倍⾼高速になっ た! • XLAの導⼊入 –

    Accelerated  Linear  Algebraの略略 – コンパイラ https://developers-‐‑‒jp.googleblog.com/2017/03/xla-‐‑‒tensorflow-‐‑‒compiled.html
  27. Flexible • High  Level  APIの本格的な導⼊入 – この後詳細をお話します • Kerasとの統合 –

    割と個⼈人的にはビッグニュース
  28. Production  Ready • APIの安定化 – V0.11,  v0.12辺りの混乱が収束するはずJ – が、後⽅方互換性崩れてますL –

    が、移⾏行行ツールが提供されていますJ https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/compatibility
  29. その他 • デバッガ(tfdbg) – 待望のデバッグツール – まだちゃんと触れていませんが期待⼤大 • 多⾔言語対応 –

    JavaとGoがExperimentalながら対応
  30. High  Level  API  /  Keras

  31. TensorFlowの超基本 1. ⼊入⼒力力⽤用にplaceholderを⽤用意 2. 重みやバイアス⽤用にVariableを⽤用意 3. 活性化関数を使って層を定義 4. ロス値を定義 5.

    最適化の⽅方法を定義 6. セッションを定義して学習を実⾏行行
  32. この後のサンプルコード • わかりやすくDNN – 隠れ層3層で全て全結合層 – ユニット数は10,20,10 • サンプルデータとしてはirisデータ –

    クラス数は3 – 特徴量量の次元数は4 • サンプルコード⾃自体はQiitaで解説付きで公開し ています – http://qiita.com/rindai87/items/72651c702e926 5595047 http://qiita.com/rindai87/items/72651c702e9265595047
  33. None
  34. None
  35. ⽣生TensorFlow⾟辛い問題 • APIがけっこう低レベルなため、アルゴリズム 構築に集中したい⼈人には⾮非常に敷居が⾼高い – TensorFlowのパラダイムへの理理解が必須 – そのため、学習コストが⾼高い • PlaceholderとかVariableとかSessionとか

  36. 従来の⽣生TF⾟辛い問題の解決法 • tf.contrib.learn – ⾼高レベルなAPI • Keras – TensorFlowのラッパー –

    作者がGoogleの中の⼈人 • その他いろいろ – SlimとかTFLearnとか
  37. tf.contrib.learn • V1.0以前から導⼊入されていた⾼高レベルAPI – 今も残っていて現役で使える • もともとはSkFlowという外部ライブラリ – scikit-‐‑‒learnライクにTF使いましょう、というコンセ プト

    • V0.8からTF本体に取り込まれて TFLearn(tf.contrib.learn)となる
  38. None
  39. Keras • TensorFlowとTheanoのラッパーライブラリ • ネットワークを直感的に記述できる – ⽣生TFのようにTensorFlowの流流儀を覚える必要がない • アルゴリズム側に集中したい⼈人にとっては良良い 選択肢

    • 全機能がラップされているわけではない
  40. None
  41. V1.0で⾊色々整理理されはじめます • V1.0で混沌としていた⾼高レベルAPI周りの整理理 とロードマップの提⽰示が⾏行行われました – Layers – Estimator • Kerasを正式にサポート

    – そもそもKerasの中の⼈人はGoogler
  42. None
  43. Layers • モデル(ネットワーク)を定義するためのAPI 群 • Kerasのように直感的にモデルを記述していく ことができる • Variableの概念念は登場しない –

    Layersのオブジェクトを直接触ることも可能なので、 その場合はPlaceholderは登場する
  44. Layersのイメージ Input (4dim) hidden1 hidden2 hidden3 Output (3classes) IrisデータをDNNでモデルを 作る簡単な例例で⾒見見てみる

    ・4次元データ ・クラスは3 ・隠れ層は3層
  45. Layersのイメージ input hidden1 hidden2 hidden3 output input_̲layer=tf.reshape(features,   [-‐‑‒1,  4])

  46. 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
  47. 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
  48. 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
  49. 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
  50. Estimator • モデルを使った学習、評価、推論論のタスクを記 述するための標準的なインターフェイスを提供 するAPI群 • Scikit-‐‑‒learn経験者にはおなじみにインター フェース+α – fit():学習

    – evaluate():評価 – predict():推論論 – etc…
  51. Estimatorのイメージ input Model output 実際はこれだけではなくて

  52. Estimatorのイメージ input Model Training 記述したモデルを使って 学習、(学習モデルの)評価、推定を⾏行行う Evaluation Prediction

  53. Estimatorのイメージ input Model Training 学習、評価、推定に関わるタスクは全てEstimator内に 隠蔽して標準的なインターフェースを提供 TensorFlowの種々の概念念もEstimator内に内包 Evaluation Prediction fit()

    evaluate() predict() session graph etc… Estimator
  54. Estimator導⼊入の良良さ • アルゴリズム実装者視点 – インターフェースが統⼀一されたため、実装の際の指 針になる • アルゴリズム利利⽤用者視点 – インターフェースが統⼀一されたため、APIを読み込ま

    なくても利利⽤用⽅方法が類推できる – 様々なアルゴリズム(Estimator)を基本的には同じ データで呼び出し⽅方を変えるだけで使える(はず) 54
  55. Canned  Estimator • Layers,  Estimatorのお陰で、モデルに対して標 準的なインターフェースが提供されている状態 になる • これを利利⽤用して、様々なEstimator(つまりア ルゴリズム)を提供していく

    – インターフェースが共通化されているので、同⼀一 データに対して様々なアルゴリズムを簡単に試せる ようになる • 要は、今後たくさんのアルゴリズムが TensorFlow上で実装、提供されてきます、とい うことです – おっとこれはscikit-‐‑‒learnな感じですね、と思ったあ なた、正解です
  56. Kerasの正式サポート • LayersをKerasの層を定義するレイヤー(Dense など)と互換性のあるものとする • EstimatorとKerasでの互換性を担保する設計 • これまで通りTFをラップしたKeras • tf.kerasの導⼊入により、TF内部でkerasのコードが

    動くようになる? → なります
  57. 57

  58. Keras正式サポートの恩恵 • 今までKerasから使えていなかった各種TFの機能 が使えるようになる – 分散処理理による学習 – CloudMLでの実⾏行行 • これまではCloudMLのプロビジョニングの段階で

    Kerasをpip  installするというハックで解決してい た • なお、この解決⽅方法を使ってもKerasからはGCSに 置いているデータを読みにいけないという問題が 残っている – TensorFlow Serving – etc…
  59. None
  60. 60 Thank  You!