

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

# Amazon SageMaker AI で使用できるハイパーパラメータチューニング戦略を理解する
<a name="automatic-model-tuning-how-it-works"></a>

深層学習ニューラルネットワークのような複雑な機械学習システムを構築するとき、可能なすべての組み合わせを探索することは実用的ではありません。ハイパーパラメータ調整を行うことで、モデルのさまざまなバリエーションを試して生産性を高めることができます。指定した範囲内で最も有望なハイパーパラメータ値の組み合わせに注目して、最適なモデルを自動的に探します。良い結果を得るためには、探索する正しい範囲を選択する必要があります。このページでは、Amazon SageMaker AI で使用できるさまざまなハイパーパラメータチューニング戦略について簡単に説明します。

ハイパーパラメータ調整の操作方法を理解するには、[API リファレンスガイド](https://docs.aws.amazon.com/sagemaker/latest/APIReference/Welcome.html?icmpid=docs_sagemaker_lp)を使用します。このページで説明されているチューニング戦略を使用するには、[HyperParameterTuningJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobConfig.html) API および [HyperbandStrategyConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperbandStrategyConfig.html) API を使用します。

**注記**  
アルゴリズム自体は確率論的であるため、ハイパーパラメータチューニングモデルが最善の結果に収束できない可能性もあります。これは、最適な値の組み合わせが指定した範囲内であっても起こる可能性があります。

## グリッド検索
<a name="automatic-tuning-grid-search"></a>

 グリッド検索では、ハイパーパラメータの調整では、ジョブの作成時に指定したカテゴリ値の範囲から値の組み合わせを選択します。グリッド検索戦略を使用する場合、カテゴリパラメータのみがサポートされます。`MaxNumberOfTrainingJobs` を指定する必要はありません。チューニングジョブによって作成されたトレーニングジョブの数は、異なるカテゴリの可能な組み合わせの総数になるように自動的に計算されます。`MaxNumberOfTrainingJobs` を指定した場合、この値は、異なるカテゴリの可能な組み合わせの合計数と等しくなる必要があります。

## ランダム検索
<a name="automatic-tuning-random-search"></a>

ランダム検索を使用する場合、ハイパーパラメータチューニングにより、起動するトレーニングジョブごとに指定する範囲でハイパーパラメータ値のランダムな組み合わせが選択されます。ハイパーパラメータ値の選択は、以前のトレーニングジョブの結果には依存しません。その結果、チューニングのパフォーマンスを変更することなく、同時トレーニングジョブの最大数を実行できます。

ランダム検索を使用するノートブックの例については、「[SageMaker XGBoost と自動モデル調整を使ったランダム検索とハイパーパラメータスケーリング](https://github.com/aws/amazon-sagemaker-examples-community/blob/215215eb25b40eadaf126d055dbb718a245d7603/training/sagemaker-automatic-model-tuning/hpo_xgboost_random_log.ipynb)」ノートブックを参照してください。

## ベイズ最適化
<a name="automatic-tuning-bayesian-optimization"></a>

ベイズ最適化は、[回帰](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#[regression])**問題などのハイパーパラメータの調整を扱います。入力機能 (ハイパーパラメータ) のセットがある場合、ハイパーパラメータの調整は、選択されたメトリクスについてモデルを最適化します。回帰問題を解決するため、ハイパーパラメータチューニングでは、どのハイパーパラメータの組み合わせが最善の結果をもたらす可能性があるかが推測されます。その後、トレーニングジョブを実行してこれらの値をテストします。ハイパーパラメータの調整では、ハイパーパラメータ値のセットをテストした後で、回帰を使用して、次にテストするハイパーパラメータ値のセットを選択します。

ハイパーパラメータチューニングは、Amazon SageMaker AI が実装するベイズ最適化を使います。

ハイパーパラメータの調整では、次のトレーニングジョブに最適なハイパーパラメータを選択する際に、この問題について現時点までに判明しているすべての点を考慮します。選択されるハイパーパラメータ値の組み合わせは、以前にパフォーマンスの漸進的な改善に最適なトレーニングジョブをもたらした組み合わせに近いものになる場合があります。これにより、ハイパーパラメータチューニングでは、既知の結果のうち最善のものを使用できます。また、これまで試されたものとは大きく異なるハイパーパラメータ値のセットが選択される場合もあります。これにより、ハイパーパラメータ値の範囲を探索して、まだ十分に理解されていない新しい領域を見つけることができます。探索/エクスプロイトのトレードオフは、多くの機械学習で一般的な問題です。

ベイズ最適化の詳細については、以下を参照してください。

**ベイズ最適化に関する基本的なトピック**
+ [A Tutorial on Bayesian Optimization of Expensive Cost Functions, with Application to Active User Modeling and Hierarchical Reinforcement Learning (アクティブユーザーモデリングと階層的強化学習への応用を伴う高価な関数のベイズ最適化に関するチュートリアル)](https://arxiv.org/abs/1012.2599)
+ [Practical Bayesian Optimization of Machine Learning Algorithms (機械学習アルゴリズムの実用的なベイズ最適化)](https://arxiv.org/abs/1206.2944)
+ [Taking the Human Out of the Loop: A Review of Bayesian Optimization (ループから人間を取り出す: ベイズのレビュー)](https://ieeexplore.ieee.org/document/7352306?reload=true)

**ベイズ最適化の高速化**
+ [Google Vizier: ブラックボックス最適化のためのサービス](https://dl.acm.org/doi/10.1145/3097983.3098043)
+ [ベイズニューラルネットワークによる学習曲線の予測](https://openreview.net/forum?id=S11KBYclx)
+ [学習曲線の外挿によるディープニューラルネットワークの自動ハイパーパラメータ最適化の高速化](https://dl.acm.org/doi/10.5555/2832581.2832731)

**高度なモデリングおよび転送学習**
+ [スケーラブルなハイパーパラメータ転送学習](https://papers.nips.cc/paper_files/paper/2018/hash/14c879f3f5d8ed93a09f6090d77c2cc3-Abstract.html)
+ [ツリー構造の依存関係のベイズ最適化](http://proceedings.mlr.press/v70/jenatton17a.html)
+ [堅牢なベイズニューラルネットワークのベイズ最適化](https://papers.nips.cc/paper_files/paper/2016/hash/291597a100aadd814d197af4f4bab3a7-Abstract.html)
+ [ディープニューラルネットワークを使用したスケーラブルなベイズ最適化](http://proceedings.mlr.press/v37/snoek15.pdf)
+ [非定常関数のベイズ最適化のための入力ワープ](https://arxiv.org/abs/1402.0929)

## Hyperband
<a name="automatic-tuning-hyperband"></a>

Hyperband は、リソースを動的に再割り当てする多重忠実度ベースの調整方法です。Hyperband では、トレーニングジョブの中間結果と最終結果の両方を使用して、使用率の高いハイパーパラメータ構成にエポックを再割り当てし、パフォーマンスの低いものは自動的に停止します。また、多数の並列トレーニングジョブを使用して、シームレスにスケールします。これらの機能により、ランダム検索やベイズ最適化戦略よりもハイパーパラメータ調整を大幅に高速化できます。

Hyperband は、異なるリソースレベルで結果を公開する反復アルゴリズムの調整のみに使用してください。たとえば、Hyperband は、エポックごとに精度メトリクスを公開する画像分類用のニューラルネットワークの調整に使用できます。

Hyperband のベストプラクティスの詳細については、次のリンクを参照してください。
+ [Hyperband: ハイパーパラメータ最適化への Bandit ベースのアプローチ](http://arxiv.org/pdf/1603.06560)
+ [超並列ハイパーパラメータ調整](https://liamcli.com/assets/pdf/asha_arxiv.pdf)
+ [BOHB: 堅牢で効率的なハイパーパラメータを大規模に最適化する](http://proceedings.mlr.press/v80/falkner18a/falkner18a.pdf)
+ [モデルベースの非同期ハイパーパラメータとニューラルアーキテクチャ検索](https://openreview.net/pdf?id=a2rFihIU7i)

### 早期停止機能を使用した Hyperband
<a name="automatic-tuning-hyperband-early-stopping"></a>

ハイパーパラメータ調整ジョブの目標メトリクスが改善される可能性が低い場合、トレーニングジョブを早期に停止できます。これにより、計算時間を短縮し、モデルのオーバーフィットを防ぐことができます。Hyperband では高度な内部メカニズムを使用して早期停止を適用します。Hyperband 内部の早期停止機能を使用する場合、`HyperParameterTuningJobConfig` API のパラメータ `TrainingJobEarlyStoppingType` を `OFF` に設定する必要があります。

**注記**  
ハイパーパラメータ調整を行ってもモデルが改善されない場合もあります。これは、機械ソリューションを構築するための高度なツールです。このため、科学的開発プロセスの一部と見なす必要があります。