早期終了を構成する
ハイパーパラメーター調整を使用すると、モデルを微調整し、モデルのパフォーマンスを最も高くするハイパーパラメーター値を選択できます。
しかし、最高のモデルを見つけるには、終わりのない征服になる可能性があります。 パフォーマンスの高いモデルを見つけるために、新しいハイパーパラメーター値をテストする時間と費用の価値があるかどうかを常に考慮する必要があります。
スイープ ジョブの各試用版では、新しいモデルがハイパーパラメーター値の新しい組み合わせでトレーニングされます。 新しいモデルをトレーニングしてもモデルが大幅に向上しない場合は、スイープ ジョブを停止し、これまでに最もパフォーマンスの高いモデルを使用することをお勧めします。
Azure Machine Learning でスイープ ジョブを構成する場合は、試用版の最大数を設定することもできます。 より高度なアプローチは、新しいモデルで結果が大幅に向上しない場合にスイープ ジョブを停止することです。 モデルのパフォーマンスに基づいてスイープ ジョブを停止するには、早期終了ポリシーを使用できます。
早期終了ポリシーを使用する場合
早期終了ポリシーを使用するかどうかは、使用している検索スペースとサンプリング 方法によって異なります。
たとえば、グリッド サンプリング メソッドを、最大 6 回の試行が発生する の個別の 検索空間に対して使用できます。 6 つの試用版では、最大 6 つのモデルがトレーニングされ、早期終了ポリシーが不要になる場合があります。
早期終了ポリシーは、検索空間で継続的ハイパーパラメーターを操作する場合に特に役立ちます。 連続ハイパーパラメーターは、選択できる値の数に制限はありません。 多くの場合、継続的ハイパーパラメーターとランダムまたはベイジアン サンプリングメソッドを使用する場合は、早期終了ポリシーを使用することをお勧めします。
早期終了ポリシーを構成する
早期終了ポリシーを使用する場合、主に次の 2 つのパラメーターがあります。
-
evaluation_interval
: ポリシーを評価する間隔を指定します。 トライアルの主な指標がログに記録されるたびに、それがインターバルとしてカウントされます。 -
delay_evaluation
: ポリシーの評価を開始するタイミングを指定します。 このパラメーターを使用すると、早期終了ポリシーが影響を受けることなく、少なくとも少なくとも試行を完了できます。
新しいモデルは、以前のモデルよりもわずかに優れたパフォーマンスを続ける可能性があります。 モデルのパフォーマンスが以前の評価版よりも優れている程度を判断するには、早期終了には次の 3 つのオプションがあります。
-
バンディット ポリシー:
slack_factor
(相対) またはslack_amount
(絶対) を使用します。 新しいモデルは、最もパフォーマンスの高いモデルの余裕期間範囲内で実行する必要があります。 - 中央値停止ポリシー: プライマリ メトリックの平均の中央値を使用します。 新しいモデルは、中央値よりも優れたパフォーマンスを発揮する必要があります。
-
切り捨て選択ポリシー:
truncation_percentage
を使用します。これは、最もパフォーマンスの低い試用版の割合です。 新しいモデルは、最もパフォーマンスの低い試用版よりも優れたパフォーマンスを発揮する必要があります。
バンディット ポリシー
バンディット ポリシーを使用して、目標のパフォーマンスメトリックが、これまでの最良の試行より指定された差異で下回った場合に試行を停止できます。
たとえば、次のコードでは、5 回の試行の遅延でバンディット ポリシーを適用し、間隔ごとにポリシーを評価し、絶対余裕期間を 0.2 にします。
from azure.ai.ml.sweep import BanditPolicy
sweep_job.early_termination = BanditPolicy(
slack_amount = 0.2,
delay_evaluation = 5,
evaluation_interval = 1
)
主なメトリックがモデルの精度であるとします。 最初の 5 回の試行の後、最もパフォーマンスの高いモデルの精度が 0.9 の場合、新しいモデルは (0.9-0.2) または 0.7 より優れたパフォーマンスを発揮する必要があります。 新しいモデルの精度が 0.7 より高い場合、スイープ ジョブは続行されます。 新しいモデルの精度スコアが 0.7 より低い場合、ポリシーはスイープ ジョブを終了します。
余裕期間 係数を使用してバンディット ポリシーを適用することもできます。これは、パフォーマンス メトリックを絶対値ではなく比率として比較します。
中間停止ポリシー
中央値停止ポリシーでは、ターゲットパフォーマンス指標がすべての実験の移動平均の中央値よりも下回る場合、その実験を中止します。
たとえば、次のコードでは、5 回の試行の遅延で中央値停止ポリシーを適用し、各間隔でポリシーを評価します。
from azure.ai.ml.sweep import MedianStoppingPolicy
sweep_job.early_termination = MedianStoppingPolicy(
delay_evaluation = 5,
evaluation_interval = 1
)
主なメトリックがモデルの精度であるとします。 6 回目の試行で精度がログに記録された場合、メトリックは、これまでの精度スコアの中央値よりも高い必要があります。 ここまでの精度スコアの中央値が 0.82 であるとします。 新しいモデルの精度が 0.82 より高い場合、スイープ ジョブは続行されます。 新しいモデルの精度スコアが 0.82 より低い場合、ポリシーはスイープ ジョブを停止し、新しいモデルはトレーニングされません。
切り捨て選択ポリシー
切り捨て選択ポリシーは、Xに指定した truncation_percentage 値に基づいて、各評価間隔で最もパフォーマンスの低い X% の試行を取り消します。
たとえば、次のコードでは、4 回の試行の遅延で切り捨て選択ポリシーを適用し、間隔ごとにポリシーを評価し、切り捨て率 20%を使用します。
from azure.ai.ml.sweep import TruncationSelectionPolicy
sweep_job.early_termination = TruncationSelectionPolicy(
evaluation_interval=1,
truncation_percentage=20,
delay_evaluation=4
)
主なメトリックがモデルの精度であるとします。 5 回目の評価版の精度がログに記録された場合、メトリック 、これまでで最悪の 20% の評価版に含まれていない。 この場合、20% は 1 つの試用版に変換されます。 言い換えると、5 回目の試行が、これまでに最もパフォーマンスの悪いモデル 場合、スイープ ジョブは続行されます。 5 番目の試用版の精度スコアがこれまでにすべての評価版で最も低い場合、スイープ ジョブは停止します。