Tokenization (NLP) (IT)
La tokenizzazione nel contesto dei modelli linguistici di grandi dimensioni (LLM) è un processo fondamentale di pre-elaborazione che consiste nel suddividere una sequenza di testo in unità più piccole e gestibili, denominate token. Questi token vengono poi convertiti in identificatori numerici che il modello può elaborare. La tokenizzazione è il primo passo di importanza critica, poiché influenza direttamente le prestazioni, l'efficienza, l'equità e la qualità della comprensione linguistica del modello.
Concetti fondamentali
Token
Il token è un'unità discreta di testo che viene elaborata da un modello linguistico. A seconda del metodo di tokenizzazione scelto, un token può rappresentare:
- Un'intera parola (ad esempio, «gatto»).
- Una parte di parola o sottoparola (ad esempio, «in-», «-contro-», «-ato»).
- Un singolo carattere (ad esempio, «a», «b», «c»).
- Un byte (nel caso della tokenizzazione a livello di byte).
A ogni token unico viene assegnato un numero di indice specifico tratto dal vocabolario del tokenizzatore.
Vocabolario del tokenizzatore
Il vocabolario (o vocabulary) è l'insieme completo di tutti i token possibili che il modello è in grado di riconoscere. La dimensione del vocabolario è un iperparametro importante:
- Un vocabolario ampio consente di rappresentare più parole nella loro interezza, migliorando la comprensione e riducendo la lunghezza delle sequenze, ma aumenta la dimensione del modello e la complessità dell'addestramento.
- Un vocabolario ridotto è più compatto, ma richiede di suddividere le parole rare o complesse in un numero maggiore di sottoparole, il che può allungare le sequenze e rendere più difficile la cattura della semantica.
La dimensione del vocabolario varia notevolmente tra i modelli: da circa 50 000 token in GPT-2 fino a oltre 100 000 nei modelli moderni, come GPT-4 (100 277) e LLaMA-3 (128 000).
Principali metodi di tokenizzazione
Esistono tre livelli principali di granularità della tokenizzazione.
1. Tokenizzazione a livello di parola (Word-level)
- Principio: Il testo viene suddiviso in singole parole sulla base di delimitatori (spazi, segni di punteggiatura).
- Vantaggi: Intuitivamente comprensibile; le sequenze di token sono più brevi, il che riduce il carico computazionale.
- Svantaggi:
- Problema delle parole sconosciute (Out-of-Vocabulary, OOV): Il modello non è in grado di elaborare parole assenti nel vocabolario di addestramento, né errori di battitura o neologismi.
- Dimensione elevata del vocabolario: È necessario memorizzare tutte le parole uniche, il che risulta particolarmente problematico per le lingue con morfologia ricca.
2. Tokenizzazione a livello di carattere (Character-level)
- Principio: Il testo viene suddiviso in singoli caratteri.
- Vantaggi:
- Nessun problema OOV: Qualsiasi parola può essere rappresentata come una sequenza di caratteri.
- Vocabolario ridotto: Limitato alla dimensione dell'alfabeto e dei caratteri speciali.
- Svantaggi:
- Sequenze lunghe: Il testo viene convertito in sequenze di token molto lunghe, il che aumenta considerevolmente i costi computazionali.
- Perdita di semantica: È più difficile per il modello cogliere il significato, poiché opera su singoli caratteri anziché su parole intere.
3. Tokenizzazione per sottoparole (Subword Tokenization)
Questo è un approccio intermedio e oggi il più diffuso, che combina i vantaggi dei metodi precedenti.
- Principio: Le parole frequenti rimangono token interi, mentre le parole rare o sconosciute vengono suddivise in parti più piccole e significative (sottoparole).
- Vantaggi:
- Gestisce efficacemente le parole OOV e le variazioni morfologiche.
- Dimensione del vocabolario controllata.
- Cattura la struttura morfologica delle parole.
- Principali algoritmi:
- Byte Pair Encoding (BPE): Algoritmo iterativo che parte da un insieme di caratteri e unisce progressivamente le coppie più frequenti in nuovi token. Utilizzato nei modelli GPT. Il Byte-level BPE, impiegato in GPT-2 e RoBERTa, tratta le parole come sequenze di byte, risolvendo completamente il problema OOV.
- WordPiece: Algoritmo simile a BPE, ma per la fusione delle coppie seleziona quelle che massimizzano la verosimiglianza dei dati di addestramento. Utilizzato nei modelli BERT.
- Unigram LM: A differenza di BPE/WordPiece, questo metodo parte da un ampio insieme di sottoparole e lo riduce progressivamente, eliminando i token che influiscono meno sulla probabilità complessiva del corpus. Ciò consente di generare molteplici tokenizzazioni probabili per una singola parola (regolarizzazione per sottoparole).
- Toolkit SentencePiece: Libreria di Google che implementa BPE e Unigram LM ed elabora il testo come un flusso continuo di caratteri, rendendola universale per le lingue prive di delimitatori espliciti di parola (ad esempio, il cinese). Utilizzata nei modelli LLaMA e T5.
Tokenizzazione negli LLM multimodali
Nei modelli multimodali che operano non solo su testo, la tokenizzazione si estende anche ad altri tipi di dati:
- Tokenizzazione visiva: Le immagini vengono suddivise in piccole patch (ad esempio, 16x16 pixel), che vengono poi convertite in vettori-token, analogamente al testo.
- Tokenizzazione audio: I segnali audio continui vengono convertiti in una sequenza di token discreti che rappresentano brevi frammenti sonori.
- Approccio unificato (TEAL): Concetto in cui i dati di qualsiasi modalità vengono prima tokenizzati con il tokenizzatore corrispondente e poi i loro embedding vengono elaborati in un unico spazio condiviso.
Problemi e limitazioni
Nonostante la sua importanza, la tokenizzazione è fonte di numerosi problemi nel funzionamento degli LLM:
- Incoerenza e sensibilità: Piccole variazioni nell'input (errore di battitura, maiuscole/minuscole, spazio finale) possono modificare radicalmente la tokenizzazione, portando a comportamenti imprevedibili del modello.
- Problemi multilingue: Un vocabolario unico per molte lingue risulta spesso inefficiente per le lingue a basse risorse o morfologicamente ricche, generando sequenze di token eccessivamente lunghe.
- Impatto sul ragionamento: Una suddivisione illogica dei numeri (ad esempio, «25.000» in «25», «.», «000») o dei simboli ostacola l'esecuzione di operazioni aritmetiche e di ragionamento simbolico.
- Glitch Token: Token anomali o rari presenti nei dati di addestramento (ad esempio, nomi utente provenienti da Reddit) che possono causare comportamenti imprevedibili o dannosi del modello.
Panorama in evoluzione e direzioni future
La ricerca nel campo della tokenizzazione è attivamente orientata nelle seguenti direzioni:
- Modelli senza tokenizzatore: Sviluppo di modelli (CANINE, ByT5) che operano direttamente a livello di byte o di carattere, al fine di eliminare completamente la fase di tokenizzazione esplicita e i problemi a essa associati.
- Tokenizzazione adattiva e apprendibile: Creazione di tokenizzatori in grado di adattarsi dinamicamente alla lingua, al dominio o persino al testo di input specifico, oppure addestrati congiuntamente al modello principale.
- Approcci orientati alla cognizione: Sviluppo di metodi ispirati alle scienze cognitive sulla elaborazione umana del linguaggio (ad esempio, il «Principio del minimo sforzo»), per creare tokenizzazioni semanticamente più significative.
Riferimenti
- Panoramica della tokenizzazione nel corso sugli LLM di Hugging Face
- Documentazione sulla tokenizzazione di Mistral AI
Bibliografia
- Schuster, M.; Nakajima, K. (2012). Japanese and Korean Voice Search. PDF.
- Sennrich, R.; Haddow, B.; Birch, A. (2016). Neural Machine Translation of Rare Words with Subword Units. arXiv:1508.07909.
- Kudo, T.; Richardson, J. (2018). SentencePiece: A Simple and Language-Independent Subword Tokenizer and Detokenizer for Neural Text Processing. arXiv:1808.06226.
- Kudo, T. (2018). Subword Regularization: Improving Neural Network Translation Models with Multiple Subword Candidates. arXiv:1804.10959.
- Song, X. et al. (2021). Fast WordPiece Tokenization. ACL-Anthology.
- Mielke, S. J.; Dalmia, S.; Cotterell, R. (2021). A Brief History of Open-Vocabulary Modeling and Tokenization in NLP. arXiv:2112.10508.
- Xue, J. et al. (2022). ByT5: Towards a Token-Free Future with Pre-trained Byte-to-Byte Models. arXiv:2105.13626.
- Clark, J. H. et al. (2022). CANINE: Pre-Training an Efficient Tokenization-Free Encoder for Language Representation. arXiv:2103.06874.
- Limisiewicz, T.; Balhar, J.; Mareček, D. (2023). Tokenization Impacts Multilingual Language Modeling. arXiv:2305.17179.
- Pourmostafa Roshan Sharami, J.; Shterionov, D.; Spronck, P. (2023). A Systematic Analysis of Vocabulary and BPE Settings for Optimal Fine-Tuning of NMT. arXiv:2303.00722.
- Batsuren, K. et al. (2024). Evaluating Subword Tokenization: Alien Subword Composition and OOV Generalization Challenge. arXiv:2404.13292.
- Chai, Y. et al. (2024). Tokenization Falling Short: On Subword Robustness in Large Language Models. arXiv:2406.11687.