Neural Text [de]Generation with Unlikelihood Training

Sean Welleck, Ilia Kulikov, Stephen Roller, Emily Dinan, Kyunghyun Cho, Jason Weston

NYU, FAIR



#NLP #LM #sampling #degeneration



Статья, родной код.



TLDR: Давайте вместо костыльных фильтров при сэмплинге из LM добавим штрафы за повторения при обучении этой LM, тогда даже небольшое доучивание с такими штрафами отучит сетку от повторений и сделает генерируемый текст более правдоподобным.



Подробнее:

Вырождение текста в повторяющиеся последовательности при open-ended сэмплинге -- общая проблема. Решать её костылями, вроде nucleus sampling, можно, но не очень эффективно, т.к. проблема в самом векторе вероятностей, возвращаемом моделью. По мнению авторов, корень проблемы — в недостаточно хорошем таргете обучения (максимизации правдоподобия следующего токена).

Авторы предлагают добавить дополнительный таргет обучения, unlikelihood training, уменьшающий вероятность появления "плохих для контекста" токенов.

Конкретнее, авторы предлагают добавить две цели обучения:



TOKEN LEVEL OBJECTIVE -- добавляем loss за предсказание каких-либо токенов, появлявшихся ранее (кроме случая, когда текущий ground truth токен действительно появлялся ранее).

SEQUENCE LEVEL OBJECTIVE -- сэмплим запись до конца, потом для каждого токена выясняем, был ли он частью повторной ngram-ы, если да -- штрафуем все такие токены на каждом из шагов.



Эксперименты показывают, что достаточно небольшого количества шагов по этим дополнительным таргетам, чтобы затюнить готовую LM до состояния, когда она перестаёт генерировать повторения, при этом потери в perplexity будут небольшими, а по асессорской оценке тексты окажутся лучше (по human evaluation обе попавки побеждают бейзлайн, а их совместное использование -- лучше каждой в отдельности).