Décoder les hallucinations des LLM : plongée en profondeur dans les erreurs des modèles de langage
Introduction
Alors que les entreprises et les grandes sociétés technologiques créent de meilleurs produits à l’aide de grands modèles de langage (LLMs), il est important de comprendre leur responsabilité dans la fourniture de solutions fiables. Un problème majeur est que ces modèles produisent parfois des informations présentées avec assurance mais incorrectes, ce qui amène les utilisateurs à croire à tort que le résultat est exact. Ce problème est connu sous le nom d’hallucination.
Morena, Data Scientist, a donné une présentation éclairante sur les hallucinations des LLM lors d’un récent Unstructured Data Meetup organisé par Zilliz, expliquant en profondeur le concept d’hallucinations, les types d’hallucinations, en quoi elles peuvent être nuisibles, pourquoi elles se produisent et, surtout, comment nous pouvons détecter ces hallucinations.
Regarder le replay de la présentation de Morena
Que sont les hallucinations ?
Les hallucinations sont des sorties fausses ou contradictoires générées par toute forme de modèle de langage. En termes simples, du contenu qui est factuellement incorrect, absurde ou infidèle au contexte d’entrée.
Par exemple, posons à Llama3 une question complexe : Quel autre nom les cofondateurs de State Software ont-ils envisagé pour JSON ?
La réponse de Llama3 est présentée ci-dessous :
Réponse de Llama3 à la question d’exemple
Alors que la véritable discussion est quelque peu différente :
La réponse sur la page Wikipédia à propos de JSON
Llama 3-8B présente un exemple classique d’hallucination. Examinons les différents types d’hallucinations qu’un modèle de langage peut produire.
Différents types d’hallucinations
Il existe deux grandes catégories d’hallucinations : les hallucinations intrinsèques et les hallucinations extrinsèques.
Hallucinations intrinsèques
Les hallucinations intrinsèques ont tendance à contredire les informations sources qui leur sont fournies. Imaginez-vous pressé d’essayer de résoudre des questions pour un test de compréhension vaste et complexe. Vous pourriez mal comprendre les informations et répondre incorrectement à certaines questions. De même, les LLM ont tendance à halluciner fréquemment lorsque les données sont très non structurées, comme un vaste corpus de texte.
Hallucinations extrinsèques
Les hallucinations extrinsèques se produisent lorsque les LLM génèrent des informations qui ne peuvent pas être vérifiées par rapport aux données sources fournies, ce qui entraîne souvent des détails inventés. Pour gérer efficacement les hallucinations extrinsèques, invitez le LLM à utiliser uniquement les informations fournies pour accomplir les tâches. Cette approche est particulièrement bénéfique dans les pipelines de génération augmentée par récupération (RAG). Laurie Voss a souligné cette pratique lors d’un Zilliz Unstructured Data Meetup, mettant en évidence son importance pour maintenir l’exactitude.
Ci-dessous se trouve un exemple de prompt pour traiter les hallucinations extrinsèques.
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 exemple d’hallucination intrinsèque vs extrinsèque
Problèmes liés aux hallucinations des LLM
Les hallucinations, qui peuvent au départ sembler inoffensives, voire humoristiques, posent des défis importants lors du déploiement des LLM dans des secteurs comme le droit et la santé. Dans ces secteurs, l’exactitude des informations générées par les modèles d’IA générative est essentielle pour garantir des résultats positifs. Lorsque ces modèles produisent des sorties inexactes, cela peut entraîner de graves conséquences, telles que des décisions juridiques incorrectes ou une prise en charge des patients compromise, mettant potentiellement des vies en danger.
De plus, au-delà de leur impact sur des secteurs spécifiques, les hallucinations générées par les LLM peuvent avoir des implications sociétales considérables. Elles sapent la confiance dans les sources d’information fiables et contribuent à une confusion et à une méfiance généralisées au sein du public. Cette érosion de la confiance peut être particulièrement dommageable lors d’événements critiques comme les élections.
Par exemple, pendant les périodes électorales, la désinformation diffusée par les LLM au sujet des candidats, des procédures de vote ou des résultats électoraux peut influencer de manière significative les processus démocratiques. De fausses informations peuvent induire les électeurs en erreur quant au lieu et au moment où voter, ce qui peut potentiellement réduire la participation électorale et affecter les résultats des élections. En outre, la désinformation peut exacerber les tensions, entraînant des troubles sociaux, voire de la violence, comme on l’a vu dans des situations où des allégations infondées de fraude électorale ont déclenché des manifestations et des affrontements.
Pourquoi les LLM hallucinent-ils ?
Les LLM n’ont pas de concept de vérité terrain ; leurs sorties sont déterminées par des opérations mathématiques complexes comme les multiplications de matrices et les fonctions softmax, qui calculent les probabilités de chaque token dans une séquence en fonction des tokens précédents. Ces probabilités dictent la séquence générée par le LLM, mais qu’est-ce qui influence ces probabilités ?
Probabilités des tokens pour une chaîne donnée
Informations contradictoires ou fausses dans les données d’entraînement
Les modèles de fondation sont entraînés sur d’immenses quantités de données non structurées, notamment des pages Wikipedia, des subreddits, des tweets, des fils Stack Overflow et MathOverflow, des dépôts GitHub et de nombreuses autres sources Internet. Cet entraînement ne vise pas à garantir que le modèle produise des sorties pertinentes dès le départ ; il construit plutôt des connaissances fondamentales stockées sous forme de tenseurs et génère des sorties cohérentes.
Cependant, toutes les données trouvées sur Internet ne sont pas exactes. La désinformation et les contenus trompeurs, comme ceux provenant de certains subreddits ou tweets, peuvent influencer le modèle pendant l’entraînement. Ce problème peut entraîner des incohérences dans les poids du modèle et produire des distributions de probabilités déformées, provoquant finalement des hallucinations dans ses sorties.
Complexité des tâches
La nature des tâches influence également la propension d’un LLM à produire des sorties fausses ou absurdes. Les tâches simples, comme répondre à des questions directes, sont moins susceptibles d’entraîner des hallucinations. Cependant, les LLM peuvent rencontrer des difficultés et produire des sorties hautement absurdes lorsqu’ils sont confrontés à des tâches plus complexes, telles que résumer de longs passages de texte ou analyser des données tabulaires fournies au format markdown.
Tâche simple vs. complexe
Détecter les hallucinations
Plusieurs méthodologies sont utilisées pour détecter les hallucinations des LLM : l’auto-évaluation, la détection basée sur des références, la détection basée sur l’incertitude et la détection basée sur la cohérence. Explorons certaines de ces méthodologies en détail.
Méthodes de détection des hallucinations
Auto-évaluation
L’auto-évaluation est un processus par lequel le LLM évalue ses propres sorties, ce qui peut sembler contre-intuitif au premier abord, étant donné que les hallucinations proviennent souvent de l’intérieur même du modèle. Cependant, cette méthode reste précieuse, car évaluer la qualité d’une réponse est intrinsèquement plus facile que de générer la réponse elle-même. Les tâches plus simples, comme l’évaluation des réponses, sont moins sujettes aux hallucinations que les tâches plus complexes, telles que la génération de réponses à des requêtes complexes. Cela s’explique par le fait que la capacité du LLM à évaluer l’exactitude et la cohérence d’une réponse est moins exigeante que sa capacité à générer avec précision des informations entièrement nouvelles.
De plus, l’intégration de l’auto-évaluation à d’autres méthodes de détection, telles que les approches fondées sur des références ou sur la cohérence, renforce la capacité du LLM à évaluer ses sorties de manière exhaustive. Cette approche combinée renforce la capacité du modèle à identifier et à atténuer efficacement les hallucinations potentielles, améliorant ainsi la fiabilité et la crédibilité globales du contenu généré.
Un flux de travail de base pour l’évaluation des LLM par eux-mêmes
Méthodes fondées sur les références
La méthodologie fondée sur les références évalue la cohérence des sorties générées par rapport aux références fournies, ce qui la rend particulièrement utile dans les environnements de production utilisant la génération augmentée par récupération (RAG) et pour des tâches comme le résumé.
Fournir des connaissances sources comme références permet au LLM de générer des sorties étroitement alignées sur les références données. Prenons la tâche consistant à résumer une page Wikipédia sur Paris. En utilisant des méthodes fondées sur les références, le LLM peut générer des résumés évalués par rapport au contenu original afin de garantir l’exactitude et la cohérence.
Des métriques de performance telles que BERTScore ou ROUGEScore sont couramment utilisées pour évaluer les performances des LLM sur des tâches spécifiques. Elles fournissent des mesures quantitatives de la correspondance entre les sorties générées et les références. De plus, l’intégration de couches d’auto-évaluation renforce davantage la fiabilité et l’efficacité des méthodes d’évaluation fondées sur les références.
Un flux de travail systématique pour la récupération fondée sur le contexte
Méthodes fondées sur l’incertitude
Vous vous souvenez de la façon dont nous avons précédemment observé des LLM produire avec assurance des sorties incorrectes ? Eh bien, sous la surface, ce n’est pas toujours le cas lorsqu’il s’agit d’hallucinations. Les hallucinations peuvent survenir en raison de distributions de probabilité incertaines où un jeton est classé légèrement plus haut que le « meilleur » jeton de vérité terrain, ce qui conduit à une génération erronée des sorties.
Pour analyser les probabilités des jetons, vous pouvez exploiter les méthodes de classe de Hugging Face. Ces méthodes vous permettent d’examiner les probabilités associées à la génération de jetons, fournissant des informations sur la manière dont le modèle prend des décisions et identifiant potentiellement les cas où des hallucinations se produisent.
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%}")
# Sortie attendue :
#| 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%
Vous pouvez essayer cette méthode avec des modèles à code source fermé comme 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)
La sortie pour logprobs ressemble au JSON ci-dessous.
{
"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
}
Détection basée sur la cohérence
La détection basée sur la cohérence est une méthode simple mais efficace pour identifier les hallucinations des LLM. Cette approche consiste à interroger le LLM avec la même question plusieurs fois et à comparer ses réponses. Des sorties cohérentes entre les requêtes répétées indiquent une probabilité plus faible d’hallucinations, tandis que des réponses incohérentes suggèrent des problèmes potentiels.
Voici un exemple que Morena a partagé pendant son intervention, où il a posé à plusieurs reprises trois questions au 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?"
Configuration des 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)
Dans cet exemple, interroger au sujet de Cristiano Ronaldo, dont les informations sont ancrées dans les données d’entraînement du LLM, tend à produire des sorties cohérentes avec des risques minimaux d’hallucination. Cette cohérence démontre la fiabilité du modèle dans la génération de réponses exactes pour des sujets bien établis.
La réponse générée par le LLM au sujet de Cristiano Ronaldo
Cependant, le cas est différent pour les passages de Seinfeld, car Kramer n’a jamais acheté de « chapeau géant ».
La réponse générée par le LLM à propos de Giant Hat
Conclusion
Alors que de plus en plus d’entreprises utilisent de grands modèles de langage (LLM) pour des applications en production, il est essentiel de relever leurs défis de manière cohérente. Les hallucinations, si elles ne sont pas maîtrisées, peuvent devenir de plus en plus préjudiciables. Nous pouvons minimiser leurs effets en comprenant leurs origines, leurs déclencheurs et les stratégies de détection.
Cet article a exploré le concept d’hallucinations et leurs déclencheurs potentiels. De plus, nous avons présenté quatre méthodes pratiques pour détecter les hallucinations : l’auto-évaluation, les méthodes fondées sur des références, les méthodes fondées sur l’incertitude et la détection fondée sur la cohérence. Ces méthodes répondent à différents cas d’utilisation et peuvent être combinées pour améliorer la précision de la détection des hallucinations.
Comparaison de différentes méthodes de détection des hallucinations
La mise en œuvre de ces approches garantit le déploiement responsable des LLM et d’autres technologies d’IA générative, maximisant leur impact positif sur la société.
Continuer à lire

Introducing Zilliz Cloud Global Cluster: Region-Level Resilience for Mission-Critical AI
Zilliz Cloud Global Cluster delivers multi-region resilience, automatic failover, and fast global AI search with built-in security and compliance.

Milvus WebUI: A Visual Management Tool for Your Vector Database
Explore Milvus WebUI to monitor, manage, and optimize your vector database with real-time insights, performance tracking, and system health monitoring.

Introducing DeepSearcher: A Local Open Source Deep Research
In contrast to OpenAI’s Deep Research, this example ran locally, using only open-source models and tools like Milvus and LangChain.


