Coursera Machine Learning Week5 課題 2周目⑤ Costfunction ループ無し
CostFunctionをループ無しで解くことにトライしてみます。
これはK=1のとき、K=2のとき、・・・、K=10のときと
ループさせていたのをループさせずに解くということです。
ループありではOutput Layerが5000X10で、
ある意味わざわざK=1のときの予測を1行取り出して、
実SampleもK=1のときを変換して、5000X1と5000X1を突き合わせていました。
絵で書くと↓のようなイメージです。
Output Layerは5000X10でK=1のとき、K=2のとき・・・、K=10のときは
全てデータとして持っているので、実Sampleを5000X10で表現できれば
実Sample y かける Output Layerの式↓にもっていけます。
絵にすると↓になります。
こうすると5000X10同士の突き合わせができます。
ということは実Sampleを5000X1を5000X10に変えたいということになります。
そして、1,2,3,4,56,7,8,9,10すべてを1に変えたいということになります。
実験をしたいと思います。
今までは↓のように1こだけ変えていました。
ググってみると、↓の方法があることがわかりました。
ということで
実Sampleを5000X1を5000X10に変えれるということになります。
そして、1,2,3,4,56,7,8,9,10すべてを1に変えれるということになります。
データを保持するために
y_Vec = (1:num_labels)==y
とすれば実Sample;5000X10が手に入るので
Output Layer5000X10との突き合わせが可能です。
どう突き合わせるかというと↓のLogistic RegressionのCostFunctionを式をみると、
実Sampleの5000X10と予測=Output Layerの5000X10をかけることになります。
何故かけるかはWeek3のLogistic RegressionのCostFunctionの理由と同じです。
は0と1の間にしか数字をとらないことと、yは0か1なことを
うまく利用しています。詳しくはこちら↓をご覧ください
Coursera Machine Learning Week3 課題 2周目③ -苦闘記憶- Compute Cost for CostFunction - 暇人日記
ということで各要素ごとに突き合わせたい=かけたいので、『.』の出番です。
これで前回の日記と同じくJが0.2876になりました!
今回はここまでです。次回はRegularizedに挑みます!