勾配降下法
誤差関数の勾配(微分)と逆の方向にパラメータを少しずつ動かして誤差を減らす方法です。1回の更新に使うデータ量で3つに分かれます。
| 方式 | 1回の更新に使うデータ | 特徴 |
|---|---|---|
| バッチ学習 | 全データ | 安定するが計算が重い |
| ミニバッチ学習 | 数十〜数百件 | 実務の標準。GPUと相性が良い |
| オンライン学習(確率的勾配降下法 SGD) | 1件 | 速いが更新が不安定 |
訓練データ全体を1回使い切る単位がエポック、ミニバッチ1つで1回更新する単位がイテレーションです。10,000件をバッチサイズ100で学習すると、1エポックは100イテレーションです。
学習率と問題点
学習率は1回の更新幅を決めるハイパーパラメータです。大きすぎると振動や発散、小さすぎると収束が遅く、局所最適解(付近では最小だが全体では最小でない点)や鞍点(ある方向には極小、別の方向には極大で勾配がほぼ0の点)に留まりやすくなります。高次元では局所最適解より鞍点の方が学習を停滞させる主因とされます。
改良手法
- モーメンタム: 前回の更新方向を慣性として加え、振動を抑えて鞍点を抜けやすくする
- AdaGrad: パラメータごとに過去の勾配の二乗和で学習率を割り、更新の少ないパラメータの学習率を大きく保つ。学習率が下がりすぎる欠点
- RMSprop、AdaDelta: AdaGradの学習率低下を、過去の勾配を指数的に減衰させて緩和
- Adam: モーメンタムとRMSpropを組み合わせた手法で現在の標準
- AdaBound、AMSBound: Adamの学習率に上下限を設けて、終盤はSGDに近い挙動にする
ハイパーパラメータの調整
学習率、バッチサイズ、層の数、正則化の強さなど人が設定する値がハイパーパラメータです。候補値の全組み合わせを試すグリッドサーチは種類が増えると試行回数が指数的に増えるため、ランダムに組み合わせを試すランダムサーチの方が効率的な場合が多くあります。
その他の重要概念
- 早期終了: 検証誤差が上昇に転じた時点で学習を打ち切る。ヒントンが「美しいフリーランチ」と呼んだ
- 二重降下現象: モデルを大きくしていくと、一度悪化した汎化誤差が再び改善する現象
- ノーフリーランチの定理: あらゆる問題に対して最良のモデルや手法は存在しない
試験で問われる観点
- バッチ・ミニバッチ・オンラインの区別、エポックとイテレーションの計算
- 学習率の大小による影響、鞍点の意味
- AdamはモーメンタムとRMSpropの組み合わせ
- グリッドサーチとランダムサーチの違い、早期終了の意味