深層モデルのための正則化

0.章の概要

この章では、深層モデルの正則化について学びます。深層学習のモデルは一般に多くのパラメータを持ち、訓練データに過剰に適合する傾向がありますが、正則化はこのような過学習を抑制し、モデルの汎化性能を向上させるために用いられます。本章では、正則化の基本的な考え方から具体的な手法までを詳しく解説し、正則化を適用する際の注意点ついても紹介します。

1.パラメータノルムペナルティー

学習キーワード: L1正則化、スパース表現、L2正則化、weight decay

概要

重み(パラメータ)は小さい方が過学習を抑えられるため、損失関数に正則化項(罰則項/ペナルティ項)を加えることがあります。ここでは代表的な正則化の手法を2つ紹介します。


L1正則化

L1正則化は、損失関数に対してL1ノルム(絶対値の和)をペナルティとして加えることで、モデルの複雑さを制御します。

正則化項: \(\lambda \sum_{j=1}^p |\beta_j|\)

ここで、 \(\lambda\) は正則化強度を制御するハイパーパラメータ、 \(\beta_j\) は \(j\) 番目のパラメータ、 \(p\) はパラメータの総数を表します。

L1正則化は、多くのパラメータを0にして不要なパラメータを削除することができます。

この特性をスパース表現と呼び、特徴量の多くが0に近い値を取り、重要な特徴量のみが非ゼロの値を取る状態を指します。
スパース表現により、モデルが不要な特徴量に依存しないため、モデルの解釈性が向上します。また、不要な特徴量が削減されるため、計算コストも削減されます。

具体例

例えば、多次元の重みを持つモデル、例えば、線形回帰モデル \(y = \beta_1 x_1 + \beta_2 x_2 + \beta_3 x_3\) があるとします。ここで、 \(\beta_1 = 1, \beta_2 = 2, \beta_3 = 3\) とします。L1正則化を適用すると、正則化項が \(\lambda (|\beta_1| + |\beta_2| + |\beta_3|) = \lambda (|1| + |2| + |3|) = 6\lambda\) となります。この正則化項を損失関数に加えることで、モデルの複雑さを制御し、不要なパラメータを削除することができます。


L2正則化

L2正則化は、損失関数に対してL2ノルム(二乗の和)をペナルティとして加えます。

正則化項: \(\lambda \sum_{j=1}^p |\beta_j|^2\)

ここで、 \(\lambda\) は正則化強度を制御するハイパーパラメータ、 \(\beta_j\) は \(j\) 番目のパラメータ、 \(p\) はパラメータの総数を表します。

L2正則化は、全てのパラメータを小さくすることで、モデルの安定性を向上させます。

この手法はweight decayとしても知られており、パラメータの減衰を通じてモデルが過学習を避けることを助けます。

具体例

例えば、多次元の重みを持つモデル、例えば、線形回帰モデル \(y = \beta_1 x_1 + \beta_2 x_2 + \beta_3 x_3\) があるとします。ここで、 \(\beta_1 = 1, \beta_2 = 2, \beta_3 = 3\) とします。L2正則化を適用すると、正則化項が \(\lambda (|\beta_1|^2 + |\beta_2|^2 + |\beta_3|^2) = \lambda (|1|^2 + |2|^2 + |3|^2) = 14\lambda\) となります。この正則化項を損失関数に加えることで、モデルの複雑さを制御し、パラメータの値を小さくすることができます。


L1正則化 と L2正則化 の効果の違い

L1正則化は不要なパラメータを0にすることで特徴量選択を行い、モデルの解釈性を高めます。一方、L2正則化は全てのパラメータを小さくすることでモデルの安定性を向上させ、過学習を防ぎます。

L1正則化の特性

L1正則化では、損失関数にパラメータの絶対値の和をペナルティとして加えるため最適化の過程で、パラメータが0に近づくほどペナルティが減少し、不要なパラメータが削除されてモデルがシンプルになります。

L2正則化の特性

L2正則化では、損失関数にパラメータの二乗和をペナルティとして加えます。これにより、全てのパラメータが均等に小さくなるように働きますが、パラメータを完全に0にすることはありません。L2のペナルティは、パラメータが大きくなると急激に増加しますが、パラメータが0に近づくとペナルティは小さくなります(例えば、ある重みが5だと二乗した場合は25となり影響が大きくなるが、ある重みが0.1だと二乗した場合は0.01となり影響が小さくなる)。したがって、L2正則化はパラメータを小さくすることは得意でも、完全に0にすることは難しい事になります。

まとめ

L1正則化は、不要なパラメータを0にすることで特徴量選択を行うため、特に解釈性が重要な場合に有効です。L2正則化は、不要なパラメータを小さくすることは得意ですが、完全に0にすることは通常ありません。どちらの正則化手法を使用するかは、データの特性や目的に応じて選択することが重要です。

2.確率的削除

学習キーワード: ドロップアウト、ドロップコネクト

概要

確率的削除は、モデルの過学習を防ぐためにランダムにノードを削除する手法です。これにより、モデルは特定のノードに依存せず、より一般化された特徴を学習します。確率的削除は、モデルの複雑さを制御し、過学習を防ぐために使用されます。

確率的削除の手法には、ドロップアウトとドロップコネクトの2種類があります。ドロップアウトは、モデルの学習中にランダムにノードを削除します。一方、ドロップコネクトは、モデルの学習中にランダムに接続を削除します。

つまり、確率的削除は、1つのネットワーク内でアンサンブル学習をしているとも捉えることができます。


ドロップアウト

ドロップアウトは、確率的削除の一種で、モデルの学習中にランダムにノードを削除します。ドロップアウトの確率は、ハイパーパラメータとして設定されます。たとえば、ドロップアウトの確率を0.5に設定すると、モデルの学習中にノードの半分がランダムに削除されます。CNNの全結合層に適用することが多く、モデルによりますが、ドロップアウトの確率は0.5する場合が多くあります。

ドロップアウトのイメージ図は、下記の通りです。ノードの半分がランダムに削除されています。

dropout

学習時と推論時でのドロップアウトの処理には注意は必要です。学習時には、ドロップアウトの確率に従ってノードを削除しますが、推論時には全てのノードを使用して予測を行います。このため、推論時にはドロップアウトの確率の逆数を各ノードの出力に掛けることで、推論時での出力を調整します。


ドロップコネクト

ドロップコネクトは、確率的削除の一種で、モデルの学習中にランダムに接続を削除します。ドロップコネクトの確率は、ハイパーパラメータとして設定されます。たとえば、ドロップコネクトの確率を0.5に設定すると、モデルの学習中に接続の半分がランダムに削除されます。(※ドロップアウトとの違いは、ノードを削除するかわりに接続を削除する点です。)

ドロップコネクトのイメージ図は、下記の通りです。ノードの接続がランダムに削除されています。

dropconnect

実務でのドロップアウトとドロップコネクトの使い分けは、ドロップアウトは全体のネットワーク構造をランダムに変更するため、より汎用性の高いモデルを構築するのに適しています。一方、ドロップコネクトは特定の接続をランダムに変更するため、特定のパターンや特徴に依存しないモデルを構築するのに適しています。したがって、モデルが扱うデータの特性や目的によって、適切な手法を選択することが重要です。

3.陰的正則化

学習キーワード: 早期終了、バッチサイズ、学習率の調整

概要

陰的正則化は、モデルの過学習を防ぐために使用される手法です。これにより、モデルはより一般化された特徴を学習し、過学習を防ぎます。陰的正則化には、早期終了、バッチサイズ、学習率の調整の3つの手法があります。


早期終了

早期終了は、モデルの学習中に検証データの損失が最小となる時点で学習を終了させることで、過学習を防ぎます。具体的には、学習中の各エポックの検証データの損失を監視し、前のエポックの損失よりも大きくなった時点で学習を終了します。仕組みがシンプルかつ効果も高いため、よく使用される手法です。

early_stopping

バッチサイズ

バッチサイズは、モデルの学習中に使用するデータのサンプル数を制御するパラメータです。バッチサイズの選択は、モデルの学習速度と学習の安定性を考慮して行う必要があり、過学習にも影響を与えます。バッチサイズが大きいと、モデルはより多くのデータを使用して学習します。これにより、1エポックあたりの学習時間が短縮されますが、過学習のリスクも高くなります。(大きなバッチサイズは、より安定した勾配推定を提供し、過学習を抑制することもあります。)一方、バッチサイズが小さいと、モデルは少ないデータで学習します。これにより、1エポックあたりの学習時間が長くなりますが、過学習のリスクは低くなります。


学習率の調整

学習率は、モデルの学習中に使用されるパラメータの更新量を制御するパラメータです。学習率が大きいと、モデルはより速く学習しますが、学習の安定性が低くなります。一方、学習率が小さいと、モデルはより安定して学習しますが、学習の進行が遅くなります。学習率の選択についても、モデルの学習速度と学習の安定性を考慮して行う必要があります。

具体的に、学習率を調整する方法として、以下のようなアプローチがあります。

  • 学習率の減衰:学習が進むにつれて学習率を減衰させることで、学習の安定性を高めることができます。例えば、学習率を一定の割合で減衰させる方法や、学習の進捗に応じて学習率を減衰させる方法があります。
  • 学習率のスケジュール:学習の各段階で異なる学習率を設定することで、モデルが適切に学習するように調整することができます。例えば、学習の初期段階では大きな学習率を設定し、後期段階では小さな学習率を設定する方法があります。
  • 自動学習率調整:学習率を自動的に調整する技術、例えば、AdamやRMSPropなどの最適化アルゴリズムを使用することで、最適な学習率を探索することができます。

キーワードまとめ

L1正則化、スパース表現、L2正則化、weight decay、ドロップアウト、ドロップコネクト、早期終了、バッチサイズ、学習率の調整