暇人日記

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

Week2の課題(家の値段)をNeural Networkで解いてみる-後編⑥-

前回の取り組みで見つけた

>①fmincgが最適θを計算していない

を再度考えてみます。

 

もう一度、初期パラメーターと計算後の最適θを並べて

観察してみることにしました。

 

一見何も計算されないように見えましたが

微妙に計算されていることがわかりました。

 

f:id:omoshiroamericanews:20200724211033p:plain


ところで、これは誤差655憶の場合です。

誤差28憶の場合は計算されているのではないかと思いました。

 

28億のパターンです↓

f:id:omoshiroamericanews:20200724212129p:plain

28億のパターンだとちゃんと計算されていることがわかりました。

 

ということはfmincgで計算されていることが確認できました。

なぜ655憶のパターンと28憶のパターンがでてくるのかは

『local optima』かなと思い始めました。

 

local optimaはWeek2のLinear Regressionの時に説明がありました。

 

local optimaは↓の図みたいにJを最小化させるθがあるのに

そこにたどり着けず別の凹みに囚われてしまうというような説明でした。

 

f:id:omoshiroamericanews:20200724212932p:plain

fmincgを使えば、何でもかんでもちゃんと最小のJを見つけてくれると

思っていたのですが、そうではない挙動に見えます。

local optimaにはまるのはhidden layerで-1から1で、

output layerで6桁になるのが難点です。

 

output layerを6桁なのを1桁にして予測してみようと思いました。

単純にyを10万で割って予測してみます。

 

1回目です。

f:id:omoshiroamericanews:20200724214945p:plain

f:id:omoshiroamericanews:20200724215010p:plain

それっぽくなりました。

ただ、毎回こういう予測になるのかが不安なので

合計5回やってみます。

 

2回目です。

f:id:omoshiroamericanews:20200724215533p:plain

f:id:omoshiroamericanews:20200724215555p:plain

今回もそれっぽいです。

 

3回目です。

f:id:omoshiroamericanews:20200724215920p:plain

f:id:omoshiroamericanews:20200724215939p:plain

今回もそれっぽいです。確率が上がってきた気がします。

 

4回目です。

f:id:omoshiroamericanews:20200724220418p:plain

f:id:omoshiroamericanews:20200724220451p:plain

お、行けました!それっぽい感じです。

 

 

5回目です。

f:id:omoshiroamericanews:20200724222226p:plain

f:id:omoshiroamericanews:20200724222243p:plain

確率100%でできるようになりました!

 

予測値の精度をWeek2と比較したいと思います。

Week2のLinear RegressionではNormal Equationという絶対解を

出す方法がありました。

 

そのNormal Equationで出した答えが↓です。

f:id:omoshiroamericanews:20200724223605p:plain

f:id:omoshiroamericanews:20200724223628p:plain

誤差が0.20なので、Neural Networkで出した計算の方が

精度が高いということになります!

 

λ=0.1のときの誤差をみてみます。

f:id:omoshiroamericanews:20200724224105p:plain

 

λ=0.01のときです。

f:id:omoshiroamericanews:20200724224329p:plain

 

λ=0.001のときです。

f:id:omoshiroamericanews:20200724224625p:plain

 

λ=1のときです。

f:id:omoshiroamericanews:20200724224829p:plain

 

λ=10のときです。

f:id:omoshiroamericanews:20200724225035p:plain

 

どうも、面白いことに誤差はλ=0.01で最小になりそうな雰囲気があります。

λ=0のときが最小だと思ってましたが、次回考えてみます。

 

とにもかくにもNeural NetworkでLinear Regressionの予測が

できるようになった気がします。

 

ポイントはhidden layerで-1から1の間になるので、

予測値も意図的に1桁に落としていくことかと思いました。

また他のケースで実験してみたいと思います。