Clase 05 — Modelos de lenguaje y decodificación

Un entrenador de BPE que cuenta pares y fusiona de verdad sobre el texto que escribas; un modelo de lenguaje pequeño pero real, con sus probabilidades contadas de un corpus; y los tres mandos de decodificación —temperatura, top-k y top-p— implementados como en las librerías.

Entrenador de BPE algoritmo real

El algoritmo completo: parte de caracteres sueltos, cuenta todos los pares adyacentes, fusiona el más frecuente y repite. Escribe lo que quieras y verás aparecer las subpalabras que tu texto justifica.

Vocabulario
símbolos distintos
Tokens totales
longitud de la secuencia
Compresión
letras ÷ tokens (el marcador · cuenta como token)
Historial de fusiones
Pares candidatos ahora mismo
Tokenización resultante (· marca el final de palabra)
La compensación de 5.1.1. A nivel de caracteres el vocabulario es minúsculo pero las secuencias son larguísimas. A nivel de palabras las secuencias son cortas pero el vocabulario es enorme y cualquier palabra nueva es un <UNK>. BPE se sienta en medio: aprende las piezas frecuentes y deja que las raras se compongan de trozos. La curva muestra cómo cada fusión acorta la secuencia — con rendimientos decrecientes.

BPE no es el único: WordPiece fusiona maximizando verosimilitud, y Unigram/SentencePiece parte de un vocabulario grande y poda.
Un modelo de lenguaje de verdad (pequeño, pero real)

Modelo de bigramas con suavizado, con las probabilidades contadas de un corpus incluido en esta página. No hay guion prefijado: cada token se muestrea de la distribución real. La factorización es la de siempre:

\[ P(x_1,\dots,x_N) = \prod_{t=1}^{N} P(x_t \mid x_{<t}) \]

Las continuaciones más probables dado el contexto actual, según los conteos del corpus. Al muestrear, el token elegido se marca en la secuencia.

Por qué la probabilidad conjunta se desploma. Multiplicar cientos de números menores que 1 da un resultado que ningún float puede representar. Por eso siempre se trabaja con log-probabilidades: el producto se vuelve suma, y esa suma es exactamente la entropía cruzada de la pestaña 4.
Distribución tras filtrar
sobrevive al filtro descartado

Las barras son las probabilidades ya renormalizadas: lo que realmente se muestrea. Los tokens descartados aparecen en 0.

Frecuencias observadas al muestrear repetidamente de la distribución filtrada: la comprobación empírica de que el filtro hace lo que dice.

Los tres mandos
Tokenlogitp tras Tacum.final
Mueve la distribución y mira la perplejidad

Arrastra los deslizadores para repartir la probabilidad entre cuatro continuaciones. Se renormaliza sola.

Las métricas
\[ H(P) = -\sum_i P(x_i)\log_2 P(x_i), \qquad \text{PPL} = 2^{H(P)} \]
Entropía
bits
Perplejidad
factor de ramificación
Referencias de escala
SituaciónEntropíaPPL
Certeza absoluta (p = 1)0 bits1
Moneda al aire (2 opciones)1 bit2
8 opciones equiprobables3 bits8
Vocabulario de 50 000 al azar15.6 bits50 000

La perplejidad es "entre cuántas opciones equiprobables está dudando el modelo". Bajar de PPL 50 000 a PPL 20 es todo el trabajo de un modelo de lenguaje.

Para seguir jugando
  • En la 1, carga el corpus del apunte y da dos fusiones: deben salir es y luego est, tal como dice 5.1.2.
  • Escribe tu propio nombre repetido diez veces en el corpus y mira cómo BPE lo convierte en un solo token.
  • En la 2, pon la temperatura en 0.1 y luego en 1.8: el mismo modelo pasa de repetirse a decir disparates. No cambió ningún peso.
  • En la 3, con el preset del apunte y \(T=1\), pon top-p = 0.9: debe quedar el núcleo {A, B, C} y p = [0.665, 0.245, 0.090].
  • En la 4, reparte la probabilidad a partes iguales entre 4 tokens: H = 2 bits exactos, PPL = 4.