La decodificación codiciosa es una estrategia de decodificación fundamental utilizada en los modelos de lenguaje autorregresivos, incluidos aquellos basados en la arquitectura transformador. En cada paso de generación, el modelo calcula una distribución de probabilidad sobre el vocabulario para el siguiente token, y la decodificación codiciosa selecciona el token con la mayor probabilidad. Este proceso se repite hasta que se genera un token de fin de secuencia o se alcanza una longitud máxima predefinida. Debido a que siempre elige el token más probable, la decodificación codiciosa es determinista: dado el mismo entrada y los mismos pesos del modelo, produce la misma salida cada vez. Es computacionalmente eficiente y fácil de implementar, lo que la convierte en una línea base común en tareas de procesamiento de lenguaje natural. Sin embargo, a menudo conduce a texto repetitivo o subóptimo porque no considera el impacto de una elección en tokens futuros; un token ligeramente menos probable en un paso temprano podría permitir una continuación mucho más coherente. La decodificación codiciosa se contrasta con métodos estocásticos como muestreo top-k y muestreo top-p, que introducen aleatoriedad, y con búsqueda de haz, que mantiene múltiples secuencias candidatas para encontrar una salida más globalmente óptima.
Cómo funciona la decodificación codiciosa
En un modelo autorregresivo, la probabilidad de una secuencia de tokens \(x_1, x_2, \ldots, x_T\) se factoriza como el producto de probabilidades condicionales: \(P(x_1, \ldots, x_T) = \prod_{t=1}^T P(x_t | x_1, \ldots, x_{t-1})\). La decodificación codiciosa aproxima la secuencia más probable eligiendo, en cada paso de tiempo \(t\), el token \(x_t\) que maximiza \(P(x_t | x_1, \ldots, x_{t-1})\). Esto es una maximización local, no global. El algoritmo es sencillo: comenzar con un prompt o un token de inicio, alimentarlo al modelo, obtener la distribución de probabilidad para el siguiente token, elegir el argmax, añadirlo a la entrada y repetir. Este proceso a veces se denomina "decodificación argmax" o "decodificación de máxima verosimilitud" en cada paso.
Ventajas y desventajas
La principal ventaja de la decodificación codiciosa es su simplicidad y velocidad. No requiere parámetros adicionales ni estructuras de búsqueda, lo que la hace adecuada para aplicaciones en tiempo real donde la latencia es crítica, como chatbots interactivos o completado de código. También produce salidas deterministas, lo que puede ser deseable para depuración o reproducibilidad. Sin embargo, la decodificación codiciosa tiene desventajas significativas. Debido a que nunca retrocede, puede quedarse atascada en bucles, generando frases repetitivas (por ejemplo, "te amo te amo te amo"). También tiende a producir texto insípido o genérico, ya que siempre elige la palabra más común, que puede no ser la más informativa o creativa. La investigación ha demostrado que la decodificación codiciosa a menudo produce salidas de menor calidad en comparación con la búsqueda de haz o métodos de muestreo, especialmente para tareas de generación de final abierto como narración de historias o diálogo.
Comparación con la búsqueda de haz
La búsqueda de haz es una estrategia de decodificación más sofisticada que mantiene un conjunto de \(k\) hipótesis parciales (haces) en cada paso. En cada paso de tiempo, expande todos los haces considerando todos los posibles tokens siguientes, y luego mantiene las \(k\) secuencias con la mayor probabilidad logarítmica acumulada. Esto permite al modelo explorar múltiples caminos y evitar los óptimos locales en los que cae la decodificación codiciosa. La búsqueda de haz generalmente produce secuencias más coherentes y con mayor puntuación que la decodificación codiciosa, pero es computacionalmente más costosa, ya que requiere evaluar \(k\) veces más candidatos por paso. En la práctica, la búsqueda de haz con un tamaño de haz moderado (por ejemplo, 4 u 8) se utiliza a menudo para tareas como la traducción automática, donde la longitud de salida está restringida y la coherencia global importa. La decodificación codiciosa puede verse como una búsqueda de haz con \(k=1\). Sin embargo, incluso la búsqueda de haz puede sufrir de repetición y falta de diversidad, por lo que los métodos basados en muestreo se prefieren para la generación creativa.
Casos de uso e implementación
La decodificación codiciosa se utiliza ampliamente en sistemas de producción donde la velocidad es más importante que la calidad de salida, como en algunos pipelines de inferencia de grandes modelos de lenguaje. Por ejemplo, cuando un usuario hace una pregunta factual simple, la decodificación codiciosa podría ser suficiente para proporcionar una respuesta correcta. También se utiliza como línea base en artículos de investigación para comparar con métodos más avanzados. La implementación es trivial en la mayoría de los marcos de aprendizaje profundo: después de obtener los logits del modelo, se aplica argmax sobre la dimensión del vocabulario. Muchas bibliotecas, como Transformers de Hugging Face, proporcionan un parámetro do_sample=False que activa la decodificación codiciosa. A pesar de sus limitaciones, la decodificación codiciosa sigue siendo una técnica fundamental en el campo de la inteligencia artificial y es a menudo el primer método que se enseña a los estudiantes que aprenden sobre generación de texto.
Limitaciones y alternativas
La principal limitación de la decodificación codiciosa es su incapacidad para recuperarse de errores tempranos. Por ejemplo, en una frase como "El gato se sentó en el...", si el modelo predice "tapete" con alta probabilidad pero "suelo" con probabilidad ligeramente menor, la decodificación codiciosa elegirá "tapete". Si el contexto posterior habría sido más natural con "suelo", el modelo no puede volver atrás. Es por esto que se utilizan alternativas como el muestreo con temperatura, top-k o muestreo de núcleo (top-p) para introducir aleatoriedad y aumentar la diversidad. Estos métodos muestrean de la distribución de probabilidad en lugar de tomar el argmax, permitiendo que se seleccionen tokens menos probables. Otra alternativa es la búsqueda contrastiva, que equilibra entre la confianza del modelo y la diversidad del texto generado. En la práctica, la elección de la estrategia de decodificación depende de la tarea: para generación factual, se prefiere la decodificación codiciosa o la búsqueda de haz; para escritura creativa, los métodos de muestreo son mejores.
Referencias
- La decodificación codiciosa se describe en libros de texto estándar sobre procesamiento de lenguaje natural, como "Speech and Language Processing" de Daniel Jurafsky y James H. Martin.
- Las limitaciones de la decodificación codiciosa se discuten en el contexto de la traducción automática neuronal en artículos de Sutskever et al. (2014) y Bahdanau et al. (2015).
- Para una comparación exhaustiva de estrategias de decodificación, véase el artículo "The Curious Case of Neural Text Degeneration" de Holtzman et al. (2019), que destaca los peligros de la decodificación codiciosa y la búsqueda de haz y propone el muestreo de núcleo.
---
Nota: Este artículo se centra en el concepto de decodificación codiciosa tal como se utiliza en los modelos de lenguaje neuronales modernos. No debe confundirse con los algoritmos codiciosos en general, que son una clase más amplia de técnicas de optimización.