Búsqueda en haz
Al elegir el primer fragmento de una respuesta, puedes descartar demasiado pronto un camino que más adelante sería mejor. Sin embargo, comprobar todas las secuencias posibles resulta demasiado costoso. Necesitas un conjunto limitado de alternativas.
Beam Search conserva varias respuestas parciales con las mejores puntuaciones. En cada paso las amplía, compara las nuevas secuencias y vuelve a dejar solo un número determinado. El tamaño de este conjunto se llama beam width.
Con una anchura de dos, el sistema puede conservar los comienzos A y B en lugar de elegir A inmediatamente. En el siguiente paso compara sus continuaciones. La puntuación básica combina las probabilidades de los sucesivos tokens —fragmentos de texto—, aunque las implementaciones pueden corregir el efecto de la longitud.
Un conjunto mayor cuesta más memoria y cálculos, y aun así puede descartar el mejor camino. Una probabilidad alta de toda la secuencia tampoco garantiza la veracidad, diversidad o utilidad del texto.
Mecanismo y detalles
En el modelado autorregresivo del lenguaje, la puntuación básica de una secuencia es la suma de los logaritmos de las probabilidades de sus tokens:
Es el logaritmo del producto de las probabilidades. Una puntuación mayor es mejor; la suma evita multiplicar números muy pequeños. La documentación de Hugging Face, «Beam search» describe cómo se mantienen varias secuencias. Una anchura de 1 reduce esta variante básica a la decodificación voraz.
¿Qué prefijo descartarás demasiado pronto?
El ejemplo propio empieza con las probabilidades A = 0,45, B = 0,35 y C = 0,20. Un haz de anchura 2 descarta C. La mejor continuación de A tiene después una probabilidad de 0,4, así que la puntuación de AA es 0,18. En cambio, la ruta omitida CA obtendría . Una anchura de 3 conservará C y encontrará una puntuación mejor. Es un árbol pequeño y completo de dos tokens, sin final anticipado ni normalización de longitud.
La búsqueda en haz sigue siendo una aproximación: no vuelve a expandir un prefijo descartado. La anchura no indica el número de tokens muestreados de una sola distribución, como en el muestreo top-k.
En secuencias de distintas longitudes importan el token de final, la condición de parada y la función de puntuación. Por ejemplo, length_penalty en GenerationConfig divide la puntuación logarítmica por la longitud elevada a una potencia dada. No debe confundirse este criterio con la probabilidad pura. Un haz más ancho tampoco garantiza un contenido mejor; Holtzman et al., §2.2–3 tratan este problema.
Utilizo contenido generado por IA como parte de mi proceso de aprendizaje diario.