O aperfeiçoamento de hiperparâmetros tira partido da infraestrutura de processamento do Google Cloud para testar diferentes configurações de hiperparâmetros quando prepara o seu modelo. Pode fornecer-lhe valores otimizados para hiperparâmetros, o que maximiza a precisão das previsões do seu modelo.
O que é um hiperparâmetro?
Os hiperparâmetros contêm os dados que regem o próprio processo de preparação.
A sua aplicação de preparação processa três categorias de dados à medida que prepara o seu modelo:
Os seus dados de entrada (também denominados dados de preparação) são uma coleção de registos individuais (instâncias) que contêm as caraterísticas importantes para o seu problema de aprendizagem automática. Estes dados são usados durante a preparação para configurar o modelo de forma a fazer inferências precisas sobre novas instâncias de dados semelhantes. No entanto, os valores nos seus dados de entrada nunca fazem diretamente parte do seu modelo.
Os parâmetros do modelo são as variáveis que a técnica de aprendizagem automática escolhida usa para se ajustar aos seus dados. Por exemplo, uma rede neural profunda (DNN) é composta por nós de processamento (neurónios), cada um com uma operação realizada nos dados à medida que estes percorrem a rede. Quando a sua RNP é preparada, cada nó tem um valor de ponderação que indica ao seu modelo o impacto que tem na inferência final. Esses pesos são um exemplo dos parâmetros do modelo. Em muitos aspetos, os parâmetros do modelo são o modelo. São eles que distinguem o seu modelo específico de outros modelos do mesmo tipo que funcionam com dados semelhantes.
Os hiperparâmetros são as variáveis que regem o processo de preparação em si. Por exemplo, parte da conceção de uma RNP é decidir quantos níveis ocultos de nós usar entre os níveis de entrada e saída, e quantos nós cada nível oculto deve usar. Estas variáveis não estão diretamente relacionadas com os dados de preparação. São variáveis de configuração. Tenha em atenção que os parâmetros mudam durante uma tarefa de preparação, enquanto os hiperparâmetros são geralmente constantes durante uma tarefa.
Os parâmetros do modelo são otimizados (ou "ajustados") pelo processo de preparação: executa dados através das operações do modelo, compara a inferência 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 otimizados através da execução de toda a tarefa de preparação, da análise da precisão agregada e do ajuste. Em ambos os casos, está a modificar a composição do seu modelo para encontrar a melhor combinação para resolver o seu problema.
Sem uma tecnologia automatizada como o ajuste detalhado dos hiperparâmetros do Vertex AI, tem de fazer ajustes manuais aos hiperparâmetros ao longo de várias execuções de preparação para chegar aos valores ideais. O aperfeiçoamento de hiperparâmetros facilita e torna menos tedioso o processo de determinação das melhores definições de hiperparâmetros.
Como funciona o aperfeiçoamento de hiperparâmetros
A otimização de hiperparâmetros funciona através da execução de várias tentativas da sua aplicação de preparação com valores para os hiperparâmetros escolhidos, definidos dentro dos limites que especificar. A Vertex AI acompanha os resultados de cada teste e faz ajustes para os testes subsequentes. Quando a tarefa estiver concluída, pode obter um resumo de todos os testes, juntamente com a configuração de valores mais eficaz de acordo com os critérios especificados.
O ajuste de hiperparâmetros requer uma comunicação explícita entre o Vertex AI e a sua aplicação de preparação. A sua aplicação de preparação define todas as informações de que o seu modelo precisa. Define os hiperparâmetros (variáveis) que quer ajustar e as variáveis de destino que são usadas para avaliar cada teste.
Saiba mais sobre a otimização bayesiana para o ajuste preciso dos hiperparâmetros.
Além da otimização bayesiana, o Vertex AI otimiza as tarefas de hiperaperfeiçoamento dos parâmetros. Se estiver a fazer o ajuste de hiperparâmetros em função de modelos semelhantes, alterando apenas a função objetivo ou adicionando uma nova coluna de entrada, o Vertex AI consegue melhorar ao longo do tempo e tornar o ajuste de hiperparâmetros mais eficiente.
O que o aperfeiçoamento de hiperparâmetros otimiza
O aperfeiçoamento de hiperparâmetros otimiza as variáveis de destino que especificar, denominadas métricas de hiperparâmetros. A precisão do modelo, calculada a partir de uma passagem de avaliação, é uma métrica comum. As métricas têm de ser numéricas.
Quando configura uma tarefa de otimização de hiperparâmetros, define o nome e o objetivo de cada métrica. O objetivo especifica se quer ajustar o modelo para maximizar ou minimizar o valor desta métrica.
Como o Vertex AI obtém as suas métricas
Use o cloudml-hypertune
pacote Python para transmitir métricas para o Vertex AI. Esta biblioteca fornece funções auxiliares para
comunicar métricas ao Vertex AI.
Saiba mais acerca dos relatórios de métricas de hiperparâmetros.
O fluxo de valores de hiperparâmetros
Sem o aperfeiçoamento de hiperparâmetros, pode definir os hiperparâmetros da forma que quiser na sua aplicação de preparação. Por exemplo, pode configurar os hiperparâmetros transmitindo argumentos da linha de comandos ao módulo da aplicação principal ou transmiti-los à sua aplicação num ficheiro de configuração.
Quando usa o ajuste de hiperparâmetros, tem de usar o seguinte procedimento para definir os valores dos hiperparâmetros que está a usar para o ajuste:
Defina um argumento de linha de comandos no módulo de preparação principal para cada hiperparâmetro otimizado.
Use o valor transmitido nesses argumentos para definir o hiperparâmetro correspondente no código da sua aplicação.
Quando configura uma tarefa de otimização de hiperparâmetros, define cada hiperparâmetro a otimizar, o respetivo tipo de dados e o intervalo de valores a experimentar. Identifica cada hiperparâmetro com o mesmo nome que o argumento correspondente que definiu no módulo principal. O serviço de preparação inclui argumentos de linha de comandos que usam estes nomes quando executa a sua aplicação.
Saiba mais acerca dos requisitos para analisar argumentos da linha de comandos.
Selecione os hiperparâmetros a otimizar
Existem poucos conselhos universais sobre os hiperparâmetros que deve otimizar. Se tiver experiência com a técnica de aprendizagem automática que está a usar, pode ter informações sobre o comportamento dos respetivos hiperparâmetros. Também pode encontrar conselhos em comunidades de aprendizagem automática.
Independentemente da forma como os escolhe, é importante compreender as implicações. Cada hiperparâmetro que optar por otimizar tem o potencial de aumentar o número de tentativas necessárias para uma tarefa de otimização bem-sucedida. Quando executa uma tarefa de hiperaperfeiçoamento dos parâmetros no Vertex AI, o valor que lhe é cobrado baseia-se na duração das experiências iniciadas pela sua tarefa de hiperaperfeiçoamento dos parâmetros. Uma escolha cuidadosa dos hiperparâmetros a ajustar pode reduzir o tempo e o custo da tarefa de ajuste de hiperparâmetros.
Tipos de dados de hiperparâmetros
Num objeto ParameterSpec, especifica o tipo de dados do hiperparâmetro como uma instância de uma especificação de valor do parâmetro. A tabela seguinte lista as especificações de valores de parâmetros suportadas.
Tipo | Tipo de dados | Intervalos de valores | Dados de valor |
---|---|---|---|
DoubleValueSpec |
DOUBLE |
minValue e maxValue |
Valores de vírgula flutuante |
IntegerValueSpec |
INTEGER |
minValue e maxValue |
Valores de números inteiros |
CategoricalValueSpec |
CATEGORICAL |
categoricalValues |
Lista de strings de categorias |
DiscreteValueSpec |
DISCRETE |
discreteValues |
Lista de valores por ordem ascendente |
Hiperparâmetros de escala
Num objeto ParameterSpec
, pode especificar que a escalabilidade deve ser realizada neste hiperparâmetro. Recomendamos o ajuste de escala para os tipos de dados DOUBLE e INTEGER. Os tipos de dimensionamento disponíveis são:
SCALE_TYPE_UNSPECIFIED
: não é aplicado nenhum redimensionamento a este hiperparâmetro.UNIT_LINEAR_SCALE
: dimensiona o espaço viável linearmente de 0 a 1.UNIT_LOG_SCALE
: dimensiona o espaço viável logaritmicamente de 0 a 1. Todo o espaço viável tem de ser estritamente positivo.UNIT_REVERSE_LOG_SCALE
: dimensiona o espaço viável "inverso" de forma logarítmica 0 a 1. O resultado é que os valores próximos da parte superior do espaço viável estão mais dispersos do que os pontos próximos da parte inferior. Todo o espaço viável tem de ser estritamente positivo.
Hiperparâmetros condicionais
O objeto ConditionalParameterSpec
permite adicionar hiperparâmetros a um teste quando o valor do respetivo hiperparâmetro principal corresponde a uma condição especificada.
Por exemplo, pode definir uma tarefa de otimização de hiperparâmetros com o objetivo de encontrar um modelo ideal através de uma regressão linear ou uma rede neural profunda (DNN). Para permitir que a tarefa de otimização especifique o método de preparação, defina um hiperparâmetro categórico denominado training_method
com as seguintes opções: LINEAR_REGRESSION
e DNN
. Quando o training_method
é LINEAR_REGRESSION
, a tarefa de ajuste tem de especificar um hiperparâmetro para a taxa de aprendizagem. Quando o training_method
é DNN
, a tarefa de otimização deve especificar parâmetros para a taxa de aprendizagem e o número de camadas ocultas.
Uma vez que o número de camadas ocultas só é aplicável quando o valor de training_method
é DNN
, define um parâmetro condicional que adiciona um hiperparâmetro denominado num_hidden_layers
quando o valor de training_method
é DNN
.
Uma vez que a taxa de aprendizagem é usada por ambas as opções training_method
, tem de decidir se este hiperparâmetro condicional deve ser partilhado. Se o hiperparâmetro for partilhado, a tarefa de otimização usa o que aprendeu com as experiências LINEAR_REGRESSION
e DNN
para otimizar a taxa de aprendizagem. Neste caso, faz mais sentido ter taxas de aprendizagem separadas para cada training_method
, uma vez que a taxa de aprendizagem para preparar um modelo com LINEAR_REGRESSION
não deve afetar a taxa de aprendizagem para preparar um modelo com DNN
. Assim, define os seguintes hiperparâmetros condicionais:
- Um hiperparâmetro denominado
learning_rate
que é adicionado quando o elementotraining_method
éLINEAR_REGRESSION
. - Um hiperparâmetro denominado
learning_rate
que é adicionado quando o elementotraining_method
éDNN
.
Os hiperparâmetros condicionais permitem-lhe definir os hiperparâmetros para a tarefa de ajuste como um gráfico. Isto permite-lhe ajustar o processo de preparação usando diferentes técnicas de preparação, cada uma com as suas próprias dependências de hiperparâmetros.
Algoritmos de pesquisa
Pode especificar um algoritmo de pesquisa no objeto StudySpec
.
Se não especificar um algoritmo, a tarefa usa o algoritmo do Vertex AI predefinido. O algoritmo predefinido aplica a otimização bayesiana para chegar à solução ideal com uma pesquisa mais eficaz no espaço de parâmetros.
Valores disponíveis:
ALGORITHM_UNSPECIFIED
: igual a não especificar um algoritmo. A Vertex AI escolhe o melhor algoritmo de pesquisa entre os bandidos de processos gaussianos, a pesquisa de combinação linear ou as respetivas variantes.GRID_SEARCH
: uma pesquisa de grelha no espaço viável. Esta opção é particularmente útil se quiser especificar uma quantidade de tentativas que seja superior ao número de pontos no espaço viável. Nestes casos, se não especificar uma pesquisa de grelha, o algoritmo predefinido do Vertex AI pode gerar sugestões duplicadas. Para usar a pesquisa de grelha, todos os parâmetros têm de ser do tipoINTEGER
,CATEGORICAL
ouDISCRETE
.RANDOM_SEARCH
: uma pesquisa aleatória no espaço viável.
O que se segue?
- Saiba como implementar o ajuste de hiperparâmetros para as suas tarefas de preparação
- Leia uma publicação no blogue sobre a otimização bayesiana e o ajuste fino dos hiperparâmetros.