Coursera Week5
はじめに
CourseraのWeek5を実施しましたので、私のメモを公開します。
Courseraってなんだ?という方はWeek1から御覧ください。
ニューラルネットワーク
目的関数(CostFunction)
$L$はニューラルネットワークのレイヤの数。
$s$はニューロンの数を表す。($s_1$は入力レイヤのニューロン数。)
$K$は出力ユニット、クラスの数。
ニューラルネットワークの目的関数は以下のように表す。
バックプロパゲーション(Backpropagation algorithm)
ニューラルネットワークのコスト関数$J(\theta)$の最小値を求めるためにバックプロパゲーションを使用する。(最急降下法の代わり的な。)
バックプロパゲーションは日本語で誤差逆伝播法という。
最急降下法は入力レイヤから順番に計算していたが、バックプロパゲーションは逆に出力レイヤ側から計算する。
最初の入力レイヤには誤差は無いので計算しない。
実装ノート:パラメータのアンロール(implementation note:Unrolling parameters)
ロジスティック回帰ではthetaも最急降下法の結果もベクトルだったが、ニューラルネットワークでは行列になる。
これらの行列を以下のようにベクトルにアンロールすることができる。
thetaVec = [Theta1(:); Theta2(:); Theta3(:);];
また、reshapeを使用することでもとの行列に戻すことができる。
Gradient checking
最急降下法が正しく動いているかチェックする。
ただ、このチェックアルゴリズムは非常に遅いので毎回走らせてはいけない。
ニューラルネットワークの学習方法
1.ウェイトを0に近いランダムな数で初期化
2.フォワードプロパゲーション
3.目的関数$J(\theta)$を求める
4.バックプロパゲーション
5.Gradient Checking
6.目的関数$J(\theta)$を最小化する