O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

tfug-kagoshima

672 visualizações

Publicada em

TFUG鹿児島#1で話したスライド

Publicada em: Engenharia
  • Seja o primeiro a comentar

tfug-kagoshima

  1. 1. 深層学習・機械学習と TensorFlow TFUG Kagoshima
  2. 2. 自己紹介 新村 拓也(Takuya Shimmura) ・鹿児島県姶良市出身 ・シンギュラリティ株式会社 CTO ・著書「TensorFlowではじめるDeepLearning実装入門」
  3. 3. 機械学習とか深層学習 でちょいちょいってやって よ!いつものお仕事 ・・・ お客様のビジネス課題を機械学習などを 駆使してちょいちょいっと解決するお仕事
  4. 4. これから話すこと • 巷で話題の機械学習、深層学習とは何か? • よく用いられる深層学習の手法、モデル • TensorFlowに関する横断的な解説
  5. 5. 機械学習とは? Wikipediaによると・・・ 人間が自然に行っている学習能力と同様の機能を コンピュータで実現しようとする技術・手法のことである。
  6. 6. 機械学習とは? 明示的にプログラムしなくても学習する能力を コンピュータに与える研究分野 by アーサー・サミュエル
  7. 7. 機械学習とは? コンピュータプログラムが、ある種のタスクTと評価尺度Pにおいて、 経験Eから学習するとは、タスクTにおけるその性能をPによって 評価した際に、経験Eによってそれが改善されている場合である。 トム・M・ミッチェル
  8. 8. 機械学習とは? • 推論と正解の誤差を用いてモデルを構成するパラメータを自動更新 するシステム 入力 モデル 部屋の広さ: 80m^2 駅からの距離: 100m 築年数: 3年 階数: 10階 5000万円! 推論 正解 9000万円 誤差 4000万円 モデル更新(学習)
  9. 9. 機械学習のモデル • 機械学習のモデルにもいろいろなものがある  決定木法  線形回帰、ロジスティック回帰  SVM  ニューラルネットワーク  K-means,階層型クラスタリング, MeanShift  pLSI, NMF, LDA  PFM  混合ガウス分布  Lasso回帰、Ridge回帰、Elastic Net
  10. 10. scikit-learn チートシート
  11. 11. ニューラルネットワークとは? • 形式ニューロンを用いてモデルを構築した機械学習手法 𝑥1 𝑥2 𝑥3 入力 出力 y 𝑤3 𝑏 𝑤2 活性化関数 𝑤1 𝑦 = 𝑓(𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 𝑥3 + 𝑏)
  12. 12. ニューラルネットワーク 部屋の広さ 80m^2 駅からの距離 100m 築年数 3年 入力層 中間層 出力層 予想価格 5000万 正解価格 9000万 誤差4000万 誤差を元にで学習! 学習対象は重みとバイアス 誤差逆伝播法+確率的勾配降下法
  13. 13. 深層学習とは? • 入力層・中間層1・中間層2・出力層のように4層以上のニューラル ネットワークで行う学習のこと
  14. 14. 多層ニューラルネットワークの問題点 • データ数に対してモデルパラメータが多すぎることによる過学習 • 勾配消失により入力層に近い層が学習できない • 計算コストが高い
  15. 15. 深層学習 • 近年では様々な手法や技術の進歩により多層ニューラルネットワー クの問題点が解決されている データセットの充実 GPUを用いた高速演算 研究によって生み出された新手法
  16. 16. 畳み込みニューラルネットワーク(CNN) • 画像のフィルタ処理におけるフィルタの値をニューラルネットワーク のパラメータとして学習する http://deeplearning.stanford.edu/wiki/index.php/Feature_extraction_using_convolution
  17. 17. 様々な画像分類ネットワーク GoogLeNet ResNet SENet
  18. 18. DCGAN • 画像の生成やスタイル変換を行うことも可能 D G Z (noise) G(Z)X real fake Vanilla GAN X Y G F Z (noise) G(Z) Z’ (noise) G(Z) Dy real fake real fake Dx Cycle GAN
  19. 19. 再帰的ニューラルネットワーク(RNN) • 時系列を自然に扱えるニューラルネットワーク 翻訳エンジンなどにも採用されている
  20. 20. RNNの手法 h c x U W ・ 中間層入力(   ) ・ 中間層出力(   ) ・ 中間状態(   ) の 3 つがそれぞれのゲート を制御 h c x Long Short Term Memory (LSTM) Attention Mechanism Bi-directional RNN
  21. 21. 深層強化学習 • Deep Q Network • A3C • PPO
  22. 22. AutoML • ニューラルネットワークの構造をRNN+強化学習で生成 • 現在Google Cloud Platformでα版リリース
  23. 23. TensorFlow入門
  24. 24. TensorFlowとは? • Googleより2015年11月に公開されたOSS • 高性能数値演算ライブラリ • 様々な言語やプラットフォームで動作 • 2018年5月現在v1.8.0
  25. 25. Tensorとは? • 多次元配列のこと
  26. 26. TensorFlowの特徴 • 計算グラフを用いた宣言型プログラミング(命令型もサポート) • 低レベルなものから高レベルなものまで様々なAPIを提供 • 充実したエコシステム • 様々な言語やデバイスで動作 • 大規模分散処理のための様々な機能 • その知名度がために圧倒的な利用ユーザ数、活発なコミュニティ
  27. 27. TensorFlowの特徴 • 計算グラフを用いた宣言型プログラミング(命令型もサポート) • 低レベルなものから高レベルなものまで様々なAPIを提供 • 充実したエコシステム • 様々な言語やデバイスで動作 • 大規模分散処理のための様々な機能 • その知名度がために圧倒的な利用ユーザ数、活発なコミュニティ
  28. 28. 計算グラフ • 計算過程をノードとエッジによるグラフで表したもの • ノードが演算処理(Operation)を表す • エッジがやりとりされる数値(Tensor)を表す const1 val1 add 定数:4 変数:初期値0 加算の結果 a = tf.constant(4) b = tf.Variable(0) add = tf.add(a, b) ・どのTensorがどのオペレーションへの入力である ・出力に対する入力の勾配式 のような、各種メタ情報を保持している。
  29. 29. Why 計算グラフ? • 自動微分の効率化 • 局所計算ができる 勾配計算のたびに lim ℎ→0 𝑓 𝑥+ℎ −𝑓(𝑥) ℎ をパラメータの数計算する 局所的に微分計算をしておき、それを伝播させることで算出 𝑥 𝑦 𝐸 𝜕𝑦 𝜕𝑥 𝐸 VS
  30. 30. 宣言型プログラミング • Define and Runともいう • 対義語は命令型プログラミング(Define by Run) 命令型 宣言型 処理の記述は計算グラフを構築しているだけであり計算は行わない。 5 出力
  31. 31. Why 宣言型? • 計算の最適化 • こういうモデルにしてということだけ記述して、最適化はTFにお任せ • 分散処理も記述しやすい • 欠点 • 動的なモデルが組めない • デバッグが困難
  32. 32. Eager Execution • 以下のように書くだけで命令型になる パフォーマンスは若干悪くなる まだ全部のAPIが対応しているわけではない 例) 5 出力
  33. 33. TensorFlowの特徴 • 計算グラフを用いた宣言型プログラミング(命令型もサポート) • 低レベルなものから高レベルなものまで様々なAPIを提供 • 充実したエコシステム • 様々な言語やデバイスで動作 • 大規模分散処理のための様々な機能 • その知名度がために圧倒的な利用ユーザ数、活発なコミュニティ
  34. 34. 様々なAPI • メリット:ニューラルネットワーク以外にも様々な計算が行える • tf.distributions・・・確率分布を用いた計算 • tf.spectral・・・フーリエ変換 • tf.contrib.learn.SVM・・・サポートベクトルマシーン • デメリット:同じようなAPIがありどれを使えばいいのか分からない • tf.layer.conv2d と tf.contrib.layers.conv2d • TFのWrapperの「Keras」 と tf.keras
  35. 35. API概要 一番低レベルなAPI tf.nn パッケージなど
  36. 36. 低レベルなAPIで書くと • 一つの層を書くだけでこのような感じ
  37. 37. 低レベルなAPIで書くと ソースコード全文 全てのパラメータや計算処理を記述するため、詳細なloggingや モデル構築が可能。 ただし書いてて辛い TFが出てきた当初はこれしかなかった!
  38. 38. API概要 すこし高レベルなAPI tf.layers パッケージ
  39. 39. tf.layersパッケージで書くと • 一つの層は1行で記述可能 しかし重みやバイアスの情報が消えているため、重みのログを取る場合などに 工夫する必要がある。 低レベルの場合
  40. 40. API概要 高レベルなAPI Keras, tf.keras パッケージ
  41. 41. tf.kerasで書くと • 1層を1行で書くのはもちろん訓練プロセスや実行も1行で記述可能
  42. 42. API概要 もっとも高レベルなAPI Estimatorパッケージ
  43. 43. Estimatorパッケージで • ネットワーク構築も1ステップで可能 4層で、中間層のユニット10, 10, クラス数3 EstimatorはPre-made EstimatorとCustomEstimatorの2種類
  44. 44. どのAPIを使えばいいの? • Estimator • 簡単なモデルですぐに試したい • GCPのCloudMLと連携 • Keras • 標準的なログや成果物を出力して楽に開発 • tf.layers • 訓練自体の制御を行いたい(ログの選定など) • 低レベルAPI • 独自レイヤー開発
  45. 45. その他のAPI • DatasetAPI(tf.data) • データセットの整形、バッチ化をサポートしてくれる超便利API • Contrib (tf.contrib) • 超便利だけどバグとかあったらゴメンね! • ちゃんと確認したら正式版に移行するかもしれないAPI群 訓練 バッ チ処理 キュ ーに追加 データ 取得 整形・ バッ チ作成 訓練用のスレッ ド Qu eu e( 待ち行列) データ セッ ト 作成用のスレッ ド
  46. 46. TensorFlowの特徴 • 計算グラフを用いた宣言型プログラミング(命令型もサポート) • 低レベルなものから高レベルなものまで様々なAPIを提供 • 充実したエコシステム • 様々な言語やデバイスで動作 • 大規模分散処理のための様々な機能 • その知名度がために圧倒的な利用ユーザ数、活発なコミュニティ
  47. 47. TFX(TensorFlow Extended) • MLはただ学習する以外にもやることが多い Configuration Data Collection Data Verification Feature Extraction Process Management Tools Analysis Tools Machine Resource Management Serving Infrastructure Monitoring ML Code TensorFlow Serving TensorFlow Transform TensorFlow Model Analysis TFを基盤として周辺機能開発をサポート
  48. 48. TensorBoard • Webベースの各種ログ可視化ツール デバッグや結果の考察に利用 することにより機械学習のイテ レーションをサポートする非常に 強力なツール
  49. 49. TensorFlowHub • 訓練済みモデルを提供するプラットフォーム 簡単に様々なモデルをダウンロードしてきて、実行・転移学習などが可能。
  50. 50. TensorFlowの特徴 • 計算グラフを用いた宣言型プログラミング(命令型もサポート) • 低レベルなものから高レベルなものまで様々なAPIを提供 • 充実したエコシステム • 様々な言語やデバイスで動作 • 大規模分散処理のための様々な機能 • その知名度がために圧倒的な利用ユーザ数、活発なコミュニティ
  51. 51. 様々な言語で動作 Go
  52. 52. 様々なデバイスで動作 iOS CPU GPU Android Cloud TPU Embedded Devices
  53. 53. TensorFlow Lite/Mobile • スマホ上で動作するような軽量なモデル構築プラットフォーム
  54. 54. TensorFlowの特徴 • 計算グラフを用いた宣言型プログラミング(命令型もサポート) • 低レベルなものから高レベルなものまで様々なAPIを提供 • 充実したエコシステム • 様々な言語やデバイスで動作 • 大規模分散処理のための様々な機能 • その知名度がために圧倒的な利用ユーザ数、活発なコミュニティ
  55. 55. Distributed TensorFlow モデルパラレル GPU1 で実行 GPU2 で実行 データパラレル • 複数のサーバー、複数のデバイスで分散して処理を行うことが可能。
  56. 56. TensorFlowの特徴 • 計算グラフを用いた宣言型プログラミング(命令型もサポート) • 低レベルなものから高レベルなものまで様々なAPIを提供 • 充実したエコシステム • 様々な言語やデバイスで動作 • 大規模分散処理のための様々な機能 • その知名度がために圧倒的な利用ユーザ数、活発なコミュニティ
  57. 57. 活発なオープンソースコミュニティ 開発速度の速さ 1,400+ 開発に貢献した人数 200+ 平均コミット数/週 エコシステムの充実度 8,000+ Stack Overflow の質問に対する回答数 100+ コミュニティが報告した GitHub issues に対するレスポンス数/週 ユーザ数の多さ 98,000+ GitHub のスターの数 33,000+ 「TensorFlow」でヒットする GitHub レポジトリの数
  58. 58. TFUGとは? TFUGはTensorFlow User Groupの 略でTensorFlowのユーザーグルー プです。 2016年10月に立ち上がり、活動を 続けています
  59. 59. TFUG 可能な限り過去のスライドは公開! Youtubeによるライブ配信もやってます!
  60. 60. 分科会/地域TFUG 分科会 地域TFUG ● 論文を読む会 ● ハード部 ● モバイル部 ● Aizu ● Utsunomiya ● Kansai その他にも初心者向けハンズオンやアイディアソン、ハッカソンも開催
  61. 61. まとめ • TensorFlowは開発が盛んなオープンソースプロジェクト • TensorFlowの目指すところ • Googleと同じレベルの機械学習を実現できるツール • 大規模データを使った分散学習への対応 • 研究開発に使えるレベルの柔軟性 • プロダクションへの投入 • 様々なデバイスで動作/ 強力な可視化ツール/ 様々なレベルのAPI • 皆さんもどんどん使ってTFUG鹿児島を盛り上げていきましょう!

×