Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

dproject21
January 18, 2017

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

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

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

dproject21

January 18, 2017
Tweet

More Decks by dproject21

Other Decks in Technology

Transcript

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

    View Slide

  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/

    View Slide

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

    View Slide

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

    View Slide

  5. パーセプトロンとは
    ⼊⼒信号
    に、
    重みづけ
    を掛
    けた値の総和が
    ≦ のとき0
    > のとき1
    を出⼒する。
    +
    ,

    +
    ,
    出⼒信号
    ⼊⼒信号 重み
    ノード
    +
    +
    ,
    ,
    こういうやつ。

    View Slide

  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の真理値表
    パラメータを当てはめると…
    パラメータの与え⽅
    次第でいろいろな論
    理回路を作れる。

    View Slide

  7. パーセプトロンとは
    +
    ,

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

    View Slide

  8. パーセプトロンとは
    +
    ,

    +
    ,
    出⼒信号
    ⼊⼒信号 重み
    ノード
    +
    +
    ,
    ,
    バイアス
    出⼒0
    出⼒1
    1
    1
    1
    0
    線形なものは実現できる。
    …が、

    View Slide

  9. パーセプトロンとは
    +
    ,

    +
    ,
    出⼒信号
    ⼊⼒信号 重み
    ノード
    +
    +
    ,
    ,
    バイアス
    出⼒0
    出⼒1
    1
    1
    0
    0
    ⾮線形なものは実現でき
    ない…
    では、どうするか。

    View Slide

  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の真理値表

    View Slide

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

    View Slide

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

    View Slide

  13. ニューラルネットワークとは
    +
    ,

    +
    ,
    出⼒信号
    ⼊⼒信号 重み
    ノード
    +
    +
    ,
    ,
    パーセプトロンのパラメー
    タを決めているのは⼈間。
    機械学習の問題では、この
    パラメータの値を決める作
    業をコンピュータに⾃動で
    ⾏わせる。
    そこで、ニューラルネット
    ワークが出てくる。

    View Slide

  14. ニューラルネットワークとは
    出⼒層
    ⼊⼒層 中間層
    (隠れ層) こういうやつ。
    ⾒た⽬はパーセプトロン
    とあまり変わらない。
    信号の伝達⽅法が違う。

    View Slide

  15. ニューラルネットワークとは
    +
    ,

    +
    ,
    1
    先ほどのパーセプトロン。
    ≦ のとき0
    > のとき1
    としていたが、ここが変わる。

    View Slide

  16. ニューラルネットワークとは
    +
    ,

    +
    ,
    1
    を出⼒するための関数を
    ℎ()とします。
    これを活性化関数と呼びます。

    ℎ( )

    View Slide

  17. ニューラルネットワークとは
    +
    ,

    +
    ,
    1

    ℎ( )
    ≦ のとき0
    > のとき1
    これがステップ関数。
    これが別の関数に置き換わる。

    View Slide

  18. ニューラルネットワークとは
    +
    ,

    +
    ,
    1

    ℎ( )
    ℎ =
    1
    1 + exp (−)
    というシグモイド関数や

    View Slide

  19. ニューラルネットワークとは
    +
    ,

    +
    ,
    1

    ℎ( )
    ℎ = .
    ( > 0)
    0 ( ≦ 0)
    というReLU関数を使います

    View Slide

  20. ニューラルネットワークとは
    +
    ,

    +
    ,
    1

    ℎ( )
    例えば、こういう⼿書き⽂字が
    ⼊⼒信号として⼊ります。
    28×28ピクセルの画像から数
    字を判定するので…
    784画素を⾏列として計算し、
    10種の数字を判定します。

    View Slide

  21. ニューラルネットワークとは
    +
    ,

    +
    ,
    1
    活性化関数は、
    こうした⼊⼒信号から
    特徴抽出を⾏うために、
    中間層で⽤います。

    ℎ( )

    View Slide

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

    View Slide

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

    View Slide

  24. ニューラルネットワークとは
    ,
    ?
    +
    ソフトマックス関数
    A
    =
    exp (A
    )
    ∑ exp (C
    )
    D
    CE+
    を使います。
    +
    ,
    ?
    ( )

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  28. ニューラルネットワークでの学習
    出⼒層
    ⼊⼒層 中間層
    (隠れ層)
    損失関数 : 教師データに対して、現在
    のニューラルネットワークがどれだけ
    適合していないか。という指標を求め
    る。値が⼩さいほうが良い。
    計算⽅法には「⼆乗和誤差」と「交差
    エントロピー誤差」が良く⽤いられる。

    View Slide

  29. ニューラルネットワークとは
    ,
    +
    +
    +
    ,
    ⼆乗和誤差(mean squared error)
    ニューラルネットワークの出⼒ A

    正解となる教師データ A
    の各要素の差
    の 2 乗を計算し、その総和を求める。
    =
    1
    2
    J(A
    − A
    ),
    A
    教師データ A
    は正解を1、不正解を0と
    して扱う。(one-hot表現)
    ,

    View Slide

  30. ニューラルネットワークとは
    ,
    +
    +
    +
    ,
    ,
    交差エントロピー誤差
    (cross entropy error)
    正解となる教師データ A
    に対する、
    ニューラルネットワークの出⼒ A
    の⾃
    然対数を計算する。
    = − J A
    A
    log A
    教師データ A
    は正解を1、不正解を0と
    して扱う。(one-hot表現)

    View Slide

  31. ニューラルネットワークでの学習
    出⼒層
    ⼊⼒層 中間層
    (隠れ層)
    ミニバッチ学習 : 全データを使って損
    失関数を求めるには時間がかかる。
    そこで、全データの⼀部をサンプルと
    して抜き出して全データの近似として
    扱い、損失関数を計算する。
    例えば、こういう⼿書き⽂字6万個の
    データから100個をサンプルとする。
    という具合。

    View Slide

  32. ニューラルネットワークとは
    +
    ,

    +
    ,
    1

    ℎ( )
    勾配 : すべての変数の偏微分をベクト
    ルでまとめたもの。
    ニューラルネットワークでは、損失関
    数の値ができるかぎり⼩さくなるベク
    トルを、勾配降下法を⽤いて求め、重
    み付けを更新する。
    A
    = A


    A
    学習率 の値は0.01など事前に決めて
    おく。この学習率の値を変更しながら、
    正しく学習できているか確認していく。

    View Slide

  33. ニューラルネットワークでの学習
    出⼒層
    ⼊⼒層 中間層
    (隠れ層) 性能の悪さを「損失関数」で求めて、
    この値を⼩さくしていく。
    ミニバッチ学習で、全データから近似
    を求める。
    「勾配」を計算して、重み付けを変え
    る。
    →ここで誤差逆伝播法というものを⽤
    いる。
    上記を繰り返す。

    View Slide

  34. ニューラルネットワークでの学習
    出⼒層
    ⼊⼒層 中間層
    (隠れ層) 誤差逆伝播法 : 重みパラメータに関す
    る損失関数の勾配を効率良く求めるた
    めの⽅法
    何をやっているのか…

    View Slide

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

    View Slide

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

    A
    A

    A
    A −1 1

    View Slide

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

    A
    A
    A
    − A

    View Slide

  38. ニューラルネットワークとは
    +
    ,

    +
    ,
    1

    ℎ( )
    シグモイド関数の偏微分


    (1 − )
    A
    − A
    (A
    − A
    )(1 − )

    View Slide

  39. ニューラルネットワークとは
    +
    ,

    +
    ,
    1

    ℎ( )
    ReLU関数の偏微分


    = .
    1 ( > 0)
    0 ( ≦ 0)
    A
    − A


    = .
    A
    − A
    ( > 0)
    0 ( ≦ 0)

    View Slide

  40. ニューラルネットワークでの学習
    出⼒層
    ⼊⼒層 中間層
    (隠れ層)
    性能の悪さを「損失関数」で求めて、
    この値を⼩さくしていく。
    ミニバッチ学習で、全データから近似
    を求める。
    誤差逆伝播法で「勾配」を計算して、
    重み付けを変える。
    上記を繰り返す。

    View Slide

  41. ニューラルネットワークでの学習
    出⼒層
    ⼊⼒層 中間層
    (隠れ層) ここまでが、読書会でとりあげた5章ま
    での範囲。
    6章では「学習に関するテクニック」
    7章では画像の特徴抽出を⾏う「畳み込
    みニューラルネットワーク」
    8章で、ようやく「ディープラーニン
    グ」を取り上げます。

    View Slide

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

    View Slide