暇人日記

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

Coursera Machine Learning Week5 課題 2周目⑰ 予測

もう随分とWeek5のNeural Networkに取り組んでますが振り返りたいと思います。

 

Week2-4で学んだ黄金の流れ

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

でいくと①-③がこれまでの日記で完了しています。

 

Linear Regression/Logistic Regression/Neural Networkの

①-③を横並びにすると↓になります。

f:id:omoshiroamericanews:20200613234727p:plain


Linear Regression/Logistic Regression/Neural Networkは①-③さえできれば

fmincgもしくはfminuncに放り込むと④最適θが計算されます。

④最適θがあれば、Xにかければ⑤予測が出てくるという流れです。

 

それにしてもNeural NetworkはFeedForward/Backpropagation/

Gradinent Checking/Random Initializationと①-③をやるために

追加で学ばなければならないことが多いアルゴリズムでした。

 

①予測式にFeedForward/Random Initialization

③GradientにBackpropagation/Gradinent Checking/Random Initialization

が必要でした。

 

そしてoutput Layerが複数ある際に②Cost Function③Gradientを

ループ有で行うかループ無しで行うかを考える必要がありました。

 

これらから①-③を作るハードルがとても高かったです。

 

とはいえNeural Networkの①-③が完成したので、

これから④最適θと⑤予測に取り組みます。

問題文にはfmincgを使うこと、正しく計算できていれば的中率が95.3%±1%に

なるはずとあります。

±1%の幅があるのはRandom Initializationがあるからということです。

 

ちなみに全く同じ課題(5000の手書き数字判別)にWeek4でも取り組んでいて、

One VS AllのLogistic Regressionで94.9%、θが渡されていたFeedForwardで97.5%でした。

 

何故FeedForwardの%より低いかはlambdaの設定だと思います。

課題ではlambda=1と固定されているので、

lambdaが1なら的中率は95.3%±1%になるということだと思います。

 

必殺技にすら見えてきましたが、costCunctionでθをpとしてパラメーター化しているような式をfmincgに放り込んでいます。

f:id:omoshiroamericanews:20200614000208p:plain

今回はθはnn_paramsと表記されています。

 

1直線のunrollされたθがでてくるので、reshapeしてます。

f:id:omoshiroamericanews:20200614000443p:plain

 

実行してみました。

まず予測結果です。

f:id:omoshiroamericanews:20200614121056p:plain

95.3%±1%の範囲に入っています。

 

θ=nn_paramsです。

f:id:omoshiroamericanews:20200614121304p:plain

まず計算される一直線のθは10285X1という長さで冒頭だけ

取り出すと↓です。

f:id:omoshiroamericanews:20200614121331p:plain

 

これがreshapeされてTheta1,Theta2になっています。

f:id:omoshiroamericanews:20200614121524p:plain

f:id:omoshiroamericanews:20200614121604p:plain

冒頭の方で確認してみて、Theta1とnn_paramsが一致していることが確認できました。

 

これで他のケースにもNeural Networkを応用できそうな気がします。

 

Week2のLinear Regression with Multi課題やWeek3の合格者の課題に

Neural Networkで取り組んでみたいと思います。