ウォンツテック

技術的な話や会社設立に関わる話などを適当にしていきます

機械学習 モデルのデバッグ

stanfordのmachine learning講習も6週目です

すごく重要な回だったので少しまとめ

アルゴリズムデバッグ手法

cross validationのチェック

学習の正当性を確認するのにデータを

  • training set
  • cross validation set
  • test set

に分けます。 トレーニングセットは学習のためのセットで残り2つは、それが妥当かの確認に使います 大体割合は60%:20%:20%で分けるとの事。 cross validation setはfeatureの数や正規化(λ)の加減、polynomial(ひとつのfeature xに対し、x2, x3などをfeatureに加える方法)の増加などを実施した際に正しく学習出来ているかを確認するためのデータセット。 学習状況の確認手順は以下

  1. training setの数をmとするとfor i =1:m とした繰り返しの中で2〜5を繰り返す
  2. training setのi個分のデータに対しを正規化されたコスト関数で学習し、最小となるパラメータを求める
  3. 2のパラメータを使い正規化していないコスト関数でtraining set i個分に対するコスト関数の値を出す
  4. 2のパラメータを使い正規化していないコスト関数でcross validation set(全データ)に対するコスト関数の値を出す
  5. 3と4の出力結果を元にhigh bias状態かhigh variance状態かを確認する
  6. 状況に合わせてパラメータに修正を加え1〜5を繰り返し試す
  7. 最適な状態でtest setでエラー率を出す

high biasな状態

under fittingで起こる。training setのエラー率が高く、cross validation setでのエラー率も高い 学習を進めるとtraining setとcross validation setのエラー率がほぼ同じになる。最終的に収束するエラー率が高いのでtraining setをいくら増やして学習させても無駄なのでこの状態が現れたら即見直し。

high varianceな状態

over fitting(過学習)で起こる。training setのエラー率が低く、cross validation setでのエラー率は高い 学習を進めると training setのエラー率がcross validation setのエラー率より低く、徐々に差は縮まってくる。 収束するエラー率は期待される値に近づくのでtraining setを集めるなり、他の対処方法でチューニングすべし。

状況に合った対応方法

high bias

  • featureを増やす -> hidden layer増やしたりhidden layerのfeature数を増やす
  • polynomial featureを増やす -> x2, x3やらx1*x2やらを増やすんだけどニューラルネットワークなら上記の方法で良さそう?
  • 正規化λを減らす -> over fitting是正するために入れたλが高すぎる場合にhigh biasになってる可能性あり

high variance

  • training setを増やす
  • featureの数を減らす -> hidden layer多すぎたりhidden layer中のparameter数が多い場合に減らす
  • 正規化λを増やす -> λは増やしすぎるとhigh biasになるので注意。まだ最適でないなら増やす