第1回 ゼロから作るオトナのDeep Learning

第1回 ゼロから作るオトナのDeep Learning

4d8c732195d7beca7a2ea743e164245e?s=128

Takahiro Yano

February 01, 2017
Tweet

Transcript

  1. ゼロから作るオトナの DeepLearning 2017/2/1 矢野高宏

  2. 今日は主にライブコーディングをします

  3. DeepLearningでやりたいこと • ある入力に対してある出力がほしい アヤメのデータ (花弁の広さ、長さ) アヤメの種類  セトサ?  バージカラー?  バージニカ? 顔画像

    100人中の誰に似てる? とある人の 生体データ その人が糖尿病かどうか
  4. DeepLearningでやりたいこと • ある入力に対してある出力がほしい アヤメのデータ (花弁の広さ、長さ) アヤメの種類  セトサ?  バージカラー?  バージニカ? 顔画像

    100人中の誰に似てる? とある人の 生体データ その人が糖尿病かどうか でもいきなりこれは難しい!
  5. まずは論理演算子を作ろう AND (0,0), (1,0), (0,1), (1,1), 0, 0, 0, 1,

    OR (0,0), (1,0), (0,1), (1,1), 0, 1, 1, 1, XOR (0,0), (1,0), (0,1), (1,1), 0, 1, 1, 0, 真理値表
  6. どうやって作るか? –パーセプトロンを使って作る • ニューラルネットワークの一番単純なもの 。 はステップ関数になる 関数 、 パーセプトロンの場合 を活性化関数と呼ぶ。

    関数 を出力する。 で を得る。 を入力して h h y a h y b x w x w a a x x ) ( ) 1 , , ( 2 2 1 1 2 1 = + + =
  7. 【問題1】ANDを作ってみよう 。 はステップ関数になる 関数 、 パーセプトロンの場合 を活性化関数と呼ぶ。 関数 を出力する。 で

    を得る。 を入力して h h y a h y b x w x w a a x x ) ( ) 1 , , ( 2 2 1 1 2 1 = + + = ANDの真理値表
  8. None
  9. 【問題2】ORを作ってみよう 。 はステップ関数になる 関数 、 パーセプトロンの場合 を活性化関数と呼ぶ。 関数 を出力する。 で

    を得る。 を入力して h h y a h y b x w x w a a x x ) ( ) 1 , , ( 2 2 1 1 2 1 = + + = ORの真理値表
  10. None
  11. 【問題3】XORを作ってみよう 。 はステップ関数になる 関数 、 パーセプトロンの場合 を活性化関数と呼ぶ。 関数 を出力する。 で

    を得る。 を入力して h h y a h y b x w x w a a x x ) ( ) 1 , , ( 2 2 1 1 2 1 = + + = XORの真理値表
  12. ・・・

  13. None
  14. XORはパーセプトロン1つ     だけでは作れない!m9(^Д^) • XORを満たす w1 ,w2 ,b の解空間はない (x1 ,x2

    )空間上で(w1 ,w2 ,b)は1本の直線を表す。 この直線で〇と△が分離できたらORは作れることになる。 OR XOR XORは線形分離不可能! 0 2 2 1 1 = + + b w x w x 参考 http://hokuts.com/2015/12/04/ml3-mlp/
  15. XORはAND,NAND,ORを 組み合わせれば作れる • というのは周知の事実 • 【問題4】3つのパーセプトロンを組み合わせ てXORを作ってみよう XORの真理値表

  16. ・・・

  17. DeepLearningの ライブラリKerasを使おう • Kerasとは今最も人気のDeepLearningのライブラリの1つ • Tensorflow、Theanoのどちらかをバックエンドにして動く • 日本語のドキュメントある https://keras.io/ja/

  18. Kerasの定石 30秒で入門 • プログラミングの手順は決まっているので覚える 1.学習用のデータを作る 面倒! 2.モデルを作る model = Sequential() 3.モデルに層を積む model.add(Dense(...)) 4.モデルを初期化 model.compile(...)

    5.モデルを学習 model.fit(...) 6.モデルを評価 model.evaluate() 7.モデルを利用 model.predict()
  19. 【問題5】KerasでXORを作ってみよう • KerasにStep関数はないからSigmoid関数で代用 • Kerasは行列演算で計算する [ ] ( ) a

    Sigmoid y b w w s s a = + ⎥ ⎦ ⎤ ⎢ ⎣ ⎡ = AND AND 2 AND 1 2 1 ~ ~ [ ] [ ] [ ] [ ] [ ] ( ) 2 1 2 1 OR NAND OR 2 NAND 2 OR 1 NAND 1 2 1 2 1 ~ ~ ~ ~ s s Sigmoid s s b b w w w w x x s s = + ⎥ ⎦ ⎤ ⎢ ⎣ ⎡ = [ ] OR NAND OR 2 NAND 2 OR 1 NAND 1 b b w w w w ⎥ ⎦ ⎤ ⎢ ⎣ ⎡ AND AND 2 AND 1 b w w ⎥ ⎦ ⎤ ⎢ ⎣ ⎡
  20. 【問題6】KerasでXORを 学習で作ってみよう • DeepLearningぽくなってきた。

  21. 【問題7】Kerasで作った学習結果を 自分が作ったプログラムで利用してみよう • XORの結果はどうなる? • NAND,OR,ANDの結果はどうなる? • 学習以外の部分のDeepLearningが      フルスクラッチで実装できた!

  22. 【問題8】データの要素数を増やしてみる • Pima Indian Diabetes データセット • 入力8次元、出力1次元 とある人の 生体データ

    8種類 その人が糖尿病かどうか
  23. pima indiansの最先端の結果を Kaggleで確認する • https://www.kaggle.com/uciml/pima-indians-diabetes-database

  24. DeepLearningの基本はできた あとはそれをどう拡張していくか • 何をしたいか – 分類問題 • 2値分類問題 • 多値分類問題

    – 回帰問題(数値予測問題) • 取り扱うデータの種類 – 数値データ – 画像 – テキスト – その他時系列データ(動画、音声、数値データ) • ネットワーク層の種類 – 全結合層(Dense)、畳み込み層、プーリング層、LSTM層、ドロップアウト層 • その他パラメータ – 最適化方法、ロス関数の計算法、活性化関数の種類、エポック数、バッチ数、等
  25. END 第2回応用編につづく