Garden Path Sentences

GitHub

Le Garden Path Sentences (GPS da qui in poi) sono frasi come la seguente: “The old man the boat”.

Leggendo la frase parola per parola, inizialmente attribuiamo a “The old man” il significato di “L’anziano uomo”, ma quando arriviamo alla fine capiamo che “man” non è un sostantivo, ma un verbo: “comanda”. Solo alla fine quindi torniamo indietro per reinterpretare la frase come “Gli anziani comandano la nave”. Non credo di conoscere esempi in italiano.

Mentre una persona legge questo tipo di frasi, gli occhi effettuano dei movimenti rapidi chiamati saccadi, che li portano a recuperare le parole appena lette dopo che la loro interpretazione è cambiata.

Ma quando un LLM, un modello linguistico come quelli che stanno sotto ChatGPT o Claude, legge una GPS non può tornare indietro: il loro meccanismo, detto autoregressivo, comporta che la lettura sia effettuata sempre e solo in avanti, senza mai poter effettivamente tornare indietro.

Mi sono quindi chiesto come facessero a interpretare correttamente questo tipo di frasi, e ho usato questo quesito per imparare come funzionano questi modelli, e quali strumenti possiamo usare per interpretarli.

Come cercare una risposta

La disciplina che si occupa di investigare il funzionamento interno degli LLM è la Mechanistic Interpretability, quindi ho fatto uso degli strumenti che mette a disposizione per investigare cosa succede dentro un modello nel momento in cui legge una GPS.

Una breve descrizione degli LLM

Una spiegazione molto semplificata di come funzionano gli LLM: sono dei modelli che ricevono in input del testo, e come output restituiscono una lista di tutte le parole che conoscono e la probabilità che assegnano ad ogni parola di essere quella che continua l’input. Per essere precisi, non usano le parole, ma token, che possono essere parole corte o pezzi di parole più lunghe.

Ogni token di input viene trasformata in una lista di numeri, embedding, che ne rappresentano il significato. Questo input viene poi passato attraverso una serie di layer ripetuti di 2 strutture: Multi Layer Perceptron (MLP) e Attention Heads, i cui output vengono scritti nello stato interno del modello, chiamato Residual Stream.

Gli MLP agiscono su ogni embedding singolarmente, scrivendo nel Residual Stream attingendo dalle “conoscenze” del modello, mentre le Attention Head per ogni embedding combinano informazioni da tutti (e solo) quelli precedenti per aggiungere significato estratto dal contesto della frase.

Alla fine, l’ultimo embedding del Residual Stream viene trasformato nella lista di probabilità che diventa l’output del modello.

Cosa cercare

Mi sono concentrato su due parole, e sul loro valore di surprisal: rappresenta quanto un modello è stupito della presenza di una parola nel testo. Tanto più un modello è incerto mentre legge una parola, tanto più alta è la sua surprisal. Noi possiamo recuperare questo valore, ma NON ha nessun effetto sulla lettura o generazione del testo.

Sono la parola chiave che fornisce l’interpretazione corretta della frase, il secondo “the”, e la parola subito successiva “boat”.

La surprisal della prima (s_the) mi aspetto sia molto alta: un LLM trainato su innumerevoli frasi con una struttura diversa non si aspetterà una parola che, seppur corretta, è poco probabile. È un modo per stimare quanto il modello effettivamente non si aspetti una GPS.

La surprisal della seconda (s_boat) mi aspetto sia alta, ma che diminuisca se il modello ha risolto la GPS e ha capito che “man” era un verbo. Questo valore stima quindi quanto il modello ha effettivamente compreso il senso del testo.

I modelli usati

Ho fatto un primo tentativo con i modelli Qwen3 da 4B e 14B. Ma avere solo 2 punti non era sufficiente, quindi ho ripetuto tutto, con qualche aggiunta, con i Gemma3.

La famiglia di modelli Gemma3, di Google, ha diversi modelli di taglie diverse ma con struttura e training simili. Ho effettuato quindi gli esperimenti su 4 modelli con diversa scala: 1B, 4B, 12B e 27B.

Il modello più piccolo 1B ha 1 miliardo di parametri: significa che il modello ha imparato, durante il training, il valore di 1 miliardo di costanti che ora utilizza per calcolare che testo produrre. È un modello molto piccolo, che può comodamente girare su uno smartphone, in grado di comprendere l’inglese ma con poca conoscenza.

Modello Parametri Layer Attention Heads per layer
1B 1 Miliardo 26 4
4B 4 Miliardi 34 8
12B 12 Miliardi 48 16
27B 27 Miliardi 62 32

Le frasi usate

Per testare i modelli non ho usato solamente le GPS: per le 50 frasi usate, ho anche parallelamente analizzato il comportamento dei modelli mentre leggevano frasi molto simili, ma in cui la sintassi è lineare. Per esempio, per “the old man the boat”, ho confrontato come il modello leggeva “the old people man the boat”, dove la presenza di “people” agisce da disambiguante prima che inizi la parte effettivamente ambigua.

Hardware

Tutti gli esperimenti sono stati effettuati sul mio Macbook M1 Max 64GB, a parte per i test sul modello da 27B: con il dubbio che potesse eccedere la ram disponibile, ho usato modal.com, con un costo irrisorio.

Parte I: Surprisal e Attention Heads

Tutti i modelli, dal più piccolo al più grande, rimangono sorpresi dalle GPS. La s_the è sempre molto alta. La mia prima intuizione è stata di cercare nelle Attention Heads la capacità del modello di interpretare le GPS.

Plot

Mi attendo che, se il modello è in grado di districare il senso della frase, questo avvenga grazie a qualche Attention Head, magari una specifica, che guardi il resto della frase e ne estragga il senso corretto.

Ho usato quindi uno strumento tipico della Mechanistic Interpretability: l’ablazione. Si tratta di rimuovere l’effetto di parti del modello per vedere come questo impatti sull’output. Se mi aspetto che una Attention Head si occupi di reinterpretare le GPS, rimuoverla dovrebbe rovinare la capacità del modello di comprenderle.

Ho cercato le Attention Heads che, quando rimosse, dessero l’impatto maggiore su s_the, ablandole tutte una per una. Erano buone candidate per il circuito che permetteva al modello di riconoscere e interpretare le GPS.

Plot

Si può intuire un pattern: mano a mano che il modello cresce, anche l’ablazione delle Attention Head migliori si avvicina al rumore di fondo, tanto che nel modello da 27B nessuna Attention Head ha un effetto diverso dal rimuoverne una a caso. La conclusione più probabile è che nei modelli più grandi questo ruolo venga spalmato su diverse Attention Heads. Per inciso, anche Qwen3 suggeriva un comportamento simile.

Per confermare che quelle singole Attention Head abbiano il ruolo di riconoscere e interpretare le GPS devono anche dimostrare che abbassano la s_boat: se ablate, il modello dovrebbe avere una surprisal più alta. L’ablazione di nessuna Attention Head ha dato un risultato diverso dal rumore di fondo, dimostrando che nessuna ha questo ruolo.

Plot

Parte II: Memoria

Fallito il primo tentativo, ho controllato un possibile problema: per quanto siano rare, le GPS sono nel dataset di training. “The old man the boat” è un esempio da manuale. È possible che i modelli non le interpretino affatto e le hanno imparate a memoria, come spesso accade negli LLM con frasi poco ripetute nel suo dataset.

Quindi ho scritto 10 GPS nuove, con la stessa struttura di quelle esistenti ma parole diverse, e ho confrontato come i modelli se la cavano sulle frasi da manuale rispetto a quelle mai viste. Se fosse memoria, sulle frasi da manuale dovrebbero andare molto meglio.

Il risultato, come già nel primo round, non supporta l’ipotesi iniziale: le frasi nuove non vanno peggio di quelle famose, ogni frase dà risultati diversi e gli intervalli di confidenza con sole 10 frasi sono molto larghi. Nel 27B, l’unico in cui l’incertezza si restringe abbastanza da dire qualcosa di netto, il risultato punta nella direzione opposta alla memorizzazione.

Parte III: Activation Patching

L’ablazione ha un limite: se l’interpretazione delle GPS non è appannaggio di una singola Attention Head, ma è spalmata su tante diverse, disattivarne una alla volta non produrrà mai risultati significativi.

Per continuare a investigare quindi sono passato a uno strumento diverso: l’Activation Patching. Si tratta di sostituire parti del Residual Stream, lo stato interno dell’LLM, con parti estratte dallo stesso modello in altre situazioni.

Ho usato le frasi non ambigue (“the old people man the boat”) per questa parte: in quelle il modello fin dall’inizio sa che ruolo assegnare alle parole “man” (parola ambigua) e al secondo “the” (parola chiave). Ho quindi calcolato s_boat per le frasi normali e per le GPS, osservando una differenza marcata tra le due classi di frasi: il valore era, come prevedibile, più alto nelle GPS.

Quindi ho applicato l’Activation Patching: ho fatto leggere ai modelli le GPS, ma sostituendo nel loro stato interno l’embedding di “man” (e in una variante anche quello del secondo “the”) con quello estratto dalla frase non ambigua, iniettando di fatto l’interpretazione corretta. Ho provato la sostituzione a ogni layer, misurando ogni volta quanto migliorasse s_boat.

I risultati mostrano che:

Il punto in cui i modelli grandi “chiudono” la decisione sul significato delle parole è piuttosto stabile: circa a metà, sia per Gemma 12B, sia per Gemma 27B, ma anche per Qwen 14B quando lo avevo testato. Sembra che si raggiunga un plateau, nonostante il raddoppio delle dimensioni, circa il punto in cui il modello smette di ragionare sul significato dell’input.

Plot

Ovviamente si tratta di ipotesi ma quello che sembra è che la differenza sostanziale tra modelli simili al variare delle dimensioni non sia nella sorpresa davanti a una GPS, nè quanto sia in grado di risolverla, ma per quanto a lungo il modello rimane aperto al decidere il significato di una parola.

Parte IV: Bonus per il 27B

Il modello da 27B ha regalato un ultimo risultato che nel primo round non c’era, o c’era solo in forma debole.

Cercando dove stia la comprensione, calcolata come la capacità di un modello di avere una s_boat bassa, ho provato ad ablare interi layer invece che singole teste. Nel 27B il più importante è stato il layer 6 (e, in minor misura, il 4): disattivarlo peggiora sensibilmente s_boat lasciando inalterata s_the, e non disturba le frasi non ambigue. La cosa interessante è che durante lo step in cui sono state ablate le singole Attention Heads, la somma delle loro ablazioni risulta opposta, quindi il risultato si ottiene solo se si agisce sull’intero layer, e non su le Attention Heads una alla volta.

Plot

Questo, se letto assieme alla Parte I, sembra dirci che le Attention Heads che impattano sulla s_the, la sorprea, non siano coinvolte in s_boat, la comprensione, e viceversa. E probabilmente se dovessi voler continuare, ripartirei da questo risultato sul layer 6.

Conclusione

Da quello che ho capito dei sei modelli che ho analizzato (quattro Gemma3, due Qwen3), non sembra esistere un “circuito GPS”, un insieme di Attention Heads che consenta loro di reinterpretare il ruolo di parole già lette. Quello che si vede è una sorpresa robusta e identica in tutte le scale, che nei modelli grandi non appartiene a nessun componente in particolare; un costo di comprensione che non scompare mai del tutto; un processo di comprensione separato dalla sorpresa, che nel 27B sembra anche avere una posizione abbastanza precisa; una strategia che dipende dalla scale, con i modelli piccoli che decidono subito, e i grandi che tengono aperta l’ambiguità fino a metà rete.

Tags: