Positional Encoding

[posizional encòding]

Trucco per dire al Transformer dove sta ciascuna parola nella frase. Senza, il modello vedrebbe le parole come un sacchetto disordinato.

Il Transformer ha un problema: il self-attention guarda tutte le parole in parallelo, senza ordine. Per lui "il cane morde l'uomo" e "l'uomo morde il cane" sono identiche. Non va bene.

La soluzione si chiama positional encoding: aggiungi a ogni token un'informazione che dice "io sono in posizione 5", "io sono in posizione 23". Il modello impara a usarla insieme al significato della parola.

Come si fa, in pratica:

  • Sinusoidale (paper originale 2017): si usano funzioni seno e coseno a frequenze diverse. Trucco intelligente: il modello può estrapolare a frasi più lunghe di quelle viste in training.
  • Learned: si lascia che il modello impari da solo i vettori di posizione. Più flessibile ma non estrapola bene.
  • RoPE (Rotary Position Embedding): usato in Llama, Mistral, Qwen. Codifica la posizione "ruotando" i vettori. Funziona benissimo per contesti lunghi.
  • ALiBi: penalità lineare crescente con la distanza. Usato in alcuni modelli per estendere la context window senza retraining.

Quando senti parlare di modelli con context window enorme (1M token di Gemini, 200K di Claude), buona parte del lavoro sta in scelte furbe di positional encoding. Senza un encoding decente, oltre i 4-8K token la qualità crolla.