Только ленивый не написал про
AI Dungeon, уже и
фильм по её сценарию сняли — мне не хотелось просто в очередной раз публиковать ссылку, поэтому я решил написать чуть более развёрнуто.
Контекст: AI Dungeon — это попытка сделать интерактивную текстовую игру на базе нейросети GPT-2. Про жанр текстовых игр я
уже писал в этом канале. В целом, это похоже на
настольные ADnD игры, в которых роль мастера выполняет компьютер.
История проекта: первую версию
Nick Walton запустил весной 2019 года на базе малой версии GPT-2. Осенью, когда OpenAI опубликовала сетку полного размера (примерно в 12 раз больше), авторы переделали игру под неё и добавили всяких штук. В декабре с ними случился хабраэффект, к ним в одночасье пришло 70К игроков, условный игрок стоит им 1 бакс в месяц, а они студенты и у них лапки. Поэтому они теперь собирают денег на
Патреоне, а
файл с моделью раздают через торренты. Скачав модель, можно
поиграть в игру на Colab-е. Вот
тут родной пост от автора, а вот
тут интервью с ним.
Чем это интересно: несмотря на мощный хайп, сетки вроде GPT-2, как и другие языковые модели довольно неудобны для unsupervised генерации текстов — они практически неуправляемы, и частенько сбиваются в бред или в повторение. Заранее предсказать, будет ли генерация выглядеть осмысленной или хотя бы грамматически корректной, обычно нельзя. Поэтому большая часть публикаций типа "нейросеть ХХХ написала УУУ" обычно является классическим cherry-picking-ом. Это не хорошо, и не плохо, это такой текущий state of the art, но именно по этой причине интересно анализировать попытки обвесить такую сетку костылями, делающими её поведение более контролируемым без ручной фильтрации и премодерации.
Я на выходных поковырял их
исходный код и выписал несколько интересных моментов.
* в качестве базы используют GPT-2 1.5B parameter model на tensorflow
* написали
scraper, который обходит всевозможные варианты в играх на
chooseyourstory.com, и таким образом напарсили 30Мб
* на этих 30Мб тюнили модель с целью приучить её к стилистике таких текстовых игр, в репозитории можно заметить также следы попыток использования труда
mturkers, а также упоминания
данных с сабреддита writingprompts — вероятно, пытаются с их помощью поднять качество
* доучивали на
DGX-1, это заняло около 16 часов
* для борьбы с повторениями использовали штраф 1.2 к вероятностям уже использованных слов, точно
как это было сделано в Salesforce CTRL model — тут я бы отметил, что на моём опыте
подход unlikelihood training работает получше
* запрещают модели генерировать
плохие слова из явного списка
* для "удержания смысла" в качестве префикса подают не только команду, но и историю из последних 8 вопросов-ответов — это помогает "заземлить" модель от слишком резких поворотов
* при этом полученные от пользователя команды конвертируют из инфинитива и формы первого лица во второе лицо, таким образом, вход модели выглядит как слитный текст во втором лице -- это больше похоже на то, на чём она обучалась
* в качестве дополнительного префикса при генерации каждой реплики используют краткое статическое описание персонажа и инвентаря, эти
описания просто написаны вручную в конфиге -- по идее это также способствует "стабилизации нарратива"
* эти же префиксы используют для реализации save / load
*
победу и
смерть персонажа пытаются определять просто поиском ключевых слов в ответе модели
Весь этот набор костылей работает по прежнему далеко от идеала. Тут как обычно — если игрок хочет поверить, то он себя убедит, но в целом результат спорного качества (хотя и лучше, чем что-либо подобное до этого). Продолжаем наблюдать и экспериментировать.