샘플링 방법 구성

완료됨

사용되는 샘플링 유형에 따라 하이퍼 매개 변수 튜닝 실행에 사용되는 특정 값이거나 스윕 작업입니다.

Azure Machine Learning에서는 다음과 같은 세 가지 주요 샘플링 방법을 사용할 수 있습니다.

  • 그리드 샘플링: 가능한 모든 조합을 시도합니다.
  • 임의 샘플링: 검색 공간에서 값을 임의로 선택합니다.
    • Sobol: 결과를 재현할 수 있도록 무작위 샘플링에 시드를 추가합니다.
  • Bayesian 샘플링: 이전 결과에 따라 새 값을 선택합니다.

참고

Sobol은 무작위 샘플링을 변형한 것입니다.

그리드 샘플링

그리드 샘플링은 모든 하이퍼 매개 변수가 불연속인 경우에만 적용할 수 있으며, 검색 공간에서 가능한 모든 매개 변수 조합을 시도하는 데 사용됩니다.

예를 들어 다음 코드 예제에서 그리드 샘플링은 불연속 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

임의 샘플링 스윕 작업을 재현하려고 합니다. 이러한 작업을 수행하려는 경우 대신 Sobol을 사용할 수 있습니다. Sobol은 시드를 사용할 수 있는 무작위 샘플링의 유형입니다. 시드를 추가하면 스윕 작업을 재현할 수 있으며 검색 공간 분포가 더 균등하게 분산됩니다.

다음 코드 예제에서는 시드 및 규칙을 추가하고 RandomSamplingAlgorithm 클래스를 사용하여 Sobol을 사용하는 방법을 보여 줍니다.

from azure.ai.ml.sweep import RandomSamplingAlgorithm

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

Bayesian 샘플링

Bayesian 샘플링은 Bayesian 최적화 알고리즘을 기반으로 하는 하이퍼 매개 변수 값을 선택합니다. 이 알고리즘은 이전 선택에서 성능 향상을 초래하는 매개 변수 조합을 선택하려고 시도합니다. 다음 코드 예제에서는 Bayesian 샘플링을 구성하는 방법을 보여 줍니다.

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",
    ...
)

choice, uniform, quniform 매개 변수 식으로 Bayesian 샘플링만 사용할 수 있습니다.