Treinar o modelo Vowpal Wabbit

Este artigo descreve como usar o componente Treinar o Modelo Vowpal Wabbit no designer do Azure Machine Learning para criar um modelo de aprendizado de máquina usando o Vowpal Wabbit.

Para usar o Vowpal Wabbit para aprendizado de máquina, formate sua entrada de acordo com os requisitos do Vowpal Wabbit e prepare os dados no formato necessário. Use este componente para especificar argumentos de linha de comando do Vowpal Wabbit.

Quando o pipeline é executado, uma instância do Vowpal Wabbit é carregada no tempo de execução do experimento, com os dados especificados. Quando o treinamento for concluído, o modelo será serializado novamente para o workspace. Você pode usar o modelo imediatamente para pontuar os dados.

Para treinar de forma incremental um modelo existente em novos dados, conecte um modelo salvo à porta de entrada do Modelo Vowpal Wabbit pré-treinado de Treinar modelo Vowpal Wabbit e adicione os novos dados à outra porta de entrada.

O que é Vowpal Wabbit?

O Vowpal Wabbit (VW) é uma estrutura de aprendizado de máquina rápida e paralela que foi desenvolvida para computação distribuída pelo Yahoo! Pesquisar. Posteriormente, foi transportado para o Windows e adaptado por John Langford (Microsoft Research) para computação científica nas arquiteturas paralelas.

Recursos de Vowpal Wabbit que são importantes para o aprendizado de máquina incluem aprendizado contínuo (aprendizado online), redução de dimensionalidade e aprendizado interativo. Vowpal Wabbit também é uma solução de problemas quando você não pode ajustar os dados do modelo na memória.

Os principais usuários do Vowpal Wabbit são cientistas de dados que usaram anteriormente a estrutura para tarefas de aprendizado de máquina, como classificação, regressão, modelagem de tópico ou fatoração de matriz. O wrapper do Azure para Vowpal Wabbit tem características de desempenho muito semelhantes para a versão local, para que você possa usar os recursos avançados e o desempenho nativo do Vowpal Wabbit e publicar facilmente o modelo treinado como um serviço operacional.

O componente Hash de recurso também inclui a funcionalidade fornecida pelo Vowpal Wabbit, que permite transformar conjuntos de linhas de texto em recursos binários usando um algoritmo de hash.

Como configurar o Modelo Vowpal Wabbit

Esta seção descreve como treinar um novo modelo e como adicionar novos dados a um modelo existente.

Ao contrário de outros componentes no designer, esse componente especifica os parâmetros do componente e treina o modelo. Se você tiver um modelo existente, poderá adicioná-lo como uma entrada opcional para treinar o modelo de maneira incremental.

Preparar os dados de entrada

Para treinar um modelo usando esse componente, o conjunto de dados de entrada deve consistir em uma única coluna de texto em um dos dois formatos compatíveis: SVMLight ou VW. Isso não significa que o Vowpal Wabbit analisa apenas dados de texto, apenas que os recursos e os valores devem ser preparados no formato de arquivo de texto necessário.

Os dados podem ser lidos de dois tipos de conjuntos de dados: conjunto de dados de arquivo ou conjunto de dados de tabela. Ambos os conjuntos de dados devem estar no formato SVMLight ou VW. O formato de dados Vowpal Wabbit tem a vantagem de não requerer um formato de coluna, o que economiza espaço ao lidar com dados esparsos. Para obter mais informações sobre esse formato, confira a página wiki do Vowpal Wabbit.

Criar e treinar um modelo do Vowpal Wabbit

  1. Adiciona o componente Treinar modelo Vowpal Wabbit ao seu experimento.

  2. Adicione o conjunto de dados de treinamento e conecte-o aos Dados de treinamento. Se o conjunto de dados de treinamento for um diretório que contém o arquivo de dados de treinamento, especifique o nome do arquivo de dados de treinamento com o Nome do arquivo de dados de treinamento. Se o conjunto de dados de treinamento for um único arquivo, deixe Nome do arquivo de dados de treinamento vazio.

  3. Na caixa de texto Argumentos de VW, digite os argumentos de linha de comando para o executável do Vowpal Wabbit.

    Por exemplo, você pode adicionar –l para especificar a taxa de aprendizagem ou -b para indicar o número de bits de hash.

    Para obter mais informações, confira a seção Parâmetros do Vowpal Wabbit.

  4. Nome do arquivo de dados de treinamento: digite o nome do arquivo que contém os dados de entrada. Esse argumento só é usado quando o conjunto de dados de treinamento é um diretório.

  5. Especificar tipo de arquivo: indique qual formato seus dados de treinamento usam. O Vowpal Wabbit permite esses dois formatos de arquivo de entrada:

    • VW representa o formato interno usado pelo Vowpal Wabbit. Confira a página wiki do Vowpal Wabbit para obter detalhes.
    • SVMLight é um formato usado por outras ferramentas de aprendizado de máquina.
  6. Arquivo de modelo legível de saída: escolha a opção se desejar que o componente salve o modelo legível nos registros do trabalho. Esse argumento corresponde ao parâmetro --readable_model na linha de comando do VW.

  7. Ficheiro hash invertido de saída: selecione a opção se quiser que o componente guarde o algoritmo hash invertido num ficheiro nos registos do trabalho. Esse argumento corresponde ao parâmetro --invert_hash na linha de comando do VW.

  8. Envie o pipeline.

Treinar novamente um modelo existente do Vowpal Wabbit

O Vowpal Wabbit permite treinamento incremental adicionando novos dados a um modelo existente. Há duas maneiras de obter um modelo existente para treinar novamente:

  • Use a saída de outro componente Treinar modelo do Vowpal Wabbit no mesmo pipeline.

  • Encontre um modelo salvo na categoria Conjuntos de valores do painel de navegação esquerdo do designer e arraste-o para o pipeline.

  1. Adiciona o componente Treinar modelo Vowpal Wabbit ao seu pipeline.

  2. Conecte o modelo treinado anteriormente à porta de entrada de Treinar modelo do Vowpal Wabbit do componente.

  3. Conecte os novos dados de treinamento à porta de entrada dos Dados de treinamento do componente.

  4. No painel de parâmetros de Treinar modelo do Vowpal Wabbit, especifique o formato dos novos dados de treinamento e também o nome do arquivo de dados de treinamento se o conjunto de dado de entrada for um diretório.

  5. Escolha as opções Arquivo de modelo legível de saída e Saída de arquivo de hash invertido se os arquivos correspondentes precisarem ser salvos nos registros do trabalho.

  6. Envie o pipeline.

  7. Escolha o componente e Registrar conjunto de registros na guia Saídas + logs no painel direito para preservar o modelo atualizado em seu workspace do Azure Machine Learning. Se você não especificar um novo nome, o modelo atualizado substituirá o modelo salvo existente.

Resultados

Observação

Se você precisar implantar o modelo treinado no designer, verifique se Pontuar modelo do Vowpal Wabbit (e não o Modelo de Pontuação) está conectado à entrada do Componente de Saída do Serviço Web no pipeline de inferência.

Observações técnicas

Esta seção contém detalhes de implementação, dicas e respostas para perguntas frequentes.

Vantagens do Vowpal Wabbit

O Vowpal Wabbit fornece aprendizado extremamente rápido sobre recursos não lineares como n-gramas.

O Vowpal Wabbit usa técnicas de aprendizado online, como stochastic gradient descent (SGD) para ajustar um modelo em um registro de cada vez. Assim, ele itera rapidamente sobre dados brutos e pode desenvolver um bom indicador com mais rapidez do que a maioria dos outros modelos. Essa abordagem também evita a necessidade de ler todos os dados de treinamento na memória.

O Vowpal Wabbit converte todos os dados em hash, não apenas os dados de texto, mas outras variáveis categóricas. Usar hashes faz pesquisas de pesos de regressão mais eficientes, que são essenciais para deslocamento descendente do gradiente estocástico efetivo.

Parâmetros compatíveis e incompatíveis

Esta seção descreve a compatibilidade para parâmetros de linha de comando do Vowpal Wabbit no designer do Azure Machine Learning.

Em geral, há compatibilidade com todos, exceto para um conjunto limitado de argumentos. Para obter uma lista de argumentos completa, use a página wiki do Vowpal Wabbit.

Os seguintes parâmetros são incompatíveis:

  • As opções de entrada/saída especificadas em https://github.com/JohnLangford/vowpal_wabbit/wiki/Command-line-arguments

    Essas propriedades já estão configuradas automaticamente pelo componente.

  • Além disso, qualquer opção que gera várias saídas ou usa várias entradas não é permitida. Elas incluem --cbt, --lda e --wap.

  • Há compatibilidade apenas com algoritmos de aprendizado supervisionados. Portanto, não há compatibilidade com estas opções: –active, --rank, --search etc.

Restrições

Como o objetivo do serviço é dar suporte a usuários experientes do Vowpal Wabbit, os dados de entrada devem ser preparados antecipadamente usando o formato de texto nativo do Vowpal Wabbit, em vez do formato de conjunto de dados usado por outros componentes.

Próximas etapas

Confira o conjunto de componentes disponíveis no Azure Machine Learning.