Получи случайную криптовалюту за регистрацию!

Typical Decoding for Natural Language Generation https://arxiv | Говорит AI

Typical Decoding for Natural Language Generation
https://arxiv.org/abs/2202.00666v2

TL;DR
Предложили новый способ сэмплирования из языковых моделей, основанный на концепциях теории информации и предположениях о том, как люди оперируют естественным языком в реальной жизни.

Суть подхода
Как известно, современные языковые модели способны очень хорошо оценивать вероятности текстов, выдавая низкие значения перплексии для различных естественных входов. Однако, когда речь заходит о генерации новых текстов по префиксу, то такие модели могут выдавать слишком короткие и слишком скучные продолжения, иногда содержащие артефакты вроде повторяемых словосочетаний. Это, во-первых, несколько контринтуитивно (т.к. подобные тексты не выглядят наиболее вероятными с т.з. естественного языка), во-вторых заставляет прибегать к различным ухищрениям в виде методов сэмплирования, пытающимся "достать" из модели одновременно консистентные и интересные тексты. При этом большинство этих методов следуют одному и тому же алгоритму – взять несколько наиболее вероятных (на данном шаге генерации) слов и случайно выбрать одно из них в соответствии с распределением вероятностей. Авторы статьи считают, что это в корне неверный подход, поскольку основная цель заключается не в том, чтобы получить на выходе просто вероятный текст, а в первую очередь в том, чтобы, как и в реальной жизни, с помощью текста эффективно передать некоторую информацию.

Под эффективной передачей информации авторы статьи понимают следующее: каждое сгенерированное слово должно содержать в себе столько информации, сколько в среднем ожидается на текущем шаге (7). Информативность конкретного слова измеряется как минус логарифм вероятности этого слова при условии контекста (т.е. чем более вероятно слово, тем меньше информации оно несет), а средняя ожидаемая информация - как энтропия распределения слов, посчитанная по всему словарю при условии текущего контекста (6). Чтобы лучше понять интуицию этого подхода, можно рассмотреть два предельных случая: когда мы только начинаем генерировать последовательность и когда уже заканчиваем. В первом случае энтропия может быть высокой, поэтому, возможно, стоит взять наиболее информативное (и значит, не слишком очевидное) слово. Во втором случае, когда вся основная информация уже передана и текст подходит к концу, энтропия низкая, и значит достаточно выбрать наиболее вероятное слово, которое естественным образом завершит текст.

Результаты
Авторы протестировали подход на двух задачах: абстрактной суммаризации и генерации рассказов. В качестве базовой модели использовали GPT-2 на 345M параметров. Для замеров в оффлайне использовали перплексию, различные метрики повторяемости (чем реже модель повторяет ранее сгенерированные подстроки, тем лучше), а также свежий подход MAUVE. В онлайне сравнивали модели с помощью асессорской разметки с 5-и кратным перекрытием.

В итоге новый подход, не смотря на заметный "проигрыш" по перплексии, показал на остальных метриках в среднем более высокие результаты (в т.ч. на асессорской разметке), чем стандартные алгоритмы сэмплирования, такие как top-k и nucleus. Это в какой-то мере подтверждают гипотезу авторов, что наиболее вероятные тексты не обязательно по итогу самые хорошие.

Новый метод сэмплирования доступен в transformers начиная с версии 4.17 и активируется параметром typical_p.