Embeddings: como obter embeddings

Há várias maneiras de conseguir um embedding, incluindo um algoritmo de última geração criado no Google.

Técnicas padrão de redução de dimensionalidade

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

Por exemplo, a análise de componente principal (PCA, na sigla em inglês) foi usada para criar embeddings de palavras. Considerando um conjunto de instâncias como o pacote de vetores de palavras, o PCA tenta encontrar dimensões altamente correlacionadas que podem ser recolhidas em uma única dimensão.

Word2vec

O Word2vec é um algoritmo inventado no Google para treinar embeddings de palavra. O Word2vec depende da hipótese de distribuição para mapear palavras semanticamente semelhantes para vetores de embedding geométricos.

A hipótese de distribuição determina que as palavras que geralmente têm as mesmas palavras vizinhas tendem a ser semanticamente semelhantes. Tanto "dog" quanto "cat" frequentemente aparecem próximos à palavra "veterinarian" e esse fato reflete a semelhança semântica deles. Como o linguista John Firth o colocou em 1957, "você conhecerá uma palavra da empresa que mantém"

O Word2Vec explora informações contextuais como essa treinando uma rede neural para distinguir diferentes grupos de palavras que ocorrem em palavras aleatórias. A camada de entrada utiliza uma representação esparsa de uma palavra de destino com uma ou mais palavras de contexto. Essa entrada se conecta a uma única camada menor oculta.

Em uma versão do algoritmo, o sistema faz um exemplo negativo substituindo uma palavra de ruído aleatório pela palavra de destino. Considerando o exemplo "positivo" do avião voa" o sistema pode alternar em "jogging" para criar o exemplo negativo de contraste, "quot;

A outra versão do algoritmo cria exemplos negativos combinando as palavras de destino verdadeiras com as palavras de contexto escolhidas aleatoriamente. Assim, ele pode usar os exemplos positivos (o, o plano), (voar, avião) e os exemplos negativos (compilado, plano), (quem, avião) e aprender a identificar quais pares realmente apareceram juntos no texto.

No entanto, o classificador não é o objetivo real de nenhuma das versões do sistema. Depois que o modelo for treinado, você vai ter um embedding. Você pode usar os pesos que conectam a camada de entrada à camada escondida para mapear representações esparsas de palavras para vetores menores. Esse embedding pode ser reutilizado em outros classificadores.

Para mais informações sobre o Word2vec, consulte o tutorial no tensorflow.org.

Como treinar um embedding como parte de um modelo maior

Também é possível aprender a incorporação como parte da rede neural para sua tarefa de destino. Essa abordagem oferece uma incorporação bem personalizada para seu sistema específico, mas pode levar mais tempo do que treinar o embedding separadamente.

Em geral, quando há dados esparsos (ou densos que você queira incorporar), é possível criar uma unidade de embedding que seja apenas um tipo especial de unidade oculta de tamanho d. Essa camada de embedding pode ser combinada com outros recursos e camadas ocultas. Como em qualquer DNN, a camada final será a perda que está sendo otimizada. Por exemplo, imagine que vamos realizar uma colaboração colaborativa em que a meta é prever os interesses de um usuário em relação aos de outros. Podemos modelar isso como um problema de aprendizado supervisionado definindo automaticamente ou mantendo um pequeno número de filmes que o usuário assistiu como rótulos positivos. Em seguida, otimizamos uma perda softmax.

Figura 5. Exemplo de arquitetura DNN para aprender embeddings de filmes de dados de filtragem colaborativa.

Outro exemplo: se você quiser criar uma camada de embedding para as palavras em um anúncio imobiliário como parte de uma DNN para prever os preços de imóveis, otimize uma perda L2 usando o preço de venda conhecido das casas nos dados de treinamento como o identificador.

Ao aprender uma incorporação de d-dimensional, cada item é mapeado a um ponto em um espaço de d-dimensional para que os itens semelhantes fiquem próximos neste espaço. A Figura 6 ajuda a ilustrar a relação entre os pesos aprendidos na camada de embedding e a visualização geométrica. Os pesos de borda entre um nó de entrada e os nós na camada de embedding de dimensão d correspondem aos valores de coordenadas para cada um dos eixos d.

Figura ilustrando a relação entre os pesos da camada de embedding e a visualização geométrica do embedding.

Figura 6. Uma visualização geométrica dos pesos da camada de embedding.