Gradient CheckingをWeek5ではなくWeek3やWeek4の課題で使う練習をしたいと思います。
まずはWeek3の課題のwithout regularizationでやってみます。
100人の受験者のTEST1とTEST2の得点と合否がサンプルとして
与えられ、どれくらいのTEST1とTEST2だったら合格するかという
Logistic Regressionの問題でした。
thetaは3X1だったので
gradも3X1です↓
これにGradient Checkingの式を入れてみました↓
見事、左右に並びました!
左の列がGradinent Checkingで計算したgrad,
右の列がfminuncで計算したgradが並びます。
ただ、精度をはかる指標が1e-9の小ささまではいってないですね。
かなりfminuncとGradient Checkingの差は大きいという判定になりそうです。
with Regularizationで見てみます。
やはり精度をはかる指標が1e-9の小ささまではいってないですね。
かなりfminuncとGradient Checkingの差は大きいという判定になりそうです。
これはlambda=1だったので、lambda=0.1にしてみました。
あんまり傾向は変わらずですね。。。
続いてWeek4のOne VS Allでやってみます。
これは手書きの文字の判別でした。
5000のサンプルが与えれており、1サンプルは1X400の情報量でした。
thetaは401X10でした。
やり始めたところ計算が10分経っても終了しません。。。
こういうときのために評価用にSmall Neural Networkの作成が必要なんだと
実感しました。
ようやく計算終了しましたが、あれ!?です↓
Gradinent Checkingのgradは401X1となっています。
しかもerrorです。。。
そういえばgradも401X1になってますね。
そうかぁ、Week4のOne VS Allでは401X1のthetaをK=1のとき、K=2のとき、・・・・・K=10のときで合計して401X10にしていました。
今、私のたてた式だと401X1の取り出しになっていますね。
さらにyも1~10の間をとっているので、
c=1で(y == c)を入れ込んで401X1を取り出すようにします。
,
うまくいきました!
しかも基準の1e-9とほぼ同じ1.76937e-09と出ました!
c=2でもやってみます!
うまくいきました!
今後、Gradientがうまくいっているかどうか迷ったら、
使えそうです!
別の日記でこのWeek5で学習したNeural Networkを
コロナ感染者予測に応用できないかなぁとトライしてたんですが、
このNeural Networkが合っているかどうかGradinent Checking使う
楽しみができました!
今回はここまでです。また次回頑張ります!