DeepLearningが分かった気になる「ゼロから作るDeepLearning」ざっくりまとめ

7806b36df14baf48a05ea5471ac5662e?s=47 dproject21
January 18, 2017

 DeepLearningが分かった気になる「ゼロから作るDeepLearning」ざっくりまとめ

オライリー・ジャパンから出版されている「ゼロから作るDeepLearning」の読書会をやっています。
https://deeplearning-yokohama.connpass.com/

先日、5章までが終わりました。
自分の復習を兼ねて、5章までのざっくりとした内容をスライドにまとめました。

7806b36df14baf48a05ea5471ac5662e?s=128

dproject21

January 18, 2017
Tweet

Transcript

  1. DeepLearningが分かった気になる 「ゼロから作るDeepLearning」 ざっくりまとめ たのっち @dproject21 2017.1.17 ゆるプレ #12

  2. この本のざっくりまとめです • 「ゼロから作るDeepLearning」斎藤 康毅 著 オライリー・ジャパンより2016年9⽉ 発⾏ https://www.oreilly.co.jp/books/9784873117584/ • 公式サポートページ

    https://github.com/oreilly-japan/deep-learning-from-scratch • 読書会やってます。 (5章まで終わりましたので、そこまでのまとめです) https://deeplearning-yokohama.connpass.com/
  3. ディープラーニングって何ぞ? • ディープラーニング 層を深くしたディープなニューラルネットワーク • ニューラルネットワーク 「多層パーセプトロン」とも呼ぶ。多層で、シグモイド関数な どの滑らかな活性化関数を使⽤するネットワーク • パーセプトロン(単純パーセプトロン)

    複数の信号を⼊⼒として受け取り、ひとつの信号を出⼒するも の。
  4. まずはパーセプトロンから… • パーセプトロンは、複数の信号を⼊⼒として受け取り、ひとつ の信号を出⼒します。 電流が導線を流れ、電⼦を先に送り出すように、パーセプトロ ンの信号も流れを作り、情報を先へと伝達していきます。 ただし、実際の電流とは違い、 パーセプトロンの信号は「流す /流さない(1 か

    0)」の⼆値の値です。 • 例えていうならば、”論理回路”みたいなもの。
  5. パーセプトロンとは ⼊⼒信号 に、 重みづけ を掛 けた値の総和が ≦ のとき0 > のとき1

    を出⼒する。 + , + , 出⼒信号 ⼊⼒信号 重み ノード + + , , こういうやつ。
  6. パーセプトロンとは + , + , 出⼒信号 ⼊⼒信号 重み ノード +

    + , , + , 0 0 1 1 0 1 0 1 1 1 1 0 = . 0 (−0.5+ + −0.5, ≦ −0.7) 1 (−0.5+ + −0.5, > −0.7) NANDの真理値表 パラメータを当てはめると… パラメータの与え⽅ 次第でいろいろな論 理回路を作れる。
  7. パーセプトロンとは + , + , 出⼒信号 ⼊⼒信号 重み ノード +

    + , , = . 0 ( + + + + , , ≦ 0) 1 ( + + + + , , > 0) バイアスを使うと、 出⼒信号が1 を出⼒する度合い(ニューロン の発⽕のしやすさ)が調整でき る。 パーセプトロンは 重みとバイアス次第で、 特性を変えることができる。 バイアス
  8. パーセプトロンとは + , + , 出⼒信号 ⼊⼒信号 重み ノード +

    + , , バイアス 出⼒0 出⼒1 1 1 1 0 線形なものは実現できる。 …が、
  9. パーセプトロンとは + , + , 出⼒信号 ⼊⼒信号 重み ノード +

    + , , バイアス 出⼒0 出⼒1 1 1 0 0 ⾮線形なものは実現でき ない… では、どうするか。
  10. パーセプトロンとは + , 第2層 第0層 第1層 ノード + , +

    , 0 0 1 0 0 1 0 1 1 1 0 1 1 1 1 1 1 0 1 0 パーセプトロンを多層に してあげればいい。 + , XORの真理値表
  11. ディープラーニングって何ぞ? • ディープラーニング 層を深くしたディープなニューラルネットワーク • ニューラルネットワーク 「多層パーセプトロン」とも呼ぶ。多層で、シグモイド関数な どの滑らかな活性化関数を使⽤するネットワーク • パーセプトロン(単純パーセプトロン)

    複数の信号を⼊⼒として受け取り、ひとつの信号を出⼒するも の。 パーセプトロンは、これでいいね。 では、ニューラルネットワークはどうなの?
  12. ディープラーニングって何ぞ? • ディープラーニング 層を深くしたディープなニューラルネットワーク • ニューラルネットワーク 「多層パーセプトロン」とも呼ぶ。多層で、シグモイド関数な どの滑らかな活性化関数を使⽤するネットワーク • パーセプトロン(単純パーセプトロン)

    複数の信号を⼊⼒として受け取り、ひとつの信号を出⼒するも の。 シグモイド関数? 活性化関数?
  13. ニューラルネットワークとは + , + , 出⼒信号 ⼊⼒信号 重み ノード +

    + , , パーセプトロンのパラメー タを決めているのは⼈間。 機械学習の問題では、この パラメータの値を決める作 業をコンピュータに⾃動で ⾏わせる。 そこで、ニューラルネット ワークが出てくる。
  14. ニューラルネットワークとは 出⼒層 ⼊⼒層 中間層 (隠れ層) こういうやつ。 ⾒た⽬はパーセプトロン とあまり変わらない。 信号の伝達⽅法が違う。

  15. ニューラルネットワークとは + , + , 1 先ほどのパーセプトロン。 ≦ のとき0 >

    のとき1 としていたが、ここが変わる。
  16. ニューラルネットワークとは + , + , 1 を出⼒するための関数を ℎ()とします。 これを活性化関数と呼びます。 ℎ(

    )
  17. ニューラルネットワークとは + , + , 1 ℎ( ) ≦ のとき0

    > のとき1 これがステップ関数。 これが別の関数に置き換わる。
  18. ニューラルネットワークとは + , + , 1 ℎ( ) ℎ =

    1 1 + exp (−) というシグモイド関数や
  19. ニューラルネットワークとは + , + , 1 ℎ( ) ℎ =

    . ( > 0) 0 ( ≦ 0) というReLU関数を使います
  20. ニューラルネットワークとは + , + , 1 ℎ( ) 例えば、こういう⼿書き⽂字が ⼊⼒信号として⼊ります。

    28×28ピクセルの画像から数 字を判定するので… 784画素を⾏列として計算し、 10種の数字を判定します。
  21. ニューラルネットワークとは + , + , 1 活性化関数は、 こうした⼊⼒信号から 特徴抽出を⾏うために、 中間層で⽤います。

    ℎ( )
  22. ニューラルネットワークとは 出⼒層 ⼊⼒層 中間層 (隠れ層) …では、出⼒層は? 別の関数で計算をします。

  23. ニューラルネットワークとは , ? + 出⼒層では⼊⼒をそのまま出⼒ する「恒等関数」あるいは、 + , ? (

    ) ( ) ( )
  24. ニューラルネットワークとは , ? + ソフトマックス関数 A = exp (A )

    ∑ exp (C ) D CE+ を使います。 + , ? ( )
  25. ニューラルネットワークとは , ? + 恒等関数は、隠れ層の出⼒から 結果を1つ選ぶ場合に使います。 ソフトマックス関数は、隠れ層 の出⼒から、確率を求める場合 に使います。 +

    , ? ( )
  26. ニューラルネットワークでの学習 出⼒層 ⼊⼒層 中間層 (隠れ層) 機械学習の問題では、パラメータの値 を決める作業をコンピュータに⾃動で ⾏わせる。 この作業の精度を⾼める必要がある。 どうすればよいか…

  27. ニューラルネットワークでの学習 出⼒層 ⼊⼒層 中間層 (隠れ層) 性能の悪さを「損失関数」で求めて、 この値を⼩さくしていく。 ミニバッチ学習で、全データからサン プルを抜き出し、近似としての「損失 関数」を求める。

    「勾配」を計算して、重み付けを変え る。 上記を繰り返す。
  28. ニューラルネットワークでの学習 出⼒層 ⼊⼒層 中間層 (隠れ層) 損失関数 : 教師データに対して、現在 のニューラルネットワークがどれだけ 適合していないか。という指標を求め

    る。値が⼩さいほうが良い。 計算⽅法には「⼆乗和誤差」と「交差 エントロピー誤差」が良く⽤いられる。
  29. ニューラルネットワークとは , + + + , ⼆乗和誤差(mean squared error) ニューラルネットワークの出⼒

    A と 正解となる教師データ A の各要素の差 の 2 乗を計算し、その総和を求める。 = 1 2 J(A − A ), A 教師データ A は正解を1、不正解を0と して扱う。(one-hot表現) ,
  30. ニューラルネットワークとは , + + + , , 交差エントロピー誤差 (cross entropy

    error) 正解となる教師データ A に対する、 ニューラルネットワークの出⼒ A の⾃ 然対数を計算する。 = − J A A log A 教師データ A は正解を1、不正解を0と して扱う。(one-hot表現)
  31. ニューラルネットワークでの学習 出⼒層 ⼊⼒層 中間層 (隠れ層) ミニバッチ学習 : 全データを使って損 失関数を求めるには時間がかかる。 そこで、全データの⼀部をサンプルと

    して抜き出して全データの近似として 扱い、損失関数を計算する。 例えば、こういう⼿書き⽂字6万個の データから100個をサンプルとする。 という具合。
  32. ニューラルネットワークとは + , + , 1 ℎ( ) 勾配 :

    すべての変数の偏微分をベクト ルでまとめたもの。 ニューラルネットワークでは、損失関 数の値ができるかぎり⼩さくなるベク トルを、勾配降下法を⽤いて求め、重 み付けを更新する。 A = A − A 学習率 の値は0.01など事前に決めて おく。この学習率の値を変更しながら、 正しく学習できているか確認していく。
  33. ニューラルネットワークでの学習 出⼒層 ⼊⼒層 中間層 (隠れ層) 性能の悪さを「損失関数」で求めて、 この値を⼩さくしていく。 ミニバッチ学習で、全データから近似 を求める。 「勾配」を計算して、重み付けを変え

    る。 →ここで誤差逆伝播法というものを⽤ いる。 上記を繰り返す。
  34. ニューラルネットワークでの学習 出⼒層 ⼊⼒層 中間層 (隠れ層) 誤差逆伝播法 : 重みパラメータに関す る損失関数の勾配を効率良く求めるた めの⽅法

    何をやっているのか…
  35. ニューラルネットワークでの学習 出⼒層 ⼊⼒層 中間層 (隠れ層) 誤差逆伝播法 : 各ノードの微分に後段 ノードの信号を乗算し、前段ノードに 伝達させる。

  36. ニューラルネットワークとは , + + + , , 交差エントロピー誤差の偏微分 − A

    A − A A −1 1
  37. ニューラルネットワークとは , ? + ソフトマックス関数の 偏微分 A − A +

    , ? ( ) − A A A − A
  38. ニューラルネットワークとは + , + , 1 ℎ( ) シグモイド関数の偏微分 (1

    − ) A − A (A − A )(1 − )
  39. ニューラルネットワークとは + , + , 1 ℎ( ) ReLU関数の偏微分 =

    . 1 ( > 0) 0 ( ≦ 0) A − A = . A − A ( > 0) 0 ( ≦ 0)
  40. ニューラルネットワークでの学習 出⼒層 ⼊⼒層 中間層 (隠れ層) 性能の悪さを「損失関数」で求めて、 この値を⼩さくしていく。 ミニバッチ学習で、全データから近似 を求める。 誤差逆伝播法で「勾配」を計算して、

    重み付けを変える。 上記を繰り返す。
  41. ニューラルネットワークでの学習 出⼒層 ⼊⼒層 中間層 (隠れ層) ここまでが、読書会でとりあげた5章ま での範囲。 6章では「学習に関するテクニック」 7章では画像の特徴抽出を⾏う「畳み込 みニューラルネットワーク」

    8章で、ようやく「ディープラーニン グ」を取り上げます。
  42. ディープラーニングって何ぞ? • ディープラーニング 層を深くしたディープなニューラルネットワーク • ニューラルネットワーク 「多層パーセプトロン」とも呼ぶ。多層で、シグモイド関数な どの滑らかな活性化関数を使⽤するネットワーク • パーセプトロン(単純パーセプトロン)

    複数の信号を⼊⼒として受け取り、ひとつの信号を出⼒するも の。 次回はニューラルネットワークから ディープラーニングに⾄るまでを取り上げたいな。