Beam search — один из ключевых алгоритмов декодирования, который используется в нейросетевых моделях для генерации текста, перевода, распознавания речи и других задач, где результат строится последовательно. Его часто обсуждают рядом с языковыми моделями, трансформерами и системами машинного перевода, потому что именно на этапе выбора следующего токена заметно проявляется разница между вероятным ответом и качественным ответом. В задачах генерации модель обычно не выдает готовый текст целиком. Она оценивает вероятности следующих токенов и постепенно формирует последовательность. Самый простой подход — каждый раз брать наиболее вероятный токен. Такой жадный метод быстрый, но легко приводит к посредственным результатам: локально лучший выбор не всегда дает лучшую итоговую фразу. Beam search решает эту проблему иначе: он одновременно удерживает несколько наиболее перспективных вариантов и продолжает развивать их параллельно. Главный параметр алгоритма — ширина луча, или beam width. Если значение равно пяти, система на каждом шаге хранит пять лучших частичных последовательностей. Чем шире луч, тем больше вариантов анализируется и тем выше шанс найти более удачный результат. Но вместе с этим растут вычислительные затраты, задержка ответа и потребление памяти. Поэтому в реальных ИИ-системах beam search всегда требует баланса между качеством и скоростью. В машинном переводе beam search долго был стандартным выбором, потому что он хорошо подходит для задач, где важны грамматика, согласованность и сохранение смысла. Для распознавания речи алгоритм помогает выбирать наиболее вероятную текстовую расшифровку из множества фонетически близких вариантов. В генерации текста его используют осторожнее: слишком строгий поиск по вероятности может делать ответы однообразными, сухими и чрезмерно предсказуемыми. Именно поэтому beam search часто сравнивают с sampling-методами, такими как top-k, top-p и temperature sampling. Сэмплирование добавляет вариативность и лучше подходит для творческих задач, диалогов и генерации идей. Beam search, напротив, сильнее ориентирован на стабильность и вероятность. В современных языковых моделях выбор между этими подходами зависит от сценария: для точного перевода или формального ответа может подойти beam search, а для живого диалога чаще выбирают вероятностное сэмплирование. У алгоритма есть и известные ограничения. Он может предпочитать короткие последовательности, если не используются корректировки длины. Также он не гарантирует глобально оптимальный результат, а только расширяет область поиска по сравнению с жадным декодированием. При большой ширине луча качество иногда перестает расти, зато стоимость вычислений продолжает увеличиваться.