Tokenization (NLP) (PT)
A Tokenização no contexto de modelos de linguagem grandes (LLMs) é um processo fundamental de pré-processamento que consiste em dividir uma sequência de texto em unidades menores e gerenciáveis chamadas tokens. Esses tokens são então convertidos em identificadores numéricos que o modelo pode processar. A tokenização é um primeiro passo crucial, pois afeta diretamente o desempenho, a eficiência, a equidade e a qualidade da compreensão da linguagem pelo modelo.
Conceitos Fundamentais
Token
Um token é uma unidade discreta de texto que um modelo de linguagem processa. Dependendo do método de tokenização escolhido, um token pode representar:
- Uma palavra inteira (por exemplo, "gato").
- Parte de uma palavra ou uma subpalavra (por exemplo, "in-", "-feliz-", "-mente").
- Um único caractere (por exemplo, "a", "b", "c").
- Um byte (no caso de tokenização em nível de byte).
A cada token único é atribuído um número de índice específico do vocabulário do tokenizador.
Vocabulário do Tokenizador
O vocabulário é o conjunto completo de todos os tokens possíveis que um modelo pode reconhecer. O tamanho do vocabulário é um hiperparâmetro importante:
- Um vocabulário grande permite representar mais palavras inteiras, o que melhora a compreensão e encurta o comprimento das sequências, mas aumenta o tamanho do modelo e a complexidade do treinamento.
- Um vocabulário pequeno é mais compacto, mas exige a divisão de palavras raras ou complexas em um número maior de subpalavras, o que pode alongar as sequências e dificultar a captura da semântica.
O tamanho do vocabulário varia muito entre os modelos: de ~50.000 tokens no GPT-2 a mais de 100.000 em modelos modernos, como o GPT-4 (100.277) e o LLaMA-3 (128.000).
Principais Métodos de Tokenização
Existem três níveis principais de granularidade na tokenização.
1. Tokenização em Nível de Palavra (Word-level)
- Princípio: O texto é dividido em palavras individuais com base em delimitadores (espaços, sinais de pontuação).
- Vantagens: Intuitivo; as sequências de tokens são mais curtas, o que reduz a carga computacional.
- Desvantagens:
- Problema de palavras desconhecidas (Out-of-Vocabulary, OOV): O modelo não consegue processar palavras que não estavam no vocabulário de treinamento, bem como erros de digitação e palavras novas.
- Grande tamanho do vocabulário: Exige o armazenamento de todas as palavras únicas, o que é especialmente problemático para idiomas com morfologia rica.
2. Tokenização em Nível de Caractere (Character-level)
- Princípio: O texto é dividido em caracteres individuais.
- Vantagens:
- Sem problema de OOV: Qualquer palavra pode ser representada como uma sequência de caracteres.
- Vocabulário pequeno: Limitado ao tamanho do alfabeto e dos caracteres especiais.
- Desvantagens:
- Sequências longas: O texto é convertido em sequências de tokens muito longas, o que aumenta significativamente os custos computacionais.
- Perda de semântica: É mais difícil para o modelo capturar o significado, pois ele opera com caracteres individuais em vez de palavras inteiras.
3. Tokenização de Subpalavras (Subword Tokenization)
Esta é uma abordagem intermediária e a mais popular atualmente, que combina as vantagens dos métodos anteriores.
- Princípio: Palavras de uso frequente permanecem como tokens inteiros, enquanto palavras raras ou desconhecidas são divididas em partes menores e significativas (subpalavras).
- Vantagens:
- Processa eficientemente palavras OOV e variações morfológicas.
- Tamanho do vocabulário controlável.
- Captura a estrutura morfológica das palavras.
- Principais algoritmos:
- Byte Pair Encoding (BPE): Um algoritmo iterativo que começa com um conjunto de caracteres e mescla sequencialmente os pares que ocorrem com mais frequência em novos tokens. É usado em modelos GPT. O Byte-level BPE, usado no GPT-2 e no RoBERTa, trata as palavras como sequências de bytes, o que resolve completamente o problema de OOV.
- WordPiece: Um algoritmo semelhante ao BPE, mas que escolhe para mesclagem os pares que maximizam a verossimilhança dos dados de treinamento. É usado em modelos BERT.
- Unigram LM: Diferente do BPE/WordPiece, este método começa com um grande conjunto de subpalavras e o reduz gradualmente, removendo os tokens que menos afetam a probabilidade geral do corpus. Isso permite a criação de múltiplas tokenizações prováveis para uma única palavra (regularização de subpalavras).
- Ferramenta SentencePiece: Uma biblioteca do Google que implementa BPE e Unigram LM e processa o texto como um fluxo contínuo de caracteres, tornando-a universal para idiomas sem delimitadores de palavras explícitos (como o chinês). É usada nos modelos LLaMA e T5.
Tokenização em LLMs Multimodais
Em modelos multimodais, que trabalham não apenas com texto, a tokenização se estende a outros tipos de dados:
- Tokenização visual: Imagens são divididas em pequenos patches (por exemplo, 16x16 pixels), que são então convertidos em vetores-token, de forma análoga aos tokens de texto.
- Tokenização de áudio: Sinais de áudio contínuos são convertidos em uma sequência de tokens discretos, que representam fragmentos curtos de som.
- Abordagem unificada (TEAL): Um conceito onde dados de qualquer modalidade são primeiro tokenizados usando um tokenizador apropriado, e seus embeddings são então processados em um espaço conjunto unificado.
Problemas e Limitações
A tokenização, apesar de sua importância, é fonte de muitos problemas no funcionamento dos LLMs:
- Inconsistência e sensibilidade: Pequenas alterações nos dados de entrada (um erro de digitação, letras maiúsculas/minúsculas, um espaço no final) podem alterar drasticamente a tokenização, levando a um comportamento imprevisível do modelo.
- Problemas multilíngues: Um vocabulário único para muitos idiomas muitas vezes se mostra ineficiente para idiomas de baixos recursos ou morfologicamente ricos, resultando em sequências de tokens excessivamente longas.
- Impacto no raciocínio: A divisão ilógica de números (por exemplo, "25,000" em "25", ",", "000") ou símbolos dificulta a execução de tarefas aritméticas e simbólicas.
- Glitch Tokens: Tokens anômalos ou raros dos dados de treinamento (por exemplo, nomes de usuário do Reddit) que podem causar um comportamento imprevisível ou malicioso do modelo.
Cenário em Evolução e Direções Futuras
A pesquisa na área de tokenização está avançando ativamente nas seguintes direções:
- Modelos sem tokenizador: Desenvolvimento de modelos (CANINE, ByT5) que operam diretamente no nível de bytes ou caracteres para eliminar completamente a etapa de tokenização explícita e seus problemas associados.
- Tokenização adaptativa e treinável: Criação de tokenizadores que podem se adaptar dinamicamente ao idioma, domínio ou até mesmo ao texto de entrada específico, ou que são treinados em conjunto com o modelo principal.
- Abordagens orientadas cognitivamente: Desenvolvimento de métodos inspirados na ciência cognitiva sobre o processamento da linguagem humana (por exemplo, o "Princípio do Mínimo Esforço") para criar tokenizações mais semanticamente significativas.
Ligações externas
- Visão geral da tokenização no curso de LLM da Hugging Face
- Documentação sobre tokenização da Mistral AI
Literatura
- 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.