暇人日記

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

Coursera Machine Learning Week5 課題 2週目⑫ -苦闘記憶- Regularized Gradient

今回はRegularized Gradientに取り組みます↓

 

f:id:omoshiroamericanews:20200523215747p:plain

 

今、全体の流れのどこをやっているか分からなくなったので振り返ることにします。

 

前回の日記で全体の構造を下のようにまとめました。

 

 

f:id:omoshiroamericanews:20200523220302p:plain

 

問題文的にはf:id:omoshiroamericanews:20200523220326p:plainに取り組んでいます。

かなり終着に近づいてきました。

 

問題文/VIDEOで取り扱いがあって日記で掘り下げていないのは

f:id:omoshiroamericanews:20200523220633p:plain

f:id:omoshiroamericanews:20200523220655p:plain

の2つです。

 

特にGradinent Checkingの理論はWeek2/3の課題でも使えるはずなので

掘り下げてやってみたいと思います。

 

もう1歩引いた立場で考えると、

機械学習の黄金パターンは

①予測式-->②Cost Function-->③Gradient-->④最適θ-->⑤予測でした。

 

Neural Networkでは

①予測式にFeedForwardを使っていて、③GradientにBackpropagationを使っている

ということがわかりました。

②Cost Functionで『J』、③Gradientで『grad』がわかれば

fmincgに放り込めば最適θが計算されます。

そして最適θがあれば予測値が出ます。

 

Regularized Gradientは③Gradientの最終段階ですね。

もーすぐ最適θが出て予測値が出ます。

 

ということで今全体のどこを取り組んでいるのが分かったのでRegularized Gradientに取り組みます。

 

まずVideoで振り返った内容の確認です。

 

Coursera Machine Learning Week5 2周目⑦ Backpropagation Video振り返り - 暇人日記

f:id:omoshiroamericanews:20200523223137p:plain

赤丸がRegularized Gradientの部分ですね。

赤丸を拡大します↓

f:id:omoshiroamericanews:20200523223207p:plain

 私の苦手な場合分けです。

 

違いはf:id:omoshiroamericanews:20200523223625p:plainがあるかないかです。

jが0だったら不要で、jが1以上なら必要です。

概念的にはjが0はBias unit用のθなのでRegularizedでCost FunctionJを計算する時に

入らない方がふさわしいということでした。

 

ところでθのl,i,jって何を意味したのか忘れたので前回の日記を振り返ります。

 

f:id:omoshiroamericanews:20200523223904p:plain

f:id:omoshiroamericanews:20200523224130p:plain


 

 jは緑なのでj=0はθのレイヤー最上部にあるBias Unit用のθのこととわかりました。

 

最上部のθについてはλをかけなくていいいよ、ということだと理解しました。

 

 

問題文を読んでみます。

 

f:id:omoshiroamericanews:20200523222916p:plain

 

問題文にも同じことが書いています。

j=0のΔはf:id:omoshiroamericanews:20200523224657p:plainが不要ということです。

 

j=0のときのΔとは何でしょうか?ということが問いになります。

Δは5000パターンの合計のgradを5000で割ったものでした。

 

 

ふっと思いつきました

Theta1は25x401でTheta1_grad=Δは25X401でした

Theta2は10X26、Theta2_grad=Δは10X26でした。

 

Theta2、Theta2_grad=Δで考えると、形が↓です。

 

f:id:omoshiroamericanews:20200523225607p:plain

この一番左の行の1X10がBias Unit用のθです。

というのは1X25でa(2)になりそうなところに

Bias Unitを足して1X26がa(2)になっているから

Theta2は26X10になっています。

その25-->26に1行増えた分に対応しているTheta2が

一番左の段だからです。

 

f:id:omoshiroamericanews:20200523111245p:plain

 

 

プログラミング的には

 

f:id:omoshiroamericanews:20200523225814p:plain

f:id:omoshiroamericanews:20200523225909p:plain

として、A=Theta2_grad . *maskBとすれば

λ X A でTheta2_gradのBias Unitの箇所にλがかからないようにできます。

 

プログラム全体ex4.mを読んだところ、

f:id:omoshiroamericanews:20200523231404p:plain

もし正解なら0.576051のcostが出るそうです。

 

やってみました

 

f:id:omoshiroamericanews:20200523231632p:plain

なりました!正解です!

 

次回はCheckGradientNNに取り組みます!