Configurar término antecipado

Concluído

O ajuste de hiperparâmetro ajuda você a ajustar seu modelo e selecionar os valores de hiperparâmetro que farão com que seu modelo tenha o melhor desempenho.

No entanto, encontrar o melhor modelo pode ser uma busca interminável. É sempre necessário considerar se vale a pena o tempo e a despesa de testar novos valores de hiperparâmetro para encontrar um modelo tenha um desempenho melhor.

Em cada avaliação em um trabalho de varredura, um novo modelo é treinado com uma nova combinação de valores de hiperparâmetro. Se o treinamento de um novo modelo não resultar em um modelo significativamente melhor, convém interromper o trabalho de varredura e usar o modelo que teve o melhor desempenho até o momento.

Ao configurar um trabalho de varredura no Azure Machine Learning, você também pode definir um número máximo de avaliações. Uma abordagem mais sofisticada pode ser parar um trabalho de varredura quando modelos mais recentes não produzem resultados significativamente melhores. Para interromper um trabalho de varredura com base no desempenho dos modelos, você pode usar uma política de encerramento antecipado.

Quando usar uma política de encerramento antecipado

Se você deve ou não usar uma política de encerramento antecipado depende do espaço de pesquisa e do método de amostragem com o qual você está trabalhando.

Por exemplo, você pode optar por usar um método de amostragem de grade em um espaço de pesquisa discreto que resulta em, no máximo, seis avaliações. Com seis avaliações, no máximo seis modelos serão treinados, e uma política de encerramento antecipado pode ser desnecessária.

Uma política de encerramento antecipado pode ser especialmente benéfica ao trabalhar com hiperparâmetros contínuos em seu espaço de pesquisa. Hiperparâmetros contínuos apresentam um número ilimitado de valores possíveis de escolha. Você provavelmente verá vantagem uma política de encerramento antecipado ao trabalhar com hiperparâmetros contínuos e um método de amostragem aleatório ou bayesiano.

Configurar uma política de encerramento antecipado

Há dois parâmetros principais quando você opta por usar uma política de encerramento antecipado:

  • evaluation_interval: especifica em qual intervalo você deseja que a política seja avaliada. Toda vez que a métrica primária é registrada para uma avaliação conta como um intervalo.
  • delay_evaluation: especifica quando começar a avaliar a política. Esse parâmetro permite que pelo menos um mínimo de avaliações seja concluída sem que uma política de encerramento antecipado as afete.

Os novos modelos podem continuar a ter um desempenho um pouco melhor que os modelos anteriores. Para determinar a extensão segundo a qual um modelo deve ter um desempenho melhor que o apresentado em avaliações anteriores, há três opções de encerramento antecipado:

  • Política do Bandit: usa um slack_factor (relativo) ou slack_amount (absoluto). Qualquer novo modelo deve ser executado dentro do intervalo de margem de atraso do modelo de melhor desempenho.
  • Política de interrupção de mediana: usa a mediana das médias da métrica primária. Qualquer novo modelo deve ter um desempenho melhor do que a mediana.
  • Política de seleção de truncamento: usa um truncation_percentage, que é o percentual de avaliações de menor desempenho. Qualquer novo modelo deve ter um desempenho melhor do que as avaliações de menor desempenho.

Política Bandit

Você pode usar uma política do Bandit para interromper uma avaliação se, até o momento, a métrica de desempenho de destino não superar a melhor avaliação por uma margem especificada.

Por exemplo, o código a seguir aplica uma política do Bandit com um atraso de cinco avaliações, avalia a política em cada intervalo e permite uma quantidade de margem de atraso absoluta de 0,2.

from azure.ai.ml.sweep import BanditPolicy

sweep_job.early_termination = BanditPolicy(
    slack_amount = 0.2, 
    delay_evaluation = 5, 
    evaluation_interval = 1
)

Imagine que a métrica primária é a precisão do modelo. Quando, após as cinco primeiras avaliações, o modelo de melhor desempenho tem uma precisão de 0,9, qualquer novo modelo precisa ter um desempenho melhor do que (0,9-0,2) ou 0,7. Se a precisão do novo modelo for maior que 0,7, o trabalho de varredura continuará. Se o novo modelo tiver uma pontuação de precisão inferior a 0,7, a política encerrará o trabalho de varredura.

Diagram of two examples when using a bandit policy: one model performs sufficiently good, the other underperforms.

Você também pode aplicar uma política bandit usando um fator do Slack, que compara a métrica de desempenho como taxa, não como valor absoluto.

Política de Encerramento Mediana

Uma política de encerramento mediana abandona as avaliações em que a métrica de desempenho de destino é pior do que a mediana das médias em execução para todas as avaliações.

Por exemplo, o código a seguir aplica uma política de interrupção mediana com um atraso de cinco avaliações e avalia a política em cada intervalo.

from azure.ai.ml.sweep import MedianStoppingPolicy

sweep_job.early_termination = MedianStoppingPolicy(
    delay_evaluation = 5, 
    evaluation_interval = 1
)

Imagine que a métrica primária é a precisão do modelo. Quando a precisão é registrada na sexta avaliação, a métrica precisa ser maior do que a mediana das pontuações de precisão até o momento. Suponha que a mediana das pontuações de precisão até agora seja 0,82. Se a precisão do novo modelo for maior que 0,82, o trabalho de varredura continuará. Se o novo modelo tiver uma pontuação de precisão inferior a 0,82, a política interromperá o trabalho de varredura e nenhum novo modelo será treinado.

Diagram of two examples when using a median stopping policy: one model performs sufficiently good, the other underperforms.

Política de seleção de truncamento

Uma política de seleção de truncamento cancela X% das avaliações com pior desempenho em cada intervalo de avaliação com base no valor de truncation_percentage especificado para X.

Por exemplo, o código a seguir aplica uma política de seleção de truncamento com um atraso de quatro avaliações, avalia a política em cada intervalo e usa um percentual de truncamento de 20%.

from azure.ai.ml.sweep import TruncationSelectionPolicy

sweep_job.early_termination = TruncationSelectionPolicy(
    evaluation_interval=1, 
    truncation_percentage=20, 
    delay_evaluation=4 
)

Imagine que a métrica primária é a precisão do modelo. Quando a precisão é registrada na quinta avaliação, a métrica não deve estar entre as 20% piores avaliações até agora. Nesse caso, 20% se traduz em uma avaliação. Em outras palavras, se a quinta avaliação não for o modelo de pior desempenho até agora, o trabalho de varredura continuará. Se a quinta avaliação tiver a menor pontuação de precisão de todas as avaliações até o momento, o trabalho de varredura será interrompido.

Diagram of two examples when using a truncation selection policy: one model performs sufficiently good, the other underperforms.