Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
2
respostas

Resumo Estruturado sobre Embeddings em Aprendizado de Máquina

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

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.
2 respostas
solução!

Oi, Ricardo! Como vai?

Agradeço por compartilhar seus aprendizados com a comunidade Alura.

Gostei da sua análise detalhada sobre embeddings, principalmente quando você apresentou exemplos práticos usando spaCy, Hugging Face Transformers e NumPy, mostrando aplicações em busca semântica, recomendação e visualização de dados.

Dica: experimente criar pequenos notebooks de teste para cada técnica que mencionou, assim você pode visualizar os resultados dos embeddings e entender melhor como as distâncias vetoriais refletem a similaridade entre dados. Isso ajuda a fixar o conceito de forma prática.

Conte com o apoio do Fórum na sua jornada. Abraços e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Oi Monalisa,
Agradeço pela sua análise. Confesso que, no momento de aprendizado em que me encontro, a falta de uma estrutura física para desenvolver e criar códigos, especialmente os que são fundamentais para meus projetos, está pesando bastante.
Ricardo