Parâmetros de treinamento - Amazon Machine Learning

Não estamos mais atualizando o serviço Amazon Machine Learning nem aceitando novos usuários para ele. Essa documentação está disponível para usuários existentes, mas não estamos mais atualizando-a. Para obter mais informações, consulte O que é o Amazon Machine Learning.

Parâmetros de treinamento

Normalmente, os algoritmos de Machine Learning aceitam parâmetros que podem ser usados para controlar determinadas propriedades do processo de treinamento e do modelo de ML resultante. No Amazon Machine Learning, eles são chamados de parâmetros de treinamento. Você pode definir esses parâmetros usando o console do Amazon ML, a API ou a interface de linha de comandos (CLI). Se você não definir nenhum parâmetro, o Amazon ML usará valores padrão que são conhecidos por funcionarem bem para uma grande variedade de tarefas de Machine Learning.

Você pode especificar valores para os seguintes parâmetros de treinamento:

  • Maximum model size

  • Maximum number of passes over training data

  • Shuffle type

  • Regularization type

  • Regularization amount

No console do Amazon ML, os parâmetros de treinamento são configurados por padrão. As configurações padrão são adequadas para a maioria dos problemas de ML, mas você pode escolher outros valores para ajustar o desempenho. Alguns outros parâmetros de treinamento, como taxa de aprendizagem, são configurados para você com base nos dados.

As seções a seguir oferecem mais informações sobre os parâmetros de treinamento.

Maximum Model Size

O tamanho máximo do modelo é o tamanho total, em unidades de bytes, de padrões que o Amazon ML cria durante o treinamento de um modelo de ML.

Por padrão, o Amazon ML cria um modelo de 100 MB. Você pode instruir o Amazon ML para criar um modelo maior ou menor especificando um tamanho diferente. Para ver a variedade de tamanhos disponíveis, consulte Tipos de modelos de ML.

Se o Amazon ML não encontrar padrões suficientes para preencher o tamanho do modelo, ele criará um modelo menor. Por exemplo, se você especificar um modelo de tamanho máximo de 100 MB, mas o Amazon ML encontrar padrões que totalizem apenas 50 MB, o modelo resultante será de 50 MB. Se o Amazon ML encontra mais padrões do que cabem no tamanho especificado, ele impõe um limite máximo reduzindo os padrões que menos afetam a qualidade do modelo aprendido.

Escolher o tamanho do modelo permite controlar o dilema entre o custo de uso e a qualidade preditiva de um modelo. Modelos menores podem fazer com que o Amazon ML remova muitos padrões para se adequar ao limite de tamanho máximo, o que afeta a qualidade das previsões. Modelos grandes, por outro lado, custam mais para consultar previsões em tempo real.

nota

Se você usar um modelo de ML para gerar previsões em tempo real, terá uma pequena cobrança de reserva de capacidade que é determinada pelo tamanho do modelo. Para obter mais informações, consulte Preços do Amazon ML.

Grandes conjuntos de dados de entrada não necessariamente geram modelos maiores, pois modelos armazenam padrões, não dados de entrada; se os padrões forem poucos e simples, o modelo resultante será pequeno. Dados de entrada que têm um grande número de atributos brutos (colunas de entrada) ou recursos derivados (saídas das transformações de dados do Amazon ML) provavelmente terão mais padrões encontrados e armazenados durante o processo de treinamento. A melhor abordagem para escolher o tamanho correto do modelo para os dados e o problema é fazer alguns experimentos. O log de treinamento de modelo do Amazon ML (cujo download você pode fazer pelo console ou pela API) contém mensagens sobre a quantidade de redução de modelos (se houver) ocorrida durante o processo de treinamento, permitindo que você estime a qualidade em potencial de sucesso para a previsão.

Número máximo de passagens nos dados

Para obter os melhores resultados, o Amazon ML pode precisar fazer várias passagens nos dados para descobrir padrões. Por padrão, o Amazon ML faz 10 passagens, mas você pode alterar o padrão definindo um número até 100. O Amazon ML controla a qualidade dos padrões (convergência de modelos) conforme segue, e interrompe o treinamento automaticamente quando não há mais pontos de dados ou padrões para descobrir. Por exemplo, se você definir o número de passagens como 20, mas o Amazon ML descobrir que nenhum padrão novo pode ser encontrado até o final de 15 passagens, ele interromperá o treinamento em 15 passagens.

Em geral, conjuntos de dados com apenas algumas observações geralmente exigem mais passagens nos dados para obter maior qualidade do modelo. Grandes conjuntos de dados, muitas vezes, contêm vários pontos de dados semelhantes, o que elimina a necessidade de um grande número de passagens. O impacto de escolher mais passagens nos dados é duplo: o treinamento de modelos leva mais tempo e custa mais.

Tipo de embaralhamento para dados de treinamento

No Amazon ML, você precisa embaralhar os dados de treinamento. O embaralhamento mistura a ordem dos dados de modo que o algoritmo do SGD não encontre um tipo de dados para muitas observações em sucessão. Por exemplo, ao treinar um modelo de ML para prever um tipo de produto e os dados de treinamento incluem os tipos de produto filme, brinquedo e videogame, se você classificar os dados de acordo com a coluna de tipo de produto antes de carregá-los, o algoritmo verá os dados em ordem alfabética por tipo de produto. O algoritmo vê todos os dados de filmes primeiro, e o modelo de ML começa a aprender padrões de filmes. Em seguida, quando o modelo encontra dados sobre brinquedos, todas as atualizações que o algoritmo faz ajustariam o modelo ao tipo de produto brinquedo, mesmo se essas atualizações degradassem os padrões adequados a filmes. Este mudança repentina de tipo filme para tipo brinquedo pode produzir um modelo que não aprende como prever tipos de produtos com precisão.

Você precisa embaralhar os dados de treinamento, mesmo se escolher a opção de divisão aleatória ao dividir a fonte de dados de entrada em partes de avaliação e treinamento. A estratégia de divisão aleatória escolhe um subconjunto aleatório dos dados para cada fonte de dados, mas não altera a ordem das linhas na fonte de dados. Para obter mais informações sobre divisão de dados, consulte Dividir dados.

Quando você cria um modelo de ML usando o console, o Amazon ML mistura aleatoriamente os dados por padrão com uma técnica de embaralhamento pseudoaleatório. Independentemente do número de passagens solicitadas, o Amazon ML mistura os dados somente uma vez antes de treinar o modelo de ML. Se você embaralhou os dados antes de fornecê-los ao Amazon ML e não desejar que o Amazon ML embaralhe os dados novamente, poderá definir o Tipo de embaralhamento como none. Por exemplo, se você embaralhou aleatoriamente os registros no arquivo .csv antes de enviá-lo ao Amazon S3, usou a função rand() na consulta SQL do MySQL ao criar a fonte de dados no Amazon RDS ou usou a função random() na consulta SQL do Amazon Redshift ao criar a fonte de dados no Amazon Redshift, a configuração de Tipo de embaralhamento como none não afetará a exatidão da previsão do modelo de ML. Embaralhar os dados somente uma vez reduz o tempo de execução e o custo da criação de um modelo de ML.

Importante

Quando você cria um modelo de ML usando a API do Amazon ML, o Amazon ML não embaralha os dados por padrão. Se você usa a API em vez do console para criar o modelo de ML, é altamente recomendável embaralhar os dados configurando o parâmetro sgd.shuffleType como auto.

Tipo e valor de regularização

O desempenho preditivo de modelos de ML complexos (que têm muitos atributos de entrada) é afetado quando os dados contêm muitos padrões. À medida que o número de padrões aumenta, também aumenta a probabilidade de que o modelo aprenda artefatos de dados não intencionais em vez de padrões de dados reais. Nesse caso, o modelo funciona muito bem nos dados de treinamento, mas não pode generalizar bem em novos dados. Este fenômeno é conhecido como sobreajuste dos dados de treinamento.

A regularização ajuda a evitar que modelos lineares sobreajustem exemplos de dados de treinamento ao penalizar valores de peso extremos. A regularização L1 reduz o número de recursos usados no modelo ao empurrar para zero o peso de recursos que, de outra forma, teriam pesos muito pequenos. A regularização L1 produz modelos esparsos e reduz o volume de ruído no modelo. A regularização L2 resulta em valores de peso menores, o que estabiliza os pesos quando há alta correlação entre os recursos. Você pode controlar o valor da regularização L1 ou L2 usando o parâmetro Regularization amount. Especificar um valor extremamente grande para Regularization amount pode fazer com que todos os recursos tenham peso zero.

Selecionar e ajustar o valor de regularização ideal é um assunto ativo na pesquisa de Machine Learning. Você provavelmente aproveitará a seleção de um valor moderado de regularização L2, que é o padrão no console do Amazon ML. Os usuários avançados podem escolher entre três tipos de regularização (nenhum, L1 ou L2) e valor. Para obter mais informações sobre regularização, acesse Regularização (matemática).

Parâmetros de treinamento: tipos e valores padrão

A tabela a seguir lista os parâmetros de treinamento do Amazon ML, juntamente com os valores padrão e a faixa permitida para cada um deles.

Training Parameter (Parâmetro de treinamento)

Type

Valor padrão

Descrição

maxMLModelSizeInBytes

Inteiro

100.000.000 bytes (100 MiB)

Intervalo permitido: 100.000 (100 KiB) a 2.147.483.648 (2 GiB)

Dependendo dos dados de entrada, o tamanho do modelo pode afetar o desempenho.

sgd.maxPasses

Inteiro

10

Intervalo permitido: 1-100

sgd.shuffleType

Segmento

auto

Valores permitidos: auto ou none

sgd.l1RegularizationAmount

Double

0 (por padrão, L1 não é usado)

Intervalo permitido: 0 a MAX_DOUBLE

Foi descoberto que valores L1 entre 1E-4 e 1E-8 produzem bons resultados. Valores maiores provavelmente produzem modelos que não são muito úteis.

Você não pode configurar L1 e L2. É preciso escolher um ou outro.

sgd.l2RegularizationAmount

Double

1E-6 (por padrão, L2 é usado com esse volume de regularização)

Intervalo permitido: 0 a MAX_DOUBLE

Foi descoberto que valores L2 entre 1E-2 e 1E-6 produzem bons resultados. Valores maiores provavelmente produzem modelos que não são muito úteis.

Você não pode configurar L1 e L2. É preciso escolher um ou outro.