Título Completo
Resumo Estruturado sobre Embeddings em Aprendizado de Máquina
Autoria
Ricardo Costa Val do Rosario
Introdução
1. Embeddings são vetores densos que traduzem objetos como palavras, frases ou imagens
em pontos num espaço de alta dimensão.
2. Nesse espaço, a distância entre vetores reflete relações semânticas ou estruturais entre os
itens originais.
3. Eles permitem que algoritmos de IA identifiquem itens semelhantes e realizem buscas
semânticas de forma eficiente.
4. Vamos saber um pouco mais neste artigo Original.
Como Funcionam
1. Cada objeto é convertido em um vetor de números reais, tipicamente com centenas
de dimensões.
2. Durante o treinamento, modelos ajustam esses vetores para que unidades semanticamente
próximas fiquem fisicamente próximas no espaço vetorial.
3. A similaridade entre vetores costuma ser medida via cosseno ou distância Euclidiana.
Principais Técnicas
1. Word2Vec:
Aprende embeddings de palavras com base em janelas de contexto.
2. GloVe:
Combina estatísticas globais de concorrência com otimização de vetores.
3. Modelos Transformers (BERT, GPT)
Geram embeddings contextuais, variando conforme a posição e uso do token no texto.
Aplicações Práticas
1. Busca Semântica:
Encontra documentos com significado parecido ao da consulta.
2. Recomendação:
Sugere produtos ou conteúdo alinhado ao perfil do usuário.
3. Detecção de Anomalias:
Identifica padrões atípicos ao comparar embeddings de dados de monitoramento.
4. Agrupamento e Visualização:
Projeta dados de alta dimensão em 2D/3D para análise exploratória.
Exemplo 1: Embeddings de Palavras com spaCy
# Neste exemplo, extraímos embeddings de palavras e calculamos similaridade entre
dois termos.
import spacy
nlp = spacy.load("pt_core_news_md")
token1 = nlp("gato")[0]
token2 = nlp("cachorro")[0]
similarity = token1.similarity(token2)
print(f"Similaridade entre gato e cachorro: {similarity:.2f}")
Exemplo 2: Embeddings de Sentenças com Hugging Face Transformers
# Aqui usamos um modelo pré-treinado para embedding de sentenças e comparamos duas frases.
from transformers import AutoTokenizer, AutoModel
import torch
import torch.nn.functional as F
tokenizer = AutoTokenizer.from_pretrained("sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2")
model = AutoModel.from_pretrained("sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2")
def embed(text):
inputs = tokenizer(text, return_tensors="pt", truncation=True)
outputs = model(**inputs)
vec = outputs.last_hidden_state.mean(dim=1)
return F.normalize(vec)
v1 = embed("Aprendizado de máquina é divertido")
v2 = embed("Modelos de IA são fascinantes")
score = F.cosine_similarity(v1, v2).item()
print(f"Similaridade de sentenças: {score:.2f}")
Exemplo 3: Recomendação Simples com Similaridade de Vetores
# Utilizamos NumPy para comparar embeddings fictícios de usuários e produtos.
import numpy as np
# Vetores de exemplo (usuário e três produtos)
user = np.array([0.2, 0.8, 0.5])
products = np.array([
[0.1, 0.9, 0.4],
[0.7, 0.1, 0.3],
[0.3, 0.8, 0.6]
])
# Similaridade Cosseno
cos_sim = lambda a, b: a.dot(b) / (np.linalg.norm(a) * np.linalg.norm(b))
scores = [cos_sim(user, p) for p in products]
best_idx = int(np.argmax(scores))
print(f"Produto mais recomendado: índice {best_idx}, similaridade {scores[best_idx]:.2f}")
Próximos Passos
1. Integre um banco de dados vetorial (por exemplo, FAISS ou Pinecone) para armazenar
e consultar embeddings em larga escala.
2. Ajuste e fine-tune um modelo Transformers em seu domínio de interesse para obter
embeddings mais precisos.
3. Explore pipelines de RAG (Retrieval-Augmented Generation) combinando embeddings
e LLMs para criação de respostas contextuais.