Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Известно, что генерация текста с помощью GPT (Genarative Pretrained Transformers) так или иначе основана на вероятности. Рассмотрим поподробнее, к чему приводит такой подход - насколько "правдива" или "обманчива" такая генерация.
Вероятность следующего слова
В самом простом общем случае при обучении модели формируется база данных, с какой вероятностью слово B следует за словом A. Например, после слова "Красивая" в 15% случаях следует слово "Женщина" и в 12% - слово "Кошка", а после слова "Женщина" в 12% случаях следует слово "идет" и в 7% - слово "собирается". Таким образом вся база данных представляет собой просто таблицу из N строк и N столцбов, где N - количество слов, размер словаря.
Конечно, в сумме по каждой строке и каждому столбцу должно быть ровно 1 (100%), но у нас показан не весь словарь и мы считаем, что есть еще много слов и в сумме везде 1 (100%)
"Жадная" генерация
В самом простом случае при генерации текста модель выбирает следующее слово с наибольшей вероятностью. В нашем примере после слова "Красивая" будет предложено слово "Женщина", после слова "Женщина" - слово "идет" и так далее до конца предложения или до конца текста.
Добавляем вариативность
"Жадная" генерация выдает каждый раз одну и ту же реплику, и для ряда задач это не подходит. Для вариативности можно брать не самую большую вероятность, а несколько.
Будем брать не одну самую большую вероятность, а две. В таком случае после "Красивая" модель предложит на первом шаге "Женщина" и "Кошка", на втором шаге после "Женщина" - "Идет" и "Смотрит", а после "Кошка" - "Идет" и "Собирается".
Таким образом на 2 шаге есть уже 4 варианта:
1. Красивая женщина идет
2. Красивая женщина смотрит
3. Красивая кошка идет
4. Красивая кошка собирается.
Как выбрать вариант из 4?
Один из способов - просто выбирать случайным образом.
Другой способ - последовательно перемножить вероятности соответствующих пар и выбрать комбинацию с максимальным значением такого перемножения.
Видно, что итоговая комбинация "Красивая кошка собирается" может иметь больший показатель, чем "Красивая женщина идет", хотя после слова "Красивая" слово "Женщина" встречается чаще, чем слово "Кошка".
Вариативность можно увеличивать еще больше и разными способами.
Например, можно увеличивать количество выбираемых слов на каждом шаге, то есть брать не 2 варианта, а 3, или 5, или 10 и так далее.
Можно брать не количество слов, а занимаемые проценты. То есть на каждом шаге брать наиболее часто встречающиеся слова, которые вместе занимают, например, 80% выборки. И наоборот, не брать наименее часто встречающиеся слова, которые вместе занимают, например, менее 5% выборки.
Так существуют различные способы увеличения вариативности, и в общем случае вариативность генерации увеличиваются и генерация становится все более разнообразной.
Правдивость или человекоподобность?
Из представленной логики формирования генерации следует, что при "жадной" генерации модель просто выбирает наиболее часто встречающиеся комбинации слов. То есть получающаяся фраза может не иметь ничего общего с действительностью, это просто последовательный набор часто встречающихся комбинаций.
Вариативность не добавляет правдивости, просто теперь выбираются не самые часто встречающиеся комбинации, а с призовых мест пониже.
Таким образом генерируемые фразы могут быть читабельными и человекоподобными, могут быть абсолютно корректными с точки зрения согласования падежей, частей речи и прочее, но совершенно не соответствовать действительности. "Правдивость" изначально не заложена в схему генерации, такой метрики при генерации просто нет.
Конечно, иногда тексты и ответы кажутся очень хорошими и правдивыми.
Это происходит как раз потому, что модель учится на реальных человеческих текстах и есть вероятность, что из часто встречающихся комбинаций сложится правильное правдивое высказывание. Это похоже на то, что если совершить подряд несколько часто встречающихся действий - взять кастрюлю, налить воду, включить газ, поставить кастрюлю с водой на газ, подождать 10 минут, насыпать макароны, подождать 10 минут, слить воду - то может получиться настоящая еда. Модели покруче могут предложить откинуть макароны на дуршлаг, положить в тарелку, добавить соус и веточку базилика. Да, это будет вполне правильный текст, но это лишь частный случай, так совпало, и вероятность таких совпадений сильно зависит от текстов, на которых обучалась модель.
Переходим к GPT
В GPT слова изначально имеют свои цифровые представления (Embeddings), но это не меняет принципиальную логику генерации. При обучении нейронной сети коэффициенты (веса) подбираются таким образом, чтобы при поступлении на вход очередного вектора (эмбеддинга) модель выдавала бы следующее слово, имеющую максимальную вероятность, ну или с учетом заданной вариативности аналогично описанным выше случаям. Сам подход остается тем же самым - в итоге получается последовательность часто встречающихся комбинаций.
Даже если дообучить GPT собственными текстами, то это лишь немного изменит коэффициенты, перераспределит вероятности. В итоге модель будет генерировать "в стиле", "как бы". То есть если догрузить в GPT все книги Достоевского, то модель будет учитывать комбинации Достоевского, и генерировать текст как бы в его стиле. Но это все будет также "как бы" и не иметь никакого отношения к действительности.
Вывод
Представляется, что модели GPT действительно хороши для генерации историй, приключений, анекдотов, а также для генерации изображений, музыки и переноса стилей. Учитывая неожиданное совмещение известных комбинаций, такие модели могут пригодиться также и для генерации новых идей. При этом если требуется получать "правдивые" ответы или четкие инструкции, то представляется целесообразным применять другие модели.
Примечания
Если в статье замечены ошибки, могущие критически повлиять на сделанные выводы - пожалуйста, укажите в комментариях.