Configurar rescisão antecipada

Concluído

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

Para você encontrar o melhor modelo, no entanto, pode ser uma conquista sem fim. Você sempre tem que considerar se vale a pena o tempo e a despesa de testar novos valores de hiperparâmetros para encontrar um modelo que possa ter um desempenho melhor.

A cada teste em um trabalho de varredura, um novo modelo é treinado com uma nova combinação de valores de hiperparâmetros. Se o treinamento de um novo modelo não resultar em um modelo significativamente melhor, você pode querer parar o trabalho de varredura e usar o modelo que teve o melhor desempenho até agora.

Ao configurar um trabalho de varredura no Aprendizado de Máquina do Azure, 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 os 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 rescisão antecipada.

Quando usar uma política de rescisão antecipada

Se você deseja usar uma política de rescisão antecipada pode depender 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 um máximo de seis ensaios. Com seis ensaios, um máximo de seis modelos serão treinados e uma política de rescisão antecipada pode ser desnecessária.

Uma política de rescisão antecipada pode ser especialmente benéfica ao trabalhar com hiperparâmetros contínuos no seu espaço de pesquisa. Os hiperparâmetros contínuos apresentam um número ilimitado de valores possíveis para escolher. Você provavelmente desejará usar uma política de término antecipado ao trabalhar com hiperparâmetros contínuos e um método de amostragem aleatório ou bayesiano.

Configurar uma política de rescisão antecipada

Há dois parâmetros principais quando você opta por usar uma política de rescisão antecipada:

  • 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. Este parâmetro permite que pelo menos um mínimo de ensaios sejam concluídos sem que uma política de cessação antecipada os afete.

Os novos modelos podem continuar a ter um desempenho apenas ligeiramente melhor do que os modelos anteriores. Para determinar até que ponto um modelo deve ter um desempenho melhor do que os ensaios anteriores, existem três opções para a terminação antecipada:

  • Política de bandidos: Usa um slack_factor (relativo) ou slack_amount(absoluto). Qualquer novo modelo deve ter um desempenho dentro da faixa de folga do modelo com melhor desempenho.
  • Política de parada 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 é a porcentagem de testes de desempenho mais baixo. Qualquer novo modelo deve ter um desempenho melhor do que os ensaios com pior desempenho.

Política de bandidos

Você pode usar uma política de bandit para interromper uma avaliação se a métrica de desempenho de destino tiver um desempenho inferior ao melhor teste até agora por uma margem especificada.

Por exemplo, o código a seguir aplica uma política de bandit com um atraso de cinco tentativas, avalia a política em cada intervalo e permite uma quantidade absoluta de folga 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 principal é a precisão do modelo. Quando após os primeiros cinco ensaios, o modelo com 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 superior a 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 de bandit usando um fator de folga, que compara a métrica de desempenho como uma proporção em vez de um valor absoluto.

Mediana da política de paragem

Uma política de interrupção mediana abandona os ensaios em que a métrica de desempenho alvo é pior do que a mediana das médias de execução para todos os ensaios.

Por exemplo, o código a seguir aplica uma política de parada 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 principal é a precisão do modelo. Quando a precisão é registrada para a sexta tentativa, a métrica precisa ser maior do que a mediana das pontuações de precisão até agora. Suponhamos que a mediana das pontuações de precisão até agora seja de 0,82. Se a precisão do novo modelo for superior a 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 o X% de testes com desempenho mais baixo 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 uma porcentagem 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 principal é a precisão do modelo. Quando a precisão é registrada para o quinto ensaio, a métrica não deve estar nos piores 20% dos testes até agora. Neste caso, 20% traduz-se num ensaio. Por outras palavras, se o quinto ensaio não for o modelo com pior desempenho até agora, o trabalho de varredura continuará. Se a quinta tentativa tiver a menor pontuação de precisão de todas as tentativas até agora, o trabalho de varredura será interrompido.

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