El muestreo top-p, también conocido como muestreo por núcleo, es una estrategia de decodificación estocástica utilizada para generar secuencias a partir de modelos probabilísticos autorregresivos, particularmente en la generación de lenguaje natural. Fue propuesto originalmente por Ari Holtzman, Yejin Choi y sus colegas en 2019 para abordar el problema del texto repetitivo y sin sentido producido por métodos de decodificación deterministas como la búsqueda de haz. Desde entonces, la técnica se ha aplicado en otros campos científicos, como la ingeniería de proteínas y la geofísica.
En el muestreo top-p, se establece un umbral de probabilidad p, y el siguiente elemento de una secuencia se muestrea únicamente del conjunto más pequeño posible de candidatos de alta probabilidad cuya probabilidad acumulada supera p. Este método adapta el tamaño del grupo de candidatos según la certeza del modelo, lo que lo hace más flexible que el muestreo top-k, que muestrea de un número fijo de candidatos. Debido a su eficacia, el muestreo top-p se utiliza ampliamente en muchas aplicaciones de modelos de lenguaje grandes.
Técnica
En cada paso del proceso de generación de texto, un modelo de lenguaje calcula una distribución de probabilidad sobre todo su vocabulario para el siguiente token. Si bien es posible simplemente elegir el token con mayor probabilidad (búsqueda voraz) o un conjunto limitado de secuencias de alta probabilidad (búsqueda de haz), estos métodos deterministas a menudo producen texto aburrido, repetitivo o sin sentido. El muestreo top-p introduce aleatoriedad para evitar estos problemas mientras mantiene la calidad.
La idea central es muestrear de un conjunto más pequeño y más creíble de tokens en cada paso, llamado núcleo. Este núcleo contiene los tokens siguientes más probables cuya probabilidad combinada, o acumulada, apenas supera el umbral p. Al muestrear solo de este grupo de tamaño dinámico, el modelo puede adaptarse a diferentes situaciones. Cuando el modelo está seguro sobre el siguiente token (por ejemplo, un token tiene una probabilidad muy alta), el núcleo será pequeño. Cuando el modelo es incierto (las probabilidades están distribuidas de manera más uniforme), el núcleo será más grande, permitiendo más diversidad.
El proceso en cada paso es el siguiente:
- El modelo calcula las probabilidades para todos los posibles tokens siguientes.
- Los tokens se ordenan por su probabilidad en orden descendente.
- El núcleo se forma seleccionando tokens desde la parte superior de la lista hasta que su probabilidad acumulada supere el umbral predefinido, p.
- Las probabilidades de los tokens dentro de este núcleo se reescalan para que sumen 1. Todos los tokens fuera del núcleo se descartan (se les asigna una probabilidad de 0).
- El siguiente token final se muestrea aleatoriamente de esta nueva distribución más pequeña.
Formalmente, el núcleo, \(V^{(p)} \subseteq V\), se define como el conjunto más pequeño de tokens que satisface:
\[\sum_{x \in V^{(p)}} P(x|x_1, \dots, x_{t-1}) \geq p\]
En esta fórmula, \(P(x|x_1, \dots, x_{t-1})\) representa la probabilidad de un token \(x\) dados los tokens precedentes \(x_1, \dots, x_{t-1}\).
Ejemplo
Imagina que en un cierto paso, un modelo de lenguaje tiene un vocabulario de cinco palabras: [the, a, cat, dog, eats] y produce las siguientes probabilidades:
- the: 0.5
- a: 0.2
- cat: 0.1
- dog: 0.1
- eats: 0.1
Si establecemos \(p = 0.8\):
- Los tokens se ordenan por probabilidad: [the, a, cat, dog, eats].
- Se calcula la probabilidad acumulada:
- the: 0.5
- the + a: 0.5 + 0.2 = 0.7
- the + a + cat: 0.7 + 0.1 = 0.8
- El núcleo es el conjunto más pequeño con probabilidad acumulada ≥ 0.8, que es \(V^{(0.8)} = \{\text{the, a, cat}\}\).
- Las probabilidades para este conjunto se reescalan para sumar 1:
- P(the) = 0.5 / 0.8 = 0.625
- P(a) = 0.2 / 0.8 = 0.25
- P(cat) = 0.1 / 0.8 = 0.125
- El siguiente token se muestrea entonces de esta nueva distribución, lo que significa que dog y eats tienen una probabilidad del 0% de ser elegidos.
Muestreo top-k
El muestreo top-k es una técnica similar donde el grupo de tokens candidatos se restringe a los \(k\) tokens más probables. La principal ventaja de top-p es su adaptabilidad. Cuando el modelo está muy seguro sobre el siguiente token (una distribución con un pico pronunciado), el núcleo \(V^{(p)}\) puede ser muy pequeño. Cuando el modelo es incierto (una distribución plana), el núcleo puede ser mucho más grande, permitiendo más diversidad. En contraste, top-k siempre muestrea de un número fijo de tokens, lo que puede ser demasiado restrictivo o demasiado amplio dependiendo del contexto.
Aplicaciones
Aunque el muestreo top-p es más famoso por su uso como estrategia de decodificación para modelos de lenguaje grandes, la técnica también se ha adaptado para su uso en otros dominios científicos que implican generar o analizar datos secuenciales a partir de modelos probabilísticos.
Generación de lenguaje natural
En su dominio original de generación de lenguaje natural, el muestreo top-p se valora por su capacidad para producir texto más diverso y coherente en comparación con los métodos deterministas. Se ha demostrado que es beneficioso en tareas como la generación automática de preguntas, donde la diversidad de muestras es importante para crear datos de entrenamiento efectivos para modelos de respuesta a preguntas.
Diseño de fármacos y proteínas
El muestreo top-p se utiliza en biología computacional para generar nuevas secuencias moleculares y de proteínas a partir de modelos de lenguaje especializados. En el diseño de fármacos de novo, los modelos de lenguaje químico entrenados en estructuras moleculares utilizan el muestreo por núcleo para generar bibliotecas enfocadas de nuevos candidatos a fármacos válidos. De manera similar, los modelos de lenguaje de proteínas aprovechan el muestreo top-p para proponer nuevas secuencias de proteínas con propiedades deseadas, ayudando en los esfuerzos de ingeniería de proteínas.
Geofísica
En geofísica, el muestreo top-p se ha aplicado para generar secuencias de eventos geológicos o modelar estructuras del subsuelo. Por ejemplo, se puede utilizar en la inversión sísmica o la caracterización de yacimientos para muestrear de modelos probabilísticos que predicen propiedades del subsuelo, ayudando a cuantificar la incertidumbre en las interpretaciones geológicas.
Implementación y uso
En la práctica, el muestreo top-p a menudo se combina con otras estrategias de decodificación, como el escalado de temperatura, para ajustar la aleatoriedad y la calidad del texto generado. El escalado de temperatura ajusta la nitidez de la distribución de probabilidad antes de aplicar top-p, permitiendo un control adicional sobre la diversidad. Muchos marcos de aprendizaje automático y bibliotecas proporcionan soporte integrado para el muestreo top-p, lo que facilita su integración en pipelines existentes.
El muestreo top-p es una característica estándar en las API de las principales empresas de IA, incluyendo OpenAI, Anthropic y Google DeepMind, así como en bibliotecas de código abierto como Transformers de Hugging Face. Normalmente se especifica como un parámetro (por ejemplo, top_p) en las funciones de generación de texto, con valores comunes que van desde 0.9 hasta 0.95 para una salida equilibrada.
La elección de p afecta significativamente la salida. Un p más bajo (por ejemplo, 0.5) hace que el modelo sea más conservador, centrándose en tokens de alta probabilidad, mientras que un p más alto (por ejemplo, 0.99) permite más diversidad pero puede aumentar el riesgo de incoherencia. Los investigadores y profesionales a menudo ajustan p según la tarea específica y las características de salida deseadas.
Véase también
- muestreo top-k
- muestreo por temperatura
- búsqueda de haz
- decodificación voraz