暇人日記

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

Week3の課題をNeural Networkで解いてみる 後半

前回はNeural Networkの精度の低さにびっくりしたところで終わりました。

 

まずはlambdaを調整してみたいと思います。

 

overfitやunderfitの時のガイドラインがCourseraでは紹介されていました↓

f:id:omoshiroamericanews:20200619223717p:plain

 

今回は当たらなさすぎのunderfitの状態なので、

Decreasing λに沿ってlambdaを小さくしていきます。

 

 


前回はlambda=1 で67%でしたので小さくしていこうと思います!

lambda= 0.1 にしてみました。

90%になりました!

かなりよくなりました!

 

90%以上を目指してまだまだ小さくしていきます!

lambda=0.01しました!

73%でした。。。

小さくしすぎでしょうか。。。

 

もう少しだけ小さくしてみます。

lambda=0.001にしました。

69%です。

 

どうやら1-0.01の間に最適点がありそうです。

 

lambda = 0.3で68%

 

0.1-0.01の間にありそうです。

 

lambda= 0.05にしてみました。

69%です。

 

今のところ0.1が一番いい値です。

0.09にしてみました。68%です。

0.11にしてみました。68%です。

 

0.1がスイートスポットのようです。

0.101にしてみました。72%です。

0.999にしてみました。69%です。

 

0.1001にしてみました。75%です。

 

表にしてみます。

λ 的中率
1.0000 67%
0.3000 68%
0.1100 68%
0.1010 72%
0.1001 75%
0.1000 90%
0.9990 69%
0.9900 68%
0.0500 69%
0.0100 73%
0.0010 69%

 

0.1000のところが圧倒的なスイートスポットに見えます。

と同時にλによる調整はこれが限界かなとも思いました。

 

的中率を上げる方法はもう1つあることを思い出しました。

 

それはfmincgの『MaxIter』を増やす方法です。

これは試行回数みたいなもので大きければ大きいほど

的中率が高くなるが計算時間も長くなるという代物でした。

しかも試行回数に正比例して的中率が上がるわけではなく、

ある程度のところで的中率も高止まりするというコーセラの解説でした。

 

現在は100に設定されているのですが、1000へ変更します。

f:id:omoshiroamericanews:20200620145309p:plain

λを0.1、MaxIterを1000でやってみます。

 

f:id:omoshiroamericanews:20200620145632p:plain

 

的中率98%になりました!

 

この精度もくるとさすがNeural Network!と思えます。

 

10000にしてみました。

確かに時間かかります。30分は待ちました。

的中率は同じく98%でした。

 

しかも試行回数に正比例して的中率が上がるわけではなく、

ある程度のところで的中率も高止まりするというコーセラの解説でした。

 

 

λやMaxIterを調整するのはこれくらいが限界のように感じます。

UdemyのPythonによる予測コースを受けたときにグリッドサーチという手法が

紹介されていました。

 

それと同じことをループシュミレーション取り出しでやれば

できるかもしれませんが、今回は98%なので置いておきます。

 

ところでλ=1、MaxIter=100のとき的中率は67%でした

MaxIterを1000にしたら的中率がどれくらい上がるか見てみます。

 

93%になりました!

 

試行回数は500は設定した方が良いんだなと思いました。

 

最後にGradinent Checkingをしました↓

f:id:omoshiroamericanews:20200620154028p:plain

 

式は課題から完コピなので大丈夫だろうと思ってましたが

やはり大丈夫でした!

 

次回はWeek4の課題のOptionか、Week2の課題をNeural Networkで

解くことに取り組みたいと思います!