Decodificando Alucinações de LLM: Um Mergulho Profundo nos Erros dos Modelos de Linguagem
Introdução
À medida que empresas e grandes empresas de tecnologia criam produtos melhores usando grandes modelos de linguagem (LLMs), é importante entender sua responsabilidade na entrega de soluções confiáveis. Um problema significativo é que esses modelos às vezes produzem informações confiantes, mas incorretas, levando os usuários a acreditar erroneamente que a saída é precisa. Esse problema é conhecido como alucinação.
Morena, uma Cientista de Dados, fez uma apresentação perspicaz sobre alucinações de LLMs em um recente Unstructured Data Meetup organizado pela Zilliz, explicando em profundidade o conceito de alucinações, tipos de alucinações, como elas podem ser prejudiciais, por que ocorrem e, mais importante, como podemos detectar essas alucinações.
Assista ao replay da palestra de Morena
O que são Alucinações?
Alucinações são saídas falsas ou contraditórias geradas por qualquer forma de modelo de linguagem. Em termos simples, conteúdo que é factualmente incorreto, sem sentido ou infiel ao contexto de entrada.
Por exemplo, vamos fazer ao Llama3 uma pergunta intrincada: Que outro nome os cofundadores da State Software discutiram para JSON?
A resposta do Llama3 é mostrada abaixo:
Resposta do Llama3 à pergunta de exemplo
Enquanto a discussão real é um pouco diferente:
A resposta na página da Wikipedia sobre JSON
O Llama 3-8B apresenta um exemplo clássico de alucinação. Vamos examinar os diferentes tipos de alucinações que um Modelo de Linguagem pode fornecer.
Diferentes Tipos de Alucinações
Existem duas categorias principais de alucinações: alucinações intrínsecas e alucinações extrínsecas.
Alucinações Intrínsecas
Alucinações intrínsecas tendem a contrastar com as informações de origem fornecidas a elas. Imagine-se com pressa tentando resolver questões de uma prova de compreensão enorme e complexa. Você pode entender as informações de forma errada e responder algumas perguntas incorretamente. Da mesma forma, LLMs tendem a alucinar com frequência quando os dados são altamente não estruturados, como um corpus de texto extenso.
Alucinações Extrínsecas
Alucinações extrínsecas ocorrem quando LLMs geram informações que não podem ser verificadas em relação aos dados de origem fornecidos, frequentemente resultando em detalhes fabricados. Para gerenciar efetivamente alucinações extrínsecas, instrua o LLM a usar apenas as informações fornecidas para concluir tarefas. Essa abordagem é especialmente benéfica em pipelines de Geração Aumentada por Recuperação (RAG). Laurie Voss enfatizou essa prática durante um Zilliz Unstructured Data Meetup, destacando sua importância na manutenção da precisão.
Abaixo está um exemplo de prompt para lidar com alucinações extrínsecas.
prompt = f"""Only using the Context Provided to you and not any outside knowledge, Answer the user query.
Context: {Wikipedia_Page_Content}
Query: Summarize me this Page"""
# Rather than just
prompt = f"""Summarize me this Page
{Wikipedia_Page_Content}"""
Um Exemplo de Alucinação Intrínseca vs. Extrínseca
Problemas com Alucinações de LLMs
Alucinações, que inicialmente podem parecer inofensivas ou até humorísticas, representam desafios significativos ao implantar LLMs em setores como direito e saúde. Nesses setores, a precisão das informações geradas por modelos de IA Generativa é crítica para garantir resultados positivos. Quando esses modelos produzem saídas imprecisas, isso pode levar a consequências graves, como decisões jurídicas incorretas ou comprometimento do atendimento ao paciente, potencialmente colocando vidas em risco.
Além disso, para além de seu impacto em setores específicos, as alucinações geradas por LLMs podem ter implicações sociais de amplo alcance. Elas minam a confiança em fontes confiáveis de informação e contribuem para a confusão e a desconfiança generalizadas entre o público. Essa erosão da confiança pode ser particularmente prejudicial durante eventos críticos, como eleições.
Por exemplo, durante períodos eleitorais, a desinformação disseminada por LLMs sobre candidatos, procedimentos de votação ou resultados eleitorais pode influenciar significativamente os processos democráticos. Informações falsas podem induzir eleitores ao erro sobre onde e quando votar, potencialmente suprimindo a participação eleitoral e afetando os resultados das eleições. Além disso, a desinformação pode escalar tensões, levando a agitação social e até violência, como observado em situações em que alegações infundadas de fraude eleitoral desencadearam protestos e confrontos.
Por que os LLMs Alucinam?
LLMs carecem de um conceito de verdade fundamental; suas saídas são determinadas por operações matemáticas complexas, como multiplicações de matrizes e funções softmax, que calculam probabilidades para cada token em uma sequência com base nos tokens anteriores. Essas probabilidades ditam a sequência gerada pelo LLM, mas o que influencia essas probabilidades?
Probabilidades de tokens para uma determinada string
Informações Contraditórias ou Falsas nos Dados de Treinamento
Modelos de base são treinados em grandes quantidades de dados não estruturados, incluindo páginas da Wikipedia, subreddits, tweets, threads do Stack Overflow e MathOverflow, repositórios do GitHub e inúmeras outras fontes da internet. Esse treinamento não tem como objetivo garantir que o modelo produza saídas significativas desde o início; em vez disso, constrói conhecimento fundamental armazenado como tensores e gera saídas coerentes.
No entanto, nem todos os dados encontrados na internet são precisos. Desinformação e conteúdo enganoso, como de subreddits ou tweets específicos, podem influenciar o modelo durante o treinamento. Esse problema pode levar a inconsistências nos pesos do modelo e resultar em distribuições de probabilidade distorcidas, causando, em última instância, alucinações em suas saídas.
Complexidade das Tarefas
A natureza das tarefas também influencia se um LLM é propenso a produzir saídas falsas ou sem sentido. Tarefas simples, como responder a perguntas diretas, têm menor probabilidade de resultar em alucinações. No entanto, LLMs podem ter dificuldades e produzir saídas altamente sem sentido quando confrontados com tarefas mais complexas, como resumir passagens extensas de texto ou analisar dados tabulares fornecidos em formato markdown.
Tarefa Simples vs. Complexa
Detectando Alucinações
Várias metodologias são usadas para detectar alucinações de LLMs: autoavaliação, detecção baseada em referências, detecção baseada em incerteza e detecção baseada em consistência. Vamos explorar algumas dessas metodologias em detalhes.
Métodos de detecção de alucinações
Autoavaliação
A autoavaliação é um processo em que o LLM avalia suas saídas, o que pode inicialmente parecer contraintuitivo, dado que as alucinações frequentemente se originam internamente dentro do modelo. No entanto, esse método continua sendo valioso porque avaliar a qualidade de uma resposta é inerentemente mais fácil do que gerar a própria resposta. Tarefas mais simples, como a avaliação de respostas, são menos propensas a alucinações do que tarefas mais complexas, como a geração de respostas para consultas intrincadas. Isso ocorre porque a capacidade do LLM de avaliar a correção e a coerência de uma resposta é menos desafiadora do que sua capacidade de gerar informações inteiramente novas com precisão.
Além disso, integrar a autoavaliação com outros métodos de detecção, como abordagens baseadas em referências ou baseadas em consistência, aprimora a capacidade do LLM de avaliar suas saídas de forma abrangente. Essa abordagem combinada fortalece a capacidade do modelo de identificar e mitigar efetivamente possíveis alucinações, melhorando assim a confiabilidade e a credibilidade gerais do conteúdo gerado.
Um fluxo de trabalho básico para LLMs avaliarem a si mesmos
Métodos baseados em referências
A metodologia baseada em referências avalia a consistência das saídas geradas em relação às referências fornecidas, tornando-a particularmente útil em ambientes de produção que utilizam Retrieval Augmented Generation (RAG) e tarefas como sumarização.
Fornecer conhecimento de origem como referências permite que o LLM gere saídas que se alinhem estreitamente com as referências fornecidas. Considere a tarefa de resumir uma página da Wikipedia sobre Paris. Usando métodos baseados em referências, o LLM pode gerar resumos avaliados em relação ao conteúdo original para garantir precisão e coerência.
Métricas de desempenho como BERTScore ou ROUGEScore são comumente usadas para avaliar o desempenho de LLMs em tarefas específicas. Elas fornecem medidas quantitativas de quão bem as saídas geradas correspondem às referências. Além disso, incorporar camadas de autoavaliação aprimora ainda mais a confiabilidade e a eficácia dos métodos de avaliação baseados em referências.
Um fluxo de trabalho sistemático para recuperação baseada em contexto
Métodos baseados em incerteza
Lembra como observamos anteriormente LLMs produzindo saídas incorretas com confiança? Bem, por baixo da superfície, isso nem sempre é o caso quando se trata de alucinações. Alucinações podem ocorrer devido a distribuições de probabilidade incertas em que um token é classificado ligeiramente acima do "melhor" token de verdade fundamental, levando a uma geração defeituosa de saídas.
Para analisar probabilidades de tokens, você pode aproveitar os métodos de classe do Hugging Face. Esses métodos permitem examinar as probabilidades associadas à geração de tokens, fornecendo insights sobre como o modelo toma decisões e potencialmente identificando instâncias em que ocorrem alucinações.
from transformers import GPT2Tokenizer, AutoModelForCausalLM
import numpy as np
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")
tokenizer.pad_token_id = tokenizer.eos_token_id
inputs = tokenizer(["Today is"], return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=5, return_dict_in_generate=True, output_scores=True)
transition_scores = model.compute_transition_scores(
outputs.sequences, outputs.scores, normalize_logits=True
)
input_length = inputs.input_ids.shape[1]
generated_tokens = outputs.sequences[:, input_length:]
for tok, score in zip(generated_tokens[0], transition_scores[0]):
# | token | token string | logits | probability
print(f"| {tok:5d} | {tokenizer.decode(tok):8s} | {score.numpy():.4f} | {np.exp(score.numpy()):.2%}")
# Expected output:
#| 262 | the | -1.4136 | 24.33%
#| 1110 | day | -2.6089 | 7.36%
#| 618 | when | -2.0096 | 13.40%
#| 356 | we | -1.8593 | 15.58%
#| 460 | can | -2.5083 | 8.14%
Você pode experimentar este método com modelos de código fechado como gpt-4 via logprobs.
from openai import OpenAI
client = OpenAI()
completion = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "user", "content": "Hello!"}
],
logprobs=True,
top_logprobs=2
)
print(completion.choices[0].logprobs)
A saída para logprobs é como o JSON abaixo.
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1702685778,
"model": "gpt-4o",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello!"
},
"logprobs": {
"content": [
{
"token": "Hello",
"logprob": -0.31725305,
"bytes": [72, 101, 108, 108, 111],
"top_logprobs": [
{
"token": "Hello",
"logprob": -0.31725305,
"bytes": [72, 101, 108, 108, 111]
},
{
"token": "Hi",
"logprob": -1.3190403,
"bytes": [72, 105]
}
]
},
{
"token": "!",
"logprob": -0.02380986,
"bytes": [
33
],
"top_logprobs": [
{
"token": "!",
"logprob": -0.02380986,
"bytes": [33]
} ]
}, "finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 2,
"completion_tokens": 2,
"total_tokens": 4
},
"system_fingerprint": null
}
Detecção baseada em consistência
A detecção baseada em consistência é um método simples, porém eficaz, para identificar alucinações de LLMs. Essa abordagem envolve consultar o LLM com a mesma pergunta várias vezes e comparar suas respostas. Saídas consistentes em consultas repetidas indicam uma menor probabilidade de alucinações, enquanto respostas inconsistentes sugerem problemas potenciais.
Abaixo está um exemplo que Morena compartilhou durante sua palestra, no qual ele fez repetidamente três perguntas ao LLM.
ronaldo_prompt = "Give me three facts about Cristiano Ronaldo."
toaster_prompt = "Give me an absurd fact about toasters."
seinfeld_prompt = "In what episode of Seinfeld did Kramer buy a giant hat?"
Configurando os prompts:
ronaldo_passages = []
for i in range(3):
prompt = ronaldo_prompt
result = chat_gpt_prompt(prompt).choices[0]-message.content
ronaldo passages.append(result)
toaster_passages = []
for i in range(3):
prompt = toaster_prompt
result = chat_gpt_prompt(prompt).choices[0].message.content
toaster_passages.append(result)
seinfeld_passages = []
for i in range(3):
prompt = seinfeld_prompt
result = chat_gpt_prompt(prompt).choices[0].message.content
seinfeld_passages.append(result)
Neste exemplo, consultar sobre Cristiano Ronaldo, cujas informações estão incorporadas nos dados de treinamento do LLM, tende a gerar saídas consistentes com riscos mínimos de alucinação. Essa consistência demonstra a confiabilidade do modelo na geração de respostas precisas para tópicos bem estabelecidos.
A resposta gerada pelo LLM sobre Cristiano Ronaldo
No entanto, o caso difere para as passagens de Seinfeld, já que Kramer nunca comprou um “Chapéu Gigante.”
A resposta gerada pelo LLM sobre Giant Hat
Conclusão
À medida que mais empresas usam modelos de linguagem grandes (LLMs) para aplicações de produção, é vital abordar consistentemente seus desafios. Alucinações, se não forem controladas, podem se tornar cada vez mais prejudiciais. Podemos minimizar seus efeitos entendendo suas origens, gatilhos e estratégias de detecção.
Este post explorou o conceito de alucinações e seus possíveis gatilhos. Além disso, apresentamos quatro métodos práticos para detectar alucinações: autoavaliação, métodos baseados em referência, métodos baseados em incerteza e detecção baseada em consistência. Esses métodos atendem a diferentes casos de uso e podem ser combinados para aumentar a precisão da detecção de alucinações.
Comparando diferentes métodos de detecção de alucinações
Implementar essas abordagens garante a implantação responsável de LLMs e outras tecnologias de IA generativa, maximizando seu impacto positivo na sociedade.
Continue lendo

How to Install and Run OpenClaw (Previously Clawdbot/Moltbot) on Mac
Turn your Mac into an AI gateway for WhatsApp, Telegram, Discord, iMessage, and more — in under 5 minutes.

Zilliz Cloud Now Available in AWS Europe (Ireland)
Zilliz Cloud launches in AWS eu-west-1 (Ireland) — bringing low-latency vector search, EU data residency, and full GDPR-ready infrastructure to European AI teams. Now live across 30 regions on five cloud providers.

Vector Databases vs. Document Databases
Use a vector database for similarity search and AI-powered applications; use a document database for flexible schema and JSON-like data storage.


