#はじめに
2週間ほど前からcouseraでMachine Learningを受講しています。
なにそれ?って方向けには既に色々なところで紹介されているので割愛しますが、
今カリキュラム通り2週目を終えて(プログラミング課題をぎりぎりに提出し、)
これは気付きをアウトプットしておかないとまずいなと思いましたので書くことにしました。
※プログラミング課題について答えをそのまま書くことはしませんが自分で気付くことが大事な要素もかなりあると思いますので、受講中の方は閲覧注意でお願いします。
※おかしな内容ありましたら、コメントいただけると大変うれしいです。
#1週目
ここは講義内容も課題も優しかったので難なくこなせた。
#2週目
プログラミング課題で結構忘れている内容があってビデオを行ったり来たりしたのでそこを中心に。
##Computing the cost J(θ)
見直したビデオ
第1週:Model And Cost Function Cost Function
第1週:Parameter Learning Gradient Descent For Linear Regression
第2週:Multivariate Linear Regression Multiple Features
第2週:Multivariate Linear Regression Gradient Descent for Multiple Variables
覚えておくこと
・コスト関数の導き方###
h_θ(x) = θ^T x
と置くことができるので、
J(θ) = \frac{1}{2m} \sum_{i=1}^m( h_θ(x^{(i)} ) − y^{(i)})^2
の
( h_θ(x^{(i)} ) − y^{(i)})^2
は下記のようにおくことができる。(ループのたびに入ってくるθが更新される前提)
( θ^T x -y)^2
Octaveで下記のように書ける
(X*theta - y).^2
(↑ふと思ったが$θ^T$って$theta'$なのでは・・・?要復習)
・Σ計算について
sum()で一発
##Gradient descent
見直したビデオ
第1週:Model And Cost Function Model Representation
第1週:Model And Cost Function Cost Function
第1週:Parameter Learning Gradient Descent For Linear Regression
第2週:Multivariate Linear Regression Gradient Descent for Multiple Variables
覚えておくこと
・計算順
\sum_{i=1}^m( h_θ(x) ) − y)^2*x
の計算を
(\sum_{i=1}^m( h_θ(x) ) − y)^2)*x
とやっていておかしかった。ただのアホ。正しくは下記
\sum_{i=1}^m(( h_θ(x) ) − y)^2*x)
θの更新タイミング
下記は同時更新なので、θは一時的に変数に控えて置くなどして変わらないようにしないとダメ。
θ_0:=θ_0−α\frac{1}{m}\sum_{i=1}^m(h_θ(x_i)−y_i)
θ_1:=θ_1−α\frac{1}{m}\sum_{i=1}^m(h_θ(x_i)−y_i)x_i
意識はしていたのだが2個目の式の右辺側の$θ_1$を普通にthetaにしてしまっていて収束しなかった。
###・ .* と * の違い
どこかのビデオでやったのかもしれないが忘れてしまっていて混乱した。
- で掛け算をすると、行列同士では普通の行列の計算になるが、
.*で掛け算すると同じマス同士がかけられたものが出力される。
>> A = [1 2 ; 3 4 ]
A =
1 2
3 4
>> B = [5 6 ; 7 8]
B =
5 6
7 8
>> A * B
ans =
19 22
43 50
>> A .* B
ans =
5 12
21 32
#3週目
テスト:Logistic Regression
→問2、問4が難しくて何回も間違えた。要復習
見直したビデオ
第3週:Logistis Regression Model Simplified Cost Function and Gradient Descent
第3週:Solving the Problem of Overfitting Regularized Logistic Regression
覚えておくこと
今週は慣れてきたのか、課題が簡単だったのか、先週に比べるとずっとスムーズにクリアできた。
costFunctionRegについてはtheta(1)を除外するを忘れててsubmit関数に怒られた。
こういうありがちなミスに対してはちゃんとコメント返してくれるのはとてもいいなと思った。
#4週目
有名な手書き数字をニューラルネットワークを使って予測してみようを実装してみるやつ。
見直したビデオ
第4週:Neural Networks Model Representation II
その他、フォーラムを見まくってしまった
覚えておくこと
oneVsAll
y == c ←これすごいなと思った。
predictOneVsAll
何をすればいいのかさっぱりわからなくて詰まってしまった。
θとX(入力値)を使ってやることといえばひとつしかないんですかね。
max()の使い方
戻り値が二つあるということがフォーラムと、helpに書いてあった。
第一戻り値(でいいのか?)が実数値で、第二戻り値がそのインデックス
predict
sigmoid(Theta1 * a1')としていて1時間くらい詰まったただの間抜け
実装方法は問題文のpdf参考。
バイアスユニットの足し方
1の配列を一番左に追加する。onesを使う
#5週目
Backpropagationの実装。めちゃくちゃ難しくてあまり理解できなかったので復習したいが、
時間が取れず。。。まとめすらまともにできてない。。。
#6週目
モデル選択の方法について。
1週目以来の目からうろこで、重要度がかなり高いように感じた。
復習したいが、プログラミング演習終わった時点でまだ後半のビデオが残っていて、あと1時間3分で期限が終わってしまうのでいったんメモだけ。(まあ、期限切れたところでどうということはないのだが。。。)
★要整理
learningCurveとvalidationCurveで使うパラメータの違い
#7週目
SVMについて。聞いたことはあったけどロジスティクス回帰などとどう違うのかはわからなかったので
勉強になる・・・と思いきや、ビデオの内容についていくのがやっとで内容はかみ砕けませんでした。
(仕事が忙しく土曜の午後からビデオを見始めたのもひとつの要因か。。。)
半面、プログラミング課題は一部を除きかなりスムーズにできた。
後半のメールの単語のベクトルをとる奴なんかは見たことあったけど、多分課題でいじったとこ以外のところもちゃんと見とかないと理解が十分とは言えないと思ったので、復習ポイントにしたい。
★復習
ex6_spamの処理をトレースする
★言いたいこと
modelの作り方どっかにかいとけ、PDFに書いとけ