暇人日記

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

Neural Networkを3階層から4階層にする

Week5の課題はNeural Networkが3階層の設定ですが、

4階層に変更することに挑戦しました。

 

 

絵にするとこういう感じです↓

f:id:omoshiroamericanews:20200904222238p:plain

 

何故3階層から4階層に変更したいかというと

初心者コンテストに挑戦したのですが、予測精度が低く合格点がとれませんでした。

3階層から4階層にしたら精度が上がるかなと思って挑戦してみようと思いました。

courseradaisuki.hateblo.jp

 

 

変更点①Layer 

f:id:omoshiroamericanews:20200904223053p:plain

f:id:omoshiroamericanews:20200904223243p:plain

 

②nn_paramsとTheta1とTheta2とTheta3が①のlayerに連動するようにする

f:id:omoshiroamericanews:20200904223413p:plain

f:id:omoshiroamericanews:20200904223813p:plain

 

③nnCostFunction.mにhidden_layer_size1とhidden_layer_size2を加える

f:id:omoshiroamericanews:20200904224030p:plain


FeedForwardでa4まで積み上げる。

Jの計算にTheta3を追加する

deltaを1つ増やす。

Theta1_grad /Theta2_gradにTheta3_gradを加える。

 

④initial_thetaを3つ設定できるようにする

f:id:omoshiroamericanews:20200904224951p:plain

 ⑤costFunctionにhidden_layer_size1とhidden_layer_size2を加える

f:id:omoshiroamericanews:20200904225159p:plain

⑥fmincgで計算されたnn_paramsをTheta1/Thata2/Thata3へreshape調整

f:id:omoshiroamericanews:20200904225303p:plain

⑦Gradinent Checking機能を修正する

f:id:omoshiroamericanews:20200904225528p:plain

 

hidden_layer_size1とhidden_layer_size2を加えて

Thata1/Theta2/Theta3の調整を行いました。

 

f:id:omoshiroamericanews:20200904225627p:plain

 

 

ここまでの変更を加えて4階層でのNeural Networkで

Gradinent Checkingしました。

 

f:id:omoshiroamericanews:20200904225740p:plain

 

差異がe-11なので極小といえます。

うまくいきました!

 

3階層と4階層ではどちらの予測精度が高くなるのか

初心者コンテストのデータで実験してみます!

 

実験結果は暇人日記IIの方に書くことにします。

 

また次回頑張ります!