前回の課題ではニューラルネットのパラメータΘが予め与えられていました。今回はバックプロパゲーションという手法を使ってこれを求める課題です。コスト関数はニューラルネットのすべてのノードについて足していきます。
logが出てくるところは2乗誤差と思ってもらってもかまわないということです。イメージの限界は凡人もスタンド―ドの先生もさほど変わらないようです。

machine learning - Stanford university

machine learning – Stanford university


ランダムに作ったイニシャルのパラメータ(重み)Θを使って右向きに各ノードの値を計算していきます。出力の層(レイヤー)まできたら答え(教師データ=Y)合わせをしてその差を算出(delta)。今度はdeltaを左向きに同じパラメータΘを使って戻していきます。こうすることでうまいことパラメータΘが良い方向に修正できる、という仕組みです。数学的な説明は難しいので割愛!ということでしたが、まあ使えればよしとしましょう。
machine learning - Stanford university

machine learning – Stanford university


下は具体的なプログラミングのやり方です。c言語などと違ってmatlab/octaveではなるべくforループは使わず行列表現で書いていくのが作法です。ようやく慣れてきました。
machine learning - Stanford university

machine learning – Stanford university


matlabフリー版の使用期限があと1カ月くらいになってしいまいました。なんとか最後まで終わらせるようにがんばりたいです。