

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

# ハイパーパラメータの範囲を定義する
<a name="automatic-model-tuning-define-ranges"></a>

このガイドでは、SageMaker API を使用してハイパーパラメータの範囲を定義する方法を説明します。また、使用できるハイパーパラメータのスケーリングタイプのリストも提供しています。

ハイパーパラメータと範囲を選択すると、調整ジョブのパフォーマンスに大きく影響します。ハイパーパラメータチューニングでは、調整可能なハイパーパラメータごとに指定した値の[範囲](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html#sagemaker-Type-HyperParameterTrainingJobDefinition-HyperParameterRanges)を検索して、モデルに最適なハイパーパラメータ値を見つけます。調整ジョブ中に変化しない[静的ハイパーパラメータ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html#sagemaker-Type-HyperParameterTrainingJobDefinition-StaticHyperParameters)を最大 100 個指定することもできます。ハイパーパラメータは、合計で 100 個まで (静的パラメータ \$1 調整可能なパラメータ) を使用できます。ハイパーパラメータと範囲の選択に関するガイダンスについては、[ハイパーパラメータ調整のベストプラクティス](automatic-model-tuning-considerations.md)を参照してください。Autotune を使用して最適な調整ジョブ設定を見つけることもできます。詳細については、次の「**Autotune**」セクションを参照してください。

**注記**  
SageMaker AI 自動モデル調整 (AMT) によってハイパーパラメータが追加され、ハイパーパラメータの制限合計数である 100 個に達する場合があります。現在、トレーニング中に使用する調整ジョブに目標メトリクスを渡すために、SageMaker AI によって `_tuning_objective_metric` が自動的に追加されます。

## 静的ハイパーパラメータ
<a name="automatic-model-tuning-define-ranges-static"></a>

静的ハイパーパラメータは次の場合に使用します。   定数値を選択するための背景知識がある場合。   ハイパーパラメータの値の範囲を調べたくない場合。   たとえば、AMT を使用して、`param1` (調整可能なパラメータ) と `param2` (静的パラメータ) を使用してモデルを調整するとします。その場合、2 つの値の間にある `param1` の探索空間を使用して、以下のように `param2` を静的ハイパーパラメータとして渡します。

```
param1: ["range_min","range_max"]
param2: "static_value"
```

静的ハイパーパラメータは次のような構造になっています。

```
"StaticHyperParameters": {
    "objective" : "reg:squarederror",
    "dropout_rate": "0.3"
}
```

Amazon SageMaker API を使用して、[CreateHyperParameterTuningJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html) オペレーションに渡す `HyperParameterTrainingJobDefinition` パラメータの [StaticHyperParameters](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html#sagemaker-Type-HyperParameterTrainingJobDefinition-StaticHyperParameters) フィールドにキー値のペアを指定できます。

## 動的ハイパーパラメータ
<a name="automatic-model-tuning-define-ranges-dynamic"></a>

SageMaker API を使用して[ハイパーパラメータ範囲](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html#sagemaker-Type-HyperParameterTrainingJobDefinition-HyperParameterRanges)を定義できます。[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html) 操作に渡す `HyperParameterTuningJobConfig` パラメータの `ParameterRanges` フィールドに、ハイパーパラメータの名前と値の範囲を指定します。

`ParameterRanges` フィールドには、カテゴリ、整数、連続の 3 つのサブフィールドがあります。検索対象となる調整可能なハイパーパラメータを合計 30 個まで定義できます (カテゴリ \$1 整数 \$1 連続)。

**注記**  
各カテゴリ別ハイパーパラメータには最大 30 個の異なる値を設定できます。

動的ハイパーパラメータは次のような構造になっています。

```
"ParameterRanges": {
    "CategoricalParameterRanges": [
        {
            "Name": "tree_method",
            "Values": ["auto", "exact", "approx", "hist"]
        }
    ],
    "ContinuousParameterRanges": [
        {
            "Name": "eta",
            "MaxValue" : "0.5",
            "MinValue": "0",
            "ScalingType": "Auto"
        }
    ],
    "IntegerParameterRanges": [
        {
            "Name": "max_depth",
            "MaxValue": "10",
            "MinValue": "1",
            "ScalingType": "Auto"
        }
    ]
}
```

`Grid` 戦略を使用して調整ジョブを作成する場合、指定できるのはカテゴリ値だけです。`MaxNumberofTrainingJobs` を指定する必要はありません。この値は、カテゴリ別パラメータから生成できる設定の合計数から推測されます。`MaxNumberOfTrainingJobs` を指定した場合、この値は、異なるカテゴリの可能な組み合わせの合計数と等しくなる必要があります。

## Autotune
<a name="automatic-model-tuning-define-ranges-autotune"></a>

ハイパーパラメータ範囲、リソース、または目標メトリクスを検索する時間とリソースを節約するため、Autotune により一部のハイパーパラメータフィールドの最適値を自動的に推測できます。Autotune を使用して、以下のフィールドの最適な値を検索します。
+ **[ParameterRanges](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobConfig.html#sagemaker-Type-HyperParameterTuningJobConfig-ParameterRanges)** — 調整ジョブにより最適化されるハイパーパラメータの名前と範囲。
+ **[ResourceLimits](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ResourceLimits.html)** — 調整ジョブで使用できる最大リソース。これらのリソースには、トレーニングジョブの最大数、調整ジョブの最大実行時間、同時に実行できるトレーニングジョブの最大数が含まれます。
+ **[TrainingJobEarlyStoppingType](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobConfig.html#sagemaker-Type-HyperParameterTuningJobConfig-TrainingJobEarlyStoppingType)** — ジョブが目標メトリクスに対して大幅に改善されていない場合にトレーニングジョブを停止するフラグ。デフォルトでは有効になっています。詳細については、「[トレーニングジョブを早期停止する](automatic-model-tuning-early-stopping.md)」を参照してください。
+ **[RetryStrategy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html#sagemaker-Type-HyperParameterTrainingJobDefinition-RetryStrategy)** — トレーニングジョブを再試行する回数。`RetryStrategy` の値を 0 以外に設定すると、ジョブが正常に完了する可能性が高くなります。
+ **[Strategy](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobConfig.html#sagemaker-Type-HyperParameterTuningJobConfig-Strategy)** — ハイパーパラメータ調整で、起動するトレーニングジョブに使用するハイパーパラメータ値の組み合わせをどのように選択するかを指定します。
+ **[ConvergenceDetected](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ConvergenceDetected.html)** — 自動モデル調整 (AMT) がモデルの収束を検出したことを示すフラグ。

Autotune を使用するには、次の操作を行います。

1. [ParameterRanges](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ParameterRanges.html) API `AutoParameters` のフィールドに、ハイパーパラメータとサンプル値を指定します。

1. Autotune を有効にします。

AMT では、ハイパーパラメータとサンプル値が自動調整の対象となるかどうかを判断します。Autotune で使用できるハイパーパラメータは、適切なパラメータ範囲タイプに自動的に割り当てられます。次に、AMT は `ValueHint` を使用して最適な範囲を選択します。`DescribeHyperParameterTrainingJob` API を使用すると、これらの範囲を表示できます。

次の例は、Autotune を使用する調整ジョブを設定する方法を示しています。設定例では、ハイパーパラメータ `max_depth` の `ValueHint` にサンプル値 `4` が含まれています。

```
config = {
    'Autotune': {'Mode': 'Enabled'},
    'HyperParameterTuningJobName':'my-autotune-job',
    'HyperParameterTuningJobConfig': {
        'HyperParameterTuningJobObjective': {'Type': 'Minimize', 'MetricName': 'validation:rmse'},
        'ResourceLimits': {'MaxNumberOfTrainingJobs': 5, 'MaxParallelTrainingJobs': 1},
        'ParameterRanges': {       
            'AutoParameters': [
                {'Name': 'max_depth', 'ValueHint': '4'}
            ]
        }
    },
    'TrainingJobDefinition': {
    .... }
```

前の例を引き続き使用すると、`CreateHyperParameterTuningJob` API の呼び出しに以前の設定が含まれた後に調整ジョブが作成されます。次に、Autotune により AutoParameters の max\$1depth ハイパーパラメータがハイパーパラメータ `IntegerParameterRanges` に変換されます。次の `DescribeHyperParameterTrainingJob` API からの応答は、`max_depth` の最適な `IntegerParameterRanges` 値が`2` と`8` の間であることを示しています。

```
{
    'HyperParameterTuningJobName':'my_job',
    'HyperParameterTuningJobConfig': {
        'ParameterRanges': {
            'IntegerParameterRanges': [
                {'Name': 'max_depth', 'MinValue': '2', 'MaxValue': '8'},
            ],
        }
    },
    'TrainingJobDefinition': {
        ...
    },
    'Autotune': {'Mode': 'Enabled'}
    
}
```

## ハイパーパラメータのスケーリングタイプ
<a name="scaling-type"></a>

整数型および連続型のハイパーパラメータ範囲では、ハイパーパラメータ調整に使用するスケールを選択できます。たとえば、値の範囲を検索するには、ハイパーパラメータ範囲の `ScalingType` フィールドに値を指定できます。次のハイパーパラメータスケーリングタイプから選択できます。

Auto  
ハイパーパラメータの最適なスケールを SageMaker AI ハイパーパラメータのチューニングが選択します。

[線形]  
ハイパーパラメータの調整では、線形スケールを使用してハイパーパラメータ範囲内の値を検索します。通常、すべての値の最低から最高までの範囲が比較的小さい (1 桁違いである) 場合に、線形スケールを選択します。範囲内の値の均一な検索により、範囲全体を適切に探索できるためです。

対数  
ハイパーパラメータの調整では、対数を使用してハイパーパラメータ範囲内の値を検索します。  
対数スケールは、範囲内の値が 0 より大きい場合に使用できます。  
対数スケールは、数桁違いの値の範囲を検索する場合に使用します。  
たとえば、[線形学習モデルを調整する](linear-learner.md) モデルの調整で、`learning_rate` ハイパーパラメータに対して値の範囲として 0.0001～1.0 を指定する場合、対数スケールでの均一な検索では、線形スケールでの検索よりも範囲全体のより適切なサンプルが得られます。線形スケールでの検索は、平均でトレーニング予算の 90% が 0.1～1.0 の値にのみ費やされ、トレーニング予算の 10% のみが 0.0001～0.1 の値に費やされるためです。

`ReverseLogarithmic`  
ハイパーパラメータの調整では、逆対数スケールを使用してハイパーパラメータ範囲内の値を検索します。逆対数スケールは、連続したハイパーパラメータ範囲でのみサポートされています。整数のハイパーパラメータ範囲ではサポートされていません。  
小さい変更 (1 に非常に近い変更) に対して極めて敏感である範囲を検索する場合に、逆対数スケールを選択します。  
逆対数スケールは、範囲全体が範囲 0<=x<1.0 内に収まる場合にのみ使用できます。

ハイパーパラメータスケーリングを使用するノートブックの例については、[GitHub の Amazon SageMaker AI ハイパーパラメーターサンプル](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter_tuning)を参照してください。