Согласно моему пониманию (пожалуйста, исправьте меня, если я ошибаюсь), Beam Search - это BFS, где он исследует только «график» возможностей вниз b наиболее вероятных вариантов, где b - размер луча.
Чтобы рассчитать / оценить каждый вариант, особенно для работы, которую я выполняю в области НЛП, мы в основном рассчитываем оценку вероятности путем вычисления вероятности токена с учетом всего, что предшествует ему.
Это имеет смысл в рекуррентной архитектуре, где вы просто запускаете имеющуюся модель с вашим декодером через лучшие b первые токены, чтобы получить вероятности вторых токенов для каждого из первых токенов. , В конце концов вы получаете последовательности с вероятностями, и вы просто выбираете последовательность с наибольшей вероятностью.
Однако в архитектуре Transformer, где модель не имеет такого повторения, на выходе выводится полная вероятность для каждого слова в словаре для каждой позиции в последовательности (размер пакета, максимальная длина последовательности, размер вокаба) , Как мне интерпретировать этот вывод для Beam Search? Я могу получить кодировки для входной последовательности, но поскольку нет повторения использования предыдущего вывода в качестве входных данных для декодирования следующего токена, как мне рассчитать вероятность всех возможных последовательностей, вытекающих из лучших b токены?