0
respostas

Artigo Original: Resumo Estruturado sobre Embeddings em Aprendizado de Máquina

Resumo Estruturado sobre Embeddings em Aprendizado de Máquina

**Por Ricardo Costa Val do Rosario e Microsoft Copilot 365

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.

Exemplos Práticos

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.