

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# トレーニングジョブを早期停止する
<a name="automatic-model-tuning-early-stopping"></a>

目標メトリクスで測定して、ハイパーパラメータ調整ジョブが大幅に改善されていない場合は、ハイパーパラメータ調整ジョブが開始したトレーニングジョブを早期に停止します。トレーニングジョブを早期停止すると、計算時間が短縮され、モデルの過剰な作成を防ぐことができます。トレーニングパラメータを早期に停止するようにハイパーパラメータ調整ジョブを構成するには、次のいずれかを実行します。
+  AWS SDK for Python (Boto3) を使用している場合は、調整ジョブの設定に使用する [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobConfig.html) オブジェクトの `TrainingJobEarlyStoppingType`フィールドを に設定します`AUTO`。
+ [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) を使っている場合は、[HyperParameterTuner](https://sagemaker.readthedocs.io/en/stable/tuner.html) オブジェクトの `early_stopping_type` パラメータを `Auto` に設定します。
+ Amazon SageMaker AI コンソールの **[ハイパーパラメータのチューニングジョブの作成]** ワークフローにある **[早期停止]** で **[自動]** を選択します。

早期停止の使用方法を示すサンプルノートブックについては、[https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter\_tuning/image\_classification\_early\_stopping/hpo\_image\_classification\_early\_stopping.ipynb](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter_tuning/image_classification_early_stopping/hpo_image_classification_early_stopping.ipynb) を参照するか、お使いのノートブックインスタンスの **[SageMaker AI サンプル]** の **[ハイパーパラメータチューニング]** セクションにある `hpo_image_classification_early_stopping.ipynb` ノートブックを開きます。

## 早期停止の仕組み
<a name="automatic-tuning-early-stop-how"></a>

ハイパーパラメータチューニングジョブの早期停止を有効にすると、SageMaker AI はハイパーパラメータチューニングジョブが開始した各トレーニングジョブを次のように評価します。
+ トレーニングの各エポックの後で、目標メトリクスの値を取得します。
+ 同じエポックまでの過去のすべてのトレーニングジョブについて目標メトリクスの移動平均を計算してから、すべての移動平均の中央値を計算します。
+ 現在のトレーニングジョブにおける目標メトリクスの値が、同じエポックまでの過去のトレーニングジョブにおける目標メトリクスの移動平均の中央値よりも悪い (目標メトリクスが最小化されると高くなり、最大化されると低くなる) 場合、SageMaker AI は現在のトレーニングジョブを停止します。

## 早期停止をサポートするアルゴリズム
<a name="automatic-tuning-early-stopping-algos"></a>

早期停止をサポートするために、アルゴリズムは各エポックについて目標メトリクスを発行する必要があります。以下の組み込み SageMaker AI アルゴリズムは、早期停止をサポートします。
+ [LightGBM](lightgbm.md)
+ [CatBoost](catboost.md)
+ [AutoGluon-Tabular](autogluon-tabular.md)
+ [TabTransformer](tabtransformer.md)
+ [線形学習アルゴリズム](linear-learner.md) - 目標メトリクスとして `objective_loss` を使っている場合にのみサポートされます。
+ [Amazon SageMaker AI の XGBoost アルゴリズム](xgboost.md)
+ [画像分類 - MXNet](image-classification.md)
+ [オブジェクト検出 - MXNet](object-detection.md)
+ [Sequence to Sequence アルゴリズム](seq-2-seq.md)
+ [IP Insights](ip-insights.md)

**注記**  
早期停止をサポートするこの組み込みアルゴリズムのリストは、2018 年 12 月 13 日現在のものです。他の組み込みアルゴリズムは、今後、早期停止をサポートする可能性があります。アルゴリズムが、ハイパーパラメータ調整ジョブの目標メトリクスとして使用できるメトリクス (可能であれば検証メトリクス) を発行する場合は、早期停止をサポートします。

独自のアルゴリズムで早期停止を使用するには、各エポックの後に目標メトリクスの値を発行するようにアルゴリズムを記述する必要があります。次のリストは、さまざまなフレームワークでこれを実行する方法を示しています。

TensorFlow  
`tf.keras.callbacks.ProgbarLogger` クラスを使用します。詳細については、「[tf.keras.callbacks.ProgbarLogger API](https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/ProgbarLogger)」を参照してください。

MXNet  
`mxnet.callback.LogValidationMetricsCallback` を使用します。詳細については、「[mxnet.callback API](https://mxnet.apache.org/versions/master/api/python/docs/api/legacy/callback/index.html)」を参照してください。

Chainer  
`extensions.Evaluator` クラスを使用して Chainer を拡張します。詳細については、「[chainer.training.extensions.Evaluator API](https://docs.chainer.org/en/v1.24.0/reference/extensions.html#evaluator)」を参照してください。

PyTorch と Spark  
高レベルのサポートはありません。目標メトリクスを計算し、各エポックの後でそれらをログに書き込むように、明示的にトレーニングコードを記述する必要があります。