Embeddings: como receber embeddings

Esta seção se concentra em duas técnicas comuns para conseguir um embedding:

  • Redução de dimensionalidade
  • Extrair uma incorporação de um modelo de rede neural maior

Técnicas de redução de dimensionalidade

Existem muitas técnicas matemáticas para capturar a estrutura importante de um espaço de alta dimensionalidade em um espaço de baixa dimensionalidade. Em teoria, qualquer uma dessas técnicas pode ser usada para criar uma incorporação para um sistema de aprendizado de máquina.

Por exemplo, a análise de componentes principais (PCA, na sigla em inglês) foi usada para criar embeddings de palavras. Com um conjunto de instâncias, como vetores de bag of words, o PCA tenta encontrar dimensões altamente correlacionadas que possam ser recolhidas em uma única dimensão.

Como treinar um embedding como parte de uma rede neural

É possível criar um embedding ao treinar uma rede neural para a tarefa de destino. Essa abordagem cria um embedding bem personalizado para seu sistema específico, mas pode levar mais tempo do que treinar o embedding separadamente.

Em geral, é possível criar uma camada oculta de tamanho d na rede neural, que é designada como a camada de inserção, em que d representa o número de nós na camada oculta e o número de dimensões no espaço de inserção. Essa camada de incorporação pode ser combinada com qualquer outro recurso e camadas ocultas. Como em qualquer rede neural profunda, os parâmetros serão otimizados durante o treinamento para minimizar a perda nos nós na camada de saída da rede.

Voltando ao nosso exemplo de recomendação de comida, nosso objetivo é prever novas refeições que o usuário vai gostar com base nas refeições favoritas atuais. Primeiro, podemos compilar dados adicionais sobre os cinco alimentos favoritos dos usuários. Em seguida, podemos modelar essa tarefa como um problema de aprendizado supervisionado. Definimos quatro desses cinco alimentos como dados de atributos e, em seguida, deixamos de lado aleatoriamente o quinto alimento como o rótulo positivo que nosso modelo pretende prever, otimizando as predições do modelo usando uma perda softmax.

Durante o treinamento, o modelo de rede neural vai aprender os pesos ideais para os nós na primeira camada oculta, que serve como a camada de incorporação. Por exemplo, se o modelo tiver três nós na primeira camada oculta, ele poderá determinar que as três dimensões mais relevantes dos itens alimentares são "sandwichness", "dessertness" e "liquidness". A Figura 12 mostra o valor de entrada codificado one-hot para "hot dog" transformado em um vetor tridimensional.

Figura 12. Rede neural para codificação one-hot de cachorro-quente. A primeira é uma camada de entrada com cinco nós, cada um anotado com um ícone do alimento que representa (borscht, cachorro-quente, salada... e shawarma). Esses nós têm
    os valores [0, 1, 0, ..., 0], respectivamente, representando a codificação one-hot
    de "hot dog". A camada de entrada está conectada a uma camada de inserção de três nós,
    cujos nós têm os valores 2,98, -0,75 e 0, respectivamente. A
    camada de incorporação está conectada a uma camada oculta de cinco nós, que é
    conectada a uma camada de saída de cinco nós.
Figura 12. Uma codificação one-hot de hot dog fornecida como entrada para uma rede neural profunda. Uma camada de embedding converte a codificação one-hot no vetor de embedding tridimensional [2.98, -0.75, 0].

Durante o treinamento, os pesos da camada de embedding serão otimizados para que os vetores de embedding de exemplos semelhantes fiquem mais próximos um do outro. As dimensões individuais da camada de incorporação (o que cada nó na camada de incorporação representa) raramente são tão compreensíveis quanto "dessertness" ou "liquidness". Às vezes, o que eles "querem dizer" pode ser inferido, mas nem sempre é o caso.

As incorporação geralmente são específicas para a tarefa e são diferentes umas das outras quando a tarefa é diferente. Por exemplo, as embeddings geradas por um modelo de classificação vegetariano e não vegetariano podem ter duas dimensões: conteúdo de carne e conteúdo de laticínios. Enquanto isso, as representações geradas por um classificador de café da manhã e jantar para a culinária americana podem ter dimensões ligeiramente diferentes: conteúdo de calorias, conteúdo de grãos e conteúdo de carne. "Cereal" e "sanduíche de ovo e bacon" podem estar próximos no espaço de adição de um classificador de café da manhã em comparação com um de jantar, mas muito distantes no espaço de adição de um classificador vegetariano em comparação com um não vegetariano.

Como treinar um embedding de palavras

Na seção anterior, você analisou uma visualização de relações semânticas no espaço de embeddings word2vec.

O Word2vec é um dos muitos algoritmos usados para treinar embeddings de palavras. Depende da hipótese de distribuição para mapear palavras semanticamente semelhantes a vetores de embedding próximos de forma geométrica. A hipótese distribucional afirma que palavras que geralmente têm as mesmas palavras vizinhas tendem a ser semanticamente semelhantes. As palavras "cachorro" e "gato" aparecem com frequência perto da palavra "veterinário", e esse fato reflete a semelhança semântica delas. Como o linguista John Firth disse em 1957: "Você deve conhecer uma palavra pela empresa que ela mantém".

O vídeo a seguir explica outro método de criação de uma representação de palavra como parte do processo de treinamento de uma rede neural, usando um modelo mais simples:

Incorporações estáticas x contextuais

Uma limitação das representações de palavras, como a discutida no vídeo acima, é que elas são estáticas. Cada palavra é representada por um único ponto no espaço vetorial, mesmo que possa ter vários significados diferentes, dependendo de como é usada em uma frase. No último exercício, você descobriu a dificuldade de mapear semelhanças semânticas para a palavra laranja,que pode significar uma cor ou um tipo de fruta.

As informações incorporadas contextuais foram desenvolvidas para resolver essas deficiências. As inclusões contextuais permitem várias representações da mesma palavra, cada uma incorporando informações sobre o contexto em que a palavra é usada. Em um embedding contextual, a palavra laranja pode ter duas representações separadas: uma capturando o uso da "cor" da palavra, como em frases como "Meu suéter favorito tem listras laranjas", e outra capturando o uso de "fruta", como "A laranja foi apanhada da árvore antes de amadurecer completamente".