

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

# ハイパーパラメータおよび HPO
<a name="customizing-solution-config-hpo"></a>

**重要**  
デフォルトでは、すべての新しいソリューションで自動トレーニングが使用されます。自動トレーニングでは、ソリューションがアクティブな間はトレーニングコストが発生します。不要なコストを避けるために、完了したら[ソリューションを更新](updating-solution.md)して自動トレーニングを無効にすることができます。トレーニングのコストの詳細については、「[Amazon Personalize の料金](https://aws.amazon.com/personalize/pricing/)」を参照してください。

トレーニングの前にハイパーパラメータを指定して、トレーニング済みモデルを特定のユースケースに合わせて最適化します。トレーニングプロセス中に値が決まるモデルパラメータとは対照的です。

ハイパーパラメータは、[CreateSolution](API_CreateSolution.md) オペレーションに渡された [SolutionConfig](API_SolutionConfig.md) オブジェクトの一部である `algorithmHyperParameters` キーを使用して指定します。

`CreateSolution` リクエストの簡約版は以下のとおりです。この例には、`solutionConfig` オブジェクトが含まれています。`solutionConfig` を使用してレシピのデフォルトパラメータを上書きします。

```
{
  "name": "string",
  "recipeArn": "string",
  "eventType": "string",
  "solutionConfig": {
      "optimizationObjective": {
          "itemAttribute": "string",
          "objectiveSensitivity": "string"
      },
      "eventValueThreshold": "string",
      "featureTransformationParameters": {
          "string" : "string"
      },
      "algorithmHyperParameters": {
          "string" : "string"
      },
      "hpoConfig": {
          "algorithmHyperParameterRanges": {
              ...
          },
          "hpoResourceConfig": {
              "maxNumberOfTrainingJobs": "string",
              "maxParallelTrainingJobs": "string"
          }
      },
  },
}
```

異なるレシピは異なるハイパーパラメータを使用します。利用可能なハイパーパラメータについては、「[レシピの選択](working-with-predefined-recipes.md)」で個々のレシピを参照してください。

## ハイパーパラメータ最適化の有効化
<a name="hpo-tuning"></a>

ハイパーパラメータの最適化 (HPO) またはチューニングは、特定の学習目標に最適なハイパーパラメータを選択するタスクです。最適なハイパーパラメータは、指定された可能性の範囲内から異なる値を使用して多くのトレーニングジョブを実行することで決定されます。

[User-Personalization-v2](native-recipe-user-personalization-v2.md) と [Personalized-Ranking-v2](native-recipe-personalized-ranking-v2.md) では、自動トレーニングを有効にすると、Amazon Personalize は 90 日ごとに自動的に HPO を実行します。自動トレーニングなしでは、HPO は発生しません。他のすべてのレシピでは、HPO を有効にする必要があります。HPO を使用するには、`performHPO` を `true` に設定し、`hpoConfig` オブジェクトを含めます。

ハイパーパラメータのタイプは、カテゴリ別、継続的、または整数値のいずれかです。`hpoConfig` オブジェクトにはこれらの各タイプに該当するキーがあります。ここでは、ハイパーパラメータおよび範囲を指定します。リクエストでは各タイプを指定する必要がありますが、レシピに特定のタイプのパラメーターがない場合は空のままにしておくことができます。例えば、User-Personalization には連続型のチューニング可能なハイパーパラメータはありません。そのため、`continousHyperParameterRange` には空の配列を渡すことができます。

次のコードは、SDK for Python (Boto3) を使用して HPO を有効にしたソリューションを作成する方法を示しています。この例のソリューションは [User-Personalization レシピ](native-recipe-new-item-USER_PERSONALIZATION.md) レシピを使用し、HPO を `true` に設定しています。このコードは、`hidden_dimension`、`categoricalHyperParameterRanges`、`integerHyperParameterRanges` に値を与えます。`continousHyperParameterRange` は空で、`hpoResourceConfig` は `maxNumberOfTrainingJobs` と `maxParallelTrainingJobs` を設定します。

```
import boto3

personalize = boto3.client('personalize')

create_solution_response = personalize.create_solution(
    name = "solution name",
    datasetGroupArn = 'arn:aws:personalize:region:accountId:dataset-group/datasetGroupName',
    recipeArn = 'arn:aws:personalize:::recipe/aws-user-personalization',
    performHPO = True,
    solutionConfig = {
        "algorithmHyperParameters": {
          "hidden_dimension": "55"
        },
        "hpoConfig": {
          "algorithmHyperParameterRanges": {
              "categoricalHyperParameterRanges": [
                  {
                      "name": "recency_mask",
                      "values": [ "true", "false"]
                  }
              ],
              "integerHyperParameterRanges": [
                  {
                      "name": "bptt",
                      "minValue": 2,
                      "maxValue": 22
                  }
              ],
              "continuousHyperParameterRanges": [

              ]
          },
          "hpoResourceConfig": {
              "maxNumberOfTrainingJobs": "4",
              "maxParallelTrainingJobs": "2"
          }
        }
    }
)
```

HPO の詳細については、「[モデルの自動チューニング](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning.html)」を参照してください。

## ハイパーパラメータの表示
<a name="viewing-hyperparameters"></a>

[DescribeSolution](API_DescribeSolution.md) 操作を呼び出すことによって、ソリューションのハイパーパラメータを表示できます。次の例は `DescribeSolution` 出力を示しています。ソリューションバージョンの作成 (モデルのトレーニング) 後に、[DescribeSolutionVersion](API_DescribeSolutionVersion.md) 操作を使用してハイパーパラメータを表示することもできます。

```
{
  "solution": {
    "name": "hpo_coonfig_solution",
    "solutionArn": "arn:aws:personalize:region:accountId:solution/solutionName",
    "performHPO": true,
    "performAutoML": false,
    "recipeArn": "arn:aws:personalize:::recipe/aws-user-personalization",
    "datasetGroupArn": "arn:aws:personalize:region:accountId:dataset-group/datasetGroupName",
    "eventType": "click",
    "solutionConfig": {
      "hpoConfig": {
        "hpoResourceConfig": {
          "maxNumberOfTrainingJobs": "4",
          "maxParallelTrainingJobs": "2"
        },
        "algorithmHyperParameterRanges": {
          "integerHyperParameterRanges": [
            {
              "name": "training.bptt",
              "minValue": 2,
              "maxValue": 22
            }
          ],
          "continuousHyperParameterRanges": [],
          "categoricalHyperParameterRanges": [
            {
              "name": "data.recency_mask",
              "values": [
                "true",
                "false"
              ]
            }
          ]
        }
      },
      "algorithmHyperParameters": {
        "hidden_dimension": "55"
      }
    },
    "status": "ACTIVE",
    "creationDateTime": "2022-07-08T12:12:48.565000-07:00",
    "lastUpdatedDateTime": "2022-07-08T12:12:48.565000-07:00"
  }
}
```