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 tipoINTEGER
,CATEGORICAL
ouDISCRETE
.RANDOM_SEARCH
: uma pesquisa aleatória simples dentro do espaço viável.
A seguir
- Saiba como implementar o ajuste de hiperparâmetro em jobs de treinamento.
- Confira um exemplo de como fazer o ajuste de hiperparâmetro bayesiano em um modelo de caixa preta e o código correspondente no GitHub (conteúdo dos links em inglês).
- Leia a postagem do blog sobre otimização bayesiana e ajuste de hiperparâmetros.
- Leia a postagem do blog sobre mais avanços no ajuste de hiperparâmetro (em inglês).