学習を上手く行うために どのように学習を見守るか Babysitting the learning process , Hyper parameter optimization
まず学習を行う手順を確認しよう
1.Input data が Zero-Centeredになるように前処理 preprocessingを行う
2.CNNの構造を決定する 畳み込み層は何層にするかなど
3.Softmaxなどの損失関数で得られた値が妥当性のある値かチェックする この時reguralizationは無効にする
4.損失関数で得られた値が妥当性のある値であると確認できたら、reguralizationを設定していく 適用した際、手順3で得られた値より大きな値が得られていることを確認する
1~4までの手順は学習データの中から一部を取り出して行う ここで過学習を行い正確性が100になるのを確認する ここまで上手く行ったらようやく学習の準備が整ったということになる
全学習データを用いて学習を行う
1.reguralizationの値を小さめに設定して、損失関数の値が小さくなるようなLearning Rateの値を模索する
値があまり変わらないようであればLearning Rateが小さすぎるということなので大きくする。
値がNANあるいはInfとなるようであればLearning Rateが大きすぎるということなので小さく設定する
これらのHyperparameterの値はcross Validationを用いることで効果的に得られる。
初めはepoch数(学習回数)を小さめに設定し大体の予測を立てる
予測を立てたらepoch数を増やし、より詳細にHyperparameterの値を見ていく
設定したHyperparameterの値で学習を行い、最初の損失関数の値より3倍大きい状態が変わらないようであればそのHyperparameterの値の適用をやめる。
大体の予測を立てた値の範囲の最大、最小に近い値で学習が上手く行われている場合、最初に立てた予測の範囲が適切でない恐れがあるため予測の範囲を拡大することも必要である。
ex
1<x<10の値で調べた結果 x= 9.6でいい結果が得られた
その場合はxの範囲を 8<x<20のように設定して学習し直してみるなど