Embedding (NLP) (PT)

From Systems analysis wiki
Jump to navigation Jump to search

Embedding (do inglês "embedding" — "incorporação" ou "inserção") é uma tecnologia fundamental no campo de aprendizado de máquina e processamento de linguagem natural, que transforma objetos discretos ou complexos (como palavras, frases, imagens) em representações vetoriais numéricas de dimensão fixa. Esses vetores, ou embeddings, são dispostos em um espaço multidimensional de tal forma que objetos semanticamente semelhantes fiquem próximos uns dos outros.

Definição e Conceito

Formalmente, um embedding é uma função de mapeamento f:Xd, onde X é o espaço original de objetos (por exemplo, um vocabulário de palavras), e d é um espaço vetorial multidimensional (o espaço de embeddings) com dimensão d. A dimensão d é significativamente menor que a dimensão do espaço original, o que torna essas representações densas (dense).

A base teórica para as representações vetoriais de palavras é a semântica distribucional, que postula que o significado de uma palavra é determinado pelo contexto em que ela é usada. Ou seja, palavras que aparecem em contextos semelhantes têm significados semelhantes e, consequentemente, representações vetoriais próximas.

Princípios Fundamentais dos Embeddings

  • Dimensionalidade Fixa: Todos os objetos são mapeados para vetores de mesmo comprimento, independentemente do tamanho dos dados de origem (por exemplo, o comprimento de uma frase).
  • Proximidade Semântica: A distância entre os vetores (frequentemente medida pela similaridade de cosseno) reflete a proximidade semântica dos objetos originais.
  • Suporte a Operações Matemáticas: Os vetores preservam relações semânticas, o que permite a realização de operações algébricas sobre eles. O exemplo clássico é: vetor(«rei»)vetor(«homem»)+vetor(«mulher»)vetor(«rainha»).

História e Desenvolvimento

Abordagens Iniciais (décadas de 1980–2000)

As primeiras ideias de representações vetoriais surgiram na década de 1980 no contexto da pesquisa em redes neurais. Os métodos iniciais baseavam-se na análise estatística da coocorrência de palavras.

A Era do Word2Vec (2013)

Um momento revolucionário foi o desenvolvimento do Word2Vec por uma equipe do Google liderada por Tomas Mikolov em 2013. O Word2Vec propôs duas arquiteturas eficientes e computacionalmente acessíveis para treinar embeddings de palavras:

  • CBOW (Continuous Bag of Words): Prevê a palavra central com base em seu contexto circundante.
  • Skip-gram: Prevê as palavras do contexto a partir da palavra central.

O Word2Vec se tornou a primeira implementação popular de representações vetoriais, em grande parte devido ao seu código-fonte aberto e alta velocidade de processamento.

Desenvolvimento de Abordagens Alternativas

Após o Word2Vec, surgiram outros modelos importantes de embeddings estáticos:

  • GloVe (2014): Um modelo desenvolvido na Universidade de Stanford que utiliza estatísticas globais de coocorrência de palavras para treinar os vetores.
  • FastText (2015): Um modelo do Facebook que leva em consideração a morfologia das palavras, representando cada palavra como a soma dos vetores de seus n-gramas de caracteres. Isso permite a criação de embeddings mesmo para palavras que não estavam no vocabulário de treinamento (palavras Out-of-Vocabulary).

A Era dos Transformers e Embeddings Contextuais (2018–presente)

O grande avanço ocorreu com o surgimento da arquitetura Transformer e do modelo BERT (2018). Isso levou ao desenvolvimento de embeddings contextuais, nos quais a representação vetorial de uma palavra depende do contexto em que é usada. Diferente das representações estáticas, onde a palavra «banco» teria o mesmo vetor nas frases «banco da praça» e «banco financeiro», os modelos contextuais geram embeddings diferentes para cada caso.

Tipos de Embeddings

Por Nível de Representação

  • Embeddings de Palavras: O tipo básico, onde cada palavra é representada por um vetor individual (Word2Vec, GloVe).
  • Embeddings de Sentenças e Documentos: Representam frases, sentenças ou documentos inteiros com um único vetor (PV-DM, PV-DBOW).
  • Embeddings de Usuários e Itens: Usados em sistemas de recomendação para representar os interesses dos usuários e as características dos produtos.

Por Contextualidade

  • Embeddings Estáticos: A cada palavra é atribuído um único vetor fixo, independentemente do contexto (Word2Vec, GloVe, FastText).
  • Embeddings Contextuais: Geram representações diferentes para a mesma palavra dependendo de seu entorno. Os principais exemplos são:
    • BERT: Um modelo bidirecional baseado em Transformers.
    • ELMo: Um modelo LSTM bidirecional.
    • RoBERTa, DistilBERT, ALBERT: Variantes aprimoradas do BERT.

Por Modalidade

  • Embeddings Textuais: O tipo mais comum, incluindo representações de palavras, sentenças e documentos.
  • Embeddings Visuais: Representações de imagens para tarefas de visão computacional.
  • Embeddings Multimodais: Unificam diferentes tipos de dados (texto, imagens, áudio) em um único espaço vetorial. Um exemplo é o ImageBind, capaz de associar dados de seis modalidades.

Arquiteturas e Métodos de Treinamento

Métodos Clássicos

  • Codificação One-hot: O método mais simples, onde cada palavra é codificada por um vetor do tamanho do vocabulário com um "1" na posição correspondente. Desvantagens: alta esparsidade e ausência de informação semântica.
  • Fatoração de Matrizes: Métodos de redução de dimensionalidade (como LSA) aplicados a matrizes de coocorrência de palavras.

Arquiteturas de Redes Neurais

  • Redes Neurais Rasas: As arquiteturas CBOW e Skip-gram do Word2Vec utilizam redes neurais de duas camadas para um treinamento eficiente.
  • Transformers: A arquitetura que revolucionou a área graças ao mecanismo de atenção (attention).

Abordagens Modernas

  • Autoaprendizagem com Mascaramento: O BERT utiliza a tarefa de prever palavras mascaradas para treinar representações contextuais.
  • Aprendizagem Contrastiva: Métodos que maximizam a similaridade de pares semanticamente próximos (positivos) e minimizam a similaridade de pares distantes (negativos).

Aplicações de Embeddings

Os embeddings encontram ampla aplicação em diversas áreas:

Processamento de Linguagem Natural

  • Busca e Recuperação de Informação: Melhoram a qualidade da busca semântica, permitindo encontrar documentos pelo sentido, e não por palavras-chave.
  • Classificação de Textos: As representações vetoriais servem como dados de entrada para classificadores, aumentando sua precisão.
  • Análise de Sentimento: Determinação da carga emocional dos textos, levando em conta o contexto.
  • Tradução Automática: Melhoram a compreensão da semântica dos idiomas de origem и de destino.

Sistemas de Recomendação

Embeddings de usuários e produtos são a base dos sistemas de recomendação personalizados, incluindo:

  • Filtragem Colaborativa: baseada em embeddings do comportamento do usuário.
  • Filtragem Baseada em Conteúdo: utilizando embeddings das características dos produtos.

Visão Computacional

  • Classificação e Busca de Imagens: Redes neurais convolucionais e Vision Transformers criam embeddings de imagens para classificá-las e buscar por imagens visualmente semelhantes.

Bioinformática e Medicina

  • Análise de Dados Médicos: Análise de prontuários clínicos e diagnóstico de doenças.
  • Representações Moleculares: Criação de embeddings para prever as propriedades de compostos químicos.

Aspectos Técnicos e Otimização

  • Métodos de Otimização de Dimensionalidade: Matryoshka Representation Learning (MRL) — uma abordagem inovadora que permite obter embeddings de diferentes dimensões a partir de um único modelo, concentrando a informação importante no início do vetor.
  • Quantização de Embeddings: Redução da precisão da representação numérica (por exemplo, para 8 ou 4 bits) para acelerar os cálculos e economizar memória.
  • Integração com Bancos de Dados: Bancos de dados vetoriais modernos (como Milvus, Pinecone) e extensões para SGBDs tradicionais (como pgvector para PostgreSQL) permitem armazenar e buscar embeddings de forma eficiente.

Literatura

  • Mikolov, T. et al. (2013). Efficient Estimation of Word Representations in Vector Space. arXiv:1301.3781.
  • Mikolov, T. et al. (2013). Distributed Representations of Words and Phrases and their Compositionality. arXiv:1310.4546.
  • Pennington, J.; Socher, R.; Manning, C. (2014). GloVe: Global Vectors for Word Representation. PDF.
  • Bojanowski, P. et al. (2017). Enriching Word Vectors with Subword Information. arXiv:1607.04606.
  • Joulin, A. et al. (2017). Bag of Tricks for Efficient Text Classification. arXiv:1607.01759.
  • Peters, M. E. et al. (2018). Deep Contextualized Word Representations. ACL Anthology.
  • Devlin, J. et al. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv:1810.04805.
  • Reimers, N.; Gurevych, I. (2019). Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks. arXiv:1908.10084.
  • Kusupati, A. et al. (2022). Matryoshka Representation Learning. arXiv:2205.13147.
  • Radford, A. et al. (2021). Learning Transferable Visual Models From Natural Language Supervision. PMLR 139.
  • Girdhar, R. et al. (2023). ImageBind: One Embedding Space To Bind Them All. CVPR 2023.