Visão geral do ajuste de hiperparâmetros

Nesta página, descrevemos os conceitos envolvidos no ajuste de hiperparâmetros, que é o aprimoramento de modelo automatizado fornecido pelo AI Platform Training. O ajuste de hiperparâmetros aproveita a infraestrutura de processamento do Google Cloud para testar diferentes configurações de hiperparâmetros ao treinar seu modelo. Esse recurso pode fornecer valores otimizados para hiperparâmetros, o que maximiza a precisão preditiva do modelo.

O que é um hiperparâmetro?

Os hiperparâmetros contêm os dados que controlam o próprio processo de treinamento.

Seu aplicativo de treinamento lida com três categorias de dados durante o treinamento do modelo:

  • Os dados de entrada, também chamados de dados de treinamento, formam uma coleção de registros individuais (instâncias) com as características que são importantes para o problema de machine learning. Esses dados configuram o modelo durante o treinamento para fazer predições precisas sobre novas instâncias de dados semelhantes. No entanto, os valores nos dados de entrada nunca se tornam diretamente parte do modelo.

  • Os parâmetros do modelo são as variáveis que a técnica de machine learning escolhida usa para ajustar os dados. Por exemplo, uma rede neural profunda (DNN, na sigla em inglês) é composta por nós de processamento (neurônios), cada um com uma operação realizada nos dados enquanto eles trafegam pela rede. Quando a DNN é treinada, cada node tem um valor de peso que informa ao modelo o impacto que ele tem na predição final. Esses pesos são um exemplo dos parâmetros do modelo. De muitas formas, esses parâmetros são o modelo. Ou seja, são eles que diferenciam seu modelo específico de outros modelos do mesmo tipo que trabalham com dados semelhantes.

  • Os hiperparâmetros são variáveis que controlam o próprio processo de treinamento. Por exemplo, faz parte da configuração de uma rede neural profunda decidir quantas camadas ocultas de nós precisam ser usadas entre a camada de entrada e a camada de saída, bem como quantos nós cada camada precisa usar. Essas variáveis não estão diretamente relacionadas aos dados de treinamento. Elas são variáveis de configuração. Os parâmetros mudam durante um job de treinamento, enquanto os hiperparâmetros geralmente permanecem constantes durante um job.

Os parâmetros do modelo são otimizados (ou seja, "ajustados") pelo processo de treinamento. Você executa os dados por meio das operações do modelo, compara a predição resultante com o valor real de cada instância de dados, avalia a precisão e ajusta até encontrar os melhores valores. Os hiperparâmetros são ajustados por meio da execução de todo o job de treinamento, a observação da precisão agregada e o ajuste. Nos dois casos, você está modificando a composição do modelo tentando encontrar a melhor combinação para lidar com o problema.

Sem uma tecnologia automatizada, como o ajuste de hiperparâmetros do AI Platform Training, é preciso fazer ajustes manuais nos hiperparâmetros ao longo de várias execuções de treinamento para chegar aos valores ideais. O ajuste torna mais fácil e menos entediante o processo de determinar as melhores configurações de hiperparâmetros.

Como funciona o ajuste de hiperparâmetro

O ajuste de hiperparâmetro realiza vários testes em um único job de treinamento. Cada teste é uma execução completa do aplicativo de treinamento com valores para a seleção de hiperparâmetros, definidos dentro dos limites especificados. O serviço de treinamento do AI Platform Training rastreia os resultados de cada teste e faz ajustes nas avaliações subsequentes. Quando o job é concluído, você recebe um resumo de todos os testes, junto com a configuração de valores mais eficaz de acordo com os critérios especificados por você.

O ajuste de hiperparâmetros exige comunicação explícita entre o serviço de treinamento do AI Platform Training e seu aplicativo de treinamento. O aplicativo de treinamento define todas as informações que o modelo precisa. Defina os hiperparâmetros (variáveis) que você quer ajustar e um valor pretendido para cada um deles.

Para saber como o AI Platform Training usa a otimização bayesiana para ajuste de hiperparâmetros, leia a postagem do blog Ajuste de hiperparâmetros no Cloud Machine Learning Engine usando a otimização bayesiana (em inglês).

Além da otimização bayesiana, o AI Platform Training otimiza os jobs de ajuste de hiperparâmetros. Se você estiver ajustando hiperparâmetros em modelos semelhantes, alterando apenas a função de objetivo ou adicionando uma nova coluna de entrada, o AI Platform Training pode melhorar ao longo do tempo e tornar o ajuste de hiperparâmetro mais eficiente.

O que o ajuste de hiperparâmetro otimiza

O ajuste de hiperparâmetro otimiza uma única variável, também chamada de métrica de hiperparâmetro, especificada por você. A precisão do modelo, quando calculada com base em uma passagem de avaliação, é uma métrica comum. A métrica tem que ser um valor numérico e você pode especificar se pretende ajustar o modelo para maximizar ou minimizar a métrica.

Ao iniciar um job com o ajuste de hiperparâmetro, você precisa estabelecer o nome da métrica, que é o nome atribuído por você ao resumo escalar a ser adicionado ao aplicativo de treinamento.

O nome padrão da métrica é training/hptuning/metric. Recomendamos que você atribua um nome personalizado. A única diferença funcional é que, se você usar um nome personalizado, precisará definir o valor hyperparameterMetricTag no objeto HyperparameterSpec na solicitação do job para corresponder ao nome escolhido.

Como o AI Platform Training recebe a métrica

Para modelos do TensorFlow, o serviço de AI Platform Training monitora os eventos de resumo do TensorFlow gerados pelo aplicativo de treinamento e recupera a métrica. Se o modelo foi criado com outra estrutura ou usa um contêiner personalizado, é preciso usar o pacote Python cloudml-hypertune para relatar a métrica de treinamento ao AI Platform Training.

O fluxo de valores de hiperparâmetro

Sem o ajuste de hiperparâmetro, você pode configurar os hiperparâmetros como quiser no aplicativo de treinamento. Por exemplo, você pode configurá-los passando argumentos de linha de comando para o módulo principal do aplicativo ou alimentá-los para o aplicativo em um arquivo de configuração.

Ao usar o ajuste do hiperparâmetro, é necessário usar o procedimento a seguir para definir os valores dos hiperparâmetros que você está usando para o ajuste:

  • Defina um argumento de linha de comando no módulo de treinamento principal para cada hiperparâmetro ajustado.

  • Use o valor passado nesses argumentos para definir o hiperparâmetro correspondente no código do TensorFlow do aplicativo.

Ao configurar um job de treinamento com o ajuste de hiperparâmetro, você define cada hiperparâmetro a ser ajustado, o tipo deles e o intervalo de valores. Identifique cada hiperparâmetro usando exatamente o mesmo nome do argumento correspondente que você definiu no módulo principal. O serviço de treinamento inclui argumentos de linha de comando com esses nomes durante a execução do aplicativo.

Como selecionar hiperparâmetros para ajuste

Não há muitas orientações sobre como escolher os hiperparâmetros a serem ajustados. Se você tiver experiência na técnica de aprendizado da máquina que está usando, talvez tenha uma ideia de como os hiperparâmetros se comportam. As comunidades de aprendizado de máquina também são uma bom lugar para conseguir informações.

No entanto, quem escolhe é você, e por isso é importante entender as implicações. Todo hiperparâmetro que você decidir ajustar tem o potencial de aumentar o número de testes necessários para um job de ajuste bem-sucedido. Quando você treina no AI Platform Training, é cobrado pela duração do job. Uma escolha cuidadosa dos hiperparâmetros para ajustar pode reduzir o tempo e o custo do treinamento do seu modelo.

Tipos de hiperparâmetro

Os tipos de hiperparâmetros compatíveis estão listados na documentação de referência do job. No objeto ParameterSpec, especifique o tipo de cada hiperparâmetro e os intervalos de valores associados, conforme descrito na tabela a seguir:

Tipo Intervalos de valor Dados de valor
DOUBLE minValue e maxValue Valores de ponto flutuante
INTEGER minValue e maxValue Valores inteiros
CATEGORICAL categoricalValues Lista de strings de categoria
DISCRETE discreteValues Lista de valores em ordem crescente

Escalonamento de hiperparâmetro

Você pode especificar um tipo de escalonamento para ser executado em um hiperparâmetro. O escalonamento é recomendado para os tipos DOUBLE e INTEGER. Estes são os tipos de escalonamento disponíveis:

  • UNIT_LINEAR_SCALE
  • UNIT_LOG_SCALE
  • UNIT_REVERSE_LOG_SCALE

Algoritmos de pesquisa

Você pode especificar um algoritmo de pesquisa no objeto HyperparameterSpec. Se você não especificar um algoritmo, seu job usará o algoritmo padrão AI Platform Training, que direciona a pesquisa de parâmetro para chegar à solução ideal com uma pesquisa mais eficaz sobre o espaço de parâmetro.

Os valores disponíveis são:

  • ALGORITHM_UNSPECIFIED: resulta no mesmo comportamento de quando nenhum algoritmo de pesquisa é especificado. O AI Platform Training usa um algoritmo padrão, que aplica a otimização bayesiana para pesquisar o espaço de possíveis valores de hiperparâmetros, resultando na técnica mais eficaz para seu conjunto de hiperparâmetros.

  • GRID_SEARCH: uma pesquisa de grade simples dentro do espaço viável. Essa opção será útil principalmente se você quiser especificar um número de tentativas que seja maior do que o número de pontos no espaço viável. Nesses casos, se você não especificar uma pesquisa de grade, o algoritmo padrão do AI Platform Training poderá gerar sugestões duplicadas. Para usar a pesquisa de grade, todos os parâmetros precisam ser do tipo INTEGER, CATEGORICAL ou DISCRETE.

  • RANDOM_SEARCH: uma pesquisa aleatória simples dentro do espaço viável.

A seguir