Decodificando las alucinaciones de los LLM: una inmersión profunda en los errores de los modelos de lenguaje
Introducción
A medida que las empresas y las grandes compañías tecnológicas crean mejores productos utilizando grandes modelos de lenguaje (LLMs), es importante comprender su responsabilidad al ofrecer soluciones fiables. Un problema significativo es que estos modelos a veces producen información segura pero incorrecta, lo que lleva a los usuarios a creer erróneamente que el resultado es preciso. Este problema se conoce como alucinación.
Morena, una científica de datos, ofreció una presentación reveladora sobre las alucinaciones de los LLM en un reciente Unstructured Data Meetup organizado por Zilliz, explicando en profundidad el concepto de alucinaciones, los tipos de alucinaciones, cómo pueden ser perjudiciales, por qué ocurren y, lo más importante, cómo podemos detectar estas alucinaciones.
Mira la repetición de la charla de Morena
¿Qué son las alucinaciones?
Las alucinaciones son resultados falsos o contradictorios generados por cualquier forma de modelo de lenguaje. En pocas palabras, contenido que es factualmente incorrecto, absurdo o infiel al contexto de entrada.
Por ejemplo, hagámosle a Llama3 una pregunta compleja: ¿Qué otro nombre discutieron los cofundadores de State Software para JSON?
La respuesta de Llama3 se muestra a continuación:
Respuesta de Llama3 a la pregunta de ejemplo
Mientras que la discusión real es algo diferente:
La respuesta en la página de Wikipedia sobre JSON
Llama 3-8B muestra un ejemplo clásico de alucinación. Examinemos los diferentes tipos de alucinaciones que puede dar un modelo de lenguaje.
Diferentes tipos de alucinaciones
Hay dos categorías principales de alucinaciones: alucinaciones intrínsecas y alucinaciones extrínsecas.
Alucinaciones intrínsecas
Las alucinaciones intrínsecas tienden a contrastar con la información fuente que se les proporciona. Imagínate con prisa intentando resolver preguntas para una prueba de comprensión enorme y compleja. Podrías entender mal la información y responder algunas preguntas incorrectamente. De manera similar, los LLM tienden a alucinar con frecuencia cuando los datos están muy poco estructurados, como un extenso corpus de texto.
Alucinaciones extrínsecas
Las alucinaciones extrínsecas ocurren cuando los LLM generan información que no puede verificarse con los datos fuente proporcionados, lo que a menudo da como resultado detalles inventados. Para gestionar eficazmente las alucinaciones extrínsecas, indica al LLM que use únicamente la información dada para completar las tareas. Este enfoque es especialmente beneficioso en canalizaciones de generación aumentada por recuperación (RAG). Laurie Voss enfatizó esta práctica durante un Zilliz Unstructured Data Meetup, destacando su importancia para mantener la precisión.
A continuación se muestra un ejemplo de prompt para abordar las alucinaciones 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}"""
Un ejemplo de alucinación intrínseca vs. extrínseca
Problemas con las alucinaciones de los LLM
Las alucinaciones, que inicialmente pueden parecer inofensivas o incluso humorísticas, plantean desafíos significativos al implementar LLMs en industrias como el derecho y la atención médica. En estos sectores, la precisión de la información generada por modelos de IA generativa es fundamental para garantizar resultados positivos. Cuando estos modelos producen salidas inexactas, pueden provocar consecuencias graves, como decisiones legales incorrectas o atención al paciente comprometida, lo que potencialmente pone vidas en peligro.
Además, más allá de su impacto en industrias específicas, las alucinaciones generadas por LLMs pueden tener implicaciones sociales de gran alcance. Socavan la confianza en las fuentes de información fiables y contribuyen a una confusión y desconfianza generalizadas entre el público. Esta erosión de la confianza puede ser particularmente perjudicial durante eventos críticos como las elecciones.
Por ejemplo, durante los períodos electorales, la desinformación difundida por LLMs sobre candidatos, procedimientos de votación o resultados electorales puede influir significativamente en los procesos democráticos. La información falsa puede engañar a los votantes sobre dónde y cuándo votar, suprimiendo potencialmente la participación electoral y afectando los resultados de las elecciones. Además, la desinformación puede aumentar las tensiones, provocando disturbios sociales e incluso violencia, como se ha visto en situaciones en las que afirmaciones infundadas de fraude electoral han desencadenado protestas y confrontaciones.
¿Por qué los LLMs alucinan?
Los LLMs carecen de un concepto de verdad fundamental; sus salidas están determinadas por operaciones matemáticas complejas como multiplicaciones de matrices y funciones softmax, que calculan probabilidades para cada token en una secuencia basándose en los tokens precedentes. Estas probabilidades dictan la secuencia generada por el LLM, pero ¿qué influye en estas probabilidades?
Probabilidades de tokens para una cadena dada
Información contradictoria o falsa en los datos de entrenamiento
Los modelos fundacionales se entrenan con enormes cantidades de datos no estructurados, incluidas páginas de Wikipedia, subreddits, tweets, hilos de Stack Overflow y MathOverflow, repositorios de GitHub y numerosas otras fuentes de internet. Este entrenamiento no pretende garantizar que el modelo produzca salidas significativas desde el principio; en cambio, construye conocimiento fundamental almacenado como tensores y genera salidas coherentes.
Sin embargo, no todos los datos que se encuentran en internet son precisos. La desinformación y el contenido engañoso, como el proveniente de subreddits o tweets específicos, pueden influir en el modelo durante el entrenamiento. Este problema puede provocar inconsistencias en los pesos del modelo y dar lugar a distribuciones de probabilidad distorsionadas, causando finalmente alucinaciones en sus salidas.
Complejidad de las tareas
La naturaleza de las tareas también influye en si un LLM es propenso a producir salidas falsas o sin sentido. Las tareas simples, como responder preguntas directas, tienen menos probabilidades de dar lugar a alucinaciones. Sin embargo, los LLMs pueden tener dificultades y producir salidas muy carentes de sentido cuando se enfrentan a tareas más complejas, como resumir pasajes de texto extensos o analizar datos tabulares proporcionados en formato markdown.
Tarea simple frente a compleja
Detección de alucinaciones
Se utilizan varias metodologías para detectar alucinaciones en LLMs: autoevaluación, detección basada en referencias, detección basada en incertidumbre y detección basada en consistencia. Exploremos algunas de estas metodologías en detalle.
Métodos de detección de alucinaciones
Autoevaluación
La autoevaluación es un proceso en el que el LLM evalúa sus resultados, lo que inicialmente puede parecer contraintuitivo, dado que las alucinaciones a menudo se originan internamente dentro del modelo. Sin embargo, este método sigue siendo valioso porque evaluar la calidad de una respuesta es inherentemente más fácil que generar la respuesta en sí. Las tareas más simples, como la evaluación de respuestas, son menos propensas a las alucinaciones que las tareas más complejas, como la generación de respuestas a consultas intrincadas. Esto se debe a que la capacidad del LLM para medir la corrección y coherencia de una respuesta es menos desafiante que su capacidad para generar información completamente nueva con precisión.
Además, integrar la autoevaluación con otros métodos de detección, como enfoques basados en referencias o en consistencia, mejora la capacidad del LLM para evaluar sus resultados de manera integral. Este enfoque combinado fortalece la capacidad del modelo para identificar y mitigar eficazmente posibles alucinaciones, mejorando así la fiabilidad y credibilidad generales del contenido generado.
Un flujo de trabajo básico para que los LLM se evalúen a sí mismos
Métodos basados en referencias
La metodología basada en referencias evalúa la consistencia de los resultados generados frente a referencias proporcionadas, lo que la hace particularmente útil en entornos de producción que utilizan Retrieval Augmented Generation (RAG) y tareas como la resumición.
Proporcionar conocimiento fuente como referencias permite al LLM generar resultados que se alinean estrechamente con las referencias dadas. Considera la tarea de resumir una página de Wikipedia sobre París. Usando métodos basados en referencias, el LLM puede generar resúmenes evaluados frente al contenido original para garantizar precisión y coherencia.
Las métricas de rendimiento como BERTScore o ROUGEScore se utilizan comúnmente para evaluar el rendimiento de los LLM en tareas específicas. Proporcionan medidas cuantitativas de qué tan bien los resultados generados coinciden con las referencias. Además, incorporar capas de autoevaluación mejora aún más la fiabilidad y efectividad de los métodos de evaluación basados en referencias.
Un flujo de trabajo sistemático para la recuperación basada en contexto
Métodos basados en incertidumbre
¿Recuerdas cómo observamos anteriormente que los LLM producían con confianza resultados incorrectos? Bueno, bajo la superficie, este no siempre es el caso cuando se trata de alucinaciones. Las alucinaciones pueden ocurrir debido a distribuciones de probabilidad inciertas donde un token se clasifica ligeramente por encima del "mejor" token de verdad fundamental, lo que conduce a una generación defectuosa de resultados.
Para analizar las probabilidades de los tokens, puedes aprovechar los métodos de clase de Hugging Face. Estos métodos te permiten examinar las probabilidades asociadas con la generación de tokens, proporcionando información sobre cómo el modelo toma decisiones e identificando potencialmente instancias en las que ocurren alucinaciones.
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%
Puedes probar este método con modelos de código cerrado como gpt-4 mediante 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)
La salida de logprobs es como el JSON de abajo.
{
"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
}
Detección basada en la consistencia
La detección basada en la consistencia es un método sencillo pero eficaz para identificar alucinaciones de los LLM. Este enfoque implica consultar al LLM con la misma pregunta varias veces y comparar sus respuestas. Las salidas consistentes en consultas repetidas indican una menor probabilidad de alucinaciones, mientras que las respuestas inconsistentes sugieren posibles problemas.
A continuación se muestra un ejemplo que Morena compartió durante su charla, en el que hizo repetidamente tres preguntas al 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?"
Configuración de los 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)
En este ejemplo, consultar sobre Cristiano Ronaldo, cuya información está arraigada en los datos de entrenamiento del LLM, tiende a producir salidas consistentes con riesgos mínimos de alucinación. Esta consistencia demuestra la fiabilidad del modelo para generar respuestas precisas sobre temas bien establecidos.
La respuesta generada por el LLM sobre Cristiano Ronaldo
Sin embargo, el caso es diferente para los pasajes de Seinfeld, ya que Kramer nunca compró un “Sombrero gigante.”
La respuesta generada por el LLM sobre Giant Hat
Conclusión
A medida que más empresas utilizan modelos de lenguaje grandes (LLM) para aplicaciones de producción, es vital abordar de manera constante sus desafíos. Las alucinaciones, si no se controlan, pueden volverse cada vez más perjudiciales. Podemos minimizar sus efectos comprendiendo sus orígenes, desencadenantes y estrategias de detección.
Esta publicación ha explorado el concepto de alucinaciones y sus posibles desencadenantes. Además, presentamos cuatro métodos prácticos para detectar alucinaciones: autoevaluación, métodos basados en referencias, métodos basados en incertidumbre y detección basada en consistencia. Estos métodos se adaptan a diferentes casos de uso y pueden combinarse para mejorar la precisión de la detección de alucinaciones.
Comparación de diferentes métodos de detección de alucinaciones
Implementar estos enfoques garantiza el despliegue responsable de los LLM y otras tecnologías de IA generativa, maximizando su impacto positivo en la sociedad.
Sigue leyendo

Milvus 2.6.x Now Generally Available on Zilliz Cloud, Making Vector Search Faster, Smarter, and More Cost-Efficient for Production AI
Milvus 2.6.x is now GA on Zilliz Cloud, delivering faster vector search, smarter hybrid queries, and lower costs for production RAG and AI applications.

Zilliz Cloud Audit Logs Goes GA: Security, Compliance, and Transparency at Scale
Zilliz Cloud Audit Logs are now GA, giving enterprises real-time visibility, compliance-ready trails, and stronger security across AWS, GCP, and Azure.

The Great AI Agent Protocol Race: Function Calling vs. MCP vs. A2A
Compare Function Calling, MCP, and A2A protocols for AI agents. Learn which standard best fits your development needs and future-proof your applications.


