Sistema de recomendação de treinamento amplo e profundo

Este artigo descreve como usar o componente Treinar Sistema de Recomendação Amplo e Profundo no Azure Machine Learning Designer para treinar um modelo de recomendação. Esse componente se baseia no aprendizado Amplo e Profundo proposto pelo Google.

O componente Treinar Sistema de Recomendação Amplo e Profundo lê um conjunto de dados de triplos user-item-rating e, como alternativa, alguns recursos de usuário e de item. Ele retorna um sistema de recomendação Amplo e Profundo treinado. É possível usar o modelo treinado para gerar previsões ou recomendações de classificação usando o componente Pontuação do Sistema de Recomendação Amplo e Profundo.

Mais sobre modelos de recomendação e o sistema de recomendação Amplo e Profundo

O objetivo principal de um sistema de recomendação é recomendar um ou mais itens para usuários do sistema. Exemplos de um item podem ser um filme, restaurante, livro ou música. Um usuário pode ser uma pessoa, grupo de pessoas ou outra entidade com as preferências de itens.

Há duas abordagens principais para sistemas recomendadores.

  • A primeira é a abordagem com base em conteúdo, que usa recursos para usuários e itens. Os usuários podem ser descritos por propriedades, como idade e sexo; e itens podem ser descritos por propriedades, como autor e fabricante. Exemplos típicos de sistemas de recomendação baseados em conteúdo podem ser encontrados nos sites de compatibilidade social.
  • A segunda abordagem é filtragem de colaboração, que usa apenas identificadores dos usuários e itens e obtém informações implícitas sobre essas entidades de uma matriz (esparsa) de classificações fornecidas pelos usuários para os itens. Podemos aprender sobre um usuário por meio dos itens que ele classificou e de outros usuários que classificaram os mesmos itens.

O sistema de recomendação Amplo e Profundo combina essas abordagens, usando a filtragem colaborativa com uma abordagem baseada em conteúdo. Portanto, ele é considerado um recomendador híbrido.

Como ele funciona: quando um usuário é relativamente novo no sistema, as previsões são aprimoradas por meio das informações de recursos sobre o usuário, resolvendo, assim, o conhecido problema de "inicialização fria". No entanto, após ter coletado um número suficiente de classificações de um determinado usuário, é possível fazer previsões totalmente personalizadas para eles com base em suas classificações específicas e não em seus recursos apenas. Portanto, há uma transição suave das recomendações com base em conteúdo para recomendações baseadas na filtragem de colaboração. Mesmo que os recursos de itens ou de usuários não estejam disponíveis, o sistema de recomendação Amplo e Profundo ainda funciona no modo de filtragem de colaboração.

Mais detalhes sobre o sistema de recomendação Amplo e Profundo e o algoritmo probabilístico subjacente podem ser encontrados no artigo de pesquisa relevante: Wide e Deep Learning para Sistemas de Recomendação.

Como configurar o sistema de recomendação de Treinamento Amplo e Profundo

Preparar dados

Antes de tentar usar o componente, verifique se os dados estão no formato esperado para o modelo de recomendação. Um conjunto de dados de treinamento de triplos de classificação de usuário-item é necessário, mas também é possível incluir recursos de usuário e de item (se disponíveis), em conjuntos de dados separados.

Exige um conjunto de dados de classificação de item-usuário

Os dados de entrada usados para treinamento devem conter o tipo certo de dados no formato correto:

  • A primeira coluna deve conter identificadores de usuário.
  • A segunda coluna deve conter os identificadores de item.
  • A terceira coluna contém a classificação para o par usuário-item. Os valores de classificação devem ser do tipo numérico.

Por exemplo, um conjunto típico de classificações de item de usuário pode ser assim:

UserId MovieId Classificação
1 68646 10
223 31381 10

Conjunto de usuários de recursos do usuário (opcional)

O conjunto de os recursos de usuário deve conter identificadores para usuários e usar os mesmos identificadores que foram fornecidos na primeira coluna do conjunto de usuários-itens-classificações. As colunas restantes podem conter qualquer número de recursos que descrevam os usuários.

Por exemplo, um conjunto típico de recursos de usuário pode ser assim:

UserId Idade Sexo Interesse Local
1 25 masculino Drama Europa
223 40 feminino Romance Ásia

Conjunto de itens de recursos do usuário (opcional)

O conjunto de dados de recursos de item deve conter identificadores de item na primeira coluna. As colunas restantes podem conter qualquer número de recursos descritivos para os itens.

Por exemplo, um conjunto típico de recursos de item pode ser assim:

MovieId Título Idioma original Gêneros Year
68646 O Poderoso Chefão Inglês Drama 1972
31381 E o Vento Levou Inglês Histórico 1939

Treinar o modelo

  1. Adicione o componente Treinar Sistema de Recomendação Amplo e Profundo ao experimento no designer e conecte ao conjunto de dados de treinamento.

  2. Se existir um conjunto de dados separado de recursos de usuário e/ou recursos de item, conecte-o ao componente Treinar Sistema de Recomendação Amplo e Profundo.

    • Conjunto de dados de recursos do usuário: conecte o conjunto que descreve os usuários à segunda entrada.
    • Conjunto de dados de recursos de item: conecte o conjunto que descreve os itens à terceira entrada.
  3. Épocas: indique quantas vezes o algoritmo deve processar os dados de treinamento inteiros.

    Quanto maior esse número, mais adequado o treinamento; no entanto, o treinamento custa mais tempo e pode causar sobreajuste.

  4. Tamanho do lote: digite o número de exemplos de treinamento utilizados em uma etapa de treinamento.

    Esse hiperparâmetro pode influenciar a velocidade do treinamento. Um tamanho de lote mais alto leva a uma época de custo menos demorada, mas pode aumentar o tempo de convergência. E se o lote for muito grande para se ajustar à GPU/CPU, poderá gerar um erro de memória.

  5. Otimizador de parte ampa: selecione um otimizador para aplicar gradientes à parte ampla do modelo.

  6. Taxa de aprendizagem do otimizador amplo: insira um número entre 0,0 e 2,0 que define a taxa de aprendizado do otimizador de parte ampla.

    Esse hiperparâmetro determina o tamanho da etapa em cada etapa do treinamento à medida que se movimenta para uma função de perda mínima. Uma taxa de aprendizagem muito grande pode fazer com que o aprendizado passe pelo mínimo, enquanto uma taxa de aprendizagem muito pequena pode causar um problema de convergência.

  7. Dimensão de recurso cruzado: digite a dimensão inserindo as IDs de usuário desejadas e os recursos de ID de item.

    O sistema de recomendação Amplo e Profundo executa a transformação entre produtos por padrão sobre recursos de ID de usuário e ID de item. O resultado cruzado será transformado em hash de acordo com esse número para garantir a dimensão.

  8. Otimizador de parte ampa: selecione um otimizador para aplicar gradientes à parte profunda do modelo.

  9. Taxa de aprendizagem do otimizador amplo: insira um número entre 0,0 e 2,0 que define a taxa de aprendizado do otimizador de parte profunda.

  10. Dimensão de inserção de usuário: digite um inteiro para especificar a dimensão da inserção da ID de usuário.

    O sistema de recomendação Amplo e Profundo cria as incorporações de ID de usuário compartilhadas e de ID de item para a parte ampla e a parte profunda.

  11. Dimensão de inserção de item: digite um inteiro para especificar a dimensão da inserção da ID do item.

  12. Dimensão de incorporação de recursos categóricos: Insira um número inteiro para especificar as dimensões de incorporações de recursos categóricos.

    Em um componente profundo do sistema de recomendação Amplo e Profundo, um vetor de incorporação é aprendizado para cada recurso categórico. E esses vetores de incorporação compartilham a mesma dimensão.

  13. Unidades ocultas: digite o número de nós ocultos do componente profundo. O número de nós em cada camada é separado por vírgulas. Por exemplo, ao digitar "1000.500.100", você especifica que o componente profundo tem três camadas, sendo que a primeira camada até a última tem 1000 nós, 500 nós e 100 nós, respectivamente.

  14. Função de ativação: selecione uma função de ativação aplicada a cada camada, o padrão é ReLU.

  15. Dropout: Insira um número entre 0,0 e 1,0 para determinar a probabilidade de que as saídas sejam descartadas em cada camada durante o treinamento.

    Dropout é um método de regularização para impedir que redes neurais se sobreajustem. Uma decisão comum para esse valor é começar com 0,5, que parece estar perto do ideal para uma ampla gama de redes e tarefas.

  16. Normalização do lote: selecione esta opção para usar a normalização do lote após cada camada oculta no componente profundo.

    A normalização do lote é uma técnica para combater o problema de deslocamento de covariável interna durante o treinamento de redes. Em geral, ela pode ajudar a melhorar a velocidade, o desempenho e a estabilidade das redes.

  17. Execute o pipeline.

Observações técnicas

A junção Ampla e Profunda treina modelos lineares amplos e redes neurais profundas para combinar os pontos fortes de memorização e generalização. O componente amplo aceita um conjunto de recursos brutos e transformações de recursos para memorizar interações de recursos. E, com menos engenharia de recursos, o componente profundo generaliza para combinações de recursos não vistos por meio de incorporações de recursos densas de baixa dimensão.

Na implementação do sistema de recomendação Amplo e Profundo, o componente usa uma estrutura de modelo padrão. O componente amplo usa incorporações de usuários, incorporações de itens e a transformação de produtos cruzados de IDs de usuário e IDs de item como entrada. Para a parte profunda do modelo, um vetor de incorporação é aprendido para cada recurso categórico. Junto com outros vetores de recursos numéricos, esses vetores são então alimentados na rede neural de avanço de feed profundo. A parte ampla e a parte profunda são combinadas ao somar suas chances de log de saída final como a previsão, que finalmente passa para uma função de perda comum para o treinamento em conjunto.

Próximas etapas

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