Sequence Modeling with Unconstrained Generation Order
Dmitrii Emelianenko, Elena Voita, Pavel Serdyukov
Yandex, 2019
Статья: https://arxiv.org/abs/1911.00176
Код: https://github.com/TIXFeniks/neurips2019_intrus
#nlp #nlg #nonautoregressive #transformer #nips
Авторы решают задачу обучения модели, которая генерирует последовательность по одному токену, но в произвольном порядке. На каждом шагу сеть предсказывает позицию и токен для неё. Такая задача затруднена тем, что для последовательности из N токенов существует N! различных путей последовательных вставок из пустой строки до таргета. Вместо того, чтобы учить модель, награждая за все правильные последовательности и штрафуя за неправильные (что просто нереально), делается следующий трюк — давайте скажем, что для каждой строки есть некоторый оптимальный путь, тогда задача модели — сопоставить ему наибольшую вероятность. Это позволяет перейти к оптимизации lower bound оценки на исходный страшный log-likelihood. Затем делается замена оценки оптимального пути на матожидание по сэмплу путей из текущей модели с весами соответствующими вероятности пути, что даёт следующую lower bound оценку, которую уже не так сложно оптимизировать.
Архитектура предлагаемой модели INTRUS -- encoder/decoder трансформер со следующими модификациями:
- отключаем маскирование "будущих" токенов в декодере, т.к. у нас больше нет явной последовательности, декодер надо полностью пересчитывать после каждой вставки.
- последний слой предсказывает матрицу вероятностей размера (число слотов Х число токенов), для этого делается отдельная проекция в вероятности слотов и отдельная проекция в условные вероятности p(токен|слот), а затем из них собирается итоговая вероятность.
Тестировали на нескольких задачах (NMT, Image-To-Latex, Image captioning). На всех тестах мерили BLEU, для MSCOCO дополнительно CIDEr. Почти везде обогнали бейзлайны, но при этом увеличение времени работы относительно бейзлайна надлинейно растёт от длины строки.
Изучение последовательностей сэмплинга, предлагаемых, обученной моделью показало, что часто модель выбирает сэмплирование слева направо или справа налево, но иногда отходит от этой последовательности при обработке связанных групп токенов (приводят пример со связью открывающих и закрывающих кавычек или скобок). Другая стратегия — генерация из середины в стороны. Авторы отмечают, что чаще модель старается сначала сэмплить высокочастотные токены (например, пунктуацию и союзы), что совпадает с результатами из предыдущей описанной статьи. Для анализа этого эффекта приводятся распределения частот сэмплинга разных частей речи от номера шага для такой модели и для обычного сэмплинга слева направо.
Здесь же, дополнительно, упомяну статью Insertion-based Decoding with automatically Inferred Generation Order от Facebook AI, 2019. Она очень похожа по логике на INTRUS, решает ту же задачу генерации по одному токену в произвольном порядке. Из основных отличий я отметил два -- они используют другую ELBo оценку, и они используют относительное а не абсолютное позиционное кодирование. Детали читайте в [arxiv:1902.01370].
Dmitrii Emelianenko, Elena Voita, Pavel Serdyukov
Yandex, 2019
Статья: https://arxiv.org/abs/1911.00176
Код: https://github.com/TIXFeniks/neurips2019_intrus
#nlp #nlg #nonautoregressive #transformer #nips
Авторы решают задачу обучения модели, которая генерирует последовательность по одному токену, но в произвольном порядке. На каждом шагу сеть предсказывает позицию и токен для неё. Такая задача затруднена тем, что для последовательности из N токенов существует N! различных путей последовательных вставок из пустой строки до таргета. Вместо того, чтобы учить модель, награждая за все правильные последовательности и штрафуя за неправильные (что просто нереально), делается следующий трюк — давайте скажем, что для каждой строки есть некоторый оптимальный путь, тогда задача модели — сопоставить ему наибольшую вероятность. Это позволяет перейти к оптимизации lower bound оценки на исходный страшный log-likelihood. Затем делается замена оценки оптимального пути на матожидание по сэмплу путей из текущей модели с весами соответствующими вероятности пути, что даёт следующую lower bound оценку, которую уже не так сложно оптимизировать.
Архитектура предлагаемой модели INTRUS -- encoder/decoder трансформер со следующими модификациями:
- отключаем маскирование "будущих" токенов в декодере, т.к. у нас больше нет явной последовательности, декодер надо полностью пересчитывать после каждой вставки.
- последний слой предсказывает матрицу вероятностей размера (число слотов Х число токенов), для этого делается отдельная проекция в вероятности слотов и отдельная проекция в условные вероятности p(токен|слот), а затем из них собирается итоговая вероятность.
Тестировали на нескольких задачах (NMT, Image-To-Latex, Image captioning). На всех тестах мерили BLEU, для MSCOCO дополнительно CIDEr. Почти везде обогнали бейзлайны, но при этом увеличение времени работы относительно бейзлайна надлинейно растёт от длины строки.
Изучение последовательностей сэмплинга, предлагаемых, обученной моделью показало, что часто модель выбирает сэмплирование слева направо или справа налево, но иногда отходит от этой последовательности при обработке связанных групп токенов (приводят пример со связью открывающих и закрывающих кавычек или скобок). Другая стратегия — генерация из середины в стороны. Авторы отмечают, что чаще модель старается сначала сэмплить высокочастотные токены (например, пунктуацию и союзы), что совпадает с результатами из предыдущей описанной статьи. Для анализа этого эффекта приводятся распределения частот сэмплинга разных частей речи от номера шага для такой модели и для обычного сэмплинга слева направо.
Здесь же, дополнительно, упомяну статью Insertion-based Decoding with automatically Inferred Generation Order от Facebook AI, 2019. Она очень похожа по логике на INTRUS, решает ту же задачу генерации по одному токену в произвольном порядке. Из основных отличий я отметил два -- они используют другую ELBo оценку, и они используют относительное а не абсолютное позиционное кодирование. Детали читайте в [arxiv:1902.01370].