La "creatività"
Una manopola tra prudente e creativa. Bassa: sceglie quasi sempre la parola più ovvia (risposte prevedibili). Alta: osa parole meno probabili (più fantasiosa, ma può sballare).
gergo: temperatura
Modelli come ChatGPT fanno una cosa sola, tantissime volte: indovinano la parola dopo. Qui lo vedi con i tuoi occhi — prima in modo semplice, poi (se vuoi) nel dettaglio tecnico.
Per scrivere, l'IA ripete sempre gli stessi 3 passi — uno per ogni parola. Premi «Avanti» e falli uno alla volta, al tuo ritmo:
Hai visto come fa. Adesso prova tu: leggi la frase e scegli la parola che secondo te viene dopo, poi confrontati con l'IA. Quante volte pensi come lei?
Secondo te, quale parola viene dopo?
Le stesse cose che nel gergo tecnico si chiamano temperatura, attention e token. Senza paroloni:
Una manopola tra prudente e creativa. Bassa: sceglie quasi sempre la parola più ovvia (risposte prevedibili). Alta: osa parole meno probabili (più fantasiosa, ma può sballare).
gergo: temperatura
Per scegliere la parola dopo, l'IA non pesa tutto allo stesso modo: decide quali parole precedenti contano di più — un po' come una ricerca sul web, dove alcune parole pesano più di altre.
gergo: attention
L'IA non lavora a lettere né a frasi intere, ma a pezzetti: a volte una parola intera, a volte mezza. È il suo "alfabeto".
gergo: token
L'IA non «capisce» quello che scrive e non cerca fatti in un archivio: indovina schemi a partire da miliardi di testi. Per questo, ogni tanto, inventa con sicurezza numeri, nomi, date o fonti che non esistono (si chiamano allucinazioni). Ottima per scrivere e spiegare — ma le informazioni che contano per i tuoi soldi verificale sempre alla fonte.
Fonte: Financial Times — «Generative AI exists because of the transformer».
🔬 Vuoi vedere il motore vero, parola per parola, con un vero modello IA che gira nel tuo browser?
🤖 Modello reale: un vero LLM (distilGPT-2 / GPT-2 / Qwen2.5) gira nel tuo browser via transformers.js. Tokenizzazione e probabilità del next-token sono reali: cambia il prompt e cambia davvero tutto. Primo avvio: download di qualche decina/centinaio di MB (poi in cache). I modelli GPT-2 sono in inglese: prova un prompt EN, oppure scegli Qwen per l'italiano. I tensori interni (embedding/attention/FFN) non sono esposti dal runtime.
👉 In parole semplici: qui spezziamo il tuo testo di partenza in pezzi (i «token»). Sono l'input che l'IA legge, non la risposta. Le parole nuove che l'IA genera compaiono solo all'ultimo passo (n° 5, «Sampling»).
Il testo viene spezzato in unità (token). Qui usiamo token a parole per chiarezza; GPT usa BPE/WordPiece.
Ogni token diventa un embedding, cioè un vettore numerico. Viene sommato un positional encoding che dice al modello dove si trova nella frase.
Ogni token "interroga" i token precedenti (Query vs Key) e ottiene una media pesata dei Value. La causal mask blocca lo sguardo verso il futuro.
L'output dell'attention viene sommato all'input (skip connection), normalizzato e passato a una rete fully-connected non lineare.
L'ultimo token viene proiettato sul vocabolario: ottieni logit, poi probabilità, poi campioni il prossimo token con temperatura/top-k/top-p.
Quando generiamo il prossimo token, l'ultima posizione "guarda" indietro. Ecco su quali token precedenti concentra l'attenzione.
Stessi logit, tre temperature diverse. Nota come T bassa schiacci tutto sul top token, mentre T alta distribuisce le probabilità.
Ogni riga colorata è un vettore numerico. Non sono decorazioni: rappresentano i valori reali che il modello elabora al posto delle parole.
Un Large Language Model è, in fondo, una macchina che stimola la probabilità condizionata
P(tokent+1 | token1, …, tokent).
Generare un testo lungo significa campionare un token, appenderlo al contesto e ripetere il calcolo.
È il cuore di GPT, Claude, LLaMA e simili.
Il tokenizer converte il testo in una sequenza di interi. Ogni intero viene trasformato in un vettore tramite la matrice di embedding. A questo vettore si somma un positional encoding (sinusoidale o RoPE) perché il modello percepisca l'ordine: “il gatto” e “gatto il” devono avere significati diversi.
Per ogni token costruiamo una Query ("cosa sto cercando?"), una Key ("cosa offro?") e un Value ("cosa trasmetto?"). I prodotti scalari Q·K misurano la similarità; la softmax trasforma questi punteggi in pesi di attenzione. Infine moltiplichiamo per V per ottenere un nuovo vettore contestuale.
In un decoder autoregressivo si applica una causal mask: i pesi per le posizioni future sono forzati a zero (tecnicamente a −∞ prima della softmax), così il modello non può "barare" guardando il futuro.
I transformer usano più attention heads in parallelo, ognuna specializzata su diversi tipi di relazioni (sintassi, pronomi, fatti, ecc.). Le uscite vengono concatenate e proiettate. Attorno a ogni sotto-livello c'è una residual connection (input + output) e una layer normalization, che rendono il training profondo stabile.
Dopo l'attention, ogni vettore passa attraverso una piccola rete neurale punto-per-punto (solitamente
dmodel → 4×dmodel → dmodel)
con attivazione non lineare (GELU/ReLU). È qui che avvengono gran parte delle trasformazioni semantiche.
L'ultimo vettore dello strato finale (quello corrispondente all'ultimo token generato) viene moltiplicato per la matrice di output (spesso la trasposta della matrice di input embedding). Il risultato è un vettore di logits, uno per ogni token del vocabolario. La softmax:
Durante il training il modello vede milioni di testi e regola i propri pesi per massimizzare la probabilità del token corretto.
Durante l'inference (cioè quando usi ChatGPT o questa simulazione) i pesi sono congelati: il modello non impara più,
limita a calcolare P(next | context) e campionare. Quello che stai vedendo qui è inference.
Temperatura divide i logit per T prima della softmax: T bassa rende il modello determinista e concentrato sul top token; T alta appiattisce la distribuzione e rende l'output più "creativo".
Top-K tiene solo i K token più probabili; Top-P (nucleus) tiene il più piccolo insieme di token la cui probabilità cumulata supera p. Infine si campiona dal sotto-insieme rimanente.
A ogni passo autoregressivo, i Key e Value dei token precedenti non cambiano. I modelli reali li memorizzano in una KV cache: a ogni nuovo token calcolano solo il nuovo Q, K, V e fanno attention tra il nuovo Q e tutti i K cached. Questo riduce la complessità da O(n²) a O(n) per passo. Il simulatore qui ricomputa tutto per rendere visibili i meccanismi.
Qui usiamo 1 layer, 8 dimensioni di embedding, 2 attention heads e un vocabolario di ~40 parole. GPT-4, Claude o LLaMA hanno decine o centinaia di layer, embedding da migliaia di dimensioni, decine di attention heads e vocabolari da decine di migliaia di token. Il numero totale di parametri va da qualche miliardo a più di un bilione.
Nonostante la scala, il meccanismo è identico: ogni token viene prediso in modo autoregressivo, con la stessa formula di attention, le stesse residual connections, la stessa softmax e lo stesso campionamento.