今回はBackprobagationの課題に取り組む前にVideoの振り返りをします。
Video②Backpropagation Algorithm
1周目で課題は正解したものの内容を最も理解していない部分になります。
このVIDEOのReading Partから結論から書いていく方向でまとめてみます。
正直ボトムアップで書くと見失ってしまいます笑
するためには
が必要で
が答えとあります。
この式↑の右辺が↓です。
Dは大文字デルタの意味で小文字デルタΔの累積とあります。
(この意味は正直わかりません。課題をやるときに考えてみたいと思います。
ところでこういう場合分けってプログラミングの時に難しいので嫌いです笑)
Dは小文字デルタΔの集合体と考えるとΔがどうやって計算されているか
知る必要があります。
それが↓の5Stepと説明されています。
(出典;『Coursera Machine Learning』 By Mr. Andrew Ng)
この5つのStepで小文字デルタΔが計算されるので、
Gradient=が計算されたことになりました。
それでは5つのStepを順にみていきたいと思います。
Step1とStep2はWeek4でやったものでVIDEOの名前を借りれば
Model Representationということだと思います。
Step3はOutput Layerの予測と実Sample;yの比較ですね。
これはFeedforwardで予測されているからStep3が実行できる思います。
Step4は数学的な意味は最早わかりません。
VIDEOの中でも証明はされているから気にするなというメッセージでした。
とはいえStep4にどういったことが書かれているのかは考えてみます。
課題をやるときに苦労することになりそうなので。
分からないときは詳細に計算式は書いてあるのでこのまま実行してみようと思います。
Step4は↓でした。
これに対応するVideoのスライドの箇所が赤枠です↓です。
分解してみると、
をスライドで具現化されているのは、
なので、
を代入していると思います。
ところでg(z3)って何だっけと思ったんですが、
とスライドにありました。
やっぱり難しいです。Step4はこれくらいにしておきます。
Step5は
1個1個の場合とベクトルの場合の2つが表現されていますが、
プログラミングはベクトルで行うので右の赤枠で考えてみます。
が、文系の私には?????という感じです。
しかし、この感じに見覚えがあります。
それはLogistic RegressionのGradientです。
θとΔが違いますが式の構造が似ています。
Logistic RegressionのGradientに取り組む際に↓のようなことを書いていました。
Coursera Machine Learning Week3 課題 2周目④ -苦闘記憶-Gradient - 暇人日記
このとき、どうプログラミングしたかというと
grad =
でした。
ということは
とプログラミングすればいいはずです。
Step5まで見たので、全体の流れとプログラミングするのが簡単そうかどうかを
表にしてみました↓
Step5ができれば解けそうな気がします。
これは課題の中で考えたいと思います。
その他の点ですが、Neural Networkは
どの場所を言っているかわからないくらい
アルファベットが多いので1例を図にしました↓
a(l)jはどこか気になったので図にしてみました↓
右肩がLayerで左下がそのLayerの中の何番目のUnitかでした。
もう1つFeedforward propagationとBackpropagationと
JとGradientの関係を考えてみます。
前回の日記で↓のように書いたんですが、違うということに気づきました。
backpropagationはWeek5でビデオがあるので飛ばしますが、
feedforward propagationとbackpropagationがセットの概念で
①Ove VS all
②Neural Network feedfoward propagation
③Neural Network backpropagation
の3パターンで今回の5000の0-9の手書き数字認識課題を
やるのかなと思いました。
↑ではないと気づきました。
feedfoward propagationもbackpropagationも
と
を算出するのに必要な手段であって、
2つの計算方法(Linear RegressionやLogistic Regressionのような)と
同列ではないと気づきました。
Video③Backpropagation intuition
なんとなく理解できたのはモデルを左から右へFeedForwardで作って、
誤差を右から左へ逆流させて正しいかどうかみてる、ということです。
Backpropagationは難しい、分からなくても大丈夫、
というAndrew先生の言うことを信じることにします。
ただ、やってみたいなと思ったのは、
δ(1)はX1と同じだから計算する必要ないといってましたが、
δ(1)はδ(2)から計算できるので、それをX1と比較したら
どうなるんだろうと思いました。
それでは次回Backpropagationに取り組みたいと思います!