深層学習 - ハイパーパラメータ (継続的に更新)

目次

ハイパーパラメータ


1. モデルパラメータとハイパーパラメータの違い

  • モデルパラメータ (Parameter): モデルの内部構成変数であり、モデルはデータに基づいて変数を自動的に学習し、データに従って自身を駆動および調整できます。
    たとえば、ディープラーニングの重みとバイアスです。
  • ハイパーパラメータ: これは、機械学習アルゴリズムの調整パラメータ (調整パラメータ) またはフレームワーク パラメータでもあります。モデルの外部構成はデータによって駆動される必要はありませんが、トレーニング前またはトレーニング中に手動で設定および調整されます。確立された、または既存の経験に基づいた「正しい」値。異なるハイパーパラメータ、異なるモデル

機械学習で言われている「パラメータ調整」とは、実際には「パラメータ」を調整するのではなく、「ハイパーパラメータ」を調整することです。

 

2. 分類

(1) ネットワークパラメータ

1. ネットワーク層間の相互作用モード (加算、乗算、連結など)

2. コンボリューションカーネルの数とコンボリューションカーネルのサイズ

コンボリューションカーネルのカーネルパラメータはモデルパラメータです

3. ニューラル ネットワーク層 (深さとも呼ばれる) 層

3.1 ディープニューラルネットワークの隠れ層の数

4. 隠れ層ニューロンの隠れユニットの数

5. 出力ニューロンのコーディング方法

6. ニューロン活性化機能

(2) パラメータの最適化

1. 学習率α(学習率)

1.1 学習率減衰パラメータ(学習率減衰)

2. バッチサンプル数(バッチサイズ)

(1) 説明:

  • 大規模なバッチでは、行列と線形代数ライブラリを最大限に活用して計算を高速化できます。バッチが小さくなるほど、高速化の効果は明白ではなくなる可能性があります。
  • バッチが小さすぎると、更新が極小値になることもあります
  • バッチが大きすぎる場合、重みの更新頻度が低くなり、最適化プロセスに時間がかかります。

(2) 以下を選択します。

  • データセットのサイズとデバイスの計算能力に応じて選択してください。
  • したがって、許容できる (ただし必ずしも最適であるとは限らない) 他のハイパーパラメータ値を取得し、さまざまなミニバッチ サイズを試してみてください。
  • プロット精度対時間 (これはループ数ではなく、実際の実行時間です)
  • パフォーマンスを迅速に向上させるために最小のバッチ サイズを選択します。その後、他のハイパーパラメータの最適化を続けることができます。

3. さまざまなオプティマイザーのパラメーター

3.1 運動量勾配降下法アルゴリズムのパラメーター: β \betab
3.2 Adagrad アルゴリズムのパラメーター: ε \varepsilone
3.3 Adadelta アルゴリズムのパラメーター: β \betabe \バレプシロンe
3.4 Adam アルゴリズムのパラメータ: β 1 \beta_{1}b1β 2 \beta_{2}b2ε \バレプシロンe

4. 損失関数とその調整可能なパラメータ

(3) 正則化パラメータ

1. 正則化係数η

η が増加すると重み w が小さくなり、ネットワークの複雑さが低下し、データへの適合が向上することを意味し、これは実際のアプリケーションでも検証されています。

2. 重量減衰係数

3. ドロップアウト

ドロップアウトは、
NN の隠れ層のニューロンの数を変更することで、NN の過学習を防ぎます。

(4) その他

1. 反復回数エポック

n での改善禁止ルール:

  • トレーニング中に最高の検証精度を記録します
  • 連続 10 エポック (またはそれ以上) で最高の精度に達しない場合は、「もはや改善されていない」とみなして、この時点で早期停止を使用できます。
  • n はエポック数で、実際の状況に応じて 10、20、30... になります。

2. k最近傍法におけるk(最近接点の数)

3. K-means クラスタリングのクラスター数

4. デシジョンツリーモデルのツリーの数と深さ

5. 行列分解における潜在因子の数

6. クラスタリング手法のクラス数

7. トピックモデル内のトピックの数

8. 学習モデルのデータサイズ

プラン:

  • ソースからさらに多くのデータを収集する
  • 元のデータをコピーしてランダムノイズを加える
  • 再サンプリング
  • 現在のデータセットに基づいてデータ分布のパラメータを推定し、その分布を使用してさらに多くのデータを生成します
     

3. ハイパーパラメータの調整

(1) 最適化の理由

  • 基本的に、これは最適解を見つけるためのモデルの最適化と正則化項の関係です。ネットワーク モデルの最適化と調整の目的は、大域的な最適解 (またはより優れた局所的な最適解) を見つけることであり、正則化項はモデルが可能な限り最適に適合することを期待します。通常、両者の間には一定の対立関係がありますが、両者の目標は同じ、つまり、予想されるリスクを最小限に抑えることです。モデルの最適化では経験的リスクを最小限に抑えたいと考えていますが、過学習に陥りやすいため、モデルの複雑さを制限するために正規項が使用されます。したがって、この 2 つの関係のバランスをどのように取って、最適またはより良い解決策を得るかが、ハイパーパラメータ調整の最適化の目的です。

なぜ学習率を調整する必要があるのですか?
学習率はモデルのトレーニングにおいて最も重要なハイパーパラメーターであると言えます。通常、1 つまたは一連の優れた学習率により、モデルのトレーニングが高速化されるだけでなく、より優れた、または最適な精度も得られます。学習率が大きすぎたり小さすぎたりすると、モデルの収束に直接影響します。モデルが特定のレベルまでトレーニングされると、損失はもう減少しなくなることがわかっています。この時点では、モデルの一次勾配はゼロに近く、通常、ヘッセ行列に対応する 2 つの状況が存在します。

  1. 正定値、つまり、すべての固有値が正です。このとき、通常、極小値が得られます。極小値が大域最小値に近い場合、モデルはすでに良好なパフォーマンスを獲得していますが、ギャップがある場合、大きい場合、モデルのパフォーマンスが良くありません。改善する必要があります。通常、トレーニングの開始時に後者が最も一般的です。
  2. 固有値は正と負の両方であり、このときモデルは鞍点に陥る可能性が高く、鞍点に陥るとモデルの性能が非常に低下します。

上記 2 つのケースでは、トレーニングの初期および中期において、この時点で学習率がまだ固定されていると、モデルが左右の振動または鞍点に陥ってしまい、最適化を続けることができなくなります。したがって、学習率の減衰または増加は、モデルが衝撃を効果的に軽減したり、鞍点から脱出したりするのに役立ちます。

 

(2) 最適化戦略

1. 気をつけてください(子守、試行錯誤とも呼ばれます)

フォローアップのアプローチは、試行錯誤法、または学術分野では大学院降下法として知られています。このアプローチは 100% 手動であり、学習プロセスのすべてのステップ (データ収集から特徴マップの視覚化まで) に従い、時間がなくなるか期限または動機がなくなるまでハイパーパラメーターを順番に繰り返します。
 

2. ハイパーパラメータの自動検索方法

例証します:

  • 優れたデータ前処理
  • 適切なモデルの構造と機能
  • 優れたトレーニング戦略とハイパーパラメータ
  • 適切な後処理
  • 結果の厳密な分析。AutoML の役割は、効率的なモデル構築とハイパーパラメータ調整を促進することです。
     
2.1 グリッド検索/全数検索(グリッド検索)

各ハイパーパラメータのおおよその候補セットをリストし、これらのセットを項目ごとの組み合わせ最適化に使用します。

  • 利点: より良い効果
  • 欠点: 計算時間はハイパーパラメータの数に応じて指数関数的に増加するため、非効率的です。

2 種類のハイパーパラメータがある場合、各タイプのハイパーパラメータには調査対象の 3 つの値があり、それらのデカルト積の後、9 つのハイパーパラメータの組み合わせが得られます。

 

2.2 ランダム検索

ランダムなハイパーパラメータを生成するために、各ハイパーパラメータの分布関数を定義します。

  • 利点: より効率的
  • 短所: より良いハイパーパラメータが見つかるという保証はありません。
     

3.微回転

名前のとおり、パラメータを少し調整するだけで優れたパフォーマンスを得ることができます。

小規模なデータセットでは、通常、ゼロからトレーニングするよりも微調整する方がはるかに優れています。これは、より多くのパラメータをトレーニングすると、少量のデータの前提下では簡単に過学習につながる可能性があるためです。

(1) 方法:

  • 最後に変更されたレイヤーには大きな学習率を使用し、未変更のレイヤーには小さな学習率を使用します。
  • 最上位の変更されたレイヤーを除くすべてのレイヤーパラメーターをフリーズします

(2) 微調整で最初に最下層をフリーズし、最上層をトレーニングするのはなぜですか?

  • 最上位層をトレーニングすると、最上位層の不適切な初期化が防止されます。
  • 通常、下位レベルの機能はより一般的な機能であり、レベルが高いほど、全体的な高レベルのセマンティクスがより完全になります。

(3) データセットの微調整方法を選択するにはどうすればよいですか?

  • データは元のデータセットに似ています。最終出力層を変更してトレーニングするだけです。パラメータが多すぎると、簡単にオーバーフィットします。
  • データは元のデータセットとは大きく異なります。出力最上層の微調整が完了したら、微調整用に最上層から下半分までの層数を微調整します。
     

4. ベイズ最適化

 

(3) プロセス

  • まず、検索空間について先験的な仮定を立てます。つまり、ハイパーパラメータを選択する方法を仮定します。
  • その後、確率モデルを継続的に最適化して更新します。
  • 最終的な目標は、検証セット上で誤差が最小のハイパーパラメータのセットを見つけることです。
     

(4) 学習率のチューニング

1. 理由

学習率はおそらく、モデルのトレーニングにとって最も重要なハイパーパラメーターです。通常、1 つまたは一連の優れた学習率により、モデルのトレーニングが高速化されるだけでなく、より優れた、または最適な精度も得られます。学習率が大きすぎたり小さすぎたりすると、モデルの収束に直接影響します。モデルが特定のレベルまでトレーニングされると、損失はもう減少しなくなることがわかっています。この時点では、モデルの一次勾配はゼロに近く、通常、ヘッセ行列に対応する 2 つの状況が存在します。

  1. 正定値、つまり、すべての固有値が正です。このとき、通常、極小値が得られます。極小値が大域最小値に近い場合、モデルはすでに良好なパフォーマンスを獲得していますが、ギャップがある場合、大きい場合、モデルのパフォーマンスが良くありません。改善する必要があります。通常、トレーニングの開始時に後者が最も一般的です。
  2. 固有値は正と負の両方であり、このときモデルは鞍点に陥る可能性が高く、鞍点に陥るとモデルの性能が非常に低下します。

上記 2 つのケースでは、トレーニングの初期および中期において、この時点で学習率がまだ固定されていると、モデルが左右の振動または鞍点に陥ってしまい、最適化を続けることができなくなります。したがって、学習率の減衰または増加は、モデルが衝撃を効果的に軽減したり、鞍点から脱出したりするのに役立ちます。
 

2. 説明:

  • 他のハイパーパラメーターは、テスト セットの最終的な分類精度を向上させることを目的としているため、精度に基づいて選択されます。
  • ただし、学習率が最終的な分類精度に影響を与えるのはごくまれです。
  • その主な目的は、勾配降下法におけるステップ サイズを制御することであり、コストを監視することは、ステップ サイズが大きすぎるかどうかを検出する最良の方法です。
  • 最後に、トレーニングの初期段階では、高い精度は低い分散を意味する傾向があるため、この 2 つに大きな違いはありません。
     

3. 自動調整:

  • トレーニング プロセス中に最高の精度を記録します。最高の精度が 10 回連続 (またはそれ以上) エポックに達しない場合、「これ以上の改善は見られない」と見なすことができます。
  • 学習率を半分 (または 1/10) にすることを選択して、プログラムを実行し続けることができます。
  • 学習率が元の 1/1024 になるまでこのプロセスを継続し、プログラムを終了します。
     

4. テンソルフロー調整戦略

(1)指数関数的減衰

  • 指数関数的減衰は最も一般的に使用される減衰方法です
  • この方法はシンプルで簡単です
  • トレーニングの初期段階で大きな減衰は収束に役立ち、後期の小さな減衰は微調整に役立ちます。
    ここに画像の説明を挿入

(2)区分定数

  • 段階的に学習率を設定する方法
  • 異なる段階で異なる学習率を手動で設定可能
  • この学習率は微調整に重点を置いています
    ここに画像の説明を挿入

(3)多項式_減衰

  • べき乗が 1 未満の場合は 1/べき乗、つまり青い線、べき乗が 1 より大きい場合は緑の線になります。
  • サイクル(cycle) 下がった後に再び上がるかどうかを決定するプロセス
    ここに画像の説明を挿入

 

5. 差分学習

トレーニング中にネットワーク内のさまざまな層に異なる学習率を設定する方法は、差分学習と呼ばれます。


ここに画像の説明を挿入

  • 最初の数レイヤーには、通常、線やエッジなどの非常に細かいデータが含まれますが、これらは変更されることが予想されず、情報が保持される傾向があります。
  • 対照的に、図の緑色のレイヤーなど、後のレイヤーでは、口、鼻などの詳細な特徴を維持することなく取得できます。

例証します:

  • ネットワークによっては 100 を超えるレイヤーがある場合があるため、モデル全体を微調整するとコストがかかりすぎます。したがって、モデルの微調整は通常、一度に 1 つのレイヤーごとに行われます。
  • ただし、これには逐次性が必要であり、並列処理が妨げられ、データセットを複数回通過する必要があるため、小さなデータセットでは過剰適合が発生します。
  • 差分学習手法は、さまざまな NLP 分類タスクの精度を向上させ、エラー率を削減することが示されています。
     

4. 重要性の順序

(1) 学習率 α、損失関数の調整可能なパラメータ

  • 学習率: 最も重要なハイパーパラメータで、トレーニング中のネットワーク勾配更新の大きさを直接制御し、モデルの実効許容誤差に直接影響します。
  • 損失関数の調整可能なパラメータ: これらのパラメータは通常、実際の損失関数と組み合わせて調整する必要があり、ほとんどの場合、これらのパラメータはモデルの実効許容誤差にも直接影響します。

これらの損失は一般に 3 つのカテゴリに分類できます。

  1. 補助損失は、一般的な損失関数を組み合わせて、特徴表現の最適化を支援します。たとえば、計量学習におけるセンター損失は通常、クロスエントロピー損失と重みを組み合わせて、いくつかの特定のタスクを完了します。この場合、一般に、補助損失値がクロスエントロピー損失値の 2 桁以下またはそれ以下であることが推奨されます。
  2. マルチタスク モデルの複数の損失関数。各損失関数は、タスク自体間の相関関係に応じて、独立しているか相互に関連しています。
  3. 独立した損失関数。このタイプの損失は通常、特定のタスクに重大な影響を与えます。たとえば、RetinaNet の焦点損失、パラメータ γ、α は、最終的な効果に大きな影響を与えます。このタイプの損失は通常、論文で特定の推奨値を示します。
     

(2) バッチサンプル数、運動量オプティマイザの運動量パラメータβ

  • バッチ サンプル サイズ (バッチ サイズ): バッチ サンプルは、定量的勾配降下の方向を決定します。
  1. バッチサンプル数が少なすぎる場合、極端な場合、たとえばバッチサイズが 1 の場合、つまり各サンプルで 1 回勾配方向を修正する必要がある場合、サンプル間の差が大きくなるほど、収束は難しくなります。ネットワーク内にバッチ正規化 (batchnorm) がある場合、バッチ サイズが小さすぎると、収束することがさらに難しくなり、崩壊することさえあります。これは、データ サンプルが少ないほど、統計の代表性が低くなり、それに応じてノイズが増加するためです。
  2. バッチサンプル数が多すぎると基本的にグラジエント方向が安定し、局所最適解に陥りやすく精度が低下します。
  3. 一般的な基準範囲は [1:1024] の間となります。もちろん、これは絶対的なものではなく、特定のシナリオやサンプル条件と組み合わせる必要があります。
  • 運動量オプティマイザの運動量減衰パラメータ β (運動量を伴う勾配降下): 勾配の指数関数的に重み付けされた平均を計算し、この値を使用してパラメータを更新します。0.9 に設定するのが一般的で効果的な選択です。
     

(3) ネットワークパラメータ、Adam オプティマイザのハイパーパラメータ、重み減衰係数、破棄方法の割合

これらのパラメータの重要性を最後に置くことは、これらのパラメータが重要ではないという意味ではありません。代わりに、ほとんどの実践において、これらのパラメーターを過度に試すことは推奨されないことを意味します。

  • ネットワーク パラメーター: 一般に、ネットワーク層の数を増やすとモデルの許容値が増加しますが、モデルの実際の実効許容値はサンプルの数と品質、層間の関係などにも関連するため、一般的には、ネットワークが最初に修正されます。層の数、特定の段階への調整、または多数のハードウェア リソースは、ネットワークの深さでさらに調整できます。
  • Adam オプティマイザーのハイパーパラメーター: Adam オプティマイザーの β1、β2、ϵ。通常は 0.9、0.999、10−8 に設定すると、良好なパフォーマンスが得られます。
  • 重み減衰係数: 通常、0.0005 などの推奨値があります。あまり試行せずに推奨値を使用してください。
  • ドロップアウト率 (ドロップアウト): 通常、過学習を防ぐために完全に接続されたレイヤー間で使用されます。比率は [0.2,0.5] の間で制御することをお勧めします。

ドロップアウトを使用する場合は、次の 2 つの点に特に注意する必要があります。

  1. RNN では、ループがメモリ セルに直接配置されると、ノイズが増幅され、学習が妨げられます。一般的には、入力層と出力層に配置することをお勧めします。
  2. ドロップアウト直後にバッチノルムを維持することはお勧めできません。ドロップアウトはバッチノルムによって計算された統計に影響を及ぼし、分散シフトを引き起こす可能性があります。この場合、モデルは推論段階で完全に崩壊します。
     

5. 一部のハイパーパラメータの適切な範囲

ハイパーパラメータ 推奨範囲 予防
コンボリューションカーネルサイズ [7x7]、[5x5]、[3x3]、[1x1]、[7x1、1X7]
初期学習率 SGD:[1e-2, 1e-1]
モーメント:[1e-3, 1e-2]
アダグラッド:[1e-3, 1e-2]
アダデルタ:[1e-2, 1e-1]
RMSprop:[1e-3] 、1e-2]
アダム:[1e-3、1e-2]
アダマックス:[1e-3、1e-2]
ナダム:[1e-3、1e-2]
これらの範囲は通常、ゼロからトレーニングする場合を指します。微調整を行うと、初期学習率を 1 ~ 2 桁削減できます。
バッチサンプルサイズ [1,1024] バッチサンプルの数が大きすぎる(6000 を超える)か 1 に等しい場合は、学習戦略または内部正規化方法の調整に注意を払う必要があります。
損失関数の部分ハイパーパラメータ 複数の損失関数間では、損失値は可能な限り近くなる必要があり、2 桁を超えたり下回ったりすることはお勧めできません。 これは複数の損失の組み合わせの場合を指しますが、必ずしも完全に当てはまるわけではありません。単一の損失ハイパーパラメータを実際の状況と組み合わせる必要がある
重量減衰係数 [0、1e-4]
廃棄率 [0、0.5]

上記は未完成であり、更新する必要があります。個人的な学習のためのみです。侵害の連絡先は削除されています。間違いや不備があれば、改善のためにご指摘ください。

おすすめ

転載: blog.csdn.net/abc31431415926/article/details/127962898