Come far sbagliare (a volte) un LLM

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…

Quizzino della domenica: area di un triangolo

766 – geometria

Il matematico russo Vladimir Arnol’d disse che questo problema non aveva dato nessun problema (scusate il gioco di parole) agli studenti americani, mentre un gruppo di studenti moscoviti non riuscì a trovare la soluzione. Nel triangolo rettangolo in figura, l’ipotenusa AB è lunga 10 cm, mentre l’altezza CH è 6 cm. Qual è l’area del triangolo?

il triangolo del problema
(trovate un aiutino sul mio sito, alla pagina https://xmau.com/quizzini/p766.html; la risposta verrà postata lì il prossimo mercoledì. Problema da MathWorld.)

Intelligenze aliene (ebook)

copertina Non garantisco sulla correttezza di quanto Vetere scrive riguardo alla parte tecnica di addestramento degli LLM. A me pare di sì, ma un mio amico era molto perplesso. Però non è quello il punto fondamentale di questo libro, bensì il vedere cosa sta dietro a questi modelli da un punto di vista filosofico. L’appunto che gli faccio è che almeno nella prima metà il linguaggio sembra spesso da iniziati: se voleva parlare ai filosofi probabilmente andava bene, ma noi poveri laureati in materie scientifiche facciamo una faticaccia. Come dicevo, però, il risultato finale merita, anche perché non è così comune trovare approcci di questo tipo.

Guido Vetere, Intelligenze aliene : Linguaggio e vita degli automi, Luca Sossella 2025, pag. 192, € 9,49, ISBN 9791259980984 – come Affiliato Amazon, se acquistate il libro dal link qualche centesimo va a me
Voto: 4/5

Il riposizionamento di Esselunga

Esselunga ha sempre lavorato molto sui prodotti marchiati da lei (ho scoperto che si dice “marchio privato”. Il modo con cui lo fa è però piuttosto strano. Dopo aver cominciato nel 1979 con i surgelati marchiati Esselunga ha creato il marchio a primo prezzo Fidèl, che però si è rapidamente sputtanato (scusate il tecnicismo). A questo punto la catena si è riposizionata sul segmento alto, con i prodotti Esselunga Bio ed Esselunga Top: alcuni anni fa è tornata sul primo prezzo, tirando fuori dal cilindro la linea Smart facilmente riconoscibile dal colore giallo neon.

A differenza dei Fidèl, i prodotti Smart non erano spesso così male, soprattutto quelli legati al latte (che compra da Austria e Germania, dove evidentemente costa meno ma non può avere la bandierina “100% italiano” che è tanto di moda). Però mi sa che l’esperimento non è andato cosi bene, perché molti di quei prodotti sono stati rimarchiati semplicemente “Esselunga”, con confezioni color pastello e indicazioni di come i prezzi siano più bassi ma la qualità resti la stessa.

Ovviamente non c’è nulla di strano nell’avere più linee di prodotti posizionate in modo diverso: ma forse i nomi dovrebbero essere un po’ meno intercambiabili…

Death on Omega Station (ebook)

copertina [Disclaimer: Ho ricevuto il libro grazie al programma Early Reviewer di LibraryThing] Certo, l’ambientazione è fantascientifica. Però il libro è fondamentalmente un hardboiled, il che non è poi così strano visto che French è stato un supervisore di scene del crimine. Da questo punto di vista il libro è una certezza: uno sa perfettamente come si dipanerà la storia, e quindi può concentrarsi sui particolari. In effetti il testo scorre piacevolmente, soprattutto nelle parti in cui il TrovaVerità terrestre e l’assistente alieno da lui nominato cominciano a trovare un loro modus operandi. Il libro probabilmente non vincerà il Pulitzer, ma è una lettura amena.

John L. French, Death on Omega Station, eSpec Books 2025, pag. 100, € 5,19, ISBN 9781956463361 – come Affiliato Amazon, se acquistate il libro dal link qualche centesimo va a me
Voto: 4/5

forse devo cambiare motore di ricerca

quale pagina Stavo guardando le ultime modifiche su Wikipedia in italiano, e ho visto che un utente anonimo aveva chiesto chi aveva la tessera 653 della P2. Ho fatto qualche ricerca e alla fine ho scoperto che bastava trovare la pagina Wikipedia relativa.

Due minuti dopo Google Opinion Rewards mi ha chiesto “Di recente hai effettuato una delle seguenti ricerche su Google?” (ed è la prima volta che mi fa una domanda simile, in genere chiede in quale negozio sono andato). Inutile dire che una delle opzioni era “elenco iscritti p2”. Sono andato avanti e ho scoperto l’arcano: il tutto era un test A/B. Come vedete nella schermata, mi chiedeva se preferivo avere la pagina di risposta con il riassunto AI oppure senza. Per la cronaca, io faccio le ricerche aggiungendo la stringa “?udm=14” che ritorna solo e unicamente i risultati web, quindi niente immagini, niente video e soprattutto niente AI. Evidentemente un qualche sistema automatico si è accorto che io faccio il cattivone e ha provato a chiedere lumi, compreso un mio feedback che potete tranquillamente immaginare quale sia stato.

Il guaio è che ultimamente Google fa schifo, ma gli altri motori di ricerca fanno pena. Insomma, che faccio?

Come generare punti casuali dentro un triangolo

John D. Cook mostra alcuni metodi per generare punti casuali all’interno di un triangolo ABC dato. Possiamo immaginare di lavorare in coordinate cartesiane, per semplicità, e quindi avere A, B e C come coppie ordinate di valori.

Il metodo più semplice è quello di usare coordinate baricentriche: generate tre numeri casuali α, β e γ tra 0 e 1, normalizzateli per far sì che la loro somma sia 1, e date come risposta αA + βB + γC. Il metodo genera punti che stanno tutti all’interno del triangolo: ma non sono uniformi, come si vede dalla figura qui sotto presa dal blog di Cook. I punti centrali del triangolo sono più probabili di quelli vicino ai vertici.

un triangolo generato casualmente con coordinate baricentriche.

Il secondo metodo è quello del rejection sampling. Costruite il rettangolo circoscritto al triangolo, generate due numeri casuali per la coordinata x e quella y, e controllate se il punto corrispondente sta all’interno del triangolo: se sì, bene, altrimenti lo buttate via. È evidente che in questo modo i punti generati e accettati sono distribuiti in modo casuale, perché tutti quelli nel rettangolo lo sono: il costo computazionale è di due insiemi di operazioni per numero scelto.

C’è poi un terzo metodo, quello del parallelogramma. Costruite un parallelogramma aggiungendo al triangolo una sua versione speculare, e generate punti a caso al suo interno, con la formula P = A + r₁·(B-A) + r₂·(C-A) dove r₁ e r₂ sono numeri casuali in [0,1]. Ora, se il punto generato si trova nel triangolo di partenza, e quindi r₁ + r₂ ≤ 1, bene; altrimenti prendete la sua immagine riflessa nel triangolo di partenza, usando (1-r₁, 1-r₂). Di nuovo, la casualità è assicurata. Il tutto è raccontato anche su Stack Overflow.

Quale conviene tra il secondo e il terzo metodo? Dipende. Se siete fanatici e sapete dove cercare – oppure siete molto intelligenti e l’avete trovato da soli – il parallelogramma è la scelta migliore. Ma se avete fretta di implementare una soluzione e dovete generare poche centinaia di punti il rejection sampling va più che bene: il costo è il doppio dell’altro metodo, e quindi sopportabile.

Due ultime note: nei commenti al post di Cook si fa notare come scegliere una distribuzione esponenziale anziché lineare dei numeri casuali fa funzionare anche il metodo delle coordinate baricentriche. Ma soprattutto ho provato a fare la domanda a Claude. Riporta i tre metodi (immagino perché addestrato su Stack Overflow) ma afferma che quello delle coordinate baricentiche è il metodo più elegante ed efficiente. Mai fidarsi degli LLM!