Talk about ML and DL for happy engineer's life

Talk about ML and DL for happy engineer's life

DevFest Tokyo 2016での発表資料
http://gdg-tokyo.connpass.com/event/38927/

B5e4cea01a88ca6e79a962b3e0004405?s=128

Norihiro Shimoda

October 08, 2016
Tweet

Transcript

  1. 4.
  2. 5.
  3. 12.

    エンジニアを取り巻く環境 機械学習が使 えそうな案件 ⼈人⼯工知能が キーワードに なっている新 規案件 ⼈人⼯工知能やりた まえという謎の プレッシャー

    ⼈人⼯工知能や機械 学習への興味 数年年前まではなかった機械学習や⼈人⼯工知能 というキーワードが⾒見見え隠れする今⽇日このごろ
  4. 17.

    機械学習理理解のstep別イメージ • Step1 – 賢いブラックボックスとして使う • Step2 – ⽤用途別に呼び出す⼿手法を判断できる •

    Step3 – 得られた結果の判断とパラメータのチューニング • Step4 – 機械学習のアルゴリズムを実装できる • etc…
  5. 18.

    機械学習理理解のstep別イメージ • Step1 – 賢いブラックボックスとして使う • Step2 – ⽤用途別に呼び出す⼿手法を判断できる •

    Step3 – 得られた結果の判断とパラメータのチューニング • Step4 – 機械学習のアルゴリズムを実装できる • etc…
  6. 21.

    機械学習理理解のstep別イメージ • Step1 – 賢いブラックボックスとして使う • Step2 – ⽤用途別に呼び出す⼿手法を判断できる •

    Step3 – 得られた結果の判断とパラメータのチューニング • Step4 – 機械学習のアルゴリズムを実装できる • etc…
  7. 24.

    機械学習理理解のstep別イメージ • Step1 – 賢いブラックボックスとして使う • Step2 – ⽤用途別に呼び出す⼿手法を判断できる •

    Step3 – 得られた結果の判断とパラメータのチューニング • Step4 – 機械学習のアルゴリズムを実装できる • etc…
  8. 49.

    TensorFlowのパラダイム • はじめにテンソルの演算グラフを作る • グラフの実⾏行行単位をセッションという • 定数、変数、プレースホルダーを宣⾔言できる • 作ったグラフはデバイス(CPUやGPU)に展開 して実⾏行行する

    • 分散処理理も可能である ということを、Pythonをインターフェースとして ⾏行行っているフレームワーク 機械学習に関する便便利利なヘルパー関数がいっぱい あるのがポイント
  9. 50.

    ここだけ押さえればTensorFlowが 分かる簡単な例例 • 例例1:⾜足し算 – 演算(operation) • 例例2:カウントアップ – 変数(Variable)

    • 例例3:⼊入⼒力力値をいろいろと変える – プレースホルダー(Placeholder) • 例例4:セッションを使う – セッション(Session) • 例例5:⾼高ランクなテンソルの演算 – テンソル(Tensor)
  10. 51.

    ここだけ押さえればTensorFlowが 分かる簡単な例例 • 例例1:⾜足し算 – 演算(operation) • 例例2:カウントアップ – 変数(Variable)

    • 例例3:⼊入⼒力力値をいろいろと変える – プレースホルダー(Placeholder) • 例例4:セッションを使う – セッション(Session) • 例例5:⾼高ランクなテンソルの演算 – テンソル(Tensor)
  11. 55.

    ここだけ押さえればTensorFlowが 分かる簡単な例例 • 例例1:⾜足し算 – 演算(operation) • 例例2:カウントアップ – 変数(Variable)

    • 例例3:⼊入⼒力力値をいろいろと変える – プレースホルダー(Placeholder) • 例例4:セッションを使う – セッション(Session) • 例例5:⾼高ランクなテンソルの演算 – テンソル(Tensor)
  12. 58.

    変数(Variable) inc(定数) + cnt(変数) tf.assign() tf.Variable() tf.constant() tf.add() 1 0

    1 通常のプログラミング⾔言語の変数などと同じように 代⼊入可能な箱として変数がある
  13. 59.

    変数(Variable) inc(定数) + cnt(変数) tf.assign() tf.Variable() tf.constant() tf.add() 1 1

    2 通常のプログラミング⾔言語の変数などと同じように 代⼊入可能な箱として変数がある
  14. 60.

    変数(Variable) inc(定数) + cnt(変数) tf.assign() tf.Variable() tf.constant() tf.add() 1 2

    3 通常のプログラミング⾔言語の変数などと同じように 代⼊入可能な箱として変数がある
  15. 61.

    ここだけ押さえればTensorFlowが 分かる簡単な例例 • 例例1:⾜足し算 – 演算(operation) • 例例2:カウントアップ – 変数(Variable)

    • 例例3:⼊入⼒力力値をいろいろと変える – プレースホルダー(Placeholder) • 例例4:セッションを使う – セッション(Session) • 例例5:⾼高ランクなテンソルの演算 – テンソル(Tensor)
  16. 64.

    プレースホルダー(Placeholder) y (プレースホルダ) x(定数) + tf.constant() tf.add() tf.placeholder() feed_̲dict 1

    1 2 あらかじめ箱を作っておいて 実⾏行行時に好きな値を⼊入⼒力力させる
  17. 65.

    プレースホルダー(Placeholder) y (プレースホルダ) x(定数) + tf.constant() tf.add() tf.placeholder() feed_̲dict 3

    1 4 あらかじめ箱を作っておいて 実⾏行行時に好きな値を⼊入⼒力力させる
  18. 66.

    ここだけ押さえればTensorFlowが 分かる簡単な例例 • 例例1:⾜足し算 – 演算(operation) • 例例2:カウントアップ – 変数(Variable)

    • 例例3:⼊入⼒力力値をいろいろと変える – プレースホルダー(Placeholder) • 例例4:セッションを使う – セッション(Session) • 例例5:⾼高ランクなテンソルの演算 – テンソル(Tensor)
  19. 68.

    セッション 1(定数) + cnt(変数) tf.assign() tf.Variable() tf.constant() tf.add() 1(定数) +

    cnt(変数) tf.assign() tf.Variable() tf.constant() tf.add() セッションにより グラフの実⾏行行環境が まるっと独⽴立立する 名前空間のようなもの tf.Session() tf.Session()
  20. 69.

    ここだけ押さえればTensorFlowが 分かる簡単な例例 • 例例1:⾜足し算 – 演算(operation) • 例例2:カウントアップ – 変数(Variable)

    • 例例3:⼊入⼒力力値をいろいろと変える – プレースホルダー(Placeholder) • 例例4:セッションを使う – セッション(Session) • 例例5:⾼高ランクなテンソルの演算 – テンソル(Tensor)
  21. 71.

    テンソル ランク どうなる 0 スカラ(要はただの数値) 1 ベクトル(配列列) 2 ⾏行行列列(2次元配列列) 3

    3次元配列列(⾏行行列列に厚みがある感じ) n n次元配列列(イメージできない世界) 要は取り扱うデータ構造のことだと思ってください 今までの話はここ
  22. 80.
  23. 81.
  24. 82.

    TensorFlowでやる場合の深層学習 (正確には機械学習全般) ⼊入⼒力力 途中の演算 アルゴリズム からの出⼒力力 … アルゴリズムの学習結果 理理想的な 出⼒力力値

    アルゴリズムへの フィードバック 情報の演算 tf.placeholder() ヘルパー関数 ヘルパー関数 tf.placeholder() tf.variable() … …
  25. 83.

    TensorFlowでやる場合の深層学習 (正確には機械学習全般) ⼊入⼒力力 途中の演算 アルゴリズム からの出⼒力力 … アルゴリズムの学習結果 理理想的な 出⼒力力値

    アルゴリズムへの フィードバック 情報の演算 tf.placeholder() ヘルパー関数 ヘルパー関数 tf.variable() tf.placeholder() tf.variable() … … つまり、学習と呼ばれて いるプロセスはここを決 めることに相当
  26. 107.
  27. 108.