TensorFlowで遊んでみよう!

6,877 views

Published on

TensorFlowの紹介
TensorFlowを使ってみた

Published in: Data & Analytics
0 Comments
24 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,877
On SlideShare
0
From Embeds
0
Number of Embeds
1,843
Actions
Shares
0
Downloads
65
Comments
0
Likes
24
Embeds 0
No embeds

No notes for slide

TensorFlowで遊んでみよう!

  1. 1. TensorFlowで遊んでみよう! IL×CM×CR 合同勉強会 1
  2. 2. 自己紹介 名前 : 平田 圭 (@masuwo3) 所属 : データ分析チーム 現在 : 2015年5月よりクラスメソッド入社 過去 : 特任助教、SE、IT講師、etc... ML : 研究室でかじった程度 Python歴 : 一ヶ月くらい 2
  3. 3. 今日のアジェンダ • TensorFlowについての紹介 • TensorFlowを使ってみる 3
  4. 4. 4 TensorFlowの概要
  5. 5. TensorFlowとはなにか • で話題の機械学習ライブラリ • Deep Learning以降 • オープンソース / Googleが主導 • Python 2.7 • CUDA 7.0 5 2015/6/9 2015/11/202013/10/20 caffe v0.1 chainer 公開 TensorFlow 公開 …..
  6. 6. TensorFlowの特長 (公式から) • 柔軟性 • 機械学習のモデルを柔軟に記述できる • Neural Networkに限定しない • ポータビリティ • 環境に合わせて計算処理を行う • CPU/GPU, ラップトップ/サーバ など • 研究成果と製品の連結 • 研究成果の検証を行いやすく • プロダクトに転用しやすく 6
  7. 7. 7 TensorFlowにおける計算処理
  8. 8. TensorFlowにおける計算処理 TensorFlowは計算をグラフ構造で表現する 8 x * + y b W
  9. 9. TensorとOperation データはTensor 9 Tensor 計算処理はOperation Tensor op Tensor Tensor
  10. 10. Tensorについて 10 1 [1,2,3,…] [[1,2,3,…], [1,2,3,…], [1,2,3,…], … ] [[[1,2,3,…],…], [[1,2,3,…],…], [[1,2,3,…],…], … ] 階数0のテンソル (スカラ) 階数1のテンソル (ベクトル) 階数2のテンソル (行列) 階数3のテンソル a a[] a[][] a[][][]
  11. 11. Sessionについて 計算処理は2フェイズ(Define & Run) 11 Define Run • 計算のグラフモデルを構築するフェイズ • この時点では計算結果は確定しない • グラフモデルから計算結果を確定するフェイズ • Sessionにモデルを投入し、計算結果を得る
  12. 12. Sessionについて 12 • Session • バックエンドのC++モジュールとのコネクション • 実際の演算はこのC++モジュール上で行われる • 計算リソースが自動的に割り当てられる x * + y b W cpu:0 gpu:0
  13. 13. • 損失関数の最小化 • 機械学習の「学習」は、損失関数の最小化に置き換えられる • 最小点の探索には、勾配計算が必要 • TensorFlowではOptimizerで学習を一括して行う Optimizerについて 13
  14. 14. Optimizerについて 14 • Optimiser • 勾配計算から探索までを一括で行う • 勾配の計算は、グラフモデルを自動的に変換 • 学習手法に合わせて内部の重みを更新していく • グラフで表現された損失関数から、自動的に学習を行う
  15. 15. サンプルコードの解説 15 Define Run • データ・モデルの定義 • 学習モデルの構築 • 損失関数、Optimizer • 計算処理の実施 • Optimizerを用いた学習
  16. 16. サンプルコードの解説 16 訓練用の入出力データを作成 • 訓練モデルの構築 • モデル内部の重みを宣言 損失関数、optimizerを設定 • • SGD(確率的勾配降下法)を指定 Define
  17. 17. サンプルコードの解説 17 Run 内部の重みを初期化 学習を繰り返し実行 • 20回ごとに結果を表示
  18. 18. サンプルコードの解説 • 実行結果 18
  19. 19. Chainerとの違い • MLライブラリ • 大きな違いはない印象 • APIの好みの問題? • (Python歴1ヶ月の感想です) • 分散処理 • どちらもシングルマシン / マルチGPU • TensorFlowは将来的にマルチマシン対応? 19
  20. 20. Chainerとの違い • TensorBoard 20 学習過程やモデルの構造を可視化
  21. 21. Chainerとの違い • TensorBoard 21 学習過程やモデルの構造を可視化
  22. 22. 22 TensorFlowを使ってみる
  23. 23. TensorFlowのチュートリアル • とても充実 • MNIST for Beginners • Deep MNIST for Expert • Convolutional Neural Networks • Vector Representations of Words • Sequence-to-Sequence Models • Mandelbrot Set (?) • etc… 23
  24. 24. MNIST • 手書き数字のデータセット • サイズ : 28x28 • 70,000枚 (訓練 60k, テスト 10k) • 画像識別のHello World 24
  25. 25. Convolutional Neural Network • 畳み込みNN (CNN) • Deep Learningの代表的手法 • 主に画像識別に用いられる • 畳み込み層とプーリング層の組み合わせ • 人間の視覚野の仕組みを参考 25
  26. 26. Convolutional Neural Network 26 詳細は割愛
  27. 27. TensorFlowでCNN 27 • 畳み込み層 • プーリング層 APIを組み合わせることでCNNを構築できる
  28. 28. 結果 28 テストデータでの正答率 : 98.71%
  29. 29. まとめ • TensorFlow • 行列計算 + ML用API • 最新の学習手法を簡単に検証できる • グラフモデルで計算を表現 • 稼働環境のリソースを割り当て • 勾配計算を自動的におこなう • モデルや学習状況の可視化 29
  30. 30. おまけ やりたかったこと • DQN (Deep-Q-Network) • Deep Learning + 強化学習 • モニタ画像からゲームの戦略を学習 • 同じモデルで様々なゲームを攻略 • ゲームによってはプロ以上の成果 30 http://www.nature.com/nature/journal/v518/n7540/full/nature14236.html

×