Premessa: questo post è più lungo dei miei soliti. Spero che però lo apprezziate comunque, o almeno riconoscete il lavoro che ci ho messo.
Lunedì scorso vi avevo parlato di un post di Alberto Romero che spiegava perché gli LLM sono probabilmente tarati per avere allucinazioni, cioè scrivere cose che non stanno né in cielo né in terra. Ma nel post Romero accennava anche a un altro problema: il loro comportamento quando si trovano in un caso di “out of distribution” (OOD). Quello che succede è che se il materiale di addestramento e quello di test appartengono a distribuzioni diverse – cosa differente dall’avere dati di scarsa qualità oppure obiettivi di addestramento errati – il modello non riesce ad estrapolare una risposta corretta.
L’esempio fatto da Romero è quello del problema del vecchio indovinello del chirurgo. La storia è questa: un uomo e suo figlio hanno un incidente d’auto. L’uomo muore sul colpo, il figlio è in gravissime condizioni e viene portato all’ospedale, dove il chirurgo lo vede e grida “No, non ce la faccio ad operarlo: è mio figlio!” Come è possibile? Nell’improbabile caso che non conosciate l’indovinello, fermatevi un attimo a pensarci su, altrimenti proseguite la lettura.
Al giorno d’oggi una risposta possibile è “il ragazzo è figlio di una coppia gay”. Cinquant’anni fa la risposta era molto più banalmente “il chirurgo è la madre del ragazzo”. Fin qui nulla di particolare: l’indovinello è così comune che un qualunque chatbot darà la risposta corretta. Ma cosa succede se gli si dà in pasto una versione leggermente diversa, che comincia con “Una donna e suo figlio” e poi continua allo stesso modo? Chiaramente un umano non ha problemi a rispondere “beh, il chirurgo è il padre del ragazzo”. Ma un chatbot si impalla, perché questa versione non c’era nel materiale di addestramento e quindi esso parte per la tangente… O almeno partiva. Questo esempio particolare è infatti noto in letteratura, e pertanto mi sa che gli LLM sappiano rispondere.
Ma che succede provando a modificare altri indovinelli di questo tipo? Ho pensato che sarebbe stato simpatico fare una prova pratica con alcuni chatbot e alcuni indovinelli modificati opportunamente. Ho così fatto alcune domande a ChatGPT, DeepSeek, Claude, Le Chat e Copilot: i link sono il testo delle sessioni che ho eseguito.
Il primo problema sarebbe un classico: Un mattone pesa 1kg meno mezzo mattone. Quanto pesa il mattone?. La forma classica dice che un mattone pesa 1kg più mezzo mattone: tutti e cinque i chatbot hanno pensato a quella forma, e quindi risposto “il mattone pesa due chili”. Questo è sicuramente un caso di OOD alla massima potenza: il token corrispondente a “meno” nella frase è stato del tutto ignorato.
Bisogna però dare atto che altre modifiche non danno problemi di risoluzione. Chiedendo Due mattoni pesano 1kg più mezzo mattone. Quanto pesano i mattoni?, tutti i chatbot si accorgono che la struttura è quella del problema classico, semplicemente con “due mattoni” al posto di “un mattone”, e quindi danno la risposta corretta “due mattoni pesano 4/3 kg (ovvero circa 1,33 kg).”.
Lo stesso capita con il terzo problema: Una bottiglia con il tappo costa 1.10 €. La bottiglia costa 1 € meno del tappo. Quanto costano il tappo e la bottiglia separatamente?. Qui a posteriori l’errore è stato mio: probabilmente nel materiale di addestramento ci sono sia il caso “la bottiglia costa un euro più del tappo” e “il tappo costa un euro meno della bottiglia”, e i chatbot hanno usato la seconda forma. Certo, dal punto di vista di un umano la risposta non ha senso, perché si ricava che il tappo costa 1.05 € e la bottiglia 0.05 €: ma i chatbot non hanno idea del costo relativo di tappi e bottiglie, per loro sono solo due token, e quindi la risposta è corretta.
L’esempio più interessante è il quarto problema: Un pastore ha smarrito cinque pecore. Va alla loro ricerca e quando le trova scopre che ciascuna pecora si trova alla stessa distanza da ciascuna delle altre. Come è possibile?. In questo caso, il problema classico vede quattro pecore e non cinque, e queste si trovano ai vertici di un tetraedro regolare. Se vi chiedete come sia possibile, basta che ci sia un picco molto ripido dove è posizionata una delle pecore. E con cinque pecore? Ecco le risposte:
- ChatGPT: Nello spazio tridimensionale in cui viviamo, non si può avere 5 punti tutti equidistanti tra loro (al massimo 4, che formano i vertici di un tetraedro). Quindi la soluzione del paradosso è che le pecore “si trovano” disposte in una figura geometrica possibile solo in uno spazio a 4 dimensioni.
- DeepSeek: La soluzione è che le pecore sono tutte nello stesso punto.
- Claude: La soluzione è che le cinque pecore si trovano disposte ai vertici di una piramide triangolare (tetraedro) nello spazio tridimensionale. 4 pecore si trovano ai vertici di un tetraedro regolare (una piramide con base triangolare) la quinta pecora si trova al centro del tetraedro.
- Le Chat: La situazione è possibile se le cinque pecore si trovano ai vertici di un pentagono regolare. In un pentagono regolare, ogni vertice (e quindi ogni pecora) è alla stessa distanza dagli altri due vertici adiacenti. Questo significa che ciascuna pecora è equidistante dalle altre due pecore più vicine, soddisfacendo la condizione del problema.
- Copilot: Quindi… la risposta è: Le pecore sono tutte la stessa pecora! Il pastore ha trovato una sola pecora e ha immaginato che fosse in cinque posti contemporaneamente, oppure… Le pecore sono tutte nello stesso punto — cioè raggruppate insieme, quindi la distanza tra ciascuna è zero.
Ho pensato un po’ a come siano potute arrivare quelle risposte. ChatGPT ha trovato la generalizzazione dimensionale del problema, e questo non me lo aspettavo, anche perché se ci fosse stato qualcosa nel materiale di addestramento avrebbe parlato di ipertetraedro, 5-cell oppure 4-simplesso che sono i nomi usati in letteratura. DeepSeek ha fatto tutto un discorso con risposte errate accorgendosi dell’errore, una tecnica abbastanza comune in questi casi dove l’output viene aggiunto all’input per avere più materiale su cui lavorare per ottenere un risultato migliore. Claude e Le Chat mi hanno invece deluso: il primo ha inserito la quinta pecora in un punto ricavato per simmetria ma che non rispetta le ipotesi, il secondo ha tirato fuori un pentagono regolare che non ha proprio senso. Infine Copilot, come del resto in tutta la sessione, ha scelto un approccio giocoso. A parte la soluzione matematicamente corretta ma impossibile nel mondo reale – ma ripeto, che ne sanno questi modelli del mondo, o se preferite che rappresentazione possono avere? – se ne è uscito con l’idea che fosse il pastore ad avere le allucinazioni e contare cinque pecore dove ce n’era una sola. Niente male!
L’ultimo problema che ho dato è quello della fanciulla che deve scegliere tra due sassolini che il perfido e laido pretendente prende dal terreno: se pesca quello bianco le andrà bene, mentre se pesca quello nero verrà impalmata. La giovane si accorge che il pretendente ha preso due sassolini neri: come fa a rovesciare la situazione a suo favore? Anche questo problema è ben noto in letteratura, ma stavolta non vi dico la soluzione. Ai chatbot ho dato però una versione (in inglese, perché ero troppo pigro per cercare quella in italiano) dove il perfido pretendente aveva messo due sassolini bianchi, e quindi la giovane era in una bote de fero, come si suol dire. Peccato che tutti i chatbot hanno pedissequamente scritto la soluzione standard, che in questo caso sarebbe invece esiziale… Anche in questo caso la cosa non mi stupisce. Il prompt che avevo dato era molto lungo, e quindi le risposte scopiazzavano quello che avevano trovato in addestramento che era “praticamente” uguale…
Conclusione: dovrebbe essere ovvio che gli LLM non solo non “pensano”, ma non riescono nemmeno a riconoscere le piccole differenze rispetto a quello che hanno visto. Non possiamo insomma parlare di capacità di generalizzazione, o meglio i loro tentativi di generalizzare possono portare solo ad allucinazioni, come la costruzione di “fonti” assolutamente inventate. Magari in futuro proverò qualche altro trucchetto di questo tipo, tipo chiedere loro “Se da una scacchiera tolgo due caselle d’angolo, è possibile ricoprirla con 31 tessere di domino 1×2?” Il problema classico toglie due caselle agli angoli opposti, e non è risolubile. Ma qua le due caselle potrebbero essere sullo stesso lato e il ricoprimento sarebbe possibile. In letteratura il problema modificato è stato trattato, ma in genere si trova il risultato più forte in cui vengono tolte due caselle di colore opposto ma in posizione qualunque. Chissà se qualche LLM riuscirà ad accorgersi della cosa!
PS: io ho conosciuto mia moglie perché era la docente in un’aula per la formazione aziendale. Una delle esercitazioni era quella dei due sassolini, al che ho detto “non posso farla, perché conosco l’indovinello”: e poi le cose sono andate avanti…
Non riesco ad accedere a nessuna delle chat linkate, ma il concetto comunque è chiaro anche senza esempi.
Non ho fatto test recenti, ma ChatGPT sbroccava di brutto mescolando storie per bambini a problemi di logica (in generale inserendo due insiemi di elementi nel prompt che appartengono a domini completamente diversi) ma la cui risposta è dentro solo uno dei due domini utilizzati, che immagino sia un modo per forzare un OOD.
uffa, speravo che gli output delle chat fossero pubblici, in fin dei conti la probabilità di trovare un hash funzionante è davvero infima.
Sì, immagino che mischiare dominii sia (per definizione, direi) un altro modo per ottenere un OOD. Diciamo che in un test di Turing al momento si potrebbe applicare questa tecnica…
Una volta in ChatGPT c’era un segno di spunta per rendere persistente/visibile a terzi una chat, ma mi sa che hanno nascosto o tolto questa feature
Ho appena provato col copilot aziendale il primo problema, e ci è cascato in pieno, con le formulette di spiegazione col + invece del -.
Sul problema delle pecore ha prima dato la risposta del tetraedro, ma poi si è corretto dicendo che funziona solo in uno spazio 4D e la figura è un “pentacoro”.
Ho imparato una parola nuova.
l’ho imparata anch’io adesso! (per me è semplicemente un 4-simplesso, sono una persona semblige)