汎化性能の向上
汎化誤差の種類と典型的な対策
- 近似誤差: モデルの表現力が足りないことによる誤差
- パラメータを増やして自由度を上げる
- 推定誤差: 偏った事例を使ったことによる誤差 -> 過学習
- 訓練データを増やす,パラメータを減らして自由度を下げる
- 最適化誤差: 目的関数を最小化するアルゴリズムによる誤差
- 洗練された最適化アルゴリズムを使う
推定誤差の低減
以下の手法は組み合わせられる
- 適切なネットワーク構造を選ぶ
- L2正則化
- パラメータが動く範囲を0周辺に制約する
- early stopping
- 訓練データの誤差は基本的にはパラメータ更新のたびに下がり続ける
- しかし,開発データではそうでない場合が有り,そのような場合は更新を止める
- ただし局所解になってしまう可能性はある
- 学習率減衰
- 開発データで改善がみられない場合は更新率を下げる
- L2正則化と異なり,開発データでの誤差が増え始めたときにパラメータに制約がかかる
- パラメータ共有
- 類似した目的をもった要素間で共有する
- RNNやCNNはパラメータを共有している一例
- 複数のタスクの類似性を仮定して,複数タスクを同時学習するマルチタスク学習でもパラメータ共有がしばしば使われる
- パラメータ結束
- 完全に同じにするのではなく,2つのパラメータが近くなるような制約を目的関数に追加する
- 事前学習
- 別の補助タスクで学習したパラメータを使う
- NLPではembeddingsをよく使う
- 対話モデルの強化学習の前に,教師有り学習でのパラメータを使う例など
- アンサンブル
- committee machinesやmodel averagingなど
- バギング: 訓練データから複数の部分集合を作る
- dropout
- 訓練時に状態変数の一部をランダムに0にする
最適化誤差の低減
- ゼフィア初期化
- IRNN
- 活性化関数
- sigmoidやtanhは出力が有界で計算が安定するが,微分係数が1未満なので勾配消失が起きやすい
- ReLUは正値入力には線形で微分係数は1なので,勾配消失が起きない
- maxoutなども
- カリキュラム学習
- 簡単な事例から学習を始める
- 正規化
- バッチ正規化
- 各層の依存関係によって状態変数の値が大きく変化することを防ぐ
- 大きな学習率でも勾配法が安定する
- ミニバッチ内の隠れ状態ベクトルの要素を平均0分散1となるよう変換する
- 誤差逆伝播法の中でも平均分散を計算する操作も含めて微分を計算することがある
- 層正規化
- ミニバッチを使わずに正規分布の入力を仮定して解析的に正規化する方法
- バッチ正規化
- Adam