前回はNeural Networkの精度の低さにびっくりしたところで終わりました。
まずはlambdaを調整してみたいと思います。
overfitやunderfitの時のガイドラインがCourseraでは紹介されていました↓
今回は当たらなさすぎの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へ変更します。
λを0.1、MaxIterを1000でやってみます。
的中率98%になりました!
この精度もくるとさすがNeural Network!と思えます。
10000にしてみました。
確かに時間かかります。30分は待ちました。
的中率は同じく98%でした。
しかも試行回数に正比例して的中率が上がるわけではなく、
ある程度のところで的中率も高止まりするというコーセラの解説でした。
λやMaxIterを調整するのはこれくらいが限界のように感じます。
UdemyのPythonによる予測コースを受けたときにグリッドサーチという手法が
紹介されていました。
それと同じことをループシュミレーション取り出しでやれば
できるかもしれませんが、今回は98%なので置いておきます。
ところでλ=1、MaxIter=100のとき的中率は67%でした
MaxIterを1000にしたら的中率がどれくらい上がるか見てみます。
93%になりました!
試行回数は500は設定した方が良いんだなと思いました。
最後にGradinent Checkingをしました↓
式は課題から完コピなので大丈夫だろうと思ってましたが
やはり大丈夫でした!
次回はWeek4の課題のOptionか、Week2の課題をNeural Networkで
解くことに取り組みたいと思います!