今回はfminuncに取り組みます。
これに似たfmincgがWeek4以降もずっと出てくるので非常に大事な関数だと思います。
まずは問題文を読むことにします↓
Week2ではgradientのStepとJが減る様子を順にみていったが、
Week3では備え付き機能のfminuncを使う、と説明されています。
↓でfminuncには制約がなければBestのthetaを見つけることができる関数と
説明されています。
これはめっちゃ便利な関数だ!使いこなしたい!と思いました。
読み進めていきます↓
使うのに必要なinputについて書かれています。
thetaの初期値とJとgradが必要と説明されています。
さらに読み進めていきます。
Courseraがすでにfminuncの関数はプログラムの中に書いています、
と説明されて、プログラム文そのものが書かれています↑
Costfunction(t,X,y),initial_theta,optionsを入力すると
thetaとcostが計算される関数になります。
tについては後ろで説明が出てきます。
さっきの『thetaの初期値とJとgradが必要』の
thetaの初期値=initial_theta,
Jとgrad= Costfunction(t,X,y)
の関係だと思います。
Optionsは
ですね。
まだまだ読み進めます。
ここはOptionsの箇所の説明です。
GradObjをonにすると、CostとGradientの情報が出てくると書かれているので、
最初の2つはSETだと思います。
次の2つもSETでMaxIterと400で400Step実験すると書いてあります。
MaxIterは Max Iterationの省略のようです。最大試行回数ということでしょうか。
さらに読み進めていきます。
@t(costFunction(t,X,y))のtはcostFunction.mを呼ぶ機能で
fminuncを使うためにcostFunction.mをラップくるむことができると書いていますね。
tはthetaのtではないようです。
まだまだ読み進めていきます
正しく設定出来たらfminuncはBestなthetaをJとともに一発回答してくれると
説明があります。
Week2ではalphaを設定して大きいか小さいかみたり、
ループを設定しなければなかったが、fminuncを使えば
そういうことは必要ないと書いてあります。
というわけで、fminuncでWeek2の課題を解いたのが↓でした。
逆にWeek3のこの課題をWeek2方式で解くことはできるのでしょうか?
興味がわいてきました、どこかでやってみたいと思います。
さらに読み進めていきます。
正しく設定出来たらJが0.203になると書いてあります。
プログラム全体ex2.mにはもう少し追加があって、
thetaが[25.161;n 0.206;n 0.201]になると書いてあります↓
何も追加でやることはないので、さっそく実行してみると↓
となりました!
今回はここまでです!また次回頑張ります!