Palavras para Números
Um Tradutor em uma Fronteira
Um modelo de linguagem nunca vê texto. Ele vê inteiros. Um tokenizador fica em uma travessia de fronteira: palavras humanas entram, IDs inteiros saem. A geração reverte o fluxo: IDs inteiros voltam, um tokenizador renderiza texto.
Três funções:
1. Segmentar. Dividir uma string em pedaços (tokens).
2. Mapear. Atribuir a cada pedaço um ID inteiro único de um vocabulário fixo.
3. Reverter. Reconstruir o texto a partir dos IDs no momento da geração.
Por que pedaços, não palavras inteiras
Um vocabulário de palavras inteiras explode. O inglês sozinho tem centenas de milhares de formas. Pior, um modelo treinado em palavras inteiras não consegue lidar com um erro de digitação, um novo nome ou uma frase estrangeira: qualquer palavra não vista é mapeada para um único slot <UNK>.
A tokenização de subpalavras corrige isso. Um vocabulário de peças comuns compõe qualquer palavra, incluindo as nunca vistas durante o treinamento. Duas estratégias dominam: BPE (byte pair encoding) & segmentação distribucional. ANDREA escolhe uma segunda estratégia.
Por que Subpalavras
Onde uma Palavra é Quebrada
Zellig Harris, 1955
Um linguista chamado Zellig Harris notou algo. Dentro de uma palavra, a contagem de letras distintas que seguem uma dada sequência de letras varia bruscamente. Após un você pode encontrar dezenas de letras: a, b, c, d, e ... Após unbel apenas um conjunto minúsculo segue: i (então ievable).
Um pico na variedade de sucessores marca uma provável fronteira de morfema. Após un (um prefixo), a variedade aumenta porque muitas raízes podem seguir. Dentro de uma raiz como believ, a variedade permanece baixa porque as letras se preveem mutuamente. Na transição entre morfemas, a variedade aumenta novamente.
De Picos de Variedade a Segmentos
Execute esse detector em um corpus de treinamento. Cada palavra doa evidência estatística. Um tokenizador coleta segmentos de alta frequência que recorr em limites com formato de morfema: un, re, pre, believ, know, ing, able, ly, tion, ed.
Sem rótulos. Nenhum linguista marca morfemas manualmente. Uma estatística de coocorrência de letras faz o trabalho.
Harris vs BPE
| Propriedade | Harris | BPE |
|---|---|---|
| Critério de limite | Pico de variedade de sucessores | Frequência de pares |
| Forma linguística | Alinhado com morfema (prefixo, raiz, sufixo) | Pares de bytes frequentes |
Exemplo: unbelievably | un + believ + abl + y | unb + eli + eva + bly |
| Generalização | Forte (raiz + afixo recombinam) | Mais fraca (pares não precisam alinhar) |
Ambos produzem peças subpalavras. As peças de Harris tendem a se alinhar com o que um linguista chamaria de morfema: a menor unidade significativa. As peças BPE otimizam a compressão: o par de bytes mais frequente é mesclado, independentemente do significado.
Segmentar uma Palavra
Três Camadas de Vocabulário
Anatomia de um Vocabulário ANDREA
A tokenização Harris produz um vocabulário com três camadas:
Laje 1: 256 bytes base. Cada byte UTF-8 possível (0x00 até 0xFF) recebe seu próprio ID de token. Uma rede de segurança: qualquer caractere que um corpus contenha, um tokenizador pode representar como uma sequência de bytes. Nenhum <UNK> nunca é ativado.
Laje 2: N segmentos de morfemas. Peças comuns descobertas por meio de análise distributiva. ANDREA-12M treinou N = 4096; ANDREA-120M treinou N = 8192. Cada segmento comprime uma string multibyte recorrente em um único token.
Laje 3: 1 token BOS. Um marcador especial colocado no início de cada sequência de treinamento. Permite que um modelo aprenda 'esta posição não tem passado'. ANDREA-12M & ANDREA-120M ambos reservam exatamente um ID para BOS.
Tamanhos do Vocabulário
| Modelo | Bytes base | Segmentos de morfema (N) | BOS | Tamanho do vocabulário |
|---|---|---|---|---|
| ANDREA-12M | 256 | 4096 | 1 | 4353 |
| ANDREA-120M | 256 | 8192 | 1 | 8449 |
256 + N + 1 = tamanho do vocabulário. Simples. Reprodutível. Aberto.
Por que um Bloco de Bytes Importa
Um fallback de byte garante cobertura. Se um modelo encontrar 日本語 e um tokenizador não tiver morfemas japoneses, bytes UTF-8 individuais carregam uma sequência adiante. Um modelo treina em bytes; a qualidade em scripts raros depende de capacidade e exposição, mas nenhuma entrada nunca trava um tokenizador.
Calcule um Vocabulário
Início da Sequência
Por Que uma Sequência Precisa de um Marcador
Um transformer apenas decodificador prevê o próximo token a partir do contexto anterior. A posição 0 não tem contexto anterior. Sem um marcador, a posição 0 fica em um buraco lógico: o modelo não tem nada para atender.
BOS resolve um buraco. Um único token especial (ID = 256 + N) fica no início de toda sequência durante o treinamento. O modelo aprende:
- 'Quando você vê BOS, preveja um primeiro token provável de texto natural.'
- 'Quando você vê BOS seguido de uma palavra, essa palavra é o início de uma sequência, não uma continuação.'
Um Token, Muitos Usos
O BOS aparece em:
- Tempo de treinamento: pré-anexado a cada pedaço de texto fornecido ao modelo.
- Tempo de inferência: pré-anexado a um prompt para que o modelo veja um sinal familiar de 'novo início'.
- Marcação de limites: em alguns pipelines, um separador entre documentos concatenados.
ANDREA reserva exatamente um ID para BOS. Sem EOS, sem PAD, sem tokens especiais além do que um vocabulário precisa. Simplicidade permanece um valor permacomputador: cada token ganha seu slot.
Atividade 3 Continua
Activity 3 (grow_a_language_model_tokenizer_diet) covers what happens when N is too large or a tokenizer corpus diverges from a training corpus. ANDREA-12M desperdiçou 63.6% de seu vocabulário; ANDREA-120M corrigiu isso. Continue lendo.