Decodificare le allucinazioni degli LLM: un'analisi approfondita degli errori dei modelli linguistici
Introduzione
Man mano che le aziende e le grandi società tecnologiche creano prodotti migliori utilizzando grandi modelli linguistici (LLM), è importante comprenderne la responsabilità nel fornire soluzioni affidabili. Un problema significativo è che questi modelli a volte producono informazioni espresse con sicurezza ma errate, portando gli utenti a credere erroneamente che l’output sia accurato. Questo problema è noto come allucinazione.
Morena, Data Scientist, ha tenuto una presentazione illuminante sulle allucinazioni degli LLM in un recente Unstructured Data Meetup ospitato da Zilliz, spiegando in profondità il concetto di allucinazioni, i tipi di allucinazioni, come possono essere dannose, perché si verificano e, soprattutto, come possiamo rilevare queste allucinazioni.
Guarda la registrazione dell’intervento di Morena
Cosa sono le allucinazioni?
Le allucinazioni sono output falsi o contraddittori generati da qualsiasi forma di modello linguistico. In parole semplici, contenuto fattualmente errato, privo di senso o non fedele al contesto di input.
Ad esempio, poniamo a Llama3 una domanda complessa: Quale altro nome discussero i cofondatori di State Software per JSON?
La risposta di Llama3 è mostrata di seguito:
La risposta di Llama3 alla domanda di esempio
Mentre la discussione effettiva è leggermente diversa:
La risposta nella pagina Wikipedia su JSON
Llama 3-8B mostra un esempio classico di allucinazione. Esaminiamo i diversi tipi di allucinazioni che un modello linguistico può produrre.
Diversi tipi di allucinazioni
Esistono due principali categorie di allucinazioni: allucinazioni intrinseche e allucinazioni estrinseche.
Allucinazioni intrinseche
Le allucinazioni intrinseche tendono a contraddire le informazioni di origine fornite loro. Immagina di essere di fretta mentre cerchi di risolvere le domande di un enorme e complesso test di comprensione. Potresti interpretare male le informazioni e rispondere in modo errato ad alcune domande. Allo stesso modo, gli LLM tendono ad allucinare frequentemente quando i dati sono altamente non strutturati, come un corpus testuale esteso.
Allucinazioni estrinseche
Le allucinazioni estrinseche si verificano quando gli LLM generano informazioni che non possono essere verificate rispetto ai dati di origine forniti, spesso producendo dettagli inventati. Per gestire efficacemente le allucinazioni estrinseche, invita l’LLM a utilizzare solo le informazioni fornite per completare i compiti. Questo approccio è particolarmente vantaggioso nelle pipeline di Retrieval-Augmented Generation (RAG). Laurie Voss ha enfatizzato questa pratica durante uno Zilliz Unstructured Data Meetup, sottolineandone l’importanza nel mantenere l’accuratezza.
Di seguito è riportato un esempio di prompt per affrontare le allucinazioni estrinseche.
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 esempio di allucinazione intrinseca vs. estrinseca
Problemi con le allucinazioni degli LLM
Le allucinazioni, che inizialmente possono sembrare innocue o persino umoristiche, pongono sfide significative quando si implementano gli LLM in settori come il diritto e la sanità. In questi settori, l’accuratezza delle informazioni generate dai modelli di IA generativa è fondamentale per garantire risultati positivi. Quando questi modelli producono output inaccurati, ciò può portare a gravi conseguenze come decisioni legali errate o un’assistenza ai pazienti compromessa, mettendo potenzialmente in pericolo delle vite.
Inoltre, al di là del loro impatto su settori specifici, le allucinazioni generate dagli LLM possono avere implicazioni sociali di vasta portata. Minano la fiducia nelle fonti di informazione affidabili e contribuiscono a una diffusa confusione e sfiducia tra il pubblico. Questa erosione della fiducia può essere particolarmente dannosa durante eventi critici come le elezioni.
Ad esempio, durante i periodi elettorali, la disinformazione diffusa dagli LLM su candidati, procedure di voto o risultati elettorali può influenzare significativamente i processi democratici. Informazioni false possono indurre in errore gli elettori su dove e quando votare, potenzialmente riducendo l’affluenza alle urne e influenzando gli esiti elettorali. Inoltre, la disinformazione può aumentare le tensioni, portando a disordini sociali e persino violenza, come osservato in situazioni in cui accuse infondate di frode elettorale hanno scatenato proteste e scontri.
Perché gli LLM hanno allucinazioni?
Gli LLM non possiedono un concetto di verità di riferimento; i loro output sono determinati da complesse operazioni matematiche come moltiplicazioni di matrici e funzioni softmax, che calcolano le probabilità per ciascun token in una sequenza sulla base dei token precedenti. Queste probabilità determinano la sequenza generata dall’LLM, ma cosa influenza queste probabilità?
Probabilità dei token per una determinata stringa
Informazioni Contraddittorie o False nei Dati di Addestramento
I modelli di base vengono addestrati su enormi quantità di dati non strutturati, tra cui pagine di Wikipedia, subreddit, tweet, thread di Stack Overflow e MathOverflow, repository GitHub e numerose altre fonti Internet. Questo addestramento non mira a garantire che il modello produca output significativi fin dall’inizio; piuttosto, costruisce una conoscenza di base memorizzata come tensori e genera output coerenti.
Tuttavia, non tutti i dati presenti su Internet sono accurati. La disinformazione e i contenuti fuorvianti, come quelli provenienti da specifici subreddit o tweet, possono influenzare il modello durante l’addestramento. Questo problema può portare a incoerenze nei pesi del modello e generare distribuzioni di probabilità distorte, causando in ultima analisi allucinazioni nei suoi output.
Complessità dei Compiti
La natura dei compiti influenza anche la probabilità che un LLM produca output falsi o privi di senso. Compiti semplici, come rispondere a domande dirette, hanno meno probabilità di provocare allucinazioni. Tuttavia, gli LLM possono incontrare difficoltà e produrre output altamente privi di senso quando affrontano compiti più complessi, come riassumere lunghi passaggi di testo o analizzare dati tabulari forniti in formato markdown.
Compito Semplice vs. Complesso
Rilevare le Allucinazioni
Per rilevare le allucinazioni degli LLM vengono utilizzate diverse metodologie: autovalutazione, rilevamento basato su riferimenti, rilevamento basato sull’incertezza e rilevamento basato sulla coerenza. Esploriamo alcune di queste metodologie in dettaglio.
Metodi di rilevamento delle allucinazioni
Autovalutazione
L'autovalutazione è un processo in cui il LLM valuta i propri output, cosa che inizialmente può sembrare controintuitiva, dato che le allucinazioni spesso hanno origine internamente all'interno del modello. Tuttavia, questo metodo rimane prezioso perché valutare la qualità di una risposta è intrinsecamente più facile che generare la risposta stessa. I compiti più semplici, come la valutazione delle risposte, sono meno inclini alle allucinazioni rispetto a compiti più complessi, come la generazione di risposte a query intricate. Questo perché la capacità del LLM di giudicare la correttezza e la coerenza di una risposta è meno impegnativa della sua capacità di generare informazioni completamente nuove in modo accurato.
Inoltre, integrare l'autovalutazione con altri metodi di rilevamento, come approcci basati su riferimenti o sulla coerenza, migliora la capacità del LLM di valutare i propri output in modo completo. Questo approccio combinato rafforza la capacità del modello di identificare e mitigare efficacemente potenziali allucinazioni, migliorando così l'affidabilità e la credibilità complessive del contenuto generato.
Un workflow di base per la valutazione di se stessi da parte dei LLM
Metodi basati su riferimenti
La metodologia basata su riferimenti valuta la coerenza degli output generati rispetto ai riferimenti forniti, rendendola particolarmente utile negli ambienti di produzione che utilizzano Retrieval Augmented Generation (RAG) e in compiti come la sintesi.
Fornire la conoscenza sorgente come riferimenti consente al LLM di generare output che si allineano strettamente ai riferimenti forniti. Considera il compito di riassumere una pagina Wikipedia su Parigi. Utilizzando metodi basati su riferimenti, il LLM può generare riassunti valutati rispetto al contenuto originale per garantire accuratezza e coerenza.
Metriche di performance come BERTScore o ROUGEScore sono comunemente utilizzate per valutare le prestazioni dei LLM su compiti specifici. Forniscono misure quantitative di quanto bene gli output generati corrispondano ai riferimenti. Inoltre, l'integrazione di livelli di autovalutazione migliora ulteriormente l'affidabilità e l'efficacia dei metodi di valutazione basati su riferimenti.
Un workflow sistematico per il recupero basato sul contesto
Metodi basati sull'incertezza
Ricordi come abbiamo osservato in precedenza i LLM produrre con sicurezza output errati? Ebbene, sotto la superficie, non è sempre così quando si tratta di allucinazioni. Le allucinazioni possono verificarsi a causa di distribuzioni di probabilità incerte in cui un token è classificato leggermente più in alto rispetto al token di verità di base "migliore", portando a una generazione difettosa degli output.
Per analizzare le probabilità dei token, puoi sfruttare i metodi di classe di Hugging Face. Questi metodi ti consentono di esaminare le probabilità associate alla generazione dei token, fornendo informazioni su come il modello prende decisioni e identificando potenzialmente casi in cui si verificano allucinazioni.
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 | stringa token | logits | probabilità
print(f"| {tok:5d} | {tokenizer.decode(tok):8s} | {score.numpy():.4f} | {np.exp(score.numpy()):.2%}")
# Output previsto:
#| 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%
Puoi provare questo metodo con modelli closed-source come gpt-4 tramite 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)
L'output per logprobs è simile al JSON qui sotto.
{
"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
}
Rilevamento basato sulla coerenza
Il rilevamento basato sulla coerenza è un metodo semplice ma efficace per identificare le allucinazioni degli LLM. Questo approccio consiste nell'interrogare l'LLM con la stessa domanda più volte e nel confrontare le sue risposte. Output coerenti in query ripetute indicano una minore probabilità di allucinazioni, mentre risposte incoerenti suggeriscono potenziali problemi.
Di seguito è riportato un esempio condiviso da Morena durante il suo intervento, in cui ha posto ripetutamente all'LLM tre domande.
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?"
Impostazione dei prompt:
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)
In questo esempio, interrogare su Cristiano Ronaldo, le cui informazioni sono radicate nei dati di addestramento dell'LLM, tende a produrre output coerenti con rischi minimi di allucinazione. Questa coerenza dimostra l'affidabilità del modello nel generare risposte accurate per argomenti ben consolidati.
La risposta generata dall'LLM su Cristiano Ronaldo
Tuttavia, il caso è diverso per i passaggi su Seinfeld, poiché Kramer non ha mai comprato un “Cappello Gigante.”
La risposta generata dall'LLM su Giant Hat
Conclusione
Poiché sempre più aziende utilizzano i modelli linguistici di grandi dimensioni (LLM) per applicazioni in produzione, è fondamentale affrontare costantemente le loro sfide. Le allucinazioni, se lasciate incontrollate, possono diventare sempre più dannose. Possiamo minimizzarne gli effetti comprendendone le origini, i fattori scatenanti e le strategie di rilevamento.
Questo post ha esplorato il concetto di allucinazioni e i loro potenziali fattori scatenanti. Inoltre, abbiamo introdotto quattro metodi pratici per rilevare le allucinazioni: autovalutazione, metodi basati su riferimenti, metodi basati sull'incertezza e rilevamento basato sulla coerenza. Questi metodi si adattano a diversi casi d'uso e possono essere combinati per migliorare la precisione del rilevamento delle allucinazioni.
Confronto tra diversi metodi di rilevamento delle allucinazioni
L'implementazione di questi approcci garantisce la distribuzione responsabile degli LLM e di altre tecnologie di IA generativa, massimizzando il loro impatto positivo sulla società.
Continua a leggere

We spent 8 years making vector databases faster. Then we stopped.
Rarely queried embeddings still need to stay searchable. See how Vector Lakebase enables on-demand vector search without always-on compute costs.

Demystifying the Milvus Sizing Tool
Explore how to use the Sizing Tool to select the optimal configuration for your Milvus deployment.

DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding
Explore DeepSeek-VL2, the open-source MoE vision-language model. Discover its architecture, efficient training pipeline, and top-tier performance.


