Abbiamo tutti gli ingredienti necessari per verificare se un pezzo di testo è generato dall’intelligenza artificiale. Ecco tutto ciò di cui abbiamo bisogno:
- Il testo (frase o paragrafo) che desideriamo controllare.
- La versione tokenizzata di questo testo, tokenizzata utilizzando il tokenizer utilizzato per tokenizzare il set di dati di training per questo modello.
- Il modello linguistico addestrato.
Utilizzando 1, 2 e 3 sopra, possiamo calcolare quanto segue:
- Probabilità per token come previsto dal modello.
- Perplessità per token utilizzando la probabilità per token.
- Perplessità totale per l’intera frase.
- Le perplessità del modello sul dataset di training.
Per verificare se un testo è generato dall’intelligenza artificiale, dobbiamo confrontare la perplessità della frase con la perplessità del modello ridimensionata da un fattore di confusione, alfa. Se la perplessità della frase è maggiore della perplessità del modello con il ridimensionamento, allora probabilmente si tratta di testo scritto da esseri umani (cioè non generato dall’intelligenza artificiale). Altrimenti, probabilmente è generato dall’intelligenza artificiale. La ragione di ciò è che ci aspettiamo che il modello non sia perplesso dal testo che genererebbe da solo, quindi se incontra del testo che da solo non genererebbe, allora c’è motivo di credere che il testo non sia generato dall’intelligenza artificiale. Se la perplessità della frase è inferiore o uguale alla perplessità di addestramento del modello con il ridimensionamento, è probabile che sia stata generata utilizzando questo modello linguistico, ma non possiamo esserne molto sicuri. Questo perché è possibile che un essere umano abbia scritto quel testo, e guarda caso si tratta di qualcosa che anche il modello avrebbe potuto generare. Dopotutto, il modello è stato addestrato su molti testi scritti da esseri umani, quindi in un certo senso il modello rappresenta la “scrittura di un essere umano medio”.
ppx(x) nella formula sopra indica la perplessità dell’input “x”.
Successivamente, diamo un’occhiata agli esempi di testo scritto da esseri umani o generato dall’intelligenza artificiale.
Esempi di testo scritto da un essere umano generato dall’intelligenza artificiale
Abbiamo scritto del codice Python che colora ciascun token in una frase in base alla sua perplessità rispetto alla perplessità del modello. Il primo token si colora sempre di nero se non consideriamo la sua perplessità. I gettoni che hanno una perplessità inferiore o uguale alla perplessità del modello con il ridimensionamento sono colorati di rosso, indicando che potrebbero essere generati dall’IA, mentre i gettoni con perplessità maggiore sono colorati di verde, indicando che sicuramente non sono stati generati dall’IA.
I numeri tra parentesi quadre prima della frase indicano la perplessità della frase calcolata utilizzando il modello linguistico. Nota che alcune parole sono in parte rosse e in parte blu. Ciò è dovuto al fatto che abbiamo utilizzato un tokenizzatore di sottoparole.
Ecco il codice che genera l’HTML sopra.
def get_html_for_token_perplexity(tok, sentence, tok_ppx, model_ppx):
tokens = tok.encode(sentence).tokens
ids = tok.encode(sentence).ids
cleaned_tokens = ()
for word in tokens:
m = list(map(ord, word))
m = list(map(lambda x: x if x != 288 else ord(' '), m))
m = list(map(chr, m))
m = ''.join(m)
cleaned_tokens.append(m)
#
html = (
f"<span>{cleaned_tokens(0)}</span>",
)
for ct, ppx in zip(cleaned_tokens(1:), tok_ppx):
color = "black"
if ppx.item() >= 0:
if ppx.item() <= model_ppx * 1.1:
color = "red"
else:
color = "green"
#
#
html.append(f"<span style='color:{color};'>{ct}</span>")
#
return "".join(html)
#
Come possiamo vedere dagli esempi precedenti, se un modello rileva del testo come generato dall’uomo, è sicuramente generato dall’uomo, ma se rileva il testo come generato dall’intelligenza artificiale, c’è la possibilità che non sia generato dall’intelligenza artificiale. Allora perché succede questo? Diamo un’occhiata dopo!
Falsi positivi
Il nostro modello linguistico è addestrato su MOLTO testo scritto da esseri umani. In genere è difficile scoprire se qualcosa è stato scritto (digitalmente) da una persona specifica. Gli input del modello per la formazione comprendono moltissimi stili di scrittura diversi, probabilmente scritti da un gran numero di persone. Ciò fa sì che il modello impari molti stili e contenuti di scrittura diversi. È molto probabile che il tuo stile di scrittura corrisponda molto fedelmente allo stile di scrittura di alcuni testi su cui è stato addestrato il modello. Questo è il risultato di falsi positivi e il motivo per cui il modello non può essere sicuro che parte del testo sia generato dall’intelligenza artificiale. Tuttavia, il modello può essere sicuro che parte del testo sia stata generata dall’uomo.
OpenAI: OpenAI ha recentemente annunciato che interromperà i suoi strumenti per il rilevamento del testo generato dall’intelligenza artificiale, citando un basso tasso di precisione (Fonte: Tempi dell’Hindustan).
La versione originale dello strumento di classificazione AI presentava fin dall’inizio alcune limitazioni e imprecisioni. Gli utenti dovevano inserire manualmente almeno 1.000 caratteri di testo, che OpenAI ha poi analizzato per classificarli come scritti dall’intelligenza artificiale o da esseri umani. Sfortunatamente, le prestazioni dello strumento sono state inferiori, poiché ha identificato correttamente solo il 26% dei contenuti generati dall’intelligenza artificiale e ha erroneamente etichettato il testo scritto da esseri umani come intelligenza artificiale circa il 9% delle volte.
Ecco il post sul blog di OpenAI. Sembra che abbiano utilizzato un approccio diverso rispetto a quello menzionato in questo articolo.
Il nostro classificatore è un modello linguistico ottimizzato su un set di dati di coppie di testo scritto da esseri umani e testo scritto dall’intelligenza artificiale sullo stesso argomento. Abbiamo raccolto questo set di dati da una varietà di fonti che riteniamo siano state scritte da esseri umani, come i dati di pre-addestramento e le dimostrazioni umane sui prompt inviati a InstructGPT. Abbiamo diviso ogni testo in un suggerimento e una risposta. In base a questi suggerimenti, abbiamo generato risposte da una varietà di modelli linguistici diversi formati da noi e da altre organizzazioni. Per la nostra app Web, adattiamo la soglia di confidenza per mantenere basso il tasso di falsi positivi; in altre parole, contrassegniamo il testo come probabilmente scritto dall’intelligenza artificiale solo se il classificatore è molto sicuro.
GPZero: Un altro popolare strumento di rilevamento del testo generato dall’intelligenza artificiale è GPZero. Sembra che GPTZero utilizzi perplessità e irascibilità per rilevare il testo generato dall’intelligenza artificiale. “La burstness si riferisce al fenomeno in cui determinate parole o frasi appaiono a raffica all’interno di un testo. In altre parole, se una parola appare una volta in un testo, è probabile che appaia di nuovo nelle immediate vicinanze” (fonte).
GPTZero afferma di avere un tasso di successo molto elevato. Secondo il Domande frequenti su GPTZero, “A una soglia di 0,88, l’85% dei documenti AI sono classificati come AI e il 99% dei documenti umani sono classificati come umani”.
La generalità di questo approccio
L’approccio menzionato in questo articolo non è generalizzabile. Ciò che intendiamo con questo è che se disponi di 3 modelli linguistici, ad esempio GPT3, GPT3.5 e GPT4, devi eseguire il testo di input attraverso tutti e 3 i modelli e controllare la perplessità su tutti per vedere se il testo è stato generato da uno qualsiasi di essi. Questo perché ogni modello genera il testo in modo leggermente diverso e tutti devono valutare il testo in modo indipendente per vedere se qualcuno di loro potrebbe averlo generato.
Con la proliferazione di grandi modelli linguistici nel mondo a partire dall’agosto 2023, sembra improbabile che si possa verificare che qualsiasi parte di testo abbia avuto origine da uno qualsiasi dei modelli linguistici del mondo.
In effetti, ogni giorno vengono formati nuovi modelli e cercare di tenere il passo con questo rapido progresso sembra, nella migliore delle ipotesi, difficile.
L’esempio seguente mostra il risultato della richiesta al nostro modello di prevedere se le frasi generate da ChatGPT sono generate dall’intelligenza artificiale o meno. Come puoi vedere, i risultati sono contrastanti.
Ci sono molte ragioni per cui ciò può accadere.
- Dimensioni del corpo del treno: Il nostro modello è addestrato su pochissimo testo, mentre ChatGPT è stato addestrato su terabyte di testo.
- Distribuzione dei dati: Il nostro modello è addestrato su una distribuzione dei dati diversa rispetto a ChatGPT.
- Ritocchi: Il nostro modello è semplicemente un modello GPT, mentre ChatGPT è stato ottimizzato per risposte simili a chat, generando testo con un tono leggermente diverso. Se avessi un modello che genera testo legale o consulenza medica, il nostro modello funzionerebbe male anche sul testo generato da tali modelli.
- Dimensioni del modello: Il nostro modello è molto piccolo (meno di 100 milioni di parametri rispetto a > 200 miliardi di parametri per i modelli simili a ChatGPT).
È chiaro che abbiamo bisogno di un approccio migliore se speriamo di fornire un risultato di qualità ragionevolmente elevata per verificare se qualche testo è generato dall’intelligenza artificiale.
Successivamente, diamo un’occhiata ad alcune disinformazioni su questo argomento che circolano su Internet.
Fonte: towardsdatascience.com