サンプリング メソッドを構成する

完了

ハイパーパラメーターのチューニングの実行、またはスイープ ジョブで使われる特定の値は、使うサンプリングの種類によって異なります。

Azure Machine Learning で使用できる主なサンプリング方法は 3 つあります。

  • グリッド サンプリング: 考えられるすべての組み合わせを試行します。
  • ランダム サンプリング: 検索空間からランダムに値を選びます。
    • ソボル: ランダム サンプリングにシードを追加し、結果を再現可能にします。
  • ベイジアン サンプリング: 以前の結果に基づいて新しい値を選びます。

注意

ソボルはランダム サンプリングの一種です。

グリッド サンプリング

グリッド サンプリングは、すべてのハイパーパラメーターが不連続の場合にのみ適用できます。また、検索空間内のパラメーターのすべての組み合わせを試すために使用されます。

たとえば、次のコード例では、グリッド サンプリングを使用して、不連続の batch_sizelearning_rate の値のすべての組み合わせを試します。

from azure.ai.ml.sweep import Choice

command_job_for_sweep = command_job(
    batch_size=Choice(values=[16, 32, 64]),
    learning_rate=Choice(values=[0.01, 0.1, 1.0]),
)

sweep_job = command_job_for_sweep.sweep(
    sampling_algorithm = "grid",
    ...
)

ランダム サンプリング

ランダム サンプリングは、各ハイパーパラメーターの値をランダムに選択するために使用されます。次のコード例に示すように、不連続値と連続値を混在させることができます。

from azure.ai.ml.sweep import Normal, Uniform

command_job_for_sweep = command_job(
    batch_size=Choice(values=[16, 32, 64]),   
    learning_rate=Normal(mu=10, sigma=3),
)

sweep_job = command_job_for_sweep.sweep(
    sampling_algorithm = "random",
    ...
)

sobol

ランダム サンプリングのスイープ ジョブを再現可能にしたいと思うかもしれません。 そのようなことを期待する場合は、代わりにソボルを使用できます。 ソボルは、シードを使用できランダム サンプリングの一種です。 シードを追加すると、スイープ ジョブを再現できます。また、検索空間の分布がより均等に広がります。

次のコード例は、シードと規則を追加し、RandomSamplingAlgorithm クラスを使うことで、ソボルを使う方法を示しています。

from azure.ai.ml.sweep import RandomSamplingAlgorithm

sweep_job = command_job_for_sweep.sweep(
    sampling_algorithm = RandomSamplingAlgorithm(seed=123, rule="sobol"),
    ...
)

ベイジアン サンプリング

ベイジアン サンプリングでは、ベイジアン最適化アルゴリズムに基づいてハイパーパラメーター値を選択します。これにより、前の選択からパフォーマンスが向上するパラメーターの組み合わせを選択しようとします。 次のコード例は、ベイジアン サンプリングを構成する方法を示しています。

from azure.ai.ml.sweep import Uniform, Choice

command_job_for_sweep = job(
    batch_size=Choice(values=[16, 32, 64]),    
    learning_rate=Uniform(min_value=0.05, max_value=0.1),
)

sweep_job = command_job_for_sweep.sweep(
    sampling_algorithm = "bayesian",
    ...
)

ベイジアン サンプリングは、choiceuniformquniform のパラメーター式でのみ使用できます。