Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
tensorflow
GitHub Repository: tensorflow/docs-l10n
Path: blob/master/site/pt-br/lite/models/recommendation/overview.md
25118 views

Recomendação

{% dynamic if request.tld != 'cn' %}{% dynamic endif %}
Ver em TensorFlow.org Executar no Google Colab Ver fonte no GitHub

Recomendações personalizadas são amplamente utilizadas em diversos casos de uso em dispositivos móveis, como busca de conteúdo de mídia, sugestão de compra de produtos e recomendação de próximos aplicativos. Se você tiver interesse em fornecer recomendações personalizadas em seu aplicativo, mas sem deixar de respeitar a privacidade dos usuários, recomendamos conferir o exemplo e o kit de ferramentas abaixo.

Observação: para personalizar um modelo, experimente o TensorFlow Lite Model Maker (criador de modelos do TensorFlow Lite).

Como começar

Fornecemos um aplicativo de exemplo do TensorFlow que demonstra como recomendar itens relevantes para usuários do Android.

Exemplo do Android

Se você estiver usando outra plataforma que não o Android ou se já conhecer bem as APIs do TensorFlow Lite, pode baixar nosso modelo inicial de recomendações.

Baixar modelo inicial

Também fornecemos o script de treinamento no GitHub para treinar seu próprio modelo de uma forma configurável.

Código de treinamento

Compreendendo a arquitetura do modelo

Usamos uma arquitetura de modelo com dois encoders, em que o encoder de contexto codifica o histórico sequencial do usuário e o encoder de rótulo codifica o candidato previsto para recomendação. A semelhança entre as codificações de contexto e rótulo é usada para representar a probabilidade de o candidato previsto atender às necessidades do usuário.

São fornecidas três diferentes técnicas de codificação do histórico sequencial do usuário com este código base:

  • Encoder saco-de-palavras (BOW, na sigla em inglês para Bag-of-words): média dos embeddings de atividades do usuário sem considerar a ordem do contexto.

  • Encoder de rede neural convolucional (CNN): aplicação de várias camadas de redes neurais convolucionais para gerar codificação de contexto.

  • Encoder de rede neural recorrente (RNN): aplicação de rede neural recorrente para codificar a sequência do contexto.

Para modelar cada atividade do usuário, podemos usar o ID do item de atividade (modelo baseado em IDs) ou diversas características do item (modelo baseado em características), ou uma combinação das duas estratégias. O modelo baseado em características utiliza diversas características para codificar coletivamente o comportamento do usuário. Com esse código base, você pode criar modelos baseados em IDs ou em características de uma maneira configurável.

Após o treinamento, um modelo do TensorFlow Lite será exportado, podendo fornecer diretamente top-K previsões dentre os candidatos para recomendação.

Use seus dados de treinamento

Além do modelo treinado, oferecemos um kit de ferramenta no GitHub em código aberto para treinar modelos com seus próprios dados. Acompanhe este tutorial se quiser saber como usar o kit de ferramentas e implantar modelos treinados em seus próprios aplicativos móveis.

Acompanhe este tutorial para aplicar a mesma técnica usada aqui para treinar um modelo de recomendações usando seus próprios datasets.

Exemplos

Para exemplificar, treinamos modelos de recomendações baseados em IDs e baseados em características. O modelo baseado em IDs recebe somente os IDs dos filmes como entrada, enquanto o modelo baseado em características recebe tanto os IDs dos filmes quanto os IDs dos gêneros dos filmes como entrada. Confira abaixo os exemplos de entrada e saída.

Entradas

  • IDs dos filmes do contexto:

    • O Rei Leão (ID: 362)

    • Toy Story (ID: 1)

    • (e muitos outros)

  • IDs dos gêneros dos filmes do contexto:

    • Animação (ID: 15)

    • Infantil (ID: 9)

    • Musical (ID: 13)

    • Animação (ID: 15)

    • Infantil (ID: 9)

    • Comédia (ID: 2)

    • (e muitos outros)

Saídas:

  • IDs dos filmes recomendados:

    • Toy Story 2 (ID: 3114)

    • (e muitos outros)

Observação: o modelo pré-treinado é criado baseado no dataset MovieLens para fins de pesquisa.

Referenciais de desempenho

Os referenciais de desempenho são gerados com a ferramenta descrita aqui.

Nome do modelo Tamanho do modelo Dispositivo CPU
Recomendação (ID do filme como entrada) 0,52 MB Pixel 3 0,09 ms*
Pixel 4 0,05 ms*
<tr> </tr>
Recomendação (ID do filme e gênero do filme como entradas) 1,3 MB Pixel 3 0.13 ms* Pixel 4 0,06 ms*
  • 4 threads usados.

Use seus dados de treinamento

Além do modelo treinado, oferecemos um kit de ferramenta no GitHub em código aberto para treinar modelos com seus próprios dados. Acompanhe este tutorial se quiser saber como usar o kit de ferramentas e implantar modelos treinados em seus próprios aplicativos móveis.

Acompanhe este tutorial para aplicar a mesma técnica usada aqui para treinar um modelo de recomendações usando seus próprios datasets.

Dicas para personalizar o modelo com seus dados

O modelo pré-treinado integrado neste aplicativo de demonstração foi treinado com o dataset MovieLens. Talvez você queira modificar a configuração do modelo de acordo com seus próprios dados, como tamanho do vocabulário, dimensões dos embeddings e tamanho do contexto de entrada. Confira algumas dicas:

  • Tamanho do contexto de entrada: o melhor tamanho varia de acordo com os datasets. Sugerimos selecionar um tamanho dependendo de quantos eventos de rótulo estão correlacionados aos interesses de longo prazo versus contexto de curto prazo.

  • Seleção do tipo de encoder: sugerimos selecionar o tipo de encoder de acordo com o tamanho do contexto de entrada. O encoder saco-de-palavras funciona bem para tamanho pequeno (menos de 10); os encoders de CNN e RNN agregam mais capacidade de sumarização para um tamanho de contexto de entrada grande.

  • O uso das características subjacentes para representar itens ou atividades do usuário pode aumentar o desempenho do modelo, acomodar melhor itens novos, possivelmente reduzir os espaços de embeddings, reduzindo assim o consumo de memória, além de ser mais otimizado para dispositivos.