Как Beam Search работает на выходе Transformer? - PullRequest
0 голосов
/ 19 июня 2019

Согласно моему пониманию (пожалуйста, исправьте меня, если я ошибаюсь), Beam Search - это BFS, где он исследует только «график» возможностей вниз b наиболее вероятных вариантов, где b - размер луча.

Чтобы рассчитать / оценить каждый вариант, особенно для работы, которую я выполняю в области НЛП, мы в основном рассчитываем оценку вероятности путем вычисления вероятности токена с учетом всего, что предшествует ему.

Это имеет смысл в рекуррентной архитектуре, где вы просто запускаете имеющуюся модель с вашим декодером через лучшие b первые токены, чтобы получить вероятности вторых токенов для каждого из первых токенов. , В конце концов вы получаете последовательности с вероятностями, и вы просто выбираете последовательность с наибольшей вероятностью.

Однако в архитектуре Transformer, где модель не имеет такого повторения, на выходе выводится полная вероятность для каждого слова в словаре для каждой позиции в последовательности (размер пакета, максимальная длина последовательности, размер вокаба) , Как мне интерпретировать этот вывод для Beam Search? Я могу получить кодировки для входной последовательности, но поскольку нет повторения использования предыдущего вывода в качестве входных данных для декодирования следующего токена, как мне рассчитать вероятность всех возможных последовательностей, вытекающих из лучших b токены?

1 Ответ

1 голос
/ 20 июня 2019

Поиск луча работает точно так же, как с рекуррентными моделями.Декодер не является рекуррентным (он самодостаточен), но он все еще является авторегрессивным, т. Е. Генерация токена обусловлена ​​ранее сгенерированными токенами.

Во время обучения самообслуживание маскируется,такой, что в обращении только к словам слева от слова, которое генерируется в настоящее время.Он имитирует настройку, которую вы имеете во время вывода, когда у вас действительно есть только левый контекст (потому что правый контекст еще не сгенерирован).

Единственное отличие состоит в том, что в декодере RNN вы используете только последнийСостояние RNN на каждом этапе поиска луча.С Трансформером вам всегда нужно сохранить всю гипотезу и сосредоточиться на всем левом контексте.

...