暇人日記

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

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

前回はGradinent Checkingがクリアできたので、fmincgで最適θを出して

予測値を出しましたがダメというところでした。

 

最適θを出してから予測値までを振り返ってみます。

構造は↓になっています。

 

f:id:omoshiroamericanews:20200711145414p:plain

 

そして計算ロジックはHidden Layerではsigmoid関数の代わりにtanh関数を

使てoutput layerでは掛け算のままとなっています。

 

f:id:omoshiroamericanews:20200711145510p:plain

 

なのでFeartureNormalizeした

f:id:omoshiroamericanews:20200711145803p:plain

Xに(本当は47個あるが3までを表示)、要素が1の行を加えて、Theta1とかけます。

 

f:id:omoshiroamericanews:20200711150004p:plain

47X25になっています。

 

これにtanh関数をします。

f:id:omoshiroamericanews:20200711150117p:plain

全て-1と1の間になっています。

 

要素が1の行を加えて47X26にします。

f:id:omoshiroamericanews:20200711150215p:plain

 

これをTheta2をかけます。

f:id:omoshiroamericanews:20200711150323p:plain

そのままの結果でいいはずなのでsigmoidもtanhも使っていません

 

ただ、yとは桁数がかけ離れています。。。

f:id:omoshiroamericanews:20200711150447p:plain

 

Hidden Layerでは-1と1の間にあるのに

output Layerでは10万くらいの結果にならなければ

ならないのでTheta2は大きな数字が入らないと駄目だと思いますが、

そうはなっていないので、桁数が違うのかなと思いました。

 

あ!!わかった気がします。

 

Jは予測値-yの2乗とθの式の積み上げでした。

 

このJの誤差が小さければ小さいほど良い予測となります。

今回はHidden Layerからoutput Layerで大きなθが必要ですが、

大きすぎるとJが大きくなるのでfmingが適度な大きさのθにとどめたと考えます。

 

θが大きくなってもいいように、設定されているのがλでした。

λを1で計算していたのですが、小さくしていってみます。

そうするとθは大きな値をとれるので、予測値が6桁に近づいてくると思います。

 

さっきはλ=1だったので0.1にしてみます。

 

f:id:omoshiroamericanews:20200711152226p:plain

あれ、イマイチでした。

 

λ=0.01にしてみます。

f:id:omoshiroamericanews:20200711153946p:plain

まだ、桁数がだめです。

 

λ=0.001にしてみます。

f:id:omoshiroamericanews:20200711154743p:plain

仮説が間違えているのでしょうか。。。

不安になってきました。

 

λ=0.0001にしてみました。

 

f:id:omoshiroamericanews:20200711155924p:plain

まだなのか、仮説の間違いなのか。。

 

 

λ=0.00001にしてみました。

f:id:omoshiroamericanews:20200711160630p:plain

 

ダメです、もう1回考えてみます。

 

Jの概念が↓でした。

 

f:id:omoshiroamericanews:20200711160103p:plain

右の部分のθの2乗部分が大きいため、大きいθは最適とはみなされないと考えました。

今回は左の部分は47個の2乗です。(予測値ーyは47個なので)

しかし右のθの部分は101個の2乗の合計になります。

(Theta1とThata2の合計が101個なので)

 

Theta2はhidden layerの-1から1の値を6桁に引き上げるため、

6桁が要求されます。それを2乗すると12桁になり、圧倒的な大きさとなるため、

左の部分のコントロールより右のθの部分のコントロールを優先した結果、

現在見えている予測値とyの差になっていると考えました。

 

λ=0としてみます。

こうすると右のθの部分はゼロになるので、左の部分の

予測値-yに特化した数字ができるはずです。

 

f:id:omoshiroamericanews:20200711161517p:plain

 

ダメです。

Jが原因だと思ったのですが、そうではないことがわかりました。

 

f:id:omoshiroamericanews:20200711161813p:plain

λ=0でJは実に655憶。最適化されているとは思えない値ですね。。。

 

違うことが原因で予測がずれていると判断します。

 

また次回頑張ります。