Imagine que você esteja desenvolvendo um aplicativo de recomendação de alimentos, em que os usuários inserem suas refeições favoritas, e o aplicativo sugere refeições semelhantes de que eles podem gostar. Você quer desenvolver um modelo de machine learning (ML) que pode prever a similaridade alimentar, para que seu aplicativo possa fazer recomendações ("Como você gosta de panquecas, recomendamos crepes").
Para treinar o modelo, você seleciona um conjunto de dados de 5.000 refeições, incluindo borscht, cachorro-quente, salada, pizza, e shawarma.
Você cria um recurso meal
que contém um
codificação one-hot
representação de cada item das refeições no conjunto de dados.
Dificuldades das representações de dados esparsos
Ao analisar essas codificações one-hot, você percebe dois problemas importantes representação visual dos dados.
- Número de pesos. Vetores de entrada grandes significam um grande número de
pesos
para uma rede neural.
Com entradas M em sua codificação one-hot e N
na primeira camada da rede após a entrada, o modelo precisa treinar
pesos MxN para essa camada. Um grande número de pesos causa mais problemas:
- Número de pontos de dados. Quanto mais pesos no seu modelo, mais dados você para treinar com eficácia.
- Quantidade de computação. Quanto mais pesos, mais computação é necessária para treinar e usar o modelo. É fácil exceder os recursos das ao hardware.
- Quantidade de memória. Quanto mais pesos no modelo, mais memória é necessária nos aceleradores que o treinam e a disponibilizam. escalonando verticalmente com eficiência é muito difícil.
- Dificuldade de suporte aprendizado de máquina no dispositivo (ODML). Se você espera executar seu modelo de ML em dispositivos locais (em vez de disponibilizar com elas), se concentre em diminuir o tamanho do modelo e para diminuir o número de pesos.
- Falta de relações significativas entre vetores. Os valores vetoriais na as codificações one-hot para alimentos não fornecem informações significativas sobre a similaridade de alimentos. Matematicamente, o índice 1 ("cachorro-quente") é mais próximo do índice 2 ("salad") do que do índice 4999 ("shawarma"), mesmo que cachorro é mais parecido com shawarma (com carne e pão) do que com salada.
Neste módulo, você vai aprender a criar embeddings, componentes representações de dados esparsos, que abordam esses dois problemas.