暇人日記

アラフォーおっさんのコーセラの機械学習の課題を解こうと頑張っています!

Coursera Machine Learning Week5 2周目⑦ Backpropagation Video振り返り

今回はBackprobagationの課題に取り組む前にVideoの振り返りをします。

 

 

Video②Backpropagation Algorithm

1周目で課題は正解したものの内容を最も理解していない部分になります。

 

このVIDEOのReading Partから結論から書いていく方向でまとめてみます。

正直ボトムアップで書くと見失ってしまいます笑

 

f:id:omoshiroamericanews:20200412111704p:plain

するためには

f:id:omoshiroamericanews:20200412111720p:plain

が必要で

f:id:omoshiroamericanews:20200412111752p:plain

が答えとあります。

 

この式↑の右辺が↓です。

f:id:omoshiroamericanews:20200412112003p:plain

Dは大文字デルタの意味で小文字デルタΔの累積とあります。

(この意味は正直わかりません。課題をやるときに考えてみたいと思います。

 ところでこういう場合分けってプログラミングの時に難しいので嫌いです笑)

 

Dは小文字デルタΔの集合体と考えるとΔがどうやって計算されているか

知る必要があります。

 

それが↓の5Stepと説明されています。

 

f:id:omoshiroamericanews:20200412113058p:plain

(出典;『Coursera Machine Learning』 By Mr. Andrew Ng)

 

この5つのStepで小文字デルタΔが計算されるので、

Gradient=f:id:omoshiroamericanews:20200412111720p:plainが計算されたことになりました。

 

 

 

 それでは5つのStepを順にみていきたいと思います。

 

Step1とStep2はWeek4でやったものでVIDEOの名前を借りれば

Model Representationということだと思います。

 

Step3はOutput Layerの予測と実Sample;yの比較ですね。

これはFeedforwardで予測されているからStep3が実行できる思います。

 

Step4は数学的な意味は最早わかりません。

VIDEOの中でも証明はされているから気にするなというメッセージでした。

とはいえStep4にどういったことが書かれているのかは考えてみます。

 課題をやるときに苦労することになりそうなので。

分からないときは詳細に計算式は書いてあるのでこのまま実行してみようと思います。

 

 

Step4は↓でした。

 f:id:omoshiroamericanews:20200427113238p:plain

 

 これに対応するVideoのスライドの箇所が赤枠です↓です。

f:id:omoshiroamericanews:20200427113521p:plain

分解してみると、

f:id:omoshiroamericanews:20200427114030p:plain

をスライドで具現化されているのは、

f:id:omoshiroamericanews:20200427114043p:plain

なので、

f:id:omoshiroamericanews:20200427114125p:plain

 を代入していると思います。

 

ところでg(z3)って何だっけと思ったんですが、

f:id:omoshiroamericanews:20200427114229p:plain

とスライドにありました。

 

やっぱり難しいです。Step4はこれくらいにしておきます。

 

Step5は

f:id:omoshiroamericanews:20200427114347p:plain

1個1個の場合とベクトルの場合の2つが表現されていますが、

プログラミングはベクトルで行うので右の赤枠で考えてみます。

が、文系の私には?????という感じです。

しかし、この感じに見覚えがあります。

それはLogistic RegressionのGradientです。

 

f:id:omoshiroamericanews:20200427160111p:plain

θとΔが違いますが式の構造が似ています。

 

Logistic RegressionのGradientに取り組む際に↓のようなことを書いていました。

Coursera Machine Learning Week3 課題 2周目④ -苦闘記憶-Gradient - 暇人日記

 

 

f:id:omoshiroamericanews:20200427160526p:plain

このとき、どうプログラミングしたかというと

grad =f:id:omoshiroamericanews:20200427160736p:plain

でした。

 

ということは

f:id:omoshiroamericanews:20200503160150p:plain

とプログラミングすればいいはずです。

 

Step5まで見たので、全体の流れとプログラミングするのが簡単そうかどうかを

表にしてみました↓

 

f:id:omoshiroamericanews:20200427161627p:plain


Step5ができれば解けそうな気がします。

これは課題の中で考えたいと思います。

 

 

その他の点ですが、Neural Networkは

どの場所を言っているかわからないくらい

アルファベットが多いので1例を図にしました↓

 

f:id:omoshiroamericanews:20200412105942p:plain

 

a(l)jはどこか気になったので図にしてみました↓

 

f:id:omoshiroamericanews:20200412110034p:plain

 右肩が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も

f:id:omoshiroamericanews:20200412111704p:plainf:id:omoshiroamericanews:20200412111720p:plainを算出するのに必要な手段であって、

2つの計算方法(Linear RegressionやLogistic Regressionのような)と

同列ではないと気づきました。

 

 

Video③Backpropagation intuition

なんとなく理解できたのはモデルを左から右へFeedForwardで作って、

誤差を右から左へ逆流させて正しいかどうかみてる、ということです。

 

Backpropagationは難しい、分からなくても大丈夫、

というAndrew先生の言うことを信じることにします。

 

f:id:omoshiroamericanews:20200427173035p:plain

ただ、やってみたいなと思ったのは、

δ(1)はX1と同じだから計算する必要ないといってましたが、

δ(1)はδ(2)から計算できるので、それをX1と比較したら

どうなるんだろうと思いました。 

 

それでは次回Backpropagationに取り組みたいと思います!