Top-p sampling (ES)
El muestreo Top‑p, también conocido como muestreo de núcleo (en inglés, Nucleus Sampling), es un método de decodificación estocástico utilizado en los grandes modelos de lenguaje (LLM) para la generación de texto. El método fue propuesto en 2019 por Ari Holtzman et al. como una alternativa mejorada al muestreo Top‑k fijo. Su idea es seleccionar dinámicamente el conjunto de candidatos en cada paso de la generación basándose en un umbral de probabilidad acumulada .[1]
Concepto
La idea principal de Top-p es seleccionar en cada paso el conjunto más pequeño de tokens más probables cuya probabilidad total sea mayor o igual al umbral especificado (el núcleo, en inglés nucleus). Matématicamente, para una distribución condicional sobre un vocabulario , el núcleo se puede definir de la siguiente manera:
Una formulación equivalente es: ordenar los tokens en orden descendente de y tomar el prefijo más corto cuya masa acumulada sea ≥ .[1]
Una vez que se define el núcleo, las probabilidades de los tokens fuera de se establecen en cero, y las de los tokens dentro del núcleo se normalizan (su suma se convierte en 1). El siguiente token se muestrea a partir de esta distribución truncada.
Adaptación dinámica
- En una distribución «puntiaguda» (cuando el modelo está seguro), el núcleo es pequeño: unos pocos tokens ya alcanzan una masa ≥ , lo que aumenta la coherencia.
- En una distribución «plana» (cuando hay muchas continuaciones plausibles), el núcleo es grande: la selección se amplía, lo que aumenta la diversidad.[1]
Comparación con otros métodos de decodificación
Top‑p vs. Top‑k
- Top‑k siempre selecciona de un número fijo de los tokens más probables. En distribuciones «puntiagudas», esto puede añadir opciones innecesarias y poco probables solo para alcanzar el número , mientras que en distribuciones «planas», por el contrario, puede descartar continuaciones razonables que no llegaron a estar entre los principales.
- Top‑p ajusta el tamaño del conjunto de candidatos según los datos del paso actual, lo que hace que su comportamiento sea más flexible y estable en diferentes tipos de distribuciones.[1]
Top‑p vs. Temperatura
- La temperatura (temperature) remodela toda la forma de la distribución (haciéndola más puntiaguda o más suave), pero no descarta tokens: incluso las opciones poco probables conservan una probabilidad distinta de cero.[2]
- Top‑p introduce un truncamiento estricto de la cola de la distribución: los tokens de baja probabilidad se excluyen por completo del muestreo, lo que ayuda a prevenir continuaciones claramente inapropiadas.[1]
Un consejo práctico de los proveedores: al ajustar el estilo o la aleatoriedad, generalmente se modifica o bien `temperature`, o bien `top_p`, pero no ambos simultáneamente, para evitar un impacto «doble» en la distribución y simplificar el diagnóstico.[3]
Aplicación práctica y recomendaciones
Top‑p es ampliamente utilizado en los LLM modernos debido a su combinación de flexibilidad y control.
- Rango de valores típico. En la práctica, se suelen utilizar valores de (ver guías y ejemplos en Transformers; en muchos SDK, el valor 0.95 aparece como predeterminado o recomendado en los ejemplos).[2][4]
- Valores cercanos a 1.0 (por ejemplo, 0.98–0.99) aumentan la diversidad, ya que más tokens entran en el núcleo.
- Valores más bajos (por ejemplo, 0.80–0.90) aumentan el determinismo y la «contención» del resultado.
- Con , el truncamiento desaparece: la selección se realiza sobre todo el vocabulario (teniendo en cuenta la temperatura).[2]
- Compatibilidad con bibliotecas y API.
- En Transformers, se implementa TopPLogitsWarper, que utiliza adicionalmente un umbral `min_tokens_to_keep` (generalmente ≥1) para evitar la degeneración del núcleo con valores de muy pequeños y distribuciones «puntiagudas».[5]
- En varias API, el parámetro `top_p` está disponible, mientras que `top_k` puede no estarlo; el soporte de los parámetros y su semántica dependen del modelo/proveedor específico (por ejemplo, algunos modelos de razonamiento pueden restringir la configuración estocástica). Consulte las guías oficiales de OpenAI/Azure/Google.[6][3][4]
- Textos largos y repetitividad. En una serie de experimentos, se ha demostrado que el muestreo de núcleo (nucleus sampling) reduce la tendencia a la degeneración (repeticiones, frases clichés) en comparación con los métodos greedy, beam search y Top-k fijo, especialmente en secuencias largas.[1][7]
Literatura
- Holtzman, A. et al. (2020). The Curious Case of Neural Text Degeneration. arXiv:1904.09751.
- Fan, A. et al. (2018). Hierarchical Neural Story Generation. arXiv:1805.04833.
- Meister, C. et al. (2023). Locally Typical Sampling. arXiv:2202.00666.
- Su, Y.; Collier, N. (2022). Contrastive Search Is What You Need for Neural Text Generation. arXiv:2210.14140.
- O’Brien, S.; Lewis, M. (2023). Contrastive Decoding Improves Reasoning in Large Language Models. arXiv:2309.09117.
- Yu, S. et al. (2023). Conformal Nucleus Sampling. ACL Findings 2023.
- Tan, Q. et al. (2024). A Thorough Examination of Decoding Methods in the Era of Large Language Models. arXiv:2402.06925.
- Finlayson, M. et al. (2024). Basis‑Aware Truncation Sampling for Neural Text Generation. arXiv:2412.14352.
- Chen, S. J. et al. (2025). Decoding Game: On Minimax Optimality of Heuristic Text Generation Methods. arXiv:2410.03968.
- Sen, J. et al. (2025). Advancing Decoding Strategies: Enhancements in Locally Typical Sampling for LLMs. arXiv:2506.05387.
Notas
- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 Holtzman, A., Buys, J., Du, L., Forbes, M., & Choi, Y. (2019). The Curious Case of Neural Text Degeneration. arXiv:1904.09751. [1]
- ↑ 2.0 2.1 2.2 Hugging Face Transformers. Generation strategies (top‑k, top‑p, temperature). [2]
- ↑ 3.0 3.1 Microsoft Learn (Azure OpenAI). Text/Chat Completions — parameters. Recomendación: «modificar `temperature` o `top_p`, pero no ambos al mismo tiempo». [3]
- ↑ 4.0 4.1 Google AI / Vertex AI. Generation parameters (topP/topK) for text/Gemini. Ejemplos con topP≈0.95. [4] [5]
- ↑ Transformers API. TopPLogitsWarper (parámetros y comportamiento, incluyendo `min_tokens_to_keep`). [6]
- ↑ OpenAI API Reference. top_p. [7]
- ↑ Tan, Q. et al. (2024). A Thorough Examination of Decoding Methods in the Era of Large Language Models. arXiv:2402.06925. [8]
Véase también
- Temperatura
- Grandes modelos de lenguaje