もう随分とWeek5のNeural Networkに取り組んでますが振り返りたいと思います。
Week2-4で学んだ黄金の流れ
①予測式-->②Cost Function-->③Gradient-->④最適θ-->⑤予測
でいくと①-③がこれまでの日記で完了しています。
Linear Regression/Logistic Regression/Neural Networkの
①-③を横並びにすると↓になります。
Linear Regression/Logistic Regression/Neural Networkは①-③さえできれば
fmincgもしくはfminuncに放り込むと④最適θが計算されます。
④最適θがあれば、Xにかければ⑤予測が出てくるという流れです。
それにしてもNeural NetworkはFeedForward/Backpropagation/
Gradinent Checking/Random Initializationと①-③をやるために
追加で学ばなければならないことが多いアルゴリズムでした。
①予測式にFeedForward/Random Initialization
③GradientにBackpropagation/Gradinent Checking/Random Initialization
が必要でした。
そしてoutput Layerが複数ある際に②Cost Function③Gradientを
ループ有で行うかループ無しで行うかを考える必要がありました。
これらから①-③を作るハードルがとても高かったです。
とはいえNeural Networkの①-③が完成したので、
これから④最適θと⑤予測に取り組みます。
問題文にはfmincgを使うこと、正しく計算できていれば的中率が95.3%±1%に
なるはずとあります。
±1%の幅があるのはRandom Initializationがあるからということです。
ちなみに全く同じ課題(5000の手書き数字判別)にWeek4でも取り組んでいて、
One VS AllのLogistic Regressionで94.9%、θが渡されていたFeedForwardで97.5%でした。
何故FeedForwardの%より低いかはlambdaの設定だと思います。
課題ではlambda=1と固定されているので、
lambdaが1なら的中率は95.3%±1%になるということだと思います。
必殺技にすら見えてきましたが、costCunctionでθをpとしてパラメーター化しているような式をfmincgに放り込んでいます。
今回はθはnn_paramsと表記されています。
1直線のunrollされたθがでてくるので、reshapeしてます。
実行してみました。
まず予測結果です。
95.3%±1%の範囲に入っています。
θ=nn_paramsです。
まず計算される一直線のθは10285X1という長さで冒頭だけ
取り出すと↓です。
これがreshapeされてTheta1,Theta2になっています。
冒頭の方で確認してみて、Theta1とnn_paramsが一致していることが確認できました。
これで他のケースにもNeural Networkを応用できそうな気がします。
Week2のLinear Regression with Multi課題やWeek3の合格者の課題に
Neural Networkで取り組んでみたいと思います。