前回の取り組みで見つけた
>①fmincgが最適θを計算していない
を再度考えてみます。
もう一度、初期パラメーターと計算後の最適θを並べて
観察してみることにしました。
一見何も計算されないように見えましたが
微妙に計算されていることがわかりました。
ところで、これは誤差655憶の場合です。
誤差28憶の場合は計算されているのではないかと思いました。
28億のパターンです↓
28億のパターンだとちゃんと計算されていることがわかりました。
ということはfmincgで計算されていることが確認できました。
なぜ655憶のパターンと28憶のパターンがでてくるのかは
『local optima』かなと思い始めました。
local optimaはWeek2のLinear Regressionの時に説明がありました。
local optimaは↓の図みたいにJを最小化させるθがあるのに
そこにたどり着けず別の凹みに囚われてしまうというような説明でした。
fmincgを使えば、何でもかんでもちゃんと最小のJを見つけてくれると
思っていたのですが、そうではない挙動に見えます。
local optimaにはまるのはhidden layerで-1から1で、
output layerで6桁になるのが難点です。
output layerを6桁なのを1桁にして予測してみようと思いました。
単純にyを10万で割って予測してみます。
1回目です。
それっぽくなりました。
ただ、毎回こういう予測になるのかが不安なので
合計5回やってみます。
2回目です。
今回もそれっぽいです。
3回目です。
今回もそれっぽいです。確率が上がってきた気がします。
4回目です。
お、行けました!それっぽい感じです。
5回目です。
確率100%でできるようになりました!
予測値の精度をWeek2と比較したいと思います。
Week2のLinear RegressionではNormal Equationという絶対解を
出す方法がありました。
そのNormal Equationで出した答えが↓です。
誤差が0.20なので、Neural Networkで出した計算の方が
精度が高いということになります!
λ=0.1のときの誤差をみてみます。
λ=0.01のときです。
λ=0.001のときです。
λ=1のときです。
λ=10のときです。
どうも、面白いことに誤差はλ=0.01で最小になりそうな雰囲気があります。
λ=0のときが最小だと思ってましたが、次回考えてみます。
とにもかくにもNeural NetworkでLinear Regressionの予測が
できるようになった気がします。
ポイントはhidden layerで-1から1の間になるので、
予測値も意図的に1桁に落としていくことかと思いました。
また他のケースで実験してみたいと思います。