В одном интересном посте объяснили, как то, что мы привыкли называть диффузией текста, на самом деле является универсальной версией классического обучения BERT. Давайте разберемся, о чём тут вообще речь.
Если вы знакомы с BERT, то знаете, что модель работает следующим образом: она берёт текст, маскирует некоторые слова и учится угадывать, какие именно были скрыты. Всё довольно просто, но… есть нюанс.
Теперь представьте, что диффузия — это примерно то же самое, но только многоступенчатое. Вместо того чтобы спрятать одно слово, как в BERT, модель добавляет «шум» на каждом шаге и постепенно восстанавливает текст. Она как бы уничтожает его, а потом поэтапно восстанавливает, пока не получит обратно чёткое и осмысленное предложение.
То есть, по сути, в BERT происходит один шаг «очищения», где модель угадывает скрытые слова. А в диффузионной модели таких шагов может быть несколько, что позволяет превратить случайные токены в осмысленный текст.
От BERT до генератора текста 🤨
Чтобы показать это на практике, автор fine-tuned RoBERTa(улучшенную версию BERT) с использованием датасета WikiText. На каждом шаге модель заменяла некоторые токены на <MASK>, восстанавливала их, а затем снова маскировала. И так несколько раз. Через несколько итераций RoBERTa начинала генерировать осмысленный текст, даже без автогрегрессного декодера, как у GPT.
В какой-то момент автор наткнулся на работу DiffusionBERT, где эта идея была развита глубже и подтвердилась реальными результатами. И вот оно: BERT можно рассматривать как одномоментную версию диффузии текста. Если добавить больше шагов, получится полноценный диффузионный генератор текста.
Модели, основанные на таком подходе, способны генерировать текст, который вполне осмыслен, но ещё не всегда идеально последовательный. Это, кстати, открывает интересную возможность для будущего. Если BERT — это всего один шаг диффузии, то будущее может принадлежать моделям, которые будут объединять понимание и генерацию текста в одном процессе.
Data Science