モデルのパフォーマンスを改善するための科学的アプローチ

このドキュメントの目的は次のとおりです。

機械学習開発の最終的な目標は、デプロイされたモデルの有用性を最大限に高めることです。

通常、このセクションでも ML の問題と同じ基本的な手順と原則を使用できます。

このセクションでは、次のことを前提としています。

  • すでに十分に実行されているトレーニング パイプラインと、相応の結果を得る構成があります。
  • 有意義な調整テストを行い、少なくとも複数のトレーニング ジョブを並行して実行するのに十分なコンピューティング リソースがあること。

増分調整戦略

推奨事項: 簡単な構成から始めます。その後、問題に関する分析情報を増やしながら、段階的に改善していきます。改善には強力な根拠に基づいています。

ここでは、モデルのパフォーマンスを最大化できる構成を見つけることが目標であると想定しています。目標は、固定の期限までにモデルの改善を最大化することです。また、本番環境で使用されるモデルを継続的に改善するなど、モデルを無期限に改善し続けることもできます。

原則として、考えられる構成のスペース全体を自動的に検索するためのアルゴリズムを使用してパフォーマンスを最大化できますが、これは現実的なオプションではありません。可能な構成のスペースは非常に大きいため、人間のガイダンスなしにこのスペースを効率的に検索するのに十分なアルゴリズムはまだありません。ほとんどの自動検索アルゴリズムは、検索する構成セットを定義する手動で設計された検索スペースに依存しているため、これらの検索スペースはかなり重要になる場合があります。

パフォーマンスを最大化する最も効果的な方法は、シンプルな構成から始めて、段階的に機能を追加して改善を行い、問題の分析情報を構築することです。

検索を行うたびに検索アルゴリズムを自動化し、理解が深まったら検索スペースを継続的に更新することをおすすめします。データを探索すると、より優れた構成が自然に見つかるため、常に「最良」のモデルに改善していきます。

「リリース」という用語は、最適な構成の更新を指します(これは、本番環境モデルの実際のリリースに対応する場合もあれば、そうでない場合もあります)。「起動」ごとに、トレーニング パイプラインに不要な複雑さを追加しないように、ラッキー構成に基づくランダム確率だけでなく、強力な証拠に基づいて変更を行う必要があります。

増分調整戦略の大まかな流れは次のとおりです。

  1. 次回のテストの目標を選択します。 目標のスコープが適切であることを確認してください。
  2. 次回のテストを設計します。 この目標に向けて前進する一連のテストを設計し、実施します。
  3. テストの結果を確認するチェックリストと照らし合わせてテストを評価します。
  4. 候補者の変更を採用するかどうかを判断します。

このセクションの残りの部分では、この戦略について詳しく説明します。

次回のテストの目標を選択する

複数の特徴を追加したり、複数の質問に回答したりすると、結果に対する個別の効果が切り離されない場合があります。目標の例:

  • パイプラインを改善する可能性がある改善(新しいレギュライザ、前処理の選択など)を試します。
  • 特定のモデルのハイパーパラメータ(活性化関数など)の影響を理解する
  • 検証エラーを最小限に抑える。

短期的な検証エラーの改善よりも長期的な進捗を優先する

概要: ほとんどの場合、主な目標は調整の問題に関する分析情報を得ることです。

問題に関する分析情報の取得に多くの時間を費やし、検証セットでのパフォーマンスの最大化には比較的少なめの時間を費やすことをおすすめします。つまり、「探求」にほとんどの時間を費やし、「悪用」に費やす時間は少なくできます。最終パフォーマンスを最大限に高めるには、問題を把握することが重要です。短期間での利益よりも分析情報を優先すると、以下のメリットがあります。

  • 過去の出来事を通してパフォーマンスの良し悪さに気付いた場合は、不必要な変更を行わないようにしましょう。
  • 検証エラーが最も敏感なハイパーパラメータ、相互作用が最も多いハイパーパラメータ(再調整が必要)、他の変更の影響が比較的大きくないものの今後のテストで修正できるハイパーパラメータを特定します。
  • 過学習が問題になる場合、新しいレギュライザなど、試してみる新機能を提案する。
  • 削除しても削除でき、役に立たない機能を特定し、今後のテストの複雑さを軽減できます。
  • ハイパーパラメータ調整による改善が飽和した可能性が高い場合を認識する。
  • 検索スペースを最適な値で絞り込んで、調整効率を向上させることができます。

いずれは問題を解くでしょう。こうすることで、テストでチューニングの問題の構造について最も有益でない場合でも、純粋に検証エラーに集中できます。

次の回のテストを作成する

概要: テスト目標に対して、科学的、不快、固定的なハイパーパラメータのどれを特定するか。一連の学習を作成して、科学的ハイパーパラメータのさまざまな値を比較しながら、ノイズ ハイパーパラメータを最適化します。リソースコストと科学的価値のバランスを取るには、ノイズ ハイパーパラメータの検索スペースを選択してください。

科学的、不快、固定的なハイパーパラメータを特定する

特定の目標のすべてのハイパーパラメータは、次のいずれかのカテゴリに分類されます。

  • 科学的ハイパーパラメータは、モデルのパフォーマンスに与える影響を測定しようとしているハイパーパラメータです。
  • ノイズ ハイパーパラメータとは、科学的ハイパーパラメータのさまざまな値を公正に比較するために最適化する必要があるものです。ノイズ ハイパーパラメータは、統計情報のニュアンス パラメータに似ています。
  • 固定ハイパーパラメータは、現在のテストラウンドで定数値になります。固定ハイパーパラメータの値は、科学的ハイパーパラメータの異なる値を比較しても変更されません。一連のテストで特定のハイパーパラメータを修正することで、それらのテストの結果が、固定されたハイパーパラメータの他の設定では有効でない可能性があることを受け入れる必要があります。つまり、固定ハイパーパラメータを使用すると、テストから得られた結論に注意点が生じます。

たとえば、目標が次のようになっているとします。

隠しレイヤが多いモデルの検証エラーが低いかどうかを判断する。

この場合、次の手順に従います。

  • 隠しレイヤの数ごとに個別に学習率を調整する場合にのみ、異なる隠れ層の数でモデルを比較できるため、学習率はノイズ ハイパーパラメータです。(最適な学習率は一般的にモデル アーキテクチャによって異なります)。
  • 以前のテストで最適な活性化関数がモデルの深度の影響を受けないと判断した場合、活性化関数は固定ハイパーパラメータになる場合があります。あるいは、この活性化関数をカバーするために、隠れ層の数について結論を出してもかまいません。また、隠しレイヤの数ごとに調整する準備ができている場合は、迷惑なハイパーパラメータになる可能性があります。

特定のハイパーパラメータは、科学的ハイパーパラメータ、ノイズ ハイパーパラメータ、固定ハイパーパラメータなどがあり、ハイパーパラメータの指定は試験運用版の目標に応じて変化します。たとえば、活性化関数は次のいずれかになります。

  • 科学的ハイパーパラメータ: ReLU または tanh のどちらが問題に適しているか。
  • ニュアンス ハイパーパラメータ: 使用可能なさまざまな活性化関数を許可する場合、最適な 5 層モデルは最良の 6 層モデルよりも優れていますか?
  • 固定ハイパーパラメータ: ReLU ネットの場合、特定の位置でバッチ正規化を追加すると役立ちますか?

新しいテストを設計する場合:

  1. テスト目標の科学的ハイパーパラメータを特定します。 (この段階では、他のすべてのハイパーパラメータをノイズ ハイパーパラメータとみなすことができます)。
  2. 一部の迷惑なハイパーパラメータを修正済みのハイパーパラメータに変換する

無制限のリソースでは、科学以外のすべてのハイパーパラメータをノイズ ハイパーパラメータとして残し、テストから得られる結論に固定のハイパーパラメータ値に関する注意事項がないようにします。ただし、調整しようとするノイズの数が多いほど、科学的ハイパーパラメータの各設定について、それらの調整が十分行われず、最終的に誤った結論に至るリスクが高まります。後のセクションで説明したように、計算上の予算を増やすことで、このリスクに対処できます。ただし、リソースの最大予算は多くの場合、科学的でないハイパーパラメータをすべて調整する場合よりも少なくなります。

煩雑なハイパーパラメータを修正済みのパラメータに変換することは、修正によって生じる注意点が煩雑なハイパーパラメータとして含める費用よりも負担が小さい場合におすすめします。ノイズ ハイパーパラメータが科学的ハイパーパラメータと相互作用するほど、その値を修正するダメージが増加します。たとえば、減衰強度の最適値はモデルのサイズに依存することから、重み減衰の特定の特定の値を想定しても、さまざまなモデルサイズを比較するのはそれほど有用なことではありません。

いくつかのオプティマイザー パラメータ

原則として、オプティマイザーの一部のハイパーパラメータ(学習率、モメンタム、学習率のスケジュール パラメータ、Adam ベータ版など)は、他の変更と最も相互作用する傾向があるため、ノイズ ハイパーパラメータです。このオプティマイザー ハイパーパラメータが「現在のパイプラインで最適な学習率はどれか」という目標からは、詳細な分析情報が得られないため、科学的なハイパーパラメータになることはほとんどありません。結局のところ、次のパイプライン変更により最適な設定が変わる可能性があります。

オプティマイザー ハイパーパラメータは、リソースの制約や、科学的なパラメータと相互作用しないという確固たる証拠のために、時折修正されることがあります。ただし、一般的には、科学的ハイパーパラメータの異なる設定間の公正な比較のためにオプティマイザー ハイパーパラメータを個別に調整する必要があるため、修正はしないでください。さらに、あるオプティマイザーのハイパーパラメータ値を別のオプティマイザー ハイパーパラメータ値よりも優先する理由はありません。たとえば、オプティマイザー ハイパーパラメータの値は通常、フォワードパスや勾配の計算コストに一切影響しません。

オプティマイザーの選択

オプティマイザーの選択肢は、通常は次のいずれかです。

  • 科学的ハイパーパラメータ
  • 固定ハイパーパラメータ

テスト目標が 2 つ以上のオプティマイザー間で公正な比較を行うことである場合、オプティマイザーは科学的なハイパーパラメータです。次に例を示します。

指定されたステップで検証エラーが最も少ないオプティマイザーを特定します。

また、次のように、さまざまな理由により、オプティマイザーを固定のハイパーパラメータにすることもできます。

  • 以前のテストでは、調整の問題に最適なオプティマイザーが、現在の科学的ハイパーパラメータの影響を受けにくいことが示唆されています。
  • このオプティマイザーを使用して科学的ハイパーパラメータの値を比較すると、トレーニング曲線の推論が容易になります。
  • このオプティマイザーは、代替サービスよりもメモリの使用量が少ないため、使用することをおすすめします。

正則化ハイパーパラメータ

正則化手法によって導入されるハイパーパラメータは通常、ノイズ ハイパーパラメータです。ただし、正則化手法を含めるかどうかの選択は、科学的または固定的なハイパーパラメータのどちらかです。

たとえば、ドロップアウト正則化はコードの複雑さを増します。したがって、ドロップアウト正則化を含めるかどうかを決定する際に、科学的ハイパーパラメータの「ドロップアウト」と「ドロップアウト」を、ドロップアウト率をノイズ ハイパーパラメータにすることができます。このテストに基づいてパイプラインにドロップアウト正則化を追加する場合、ドロップアウト率は今後のテストではノイズ ハイパーパラメータになります。

アーキテクチャのハイパーパラメータ

アーキテクチャのハイパーパラメータは、サービスコストやトレーニング コスト、レイテンシ、メモリ要件に影響を与えるおそれがあるため、多くの場合、科学的または一定のハイパーパラメータになります。たとえば、レイヤ数はトレーニングの速度とメモリ使用量に劇的な影響を与える傾向があるため、通常は科学的または一定のハイパーパラメータになります。

科学的ハイパーパラメータへの依存

場合によっては、単純なハイパーパラメータと固定ハイパーパラメータのセットが、科学的ハイパーパラメータの値に依存することがあります。たとえば、Nesterov モメンタムと Adam のどのオプティマイザーが検証エラーで最も低いかを判断するとします。この場合、次の手順に従います。

  • 科学的ハイパーパラメータはオプティマイザーであり、値 {"Nesterov_momentum", "Adam"} を取ります。
  • optimizer="Nesterov_momentum" は、ハイパーパラメータ {learning_rate, momentum}(nuisance または固定ハイパーパラメータ)を導入します。
  • optimizer="Adam" は、ハイパーパラメータ {learning_rate, beta1, beta2, epsilon}(nuisance または固定ハイパーパラメータ)を導入します。

科学的なハイパーパラメータの特定の値にのみ存在するハイパーパラメータは、条件付きハイパーパラメータと呼ばれます。同じ名前の 2 つの条件付きハイパーパラメータが同じであると仮定しないでください。上記の例では、learning_rate という条件ハイパーパラメータは、optimizer="Nesterov_momentum"optimizer="Adam" で異なるハイパーパラメータです。その役割は 2 つのアルゴリズムで同一ですが(ただし、同一ではありません)、通常は、各オプティマイザーで機能する値の範囲は数桁異なります。

一連の調査を作成する

科学的ハイパーパラメータとハイパーパラメータのハイパーパラメータを特定したら、テストの目標達成に向けて調査または一連の調査を設計する必要があります。スタディは、以降の分析のために実行する一連のハイパーパラメータ構成を指定します。各構成はトライアルと呼ばれます。 調査の作成には通常、以下の項目が含まれます。

  • トライアルによって異なるハイパーパラメータ。
  • ハイパーパラメータが受け取る値(検索スペース)。
  • トライアルの回数。
  • 検索スペースからそのトライアルをサンプリングする自動検索アルゴリズム。

または、ハイパーパラメータ構成のセットを手動で指定してスタディを作成することもできます。

本調査の目的は以下のとおり

  • さまざまな科学的ハイパーパラメータでパイプラインを実行します。
  • 科学的ハイパーパラメータの異なる値間の比較が可能な限り公正になるように、ノイズ ハイパーパラメータを「最適化」または「最適化」します。

最も単純なケースでは、科学的パラメータの構成ごとに調査を行い、各調査でノイズ ハイパーパラメータを調整します。たとえば、Nesterov モメンタムと Adam のそれぞれから最適なオプティマイザーを選択することが目標であれば、2 つのスタディを作成できます。

  • optimizer="Nesterov_momentum" とノイズ ハイパーパラメータの 1 つの調査では、{learning_rate, momentum}
  • optimizer="Adam" とノイズ ハイパーパラメータのもう 1 つの研究は、{learning_rate, beta1, beta2, epsilon} です。

各調査で最も効果的なトライアルを選択して、2 つのオプティマイザーを比較します。

ベイズ最適化や進化アルゴリズムなど、勾配のない最適化アルゴリズムを使用して、ノイズ ハイパーパラメータを最適化できます。ただし、この設定にはさまざまな利点があるため、調整の探索フェーズでは準ランダム検索を使用することをおすすめします。探索が完了したら、最先端のベイズ最適化ソフトウェアを使用することをおすすめします(利用可能な場合)。

科学的なハイパーパラメータの多くの値を比較したいが、それだけの独自研究を行うことは現実的ではない複雑なケースについて考えてみましょう。この場合、次のことを行います。

  • 迷惑ハイパーパラメータと同じ検索スペースに、科学的パラメータを含める。
  • 検索アルゴリズムを使用して、1 つの研究で科学的ハイパーパラメータとハイパーパラメータの両方の値の値をサンプリングします。

この方法では、条件付きハイパーパラメータが原因で問題が発生することがあります。結局のところ、科学的ハイパーパラメータのすべての値で異なる種類のハイパーパラメータのハイパーパラメータが同じでない限り、検索スペースを指定することは困難です。このケースでは、科学的なハイパーパラメータのさまざまな値が均一にサンプリングされることを保証するため、より洗練されたブラックボックス最適化ツールよりも準ランダム検索を使用する方がさらに強力です。検索アルゴリズムに関係なく、科学的パラメータを均一に検索するようにしてください。

有益でわかりやすいテストと、適切なバランスでテストを実施する

調査または一連の調査を設計する際は、次の 3 つの目標を十分に達成できるように限られた予算を割り当てます。

  • 科学的ハイパーパラメータの十分な異なる値を比較する。
  • ニュアンス ハイパーパラメータを十分な大きさの検索スペースで調整する。
  • ノイズ ハイパーパラメータの検索空間のサンプリングは十分な量で行われます。

この 3 つの目標を達成できるほど、テストからより多くの分析情報を抽出できます。 科学的なハイパーパラメータの値をできるだけ多く比較すると、テストから得られる分析情報の範囲が広がります。

できるだけ多くのノイズ ハイパーパラメータを含め、各ノイズ ハイパーパラメータをできるだけ広い範囲で変化させるようにすることで、科学的ハイパーパラメータの各構成で検索スペースに「良好」な値が存在するという信頼を得ることができます。そうしないと、科学的パラメータの一部の値が適切な値になる可能性があるノイズ ハイパーパラメータ空間の領域を検索しないことで、科学的ハイパーパラメータの値の間で不公平な比較を行うことができます。

ノイズ ハイパーパラメータの検索空間を可能な限り高密度でサンプリングする。これにより、検索スペースに存在するノイズ ハイパーパラメータに適した設定を検索手順で確実に検出できるようになります。そうでない場合、一部の値がノイズ ハイパーパラメータのサンプリングでうまくいくため、科学的パラメータ値の間で不公平な比較が行われる可能性があります。

残念ながら、これらの 3 つのディメンションを改善するには、次のいずれかが必要です。

  • トライアル数を増やすと、リソース費用が増加します。
  • 他のいずれかの方法でリソースを節約する方法を見つけるため。

それぞれの問題には独自の特徴と計算上の制約があるため、これらの 3 つの目標にリソースを割り当てるには、ある程度のドメイン知識が必要です。調査を行った後は、調査でノイズ ハイパーパラメータが十分に調整されているかどうかを常に把握できます。つまり、この調査では、科学的なハイパーパラメータを公平に比較するのに十分な大きさのスペースを検索しました(次のセクションで詳しく説明します)。

テストの結果を確認する

推奨事項: 各テストグループの元の科学的目標を達成するだけでなく、追加の質問のチェックリストを確認します。問題が見つかった場合は、テストを修正して再実行します。

最終的には、テストの各グループに特定の目標を設定します。 目標達成に向けたテストの裏付けとなる資料を評価する必要があります。 ただし、適切な質問をすると、特定のテストが元の目標に向かって進む前に、修正すべき問題が見つかることがよくあります。これらの質問をしない場合、誤った結論を導き出す可能性があります。

テストの実行にはコストがかかるため、これらの分析情報が現在の目標に直接関連していない場合でも、各テストグループから他の有用な分析情報を抽出する必要もあります。

特定のテストセットを分析して元の目標に向けて進む前に、次の質問について検討してください。

必要に応じて、前述の回答に対する回答に基づいて最新の調査または学習グループを改善し、検索スペースの改善や追加のトライアルのサンプリング、またはその他の是正措置を実施します。

前の質問に回答したら、テストで提供された目標に対してエビデンスを評価できます。たとえば、変更が有用かどうかを評価することができます。

検索空間からサンプリングされる最適点が境界に近い場合、検索スペースは不審です。検索範囲を広げると、さらにポイントが大きくなることがあります。

検索スペースの境界を確認するには、基本的なハイパーパラメータ軸のプロットを使用して、完了したトライアルをプロットすることをおすすめします。ここでは、検証目標値といずれかのハイパーパラメータ(学習率など)をプロットします。プロット上の各ポイントは 1 つのトライアルに対応します。

各トライアルの検証目標と値は通常、トレーニングの過程で得られた最適な値です。

検証セット(y 軸)とピーク学習率(x 軸)のエラー率のグラフ。検索スペースの境界を示しています。このグラフでは、最高のトライアル(エラー率が最も低い)が、学習率のピークが最も高い検索スペースのエッジに近くなっています。 検証セットの誤差率(y 軸)とピーク学習率(x 軸)のグラフ。検索空間の境界を示します。このグラフでは、最適なトライアル(エラー率が最小)は検索スペースの中央付近になります。ピーク学習率が 0.00001 または 0.1 の場合ではなく、ピーク学習率が 0.001 です。

図 1: 無効な検索スペースの境界と許容される検索スペースの境界の例

図 1 のプロットは、初期学習率に対するエラー率(低いほど良い)を示しています。最良の点が検索スペースの端に向かって集まっている場合(ある意味)、最も正確な点が境界に近づくまで検索スペースの境界を拡大する必要があります。

多くの場合、調査には多様な結果となる、または非常に悪い結果が得られる「実行不可能な」試行が含まれます(図 1 では赤い X とマークされています)。すべてのトライアルが、あるしきい値を超える学習率で達成不可能であり、最もパフォーマンスの高いトライアルのその領域のエッジでの学習率が低い場合、モデルは安定性の問題に悩まされ、より高い学習率にアクセスできない可能性があります

検索スペースに十分なポイントがサンプリングされていません

一般に、検索スペースが十分にサンプリングされている場合、把握しにくいことがあります。️

サンプリングが不十分な場合、判断が難しいため、次の方法をおすすめします。

  • 余裕のある期間をサンプリングする。
  • さまざまなハイパーパラメータ軸のプロットを繰り返し確認し、検索空間の「良好」な領域にあるポイントの数を把握することで、直感的な信頼度を調整します。

トレーニング曲線を調べる

概要: 損失曲線を調べると、一般的な障害モードを簡単に特定でき、次の対応手順に優先順位を付けるのに役立ちます。

多くの場合、テストの主な目的は各トライアルの検証誤差を考慮することだけです。ただし、各トライアルの数を 1 つに減らすときは、焦点が当てられていると表面下で何が起こっているかという重要な情報を隠してしまう可能性があるので注意が必要です。すべての調査で、少なくとも少数のトライアルの損失曲線を確認することを強くおすすめします。これが主要な実験目標に対処するために必要でない場合でも、損失曲線(トレーニングの損失と検証の損失の両方を含む)を調べることは、一般的な障害モードの特定と、次に行うアクションの優先順位付けに役立ちます。

損失曲線を調べるときは、次の質問に注目します。

  • 過学習が過不足になるトライアルはありますか? 問題のある過学習は、トレーニング中に検証エラーが増え始めると発生します。科学的ハイパーパラメータの各設定について「最適」なトライアルを選択して、ノイズ ハイパーパラメータを最適化するテスト環境では、少なくとも、比較する科学的ハイパーパラメータの設定に対応する最適トライアルごとに、問題のある過学習が発生していないかチェックします。最適な試用版によって問題のある過学習が示された場合は、次のいずれかまたは両方を行います。

    • 追加の正則化手法を使用してテストを再実行する
    • 科学的ハイパーパラメータの値を比較する前に、既存の正則化パラメータを再調整します。これは、科学的ハイパーパラメータに正則化パラメータが含まれている場合には当てはまらない可能性があります。これらの正則化パラメータの強度が低い場合、過学習が問題になるのは当然のことです。

    過剰適合の削減は、多くの場合、コードの複雑さを最小限に抑えたり、計算を追加したりする一般的な正則化手法を使用して簡単です(ドロップアウト正則化、ラベル平滑化、重み減衰など)。したがって、これらのテストの 1 つ以上を次回のテストに含めるのは簡単です。たとえば、科学的ハイパーパラメータが「隠れ層の数」で、最多の隠しレイヤを使用した最良の適合が問題をもたらす場合は、隠しレイヤの数を即座に選択するよりも、正則化を追加して再試行することをおすすめします。

    どの「最適」なトライアルにも問題のある過学習があっても、そのトライアルのいずれかが当てはまる場合、問題が発生する可能性があります。最適なトライアルを選択すると、問題のある過学習が生じる構成が抑制され、そうでない場合に優先されます。つまり、最適なトライアルを選択すると、より正則化された構成が優先されます。ただし、トレーニングを悪化させるものは、意図されていない場合でも、正則化の役割を果たす可能性があります。たとえば、小さい学習率を選択すると、最適化プロセスをホッピングしてトレーニングを正則化できますが、通常はこの方法で学習率を選択する必要はありません。なお、科学的ハイパーパラメータの各設定に対する「最適」なトライアルは、一部の科学的またはハイパーパラメータのハイパーパラメータの「悪い」値を優先するように選択される場合があります。

  • トレーニングの後半でトレーニングまたは検証の誤差に大きなばらつきがあるか。その場合、次のいずれかに干渉する可能性があります。

    • 科学的ハイパーパラメータのさまざまな値を比較できます。これは、各試行がランダムに「ラッキー」または「不幸」ステップで終了するためです。
    • 本番環境での最適なトライアルの結果を再現できる能力。これは、本番環境モデルが調査と同じ「ラッキー」ステップで終了しない可能性があるためです。

    手順の不一致が原因で考えられる原因として、次のものがあります。

    • 各バッチのトレーニング セットからサンプルをランダムにサンプリングするため、バッチ分散。
    • 小さな検証セット
    • トレーニングの遅すぎる学習率を使用する。

    次のような対処方法が考えられます。

    • バッチサイズを増やす。
    • 追加の検証データを取得する。
    • 学習率の減衰を使用する
    • Polyak の平均化を使用する。
  • トレーニングの終了後もトライアルは改善されますか?その場合、「コンピューティング バウンド」の規則を使用しているため、トレーニング ステップの数を増やしたり、学習率のスケジュールを変更したりすることでメリットが得られる可能性があります。

  • トレーニング セットと検証セットのパフォーマンスは、最後のトレーニング ステップよりもかなり前に飽和状態になっていますか?その場合は、コンピューティングのバインドに関係なく、トレーニング ステップの数を減らせる可能性があることを示します。

このリスト以外にも、損失曲線を調べることで、その他の多くの動作が明らかになる場合があります。たとえば、トレーニング中にトレーニング損失が増加する場合、通常はトレーニング パイプラインのバグを示します。

分離プロットを使用して変更が有用かどうかを検出する

ImageNet でトレーニングされた ResNet-50 の重み減衰の最適値を調査する分離プロット。この場合、重み減衰が 0.00005 以下の場合に検証エラー率が最小になります。

図 2: ImageNet でトレーニングされた ResNet-50 の重み減衰の最適値を調査する分離プロット。

 

多くの場合、一連の実験の目的は、科学的ハイパーパラメータのさまざまな値を比較することです。たとえば、最適な検証エラーをもたらす重み減衰の値を求めるとします。分離プロットは、基本的なハイパーパラメータ軸のプロットの特殊なケースです。 分離プロットの各ポイントは、ノイズ ハイパーパラメータの一部(またはすべて)にわたる最適なトライアルのパフォーマンスに対応します。つまり、ノイズ ハイパーパラメータを「最適化」してモデルのパフォーマンスをプロットします。

分離プロットを使用すると、科学的ハイパーパラメータのさまざまな値同士を同一条件で比較できます。たとえば、図 2 の分離プロットは、ImageNet でトレーニングされた ResNet-50 の特定の構成で最適な検証パフォーマンスを生成する重み減衰の値を示しています。

重みの減衰を含めるかどうかを目標にする場合は、このプロットの最適なポイントを減衰なしのベースラインと比較します。公平な比較のためには、ベースラインの学習率も均等に調整する必要があります。

(ランダム)ランダム検索によって生成されたデータがあり、分離プロットの連続ハイパーパラメータを検討している場合は、基本的なハイパーパラメータ軸プロットの X 軸値をバケット化し、バケットで定義された各垂直スライスで最適なトライアルを行うことで、分離プロットを近似できます。

一般的に有用なプロットを自動化

プロットを生成するための労力が多いほど、プロットを見る必要性は低くなります。そのため、できる限り多くのプロットを自動的に生成するようにインフラストラクチャを設定することをおすすめします。少なくとも、テストで変更するすべてのハイパーパラメータの基本的なハイパーパラメータ 軸のプロットを自動生成することをおすすめします。

また、すべてのトライアルの損失曲線を自動的に生成することをおすすめします。さらに、各スタディの最適なトライアルをできるだけ簡単に特定して、その損失曲線を調べることをおすすめします。

他にも役立つプロットや可視化を追加できます。Geoffrey Hinton を言い換えるには、次のようにします。

新たに何かをプロットするたびに、新しいことを学ぶことができます。

候補者の変更を採用するかどうかを判断する

概要: モデルまたはトレーニング手順を変更するか、新しいハイパーパラメータ構成を採用するかを決定する際は、結果における変動の原因の違いに注意してください。

モデルを改善しようとすると、最初に特定の候補を変更したときに、既存の構成と比較して検証エラーが大きくなることがあります。ただし、このテストを繰り返し実施しても一貫したメリットがない可能性があります。非公式に一貫性のない結果が発生する場合、最も重要な原因は大きく次のカテゴリに分類できます。

  • トレーニング プロシージャの分散、再トレーニングの分散、トライアルの分散: 同じハイパーパラメータを使用して異なるランダムシードを使用するトレーニング実行間の分散。たとえば、異なるランダム初期化、トレーニング データ シャッフル、ドロップアウト マスク、データ増強オペレーションのパターン、並列算術オペレーションの順序はすべて、トライアルの差異の原因となる可能性があります。
  • ハイパーパラメータ検索分散、または研究の分散: ハイパーパラメータを選択するための手続きによって生じる結果のばらつき。たとえば、特定の検索スペースで同じ実験を行いますが、準ランダム検索用に 2 つの異なるシードを使用し、最終的に異なるハイパーパラメータ値を選択します。
  • データの収集とサンプリングの分散: トレーニング、検証、テストのランダム スプリットから分散しているか、トレーニング データ生成プロセスがより一般的であることによる分散。

真ただし、トライアルの分散だけでは、同じハイパーパラメータ設定を使用する 2 つの異なるトレーニング済みモデルの間に、統計的に有意な差異が生じることがよくあります。

ハイパーパラメータの領域の個々のレベルを超える結論を出そうとするときは、研究のばらつきが最も懸念されます。スタディの分散は、トライアルの回数と検索スペースによって異なります。スタディのばらつきがトライアルのばらつきより大きいケースと、スタディのばらつきがはるかに小さいケースがあります。したがって、候補の変更を採用する前に、最適なトライアルを N 回実行して、Run-to-Run のトライアルの特徴を明らかにすることを検討してください。通常、パイプラインに大きな変更を加えた後に限り、トライアルのばらつきを再評価するだけで済みますが、場合によってはより新しい推定値が必要になることもあります。他のアプリケーションでは、トライアルの差異を特徴付けるコストが高すぎて価値がありません。

採用するのは、実際に改善を行う変更(新しいハイパーパラメータ構成を含む)だけであり、特定の変更が役立つという完全な確実性を求めるのも、適切な答えではありません。したがって、新しいハイパーパラメータ ポイント(または他の変更)がベースラインよりも良い結果を出す場合(新しいポイントとベースラインの両方の再トレーニング分散を可能な限り考慮する)、将来の比較のために新しいベースラインとして採用するべきです。ただし、より複雑になる要素を上回る改善を行う変更のみを採用することをおすすめします。

データ探索の終了後

まとめ: ベイズ最適化ツールは、適切な検索スペースを探し出し、調整する価値のあるハイパーパラメータを決定したら、魅力的なオプションです。

最終的には、調整の問題に関する詳細から、リリースまたはその他の方法で使用する単一の最適な構成を生成することへと優先事項が変更されます。この時点で、最適に観察されたトライアルの周辺地域を適切に含め、適切にサンプリングされた、洗練された検索スペースが必要です。探索の作業では、調整に最も重要なハイパーパラメータと、最終的な自動チューニング調査の検索スペースを可能な限り大きい調整予算を使用して使用できる範囲が明らかになっているはずです。

調整の問題に関する分析情報を最大化する必要がなくなったため、準ランダム検索のメリットの多くは適用されなくなりました。したがって、最適なハイパーパラメータ構成を自動的に見つけるには、ベイズ最適化ツールを使用する必要があります。オープンソース Vizier には、ベイズ最適化アルゴリズムなど、ML モデルを調整するためのさまざまな高度なアルゴリズムが実装されています。

検索空間に膨大な量の発散点(NaN トレーニングの損失、または平均損失の多くの標準偏差を含むトレーニング損失)が含まれているとしましょう。この場合は、多様なトライアルを適切に処理できるブラックボックス最適化ツールを使用することをおすすめします。(この問題に取り組むための最適な方法は、不明な制約があるベイズ最適化をご覧ください)。オープンソース Vizier は、トライアルを実行できないとマークすることで、さまざまなポイントにマークを付けられますが、構成によっては Gelbart などの優先アプローチを使用できない場合があります。

探索が完了したら、テストセットのパフォーマンスを確認します。原則として、検証セットをトレーニング セットに折りたたみ、ベイズ最適化で明らかになった最適な構成を再トレーニングすることもできます。ただし、これは、この特定のワークロード(1 回限りの Kaggle 競合など)で今後リリースされない場合にのみ適切です。