Como treinar usando o algoritmo integrado de amplitude e profundidade

Com o treinamento que usa algoritmos integrados no AI Platform, é possível enviar seu conjunto de dados e treinar um modelo sem escrever códigos correspondentes. Nesta página, você aprenderá como o algoritmo integrado de amplitude e profundidade funciona e como usá-lo.

Visão geral

Esse algoritmo integrado é responsável pelo pré-processamento e treinamento:

  1. Pré-processamento: o AI Platform processa a combinação de dados categóricos e numéricos em um conjunto numérico de dados a fim de prepará-lo para o treinamento.
  2. Treinamento: com o conjunto de dados e os parâmetros do modelo fornecidos, o AI Platform executa o treinamento usando o Estimator de amplitude e profundidade (em inglês) do TensorFlow.

Limitações

Os recursos a seguir não são compatíveis com o treinamento que utiliza o algoritmo integrado de amplitude e profundidade:

Tipos de máquinas compatíveis

Os níveis de escalonamento e tipos de máquina do AI Platform a seguir são compatíveis:

Formatar dados de entrada

Cada linha de um conjunto de dados representa uma instância, e cada coluna de um conjunto de dados representa um valor de atributo. A coluna de destino representa o valor que você quer prever.

Preparar arquivo CSV

Os dados de entrada precisam estar em um arquivo CSV com codificação UTF-8. Se os dados de treinamento consistirem apenas em valores categóricos e numéricos, será possível usar o módulo de pré-processamento para preencher valores numéricos não encontrados, dividir o conjunto de dados e remover linhas com mais de 10% dos valores não encontrados. Do contrário, será possível gerar o treinamento sem pré-processamento automático ativado.

Prepare o arquivo CSV de entrada para atender aos requisitos a seguir:

  • Remova a linha do cabeçalho. A linha do cabeçalho contém os rótulos de cada coluna. Remova a linha do cabeçalho para evitar enviá-la com o restante das instâncias de dados como parte dos dados de treinamento.
  • Verifique se a coluna de destino é a primeira. A coluna de destino contém o valor que você está tentando prever. Para um algoritmo de classificação, todos os valores na coluna de destino são uma classe ou uma categoria. Para um algoritmo de regressão, todos os valores na coluna de destino são um valor numérico.

Processar valores inteiros

Por padrão, as colunas de valores inteiros serão interpretadas como colunas categóricas se houver poucos valores exclusivos suficientes. Por exemplo, se uma coluna no conjunto de dados incluir valores inteiros, como {101, 102, 103}, o AI Platform interpretará esses valores como categorias, como {'high', 'medium', 'low'}.

Para evitar essa análise incorreta, não se esqueça de converter os números inteiros em flutuantes quando quiser que os dados sejam numéricos: {101.0, 102.0, 103.0}. Para garantir que inteiros sejam interpretados como categóricos, anexe uma string antes ou depois de cada valor: {code_101, code_102, code_103}.

Enviar um job de treinamento de amplitude e profundidade

Nesta seção, explicamos como enviar um job de treinamento usando o algoritmo integrado de amplitude e profundidade.

Veja explicações resumidas de cada hiperparâmetro no Console do Google Cloud Platform e uma mais abrangente na referência do algoritmo integrado de amplitude e profundidade.

Console

  1. Acesse a página de jobs do AI Platform no Console do Google Cloud Platform:

    Página "Jobs" do AI Platform

  2. Clique no botão Novo job de treinamento. Nas opções exibidas abaixo, clique em Treinamento de modelo integrado.

  3. Na página Criar um novo job de treinamento, selecione Amplitude e profundidade integradas e clique em Avançar.

  4. Para saber mais sobre todos os parâmetros disponíveis, use os links no Console do Google Cloud Platform e consulte a referência da amplitude e profundidade integradas (em inglês) para mais detalhes.

gcloud

  1. Defina variáveis de ambiente para o job, preenchendo o [VALUES-IN-BRACKETS] com seus próprios valores:

       # Specify the name of the Cloud Storage bucket where you want your
       # training outputs to be stored, and the Docker container for
       # your built-in algorithm selection.
       BUCKET_NAME='[YOUR-BUCKET-NAME]'
       IMAGE_URI='gcr.io/cloud-ml-algos/wide_deep_learner_cpu:latest'
    
       # Specify the Cloud Storage path to your training input data.
       TRAINING_DATA='gs://[YOUR_BUCKET_NAME]/[YOUR_FILE_NAME].csv'
    
       DATASET_NAME='census'
       ALGORITHM='wide_deep'
       MODEL_TYPE='classification'
    
       DATE='date '+%Y%m%d_%H%M%S''
       MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
       JOB_ID="${MODEL_NAME}_${DATE}"
    
       JOB_DIR="gs://${BUCKET_NAME}/algorithm_training/${MODEL_NAME}/${DATE}"
    
  2. Envie o job de treinamento usando gcloud ai-platform jobs training submit:

       gcloud ai-platform jobs submit training $JOB_ID \
          --master-image-uri=$IMAGE_URI --scale-tier=BASIC --job-dir=$JOB_DIR \
          -- \
          --preprocess --model_type=$MODEL_TYPE --batch_size=250 --learning_rate=0.1 \
          --dnn_learning_rate=0.005 --dnn_dropout=0.1 --hidden_units=10,10,10 \
          --use_wide --embed_categories \
          --max_steps=1000 --training_data_path=$TRAINING_DATA
    
  3. Monitore o status do job de treinamento exibindo os registros com gcloud. Consulte gcloud ai-platform jobs describe e gcloud ai-platform jobs stream-logs.

       gcloud ai-platform jobs describe ${JOB_ID}
       gcloud ai-platform jobs stream-logs ${JOB_ID}
    

Como funciona o pré-processamento

O pré-processamento automático funciona para dados categóricos e numéricos. A rotina de pré-processamento primeiro analisa e, depois, transforma os dados.

Análise

Primeiro, o AI Platform detecta automaticamente o tipo de dados de cada coluna, identifica como cada uma precisa ser tratada e calcula algumas estatísticas dos dados nela. Essas informações são capturadas no arquivo metadata.json.

O AI Platform analisa o tipo da coluna de destino para identificar se o conjunto de dados fornecido é para regressão ou classificação. Se essa análise entrar em conflito com a seleção do model_type, haverá um erro. Seja explícito quanto à maneira como a coluna de destino será tratada formatando os dados claramente em casos ambíguos.

  • Tipo: a coluna pode ser numérica ou categórica.

  • Tratamento: o AI Platform identifica como tratar cada coluna da maneira a seguir:

    • Se incluir um único valor em todas as linhas, a coluna será tratada como uma constante.
    • Se for categórica e incluir valores exclusivos em todas as linhas, a coluna será tratada como um row_identifier.
    • Se for numérica com valores flutuantes ou se for numérica com valores inteiros e contiver muitos valores exclusivos, a coluna será tratada como numérica.
    • Se for numérica com valores inteiros e incluir alguns valores exclusivos suficientes, a coluna será tratada como categórica, em que os valores inteiros serão a identidade ou o vocabulário.
      • Uma coluna terá poucos valores exclusivos se o número de valores exclusivos nela for menor que 20% do número de linhas no conjunto de dados de entrada.
    • Se for categórica com cardinalidade alta, a coluna será tratada com hash, em que o número de intervalos de hash será igual à raiz quadrada do número de valores exclusivos na coluna.
      • Uma coluna categórica terá cardinalidade alta se o número de valores exclusivos for maior que a raiz quadrada do número de linhas no conjunto de dados.
    • Se for categórica e o número de valores exclusivos for menor que ou igual à raiz quadrada do número de linhas no conjunto de dados, a coluna será tratada como categórica normal com vocabulário.
  • Estatísticas: o AI Platform calcula as estatísticas a seguir, com base no tipo de coluna e no tratamento identificados, a serem usadas para transformar a coluna em um estágio posterior.

    • Se a coluna for numérica, os valores médios e de variância serão calculados.
    • Se a coluna for categórica e o tratamento for de identidade ou vocabulário, os valores distintos serão extraídos da coluna.
    • Se a coluna for categórica e o tratamento for hash, o número de intervalos de hash será calculado em relação à cardinalidade da coluna.

Transformação

Depois que a análise inicial do conjunto de dados for concluída, o AI Platform transformará os dados com base nos tipos, nos tratamentos e nas estatísticas aplicados ao conjunto de dados. O AI Platform faz transformações na seguinte ordem:

  1. Divide o conjunto de dados de treinamento em conjuntos de dados de validação e teste se você especificar as porcentagens divididas.
  2. Remove linhas que não tenham mais de 10% dos atributos.
  3. Preenche valores numéricos não encontrados usando a média da coluna.

Transformações de exemplo

As linhas sem 10% dos valores são removidas. Nos exemplos a seguir, suponhamos que a linha tenha 10 valores. Para simplificar, as linhas de exemplo estão truncadas.

Problema da linha Valores originais Valores transformados Explicação
Linha de exemplo com todos os valores [3, 0.45, ...,
'fruits', 0, 1]
[3, 0.45, ...,
1, 0, 0, 0, 1]
A string 'fruits' é transformada nos valores "1, 0, 0" em codificação one-hot. Isso acontecerá posteriormente no gráfico do TensorFlow.
Muitos valores não encontrados [3, 0.45, ...,
'fruits', __, __]
A linha é removida Mais de 10% dos valores na linha não foram encontrados.
Valor numérico não encontrado [3, 0.45, ...,
'fruits', 0, __]
[3, 0.45, ...,
1, 0, 0, 0, 0.54]
  • O valor médio da coluna substitui o valor numérico não encontrado. Neste exemplo, a média é 0,54.
  • A string "fruits" é transformada nos valores "1, 0, 0" em codificação one-hot. Isso acontecerá posteriormente no gráfico do TensorFlow.
Valor categórico não encontrado [3, 0.45, ...,
__, 0, 1]
[3, 0.45, ...,
0, 0, 0, 0, 1]
  • O valor categórico não encontrado é transformado nos valores "0, 0, 0" em codificação one-hot. Isso acontecerá posteriormente no gráfico do TensorFlow.

Colunas de atributos

Durante a transformação, as colunas não são processadas. Em vez disso, os metadados produzidos durante a análise são transmitidos ao AI Platform para criar as colunas de atributos adequadamente:

Tipo de coluna Tratamento de coluna Coluna de atributo resultante
Numérico Todos os tipos de tratamento de colunas tf.feature_column.numeric_column

Os valores de média e variância são usados para padronizar os valores:
new_value = (input_value - mean) / sqrt(variance) O recurso é transferido para a parte da rede neural profunda do modelo.

Categórico Identidade tf.feature_column.categorical_column_with_identity
Categórico Vocabulário tf.feature_column.categorical_column_with_vocabulary_list
Categórico Hash tf.feature_column.categorical_column_with_hash_bucket
Categórico Constante ou identificador de linha Ignorado. Nenhuma coluna de atributo criada.

Colunas de atributos complementares

Você tem a opção de usar colunas categóricas na parte ampla do modelo de DNN (use_wide) ou incorporá-las à parte profunda do modelo (embed_categories). Dependendo das suas seleções, as seguintes colunas de atributos complementares serão adicionadas:

use_wide ativado embed_categories ativado Resultado
True True ou false O recurso é transferido para a parte ampla do modelo.
True ou false True Uma coluna de atributos de incorporação é criada para a categórica. Nela, a dimensão de incorporação é definida como o teto da raiz quadrada do número de categorias na coluna. Ela é transferida para a parte profunda do modelo.
False False Uma coluna de indicadores é criada para a categórica. Ela é transferida para a parte profunda do modelo.

Após a conclusão do pré-processamento automático, o AI Platform faz novamente o upload do conjunto de dados processado para o intervalo do Cloud Storage no diretório especificado na solicitação do job.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.