Настройка метода выборки

Завершено

Определенные значения, используемые в выполнении настройки гиперпараметров или задании очистки, зависят от типа используемой выборки .

Существует три основных метода выборки, доступные в Машинное обучение Azure:

  • Выборка сетки: выполняет все возможные сочетания.
  • Случайная выборка: случайным образом выбирает значения из пространства поиска.
    • Собол: добавляет начальное значение к случайной выборке, чтобы сделать результаты воспроизводимыми.
  • Выборка Байезиана: выбирает новые значения на основе предыдущих результатов.

Примечание.

Соболь — это вариант случайной выборки.

Решетчатая выборка

Выборка сетки может применяться только в том случае, если все гиперпараметры дискретны и используются для каждой возможной комбинации параметров в пространстве поиска.

Например, в следующем примере кода выборка с помощью сетки используется для выполнения всех возможных сочетаний дискретных значений batch_size и learning_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 класс:

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

Вы можете использовать только выборку Байезиана с выражениями параметров выборки, униформы и квниформы.