ゼロから作るDeepLearning 第5章 誤差逆伝播法による重み更新を追ってみる

7806b36df14baf48a05ea5471ac5662e?s=47 dproject21
February 20, 2017

ゼロから作るDeepLearning 第5章 誤差逆伝播法による重み更新を追ってみる

7806b36df14baf48a05ea5471ac5662e?s=128

dproject21

February 20, 2017
Tweet

Transcript

  1. 「ゼロから作るDeepLearning」 第5章 誤差逆伝播法の流れをまとめてみる 2017.2.20 たのっち @dproject21

  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. 勾配の計算について " # " # 1 ℎ( ) 勾配 :

    すべての変数の偏微分をベクト ルでまとめたもの。 ニューラルネットワークでは、損失関 数の値ができるかぎり⼩さくなるベク トルを、勾配降下法を⽤いて求め、重 み付けを更新する。 . = . − . 学習率 の値は0.01など事前に決めて おく。この学習率の値を変更しながら、 正しく学習できているか確認していく。
  4. 勾配の計算について 4.4.1 勾配法で出てくる例を解いてみる。 問: 4 , " = 4 #

    + " # の最⼩値を勾配法で求める。( = 0.1 とする) 1回⽬ : 4 = −3.0, " = 4.0に対して、4 # = −6.0, " # = 8 となる。 4 # = −0.6, " # = 0.8となるので、4 = −2.4, " = 3.2に更新する。 2回⽬ : 4 = −2.4, " = 3.2に対して、 4 # = −4.8, " # = 6.4 となる。 4 # = −0.48, " # = 0.64となるので、4 = −1.92, " = 2.56に更新する。 以降、計算を続けていくと、0に集約されていく。
  5. 勾配の計算について では、ニューラルネットワークに対する勾配は? 重みは、最初ランダムな値(正規分布からランダムな値)が⽤いられ、 ← − で更新される。 では、 DE DF の値は、どうやって計算されるか。

    損失関数を交差エントロピー誤差 = − ∑ . . log . として求めていく。
  6. 勾配の計算について 交差エントロピー誤差 = − ∑ . . log . の偏微分は…

    の微分 = 1 O . . log . の微分 = −1 . log . の微分 = それぞれ − 1 log . の微分 = −. . の微分 = − PQ RQ ( = log , DR DS = " S より) (以降、詳細な計算は省略。テキストを参照。)
  7. 勾配の計算について 同様に、Softmax関数の偏微分を求めると、 . − . となる。

  8. 勾配の計算について シグモイド関数の偏微分は、 (1 − ) ReLU関数の偏微分は、 = T 1 (

    > 0) 0 ( ≦ 0) となる。
  9. 勾配の計算について Affineレイヤの逆伝播は、ReLUレイヤの各ニューロンからの逆伝播の値を受けて、 DE DW が⼊⼒となる。 Affineレイヤの出⼒Y = + に対して、 バイアスの逆伝播はDE

    DW 、⼊⼒データと重みの乗算に対する逆伝播はDE DW ⼊⼒データの逆伝播はDE D[ = DE DW \ ] 重みの逆伝播は DE DF = ] \ DE DW
  10. 勾配の計算について 重みの更新は、 それぞれの値に対して⾏うので、 DE DF に学習係数を適⽤し、 ← − ← ""

    #" _" "# ## _# − "" #" _" "# ## _# となる。次の学習では、ごくわずかな更新をした重みを⽤いて、 = + に 対する⼊⼒データとの誤差を求める。 4.4.1 勾配法と同様のプロセスで、更新量が漸減していく。