Esta seção aborda várias formas de conseguir embeddings e como transformar embeddings estáticas em embeddings contextuais.
Técnicas de redução de dimensionalidade
Há muitas técnicas matemáticas que capturam as estruturas importantes 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. Dado um conjunto de instâncias como os vetores de bolsa de palavras, o PCA tenta encontrar dimensões altamente correlacionadas que podem ser agrupadas em uma única dimensão.
Treinar uma incorporação como parte de uma rede neural
É possível criar uma incorporação ao treinar uma rede neural para a tarefa de destino. Essa abordagem gera uma incorporação bem personalizada para seu sistema específico, mas pode levar mais tempo do que o treinamento da incorporação 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 nossos 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 camada é uma
camada de entrada com cinco nós, cada um anotado com um ícone do alimento que
representa (borscht, cachorro-quente, salada etc.). 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.](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/one_hot_hot_dog_embedding.png?authuser=6&hl=pt-br)
hot dog
fornecida como entrada para uma rede neural profunda. Uma camada de embedding traduz 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 uns dos outros. Como mencionado anteriormente, as dimensões que um modelo real escolhe para as embeddings provavelmente não serão tão intuitivas ou compreensíveis quanto neste exemplo.
Embeddings contextuais
Uma limitação dos vetores de embedding estático word2vec
é que as palavras podem significar
coisas diferentes em contextos diferentes. "Sim" significa uma coisa por si só,
mas o oposto na frase "Sim, claro". "Post" pode significar "correio",
"colocar no correio", "peça de brinco", "marcador no final de uma corrida de cavalos",
"pós-produção", "pilar", "colocar um aviso", "colocar um guarda ou
soldado" ou "depois", entre outras possibilidades.
No entanto, com embeddings estáticos, cada palavra é representada por um único ponto
no espaço vetorial, mesmo que possa ter vários significados.
No último exercício,
você descobriu as limitações das inclusões estáticas para a palavra
laranja,que pode significar uma cor ou um tipo de fruta. Com apenas uma
incorporação estática, laranja sempre vai estar mais próxima de outras cores do que de
suco quando treinada no conjunto de dados word2vec
.
As incrustações contextuais foram desenvolvidas para resolver essa limitação. As embeddings contextuais permitem que uma palavra seja representada por várias embeddings que incorporam informações sobre as palavras ao redor, bem como a palavra em si. Laranja teria uma incorporação diferente para cada frase única que contém a palavra no conjunto de dados.
Alguns métodos para criar embeddings contextuais, como
ELMo, usam o embedding
estático de um exemplo, como o vetor word2vec
de uma palavra em uma frase,
e o transformam em uma função que incorpora informações sobre as palavras
ao redor. Isso produz uma incorporação contextual.
Clique aqui para saber mais sobre as inclusões contextuais
- Para modelos ELMo especificamente, a embedding estática é agregada com embeddings de outras camadas, que codificam leituras da frente para trás e de trás para frente da frase.
- Os modelos BERT mascaram parte da sequência que o modelo recebe como entrada.
- Os modelos do Transformer usam uma camada de autoatenção para ponderar a relevância das outras palavras em uma sequência para cada palavra individual. Elas também adicionam a coluna relevante de uma matriz de embedding posicional (consulte codificação posicional) a cada embedding de token aprendido anteriormente, elemento por elemento, para produzir o embedding de entrada que é alimentado no restante do modelo para inferência. Essa incorporação de entrada, exclusiva para cada sequência textual distinta, é uma incorporação contextual.
Embora os modelos descritos acima sejam modelos de linguagem, as representações contextuais são úteis em outras tarefas generativas, como imagens. Uma incorporação dos valores RGB de pixel em uma foto de um cavalo fornece mais informações ao modelo quando combinada com uma matriz posicional que representa cada pixel e alguma codificação dos pixels vizinhos, criando incorporações contextuais, do que as incorporações estáticas originais dos valores RGB.