Archivi categoria: informatica e AI

Stanno davvero arrivando le IA “intelligenti”?

L’International Collegiate Programming Contest è una gara (ma quante ne esistono?) dove squadre di tre studenti universitari devono scrivere in cinque ore dodici programmi. Quest’anno le finali sono state a Baku, e – come Alberto Romero riporta la “squadra” di OpenAI ha scritto correttamente il codice per tutti e dodici i problemi, superando Google DeepMind che si è fermata a dieci. La cosa più incredibile è che nessuna squadra umana ha ottenuto il punteggio pieno, fermandosi al massimo a 11/12.

Fin qui la notizia, che mi sa sia passata abbastanza inosservata almeno nel resto della mia bolla. Ma la parte davvero interessante del risultato di OpenAI è il modo con cui l’ha raggiunto. Secondo Mostafa Rohaninejad di OpenAI, infatti, a parte avere avuto a disposizione lo stesso tempo dei concorrenti umani, il modello usato è stato a detta di Rohaninejad “una composizione di GPT-5 e un modello di ragionamento sperimentale che generavano soluzioni, con il modello sperimentale che sceglieva quale soluzione dare. GPT-5 ha dato undici risposte corrette, e l’ultimo (e più difficile) problema è stato risolto dal modello di ragionamento sperimentale”.

Chiaramente un resoconto sotto forma di tweet non dice molto, senza contare che a questi livelli ci sono segreti aziendali. E c’è qualcosa che non mi torna nella storia. Però qualcosa la si può dire lo stesso. Innanzitutto, GPT-5 (che poi è quello che adesso abbiamo come interfaccia quando usiamo ChatGPT) è stato usato come “utile idiota”: gli si fa sparare una serie di soluzioni, e poi ci pensa qualcun altro – nel nostro caso, qualcos’altro – a stabilire cosa può andare bene e cosa no. Questo mi pare un ottimo modo per usare un LLM: se mi consentite un paragone un po’ azzardato, è come prendere in mano un rimario quando si vuole comporre una canzone. Lì troviamo le parole possibili, ma siamo poi noi a trovare le connessioni.

La cosa più intrigante è il “modello sperimentale”, che pare essere lo stesso usato all’IMO, le olimpiadi della matematica. Non serve l’intelligenza artificiale per verificare se un risultato è corretto: lo stato dell’arte nei dimostratori automatici di correttezza dei problemi è tale da essere regolarmente usato. Insomma, fin qui non si vedrebbe nulla di nuovo, se non probabilmente un metodo per convertire il formato interno dei risultati di GPT-5 in un formato utilizzabile da questo modello. Ma cosa è successo con il famigerato “problema difficile”, quello G nell’elenco delle prove? Chi è stato a fare i nove tentativi, e soprattutto perché il “modello sperimentale” non è sempre stato usato per risolvere gli altri problemi?

La mia ipotesi è che questo modello misterioso abbia non solo la capacità di verificare la validità di una soluzione ma anche quella di modificarla. Non sto pensando agli algoritmi genetici, che probabilmente ci metterebbero troppo tempo per stabilizzarsi su una soluzione, ma a qualche regola più o meno rigida per cambiare qualche parametro e vedere come evolve la situazione. Questo spiegherebbe la necessità di avere comunque un modello generativo sottostante: il modello misterioso non potrebbe partire da zero ma dovrebbe sempre avere una base relativamente solida su cui lavorare. Se effettivamente è questa la struttura alla base del modello di OpenAI, le implicazioni sono davvero incredibili, almeno per contesti dove le modifiche possibili sono relativamente poche e facilmente definibili. Non so se si potrebbe parlare davvero di intelligenza, ma ci si avvicinerebbe molto. Voi che ne pensate?

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…

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?

Ultimo aggiornamento: 2025-09-17 15:26

Gli LLM sono tarati per avere allucinazioni?

Qualche giorno fa Alberto Romero ha scritto un post che riprende un paper scritto da alcuni ricercatori di OpenAI, dal titolo “Why Language Models Hallucinate”. La tesi degli autori è che le allucinazioni degli LLM, cioè le risposte completamente inventate, sono il risultato del modo in cui i modelli sono addestrati, vale a dire per cercare di dare il maggior numero di risposte possibili. Questo significa che se non c’è una risposta chiaramente ricavabile dal materiale di addestramento – in altri termini, se i token che vengono man mano emessi arrivano da una distribuzione senza un picco chiaro, che corrisponde a una classificazione “forte” – il modello si comporta come lo studente tipico quando all’esame trova domande a risposta multipla su temi che non conosce: tira a indovinare. Se indovina, bene; altrimenti non perde nulla.

Prima di parlare dell’articolo in sé, Romero fa una meta-analisi di cosa può significare la pubblicazione di quell’articolo. Sui primi due punti (bisogna lavorare per eliminare le allucinazioni, anche al costo di un modello che a volte risponde “non lo so”; fino ad adesso non è stata data priorità al problema) mi trovo d’accordo, mentre non penso che la pubblicazione implichi che OpenAI sia vicinissima ad avere trovato una soluzione. Se fosse così, mi sarei aspettato prima un modello “dubbioso ma non allucinato”, e subito dopo la pubblicazione dell’articolo, visto che sarebbero stati in parecchi ad accorgersi della filosofia dietro un modello di quel tipo.

Entrando nel merito dell’articolo, i ricercatori affermano appunto che il problema delle allucinazioni non è tanto dovuto al materiale di ingresso che è “sporco”, cosa che può peggiorare i risultati ma non è fondamentale. Il problema è che anche se i dati di addestramento fossero perfetti l’LLM non risponderebbe mai “non lo so” a una domanda, perché è stato addestrato per predire la parola successiva anche se non ha al suo interno nessun pattern trovato nel testo e soprattutto perché in media l’accuratezza (misurata come percentuale di risposte esatte) comunque cresce, dato che non viene misurata “risposta corretta: +1; risposta errata: -1; nessuna risposta: 0” ma solo come risposte corrette sul totale. Ecco perché gli LLM bluffano sempre. Nella tabella qui sotto, presa dal loro blog, gli autori dell’articolo mostrano il confronto con un modello basato su GPT-5 che dice “non lo so”. La percentuale di risposte corrette cala un po’, ma quella di risposte sbagliate crolla.

risultati

Dal mio punto di vista, un chatbot meno sicuro di sé sarebbe sicuramente un vantaggio, perché perderei meno tempo a verificare le risposte che mi dà: ma ho il sospetto che il mio tipo di interazione sia molto minoritario.

La parte più divertente dell’articolo è però quella sull’indovinello del chirurgo… Ma ne parlo tra qualche giorno.

Gli esperimenti di fisica delle IA

Qualche settimana fa Le Scienze ha tradotto e pubblicato un articolo di Anil Ananthaswamy su come è stata usata l’intelligenza artificiale per provare a vedere se fosse possibile migliorare la sensibilità dei ricevitori LIGO per le onde gravitazionali. A quanto pare, dopo output iniziali incomprensibili e uno sfrondamento fatto (a grande fatica) dai ricercatori, l’IA se n’è uscita con una soluzione bruttissima a vedersi, ma che permetteva un miglioramento del 10-15% nella sensibilità. L’articolo prosegue con altre soluzioni “brutte ma funzionali” trovate dall’IA.

Come è possibile tutto questo? Leggendo con attenzione l’articolo, la risposta balza subito agli occhi. In tutti quei casi, l’intelligenza artificiale ha costruito il proprio esperimento aggiungendo altri stipi di esperimento in campi apparentemente scorrelati. In altre parole, non c’è stato nulla di “intelligente”: anzi. Le IA sono ovviamente agnostiche su quali testi emettere, prendono tutto quello che hanno in pancia senza darsi la pena di vedere se è valido o no: ci devono poi pensare i ricercatori a sfrondare e vedere se effettivamente l’idea funziona o no in pratica. Questa è un’ottima cosa, intendiamoci: proprio perché noi umani abbiamo dei bias congeniti, come per esempio la ricerca di simmetrie, avere un punto di vista diverso aiuta molto.

Le IA sono anche utili perché hanno la capacità di macinare molte più informazioni di noi, come nello “scoprire la simmetria di Lorentz solo dai dati” (sempre dall’articolo citato). Magari noi umani saremmo riusciti a mettere insieme i due approcci apparentemente diversi, se li avessimo conosciuti entrambi: ma la specializzazione è ormai così alta che nemmeno in campi apparentemente limitati come la fisica quantistica si sa tutto.

Conclusioni? Semplice. Usiamo l’IA, ma non divinizziamola.

Per qualche pugno di dollari

A giugno avevo scritto che un giudice americano aveva dato torto ad Anthropic in una causa perché aveva usato il testo dei libri per addestrare il proprio LLM. Di per sé ciò non sarebbe stato un problema, ma Anthropic si era presa la base dati dai server di libri piratati, e quello sì che non si poteva fare, perché si rubava il pane di bocca dagli autori.

La notizia di questi giorni è che è stato raggiunto un accordo extragiudiziale, e Anthropic pagherà un miliardo e mezzo di dollari agli autori. Quali, esattamente, non si sa: qui c’è una pagina dove chi pensa di essere stato piratato può inserire i suoi dati. Il valore per libro è intorno ai 3000 dollari: come scrive David Gerard, “Molti autori non saranno felici, pensando che 3000 dollari sono pochi: ma altri notano che è più di quanto abbiano mai ottenuto dal loro editore”. (Forse uno dei miei libri è arrivato a farmi guadagnare quei soldi: l’unica cosa che posso dire è che non ho mai pagato per farmi pubblicare). Teoricamente non ci dovrebbe essere differenza di valore tra un libro e l’altro, visto il loro uso: ma mi sa che la cosa funzionerà più o meno come la SIAE da noi, che applica la regola evangelica “a chi ha sarà dato, a chi non ha sarà tolto anche quello che ha”.

Ho appena controllato: libgen è giù, quindi non posso fare l’elenco dei miei libri ivi presenti :-( Non che la cosa sia così importante: in Italia tu cedi i diritti all’editore, quindi dovrebbe essere lui a fare domanda, e alla fine di quei 3000 dollari ne vedrei tra i 150 e i 200. Per quanto riguarda i libri autopubblicati, sono in CC-BY-SA e quindi utilizzabili liberamente…

Adda venì la fattorizzazione quantistica!

Non so se avete mai sentito parlare dell’algoritmo di fattorizzazione di Shor. Nel 1994 Peter Shor definì un algoritmo di fattorizzazione di un numero che, implementato su un computer quantistico, completa il compito in un tempo polinomiale rispetto alla dimensione del numero stesso. Occhei, il risultato è quasi certamente corretto: come sappiamo nel mondo quantistico certezze non ce ne possono essere: ma la probabilità di errore può essere resa piccola a piacere.

Questo risultato, se avessimo un computer quantistico funzionante, distruggerebbe tutti gli algoritmi di crittografia che si basano sulla difficoltà della fattorizzazione, come RSA: infatti gli algoritmi classici di fattorizzazione hanno una complessità che cresce esponenzialmente con la dimensione del numero, e quindi è molto più semplice moltiplicare due numeri primi grandi che partire dal prodotto e arrivare ai due numeri. E in effetti nel 2001 ci fu il primo computer quantistico che riuscì a fattorizzare 15 con l’algoritmo di Shor. Non molto, ma un punto di partenza.

circuito logico quantistico per fattorizzare 15

È passato quasi un quarto di secolo. I computer quantistici sono diventati sempre più grandi. Eppure non si è ancora riusciti a fattorizzare 21. Craig Gidney spiega il perché. Qui sopra vedete il circuito logico usato per la fattorizzazione di 15. Ci sono sei porte entangling da due qubit e due porte di Toffoli (quelle con due pallini neri in verticale), ciascuna delle quali corrisponde a sei porte entangling. Con i tre rivelatori finali si ha un totale di 21 porte entangling. Non riporto il disegno di un circuito ottimizzato per la fattorizzazione di 21: se volete divertirvi guardatelo nell’articolo. Dico solo che ha 191 porte CNOT e 369 porte di Toffoli, per un totale di 2405 entangling: due ordini di grandezza in più! Insomma, quello che si guadagna in velocità di esecuzione si perde con gli interessi in complessità.

Ma la parte più divertente, almeno per me, è questo articolo, sempre di Gidney, che fattorizza i numeri fino a 255 e nota come per numeri così piccoli l’algoritmo è così stabile che funziona anche usando un generatore di numeri casuali anziché collassare lo stato quantistico! Insomma, possiamo ancora stare tranquilli per un po’ di tempo…

math-gpt è più bravo di me

Jacopo mi ha chiesto aiuto perché non riusciva a bilanciare una reazione. La guardo e dico che non si pùo, perché viene un sistema di equazioni impossibile. Per sicurezza apro math-gpt e gli chiedo “Puoi bilanciare la reazione CaCl + 2K_3PO_4 = Ca_3(PO_4)_2 + KCl ?”. La sua risposta è cominciata così:

Ecco il bilanciamento passo a passo, assumendo che la formula corretta del cloruro di calcio sia CaCl₂:

Ovviamente Jacopo aveva copiato male, e ancora più ovviamente io non avevo acceso il neurone e notato che lo ione calcio è Ca2+ mentre quello cloro è Cl, e quindi il composto non poteva essere corretto. Però l’idea che un LLM “trovi l’errore” mi ha lasciato basito.

PS: dovendo seguire Jacopo ho dovuto riprendere queste nozioni di base di chimica (inorganica), e mi sono accorto (a) che adesso i programmi vanno più in profondità rispetto a quando ho fatto il liceo (o magari il mio professore non se ne curava, perché chimica la si faceva in quarta e quindi nessuno si sarebbe accorto delle nostre competenze) e (b) che le dispense date dai professori di Jacopo (essendo stato bocciato l’anno scorso, ha fatto due volte chimica) non danno nessuna idea di perché le cose funzionino così e costringono o ragazzi a imparare a memoria e quindi dimenticare subito tutto. Ho perso un po’ di tempo per farmi un modello mentale di come si riempiano i livelli orbitali s,p,d,f (che io non avevo studiato), modello che per me funziona molto meglio delle diagonali presentate nelle dispense. Però il mio modello mi ha permesso di capire la differenza fondamentale tra i gruppi A e B, che al liceo mi era ignota. Essere anzyani dà un insieme di conoscenze che aiuta a trovare strutture più facili da ricordare. Peccato che queste strutture mi siano chiare, ma non sappia spiegarle soprattutto a qualcuno che non è per nulla interessato…