Comprendere e mitigare le allucinazioni LLM

Capire e alleviare le allucinazioni LLM

Sfide nella rilevazione delle allucinazioni LLM e una possibile soluzione presentata in un articolo di ricerca di spicco

Immagine di Enrique da Pixabay

Recentemente, i grandi modelli di linguaggio (LLM) hanno dimostrato capacità impressionanti e in aumento, tra cui la generazione di risposte altamente fluide e convincenti agli input degli utenti. Tuttavia, i LLM sono noti per la loro capacità di generare affermazioni non fattuali o prive di senso, più comunemente note come “allucinazioni”. Questa caratteristica può compromettere la fiducia in molti scenari in cui è richiesta la verità dei fatti, come compiti di sintesi, risposte generative alle domande e generazione di dialoghi.

La rilevazione delle allucinazioni è sempre stata una sfida tra gli esseri umani, il che rimane vero nel contesto dei LLM. Questo è particolarmente difficile, considerando che di solito non abbiamo accesso al contesto di verità fondamentale per i controlli di coerenza. Informazioni aggiuntive sulle generazioni del LLM, come le distribuzioni di probabilità dei risultati, possono aiutare in questo compito. Tuttavia, spesso accade che questo tipo di informazione non sia disponibile, rendendo il compito ancora più difficile.

La rilevazione delle allucinazioni deve ancora essere risolta ed è un’area attiva di ricerca. In questo post del blog, presenteremo il compito in generale, le sue sfide e un possibile approccio pubblicato nel documento di ricerca SELFCHECKGPT: Rilevazione delle allucinazioni black-box senza risorse per i grandi modelli di linguaggio generativi[1]. Illustreremo alcuni degli approcci presentati nel documento con esempi reali, evidenziando i pro e i contro di ciascun metodo. Puoi rivedere gli esempi tu stesso accedendo a questo Notebook Google Colab.

Questo blog coprirà:

  • Cosa sono le allucinazioni LLM
  • L’approccio: SelfCheckGPT
  • Controllo di coerenza 1. BERTScore 2. Inferenza del linguaggio naturale 3. Input LLM
  • Esperimenti
  • Conclusioni
  • Riferimenti

Cosa sono le allucinazioni LLM

Nella generazione di linguaggio naturale, l’allucinazione può essere definita come “contenuto generato che è privo di senso o non fedele al contenuto di origine fornito”[2]. Il contenuto di origine può rappresentare funzioni diverse per compiti diversi. Ad esempio, per i compiti di sintesi, la fonte è il testo di input da riassumere, mentre per i compiti di risposta generativa alle domande, la fonte è considerata la conoscenza del mondo[2]. Concentriamoci sul compito di risposta alle domande e vediamo un esempio di una domanda dell’utente e la risposta data dal modello GPT di OpenAI (text-davinci-003):

Input dell’utente: Chi era Philip Hayworth?

Risposta del LLM: Philip Hayworth era un avvocato inglese e politico che ha servito come membro del Parlamento per Thetford dal 1859 al 1868.

Ad una prima occhiata, sembra una risposta coerente, ma dopo un po’ potremmo farci una domanda molto ragionevole: è vero?

Tuttavia, non abbiamo molte informazioni per rispondere alla nostra nuova domanda. Non abbiamo un contesto con fatti provati che possiamo usare per verificare l’affermazione. I LLM sono tipicamente addestrati su un enorme corpus di testi ed è difficile verificare se l’affermazione si basa su una particolare fonte di informazioni. Una rapida ricerca su Google non mostra risultati per una persona che corrisponde alla risposta. Non è ancora ben stabilito cosa costituisca un’allucinazione, ma questo esempio potrebbe essere comprensibilmente considerato un’allucinazione perché il soggetto con questo nome, luogo e impiego potrebbe non essere mai esistito.

Proviamo di nuovo con un’altra domanda:

Input dell’utente: Chi è Bill Gates?

Risposta del LLM: Bill Gates è un imprenditore nel campo della tecnologia, investitore e filantropo. È il co-fondatore della Microsoft Corporation e è una delle persone più ricche del mondo.

Ok, queste affermazioni sono molto più facili da verificare e sono supportate da una rapida verifica su Wikipedia, quindi è improbabile che sia un’allucinazione. Durante l’addestramento, è molto probabile che l’LLM abbia visto molte affermazioni su Bill Gates, quindi i seguenti token dopo “Bill Gates è _” probabilmente verranno generati con grande sicurezza. D’altra parte, l’LLM potrebbe non essere sicuro su quali parole utilizzare dopo “Philip Hayworth è _”. Questa intuizione ci permette di collegare l’incertezza con la fattualità, poiché le frasi fattuali probabilmente conterranno token predetti con una probabilità più alta rispetto alle frasi allucinate. Tuttavia, potremmo non avere la distribuzione di probabilità di output a disposizione per un buon numero di casi.

L’esempio e il contenuto della sessione attuale si basavano sul paper originale [1], e continueremo ad esplorare l’approccio del paper nelle sezioni seguenti.

L’Approccio: SelfCheckGPT

Nella scorsa sezione, abbiamo considerato due importanti considerazioni per il nostro approccio: l’accesso a un contesto esterno e l’accesso alla distribuzione di probabilità dei risultati dell’LLM. Quando un metodo non richiede un contesto esterno o un database per eseguire il controllo di coerenza, possiamo chiamarlo un metodo zero-resource. Allo stesso modo, quando un metodo richiede solo il testo generato dall’LLM, può essere chiamato un metodo black-box.

L’approccio di cui vogliamo parlare in questo post del blog è un metodo di rilevamento delle allucinazioni a zero risorse e a scatola nera, basato sulla premessa che le risposte campionate alla stessa domanda probabilmente divergeranno e si contraddiranno tra loro per i fatti allucinati, e probabilmente saranno simili e coerenti tra loro per le affermazioni factuali.

Rivediamo gli esempi precedenti. Per applicare il metodo di rilevamento, abbiamo bisogno di più campioni, quindi chiediamo all’LLM la stessa domanda altre tre volte:

Tabella dell'autore

In effetti, le risposte si contraddicono tra loro – a volte, Philip Hayworth è un politico britannico, in altre risposte è un ingegnere australiano o un avvocato americano, che hanno tutti vissuto e agito in periodi diversi.

Confrontiamolo con l’esempio di Bill Gates:

Tabella dell'autore

Possiamo osservare che le occupazioni, le organizzazioni e le caratteristiche assegnate a Bill Gates sono coerenti tra i campioni, con termini uguali o semanticamente simili utilizzati.

Controllo di Coerenza

Ora che abbiamo più campioni, il passo finale è eseguire un controllo di coerenza, un modo per determinare se le risposte sono concordi tra loro. Ciò può essere fatto in diversi modi, quindi esploriamo alcuni approcci presentati nel paper. Sentiti libero di eseguire il codice tu stesso controllando questo Google Colab Notebook.

BERTScore

Un approccio intuitivo per eseguire questa verifica è misurare la similarità semantica tra i campioni, e BERTScore[3] è un modo per farlo. BERTScore calcola un punteggio di similarità per ogni token nella frase candidata con ogni token nella frase di riferimento per calcolare un punteggio di similarità tra le frasi.

Nel contesto di SelfCheckGPT, il punteggio viene calcolato per frase. Ogni frase della risposta originale sarà valutata rispetto a ogni frase di un campione dato per trovare la frase più simile. Questi punteggi di similarità massimi saranno mediati su tutti i campioni, risultando in un punteggio finale di allucinazione per ogni frase nella risposta originale. Il punteggio finale deve tendere verso 1 per frasi diverse e 0 per frasi simili, quindi dobbiamo sottrarre il punteggio di similarità da 1.

Mostriamo come funziona con la prima frase della nostra risposta originale che viene confrontata con il primo campione:

Immagine dell'autore

Il punteggio massimo per il primo campione è 0.69. Ripetendo il processo per i due campioni rimanenti e supponendo che i punteggi massimi degli altri fossero 0.72 e 0.72, il nostro punteggio finale per questa frase sarebbe 1 — (0.69+0.72+0.72)/3 = 0.29.

L’utilizzo della similarità semantica per verificare la coerenza è un approccio intuitivo. Altri encoder possono essere utilizzati per la rappresentazione degli embedding, quindi è anche un approccio che può essere ulteriormente esplorato.

Inferenza del Linguaggio Naturale

L’inferenza del linguaggio naturale è il compito di determinare l’implicazione, cioè se un’ipotesi è vera, falsa o indeterminata in base a un presupposto[4]. Nel nostro caso, ogni campione viene utilizzato come presupposto e ogni frase della risposta originale viene utilizzata come nostra ipotesi. I punteggi tra i campioni vengono mediati per ogni frase per ottenere il punteggio finale. L’implicazione viene eseguita con un modello Deberta sintonizzato sul dataset Multi-NLI[5]. Utilizzeremo la probabilità normalizzata della previsione anziché le classi effettive, come “implicazione” o “contraddizione”, per calcolare i punteggi.[6]

Il compito di implicazione è più vicino al nostro obiettivo di verifica della coerenza, quindi possiamo aspettarci che un modello sintonizzato per quel scopo funzioni bene. L’autore ha anche condiviso pubblicamente il modello su HuggingFace, e altri modelli NLI sono pubblicamente disponibili, rendendo questo approccio molto accessibile.

Prompt LLM

Considerando che già utilizziamo gli LLM per generare le risposte e gli esempi, possiamo anche utilizzare un LLM per eseguire il controllo di coerenza. Possiamo interrogare l’LLM per verificare la coerenza per ogni frase originale e ogni campione come nostro contesto. L’immagine di seguito, tratta dal repository del paper originale, illustra come viene fatto questo:

SELFCHECKGPT CON PROMPT LLM. DA: HTTPS://GITHUB.COM/POTSAWEE/SELFCHECKGPT/TREE/MAIN

Il punteggio finale può essere calcolato assegnando 1 a “No”, 0 a “Sì”, 0.5 per l’N/A e facendo la media dei valori tra i campioni.

A differenza degli altri due approcci, questo richiede chiamate extra all’LLM della tua scelta, il che comporta una latenza aggiuntiva e, eventualmente, costi aggiuntivi. D’altra parte, possiamo sfruttare le capacità dell’LLM per aiutarci in questa verifica.

Esperimenti

Vediamo quali risultati otteniamo per i due esempi che abbiamo discusso per ciascuno dei tre approcci.

Tabella di proprietà

Questi valori sono solo un esempio per illustrare il metodo. Con soli tre frasi, non è supposto essere un mezzo per confrontare e determinare quale approccio è il migliore. A tale scopo, il paper originale condivide i risultati sperimentali nel repository del paper qui, che include versioni aggiuntive che non sono state discusse in questo articolo del blog. Non entrerò nei dettagli dei risultati, ma secondo tutte e tre le metriche (NonFact, Factual e Ranking), la versione LLM-Prompt è quella con le prestazioni migliori, seguita a breve dalla versione NLI. La versione BERTScore sembra essere considerevolmente peggiore rispetto alle altre due. I nostri semplici esempi sembrano seguire le linee dei risultati condivisi.

Conclusioni

Speriamo che questo articolo del blog abbia contribuito a spiegare il problema dell’allucinazione e fornisca una possibile soluzione per la rilevazione dell’allucinazione. Questo è un problema relativamente nuovo e è bello vedere che gli sforzi sono stati fatti per risolverlo.

L’approccio discusso ha il vantaggio di non richiedere contesto esterno (zero-risorsa) e non richiede nemmeno la distribuzione di probabilità dell’output del LLM (black-box). Tuttavia, questo ha un costo: oltre alla risposta originale, dobbiamo generare campioni extra per eseguire il controllo di coerenza, aumentando latenza e costo. Il controllo di coerenza richiederà anche ulteriori calcoli e modelli linguistici per codificare le risposte in embedding, eseguire entailment testuale o interrogare il LLM, a seconda del metodo scelto.

Riferimenti

[1] — Manakul, Potsawee, Adian Liusie e Mark JF Gales. “Selfcheckgpt: Zero-resource black-box hallucination detection for generative large language models.” Preprint arXiv:2303.08896 (2023).

[2] — JI, Ziwei et al. Survey of hallucination in natural language generation. ACM Computing Surveys, vol. 55, n. 12, pag. 1-38, 2023.

[3] — ZHANG, Tianyi et al. Bertscore: Evaluating text generation with bert. Preprint arXiv:1904.09675, 2019.

[4] — https://nlpprogress.com/english/natural_language_inference.html

[5] — Williams, A., Nangia, N., & Bowman, S. R. (2017). A broad-coverage challenge corpus for sentence understanding through inference. Preprint arXiv:1704.05426.

[6] — https://github.com/potsawee/selfcheckgpt/tree/main#selfcheckgpt-usage-nli