9.4. LLM
Métricas para Modelos de Linguagem
Avaliar Large Language Models é fundamentalmente diferente de avaliar classificadores ou modelos de regressão. A saída é texto aberto — há múltiplas respostas corretas, a fluência importa, e "certo" é muitas vezes subjetivo. Por isso, o campo desenvolveu métricas especializadas.
Perplexidade (Perplexity)
A métrica mais fundamental para modelos de linguagem: mede quão "surpreendido" o modelo fica com um texto de teste.
Interpretação: PPL = 10 significa que o modelo está, em média, igualmente incerto entre 10 opções a cada token. Menor é melhor. Um modelo trivial que distribui uniformemente sobre \(V\) tokens tem PPL = \(V\) ≈ 32.000.
Limitação
Perplexidade mede ajuste ao conjunto de teste, não capacidade de seguir instruções, raciocinar ou ser útil. GPT-2 tem PPL baixíssima em Wikipedia mas não segue comandos.
Métricas de Geração de Texto
BLEU (Bilingual Evaluation Understudy)
Originalmente para tradução automática — compara n-gramas entre geração e referência:
onde \(p_n\) é a precisão de n-gramas e BP é a penalidade por respostas curtas demais.
ROUGE (Recall-Oriented Understudy for Gisting Evaluation)
Foco em recall — quanto do texto de referência aparece na geração. Comum em sumarização:
| Variante | O que mede |
|---|---|
| ROUGE-1 | Overlap de unigramas |
| ROUGE-2 | Overlap de bigramas |
| ROUGE-L | Longest Common Subsequence |
BERTScore
Usa embeddings do BERT para comparar semântica, não superfície textual:
Captura paráfrases que BLEU penaliza.
Benchmarks de Capacidade
Métricas modernas avaliam tarefas, não apenas fluência:
| Benchmark | Domínio | Formato | Nota |
|---|---|---|---|
| MMLU | 57 disciplinas | Multiple-choice | Padrão ouro para conhecimento |
| HumanEval | Código Python | Completar função | Pass@k: % problemas resolvidos |
| GSM8K | Aritmética | Passo-a-passo | Requer chain-of-thought |
| HellaSwag | Senso comum | Múltipla escolha | Fácil pra humanos (95%), difícil pra modelos |
| TruthfulQA | Veracidade | Geração livre | Mede tendência a alucinar |
| MATH | Matemática avançada | Resolução de problemas | Exige raciocínio simbólico |
| MT-Bench | Instrução | Diálogo multi-turno | Nota 1-10 por LLM-juiz |
| Chatbot Arena | Preferência geral | A/B humano | ELO rating, mais realista |
Avaliação por LLM-juiz (LLM-as-Judge)
Uma tendência crescente: usar um LLM potente (GPT-4, Claude) para avaliar as respostas de outro LLM. Permite avaliar qualidade subjetiva em escala.
def llm_judge(question, response_a, response_b, judge_model="gpt-4"):
prompt = f"""
Pergunta: {question}
Resposta A: {response_a}
Resposta B: {response_b}
Qual resposta é melhor? Avalie em termos de precisão, clareza e utilidade.
Responda apenas com 'A', 'B', ou 'Empate' e uma breve justificativa.
"""
return judge_model.generate(prompt)
Vieses conhecidos: preferência por respostas longas, preferência pela primeira opção, favorecer o próprio modelo (self-preference).
Métricas de Alinhamento e Segurança
| Métrica | O que avalia |
|---|---|
| Toxicidade (Perspective API) | Conteúdo ofensivo, ódio |
| Veracidade (TruthfulQA) | Taxa de alucinações |
| Instrução-following | % de instruções seguidas corretamente |
| Refusal rate | Taxa de recusa em pedidos prejudiciais |
| Calibração | Confiança vs. acurácia real |
Avaliação de RAG (Retrieval-Augmented Generation)
Sistemas RAG têm métricas adicionais:
| Métrica | Fórmula | O que mede |
|---|---|---|
| Context Precision | Docs relevantes / docs recuperados | Qualidade da recuperação |
| Context Recall | Docs relevantes encontrados / todos relevantes | Cobertura da recuperação |
| Faithfulness | Claims suportados / total de claims | Fidelidade ao contexto |
| Answer Relevancy | Similaridade resposta↔pergunta | Pertinência da resposta |