Palabras a Números
Un Traductor en una Frontera
Un modelo de lenguaje nunca ve texto. Ve enteros. Un tokenizador se sitúa en un cruce fronterizo: palabras humanas entran, IDs enteros salen. La generación invierte el flujo: IDs enteros regresan, un tokenizador renderiza texto.
Tres trabajos:
1. Segmentar. Cortar una cadena en pedazos (tokens).
2. Mapear. Asignar a cada pedazo un ID entero único de un vocabulario fijo.
3. Revertir. Reconstruir el texto a partir de los IDs en el momento de la generación.
Por qué pedazos, no palabras completas
Un vocabulario de palabras completas explota. El inglés solo tiene cientos de miles de formas. Peor aún, un modelo entrenado en palabras completas no puede manejar un error tipográfico, un nombre nuevo o una frase extranjera: cualquier palabra no vista se mapea a una sola ranura <UNK>.
La tokenización de subpalabras lo soluciona. Un vocabulario de piezas comunes se compone en cualquier palabra, incluidas las nunca vistas durante el entrenamiento. Dos estrategias dominan: BPE (codificación de pares de bytes) y segmentación distribucional. ANDREA elige una segunda estrategia.
Por qué Subpalabras
Dónde se Rompe una Palabra
Zellig Harris, 1955
Un lingüista llamado Zellig Harris notó algo. Dentro de una palabra, el conteo de letras distintas que siguen a una secuencia de letras dada varía bruscamente. Después de un puedes encontrar docenas de letras: a, b, c, d, e ... Después de unbel solo un conjunto diminuto sigue: i (luego ievable).
Un pico en la variedad de sucesores marca un límite probable de morfema. Después de un (un prefijo), la variedad aumenta porque muchas raíces pueden seguir. Dentro de una raíz como believ, la variedad se mantiene baja porque las letras se predicen entre sí. En una transición entre morfemas, la variedad aumenta de nuevo.
De Picos de Variedad a Segmentos
Ejecuta ese detector a través de un corpus de entrenamiento. Cada palabra dona evidencia estadística. Un tokenizador recolecta segmentos de alta frecuencia que se repiten en límites con forma de morfema: un, re, pre, believ, know, ing, able, ly, tion, ed.
Sin etiquetas. Ningún lingüista etiqueta manualmente los morfemas. Una estadística de co-ocurrencia de letras hace el trabajo.
Harris vs BPE
| Propiedad | Harris | BPE |
|---|---|---|
| Criterio de límite | Pico de variedad de sucesores | Frecuencia de pares |
| Forma lingüística | Alineado con morfema (prefijo, raíz, sufijo) | Pares de bytes frecuentes |
Ejemplo: unbelievably | un + believ + abl + y | unb + eli + eva + bly |
| Generalización | Fuerte (raíz + afijo se recombinan) | Más débil (los pares no necesitan alinearse) |
Ambos producen piezas subpalabra. Las piezas de Harris tienden a alinearse con lo que un lingüista llamaría un morfema: la unidad significativa más pequeña. Las piezas BPE optimizan la compresión: el par de bytes más frecuente se fusiona, independientemente del significado.
Segmentar una palabra
Tres Losas de Vocabulario
Anatomía de un Vocabulario ANDREA
La tokenización de Harris produce un vocabulario con tres losas:
Losa 1: 256 bytes base. Cada posible byte UTF-8 (0x00 a través de 0xFF) obtiene su propio ID de token. Una red de seguridad: cualquier carácter que contenga un corpus, un tokenizador puede representarlo como una secuencia de bytes. Nunca se activa <UNK>.
Losa 2: N segmentos de morfemas. Piezas comunes descubiertas mediante análisis distribucional. ANDREA-12M entrenado N = 4096; ANDREA-120M entrenado N = 8192. Cada segmento comprime una cadena multibyte recurrente en un solo token.
Losa 3: 1 token BOS. Un marcador especial colocado al inicio de cada secuencia de entrenamiento. Permite que un modelo aprenda 'esta posición no tiene pasado'. ANDREA-12M & ANDREA-120M ambos reservan exactamente un ID para BOS.
Tamaños del Vocabulario
| Modelo | Bytes base | Segmentos de morfemas (N) | BOS | Tamaño del vocabulario |
|---|---|---|---|---|
| ANDREA-12M | 256 | 4096 | 1 | 4353 |
| ANDREA-120M | 256 | 8192 | 1 | 8449 |
256 + N + 1 = tamaño del vocabulario. Simple. Reproducible. Abierto.
Por qué importa un Bloque de Bytes
Un respaldo de bytes garantiza la cobertura. Si un modelo encuentra 日本語 y un tokenizador no tiene morfemas japoneses, los bytes UTF-8 individuales transportan una secuencia a través. Un modelo se entrena en bytes; la calidad en guiones raros depende de la capacidad y la exposición, pero ninguna entrada hace que un tokenizador falle nunca.
Calcula un Vocabulario
Principio de Secuencia
Por qué una secuencia necesita un marcador
Un transformador solo de decodificador predice un token siguiente a partir del contexto previo. La posición 0 no tiene contexto previo. Sin un marcador, la posición 0 está en un agujero lógico: el modelo no tiene nada a lo que atender.
BOS resuelve un agujero. Un solo token especial (ID = 256 + N) se sitúa al inicio de cada secuencia durante el entrenamiento. El modelo aprende:
- 'Cuando veas BOS, predice un primer token probable de texto natural.'
- 'Cuando veas BOS seguido de una palabra, esa palabra es el comienzo de una secuencia, no una continuación.'
Un Token, Muchos Usos
BOS aparece en:
- Tiempo de entrenamiento: prepuesto a cada fragmento de texto alimentado al modelo.
- Tiempo de inferencia: prepuesto a un prompt para que el modelo vea una señal familiar de 'inicio fresco'.
- Marcado de límites: en algunos pipelines, un separador entre documentos concatenados.
ANDREA reserva exactamente un ID para BOS. Sin EOS, sin PAD, sin tokens especiales más allá de lo que un vocabulario necesita. La simplicidad sigue siendo un valor permacomputacional: cada token gana su lugar.
La Actividad 3 Continúa
La Actividad 3 (grow_a_language_model_tokenizer_diet) cubre qué sucede cuando N es demasiado grande o un corpus de tokenizador diverge de un corpus de entrenamiento. ANDREA-12M desperdició el 63.6% de su vocabulario; ANDREA-120M lo solucionó. Sigue leyendo.