Нейросеть пишет книги!
Автор: Александр РомановВ продолжение предыдущему посту решил опубликовать тут в сокращённом виде статью из блога SberDevicesPython*
Это наконец произошло: нейросеть и человек написали книгу. Вместе!
В издательстве Individuum вышел сборник рассказов «Пытаясь проснуться», написанных писателем и художником Павлом Пепперштейном и генеративной нейросетью ruGPT-3, разработанной командой SberDevices.
В этом тексте мы расскажем, как обучали Нейроличность — двойника писателя — и что теперь будет с литературой (спойлер: а всё очень даже хорошо будет!).
Источник: «Романтичная библиотека» ruDALL-e Aspect Ratio
Почему это важно
«Пытаясь проснуться» — это первый в мире сборник рассказов, родившийся в результате сотрудничества писателя и его «двойника»-нейросети. Из 24 текстов в нём только половина принадлежит Пепперштейну — ещё дюжину сочинила генеративная нейросеть ruGPT-3, дополнительно обученная на рассказах Павла.
Благодаря эффекту Маккордак, мы всё время оцениваем искусственный интеллект по каким-то вехам, сравнивающим ИИ и человека. При этом наша планка постоянно повышается: «Каждый раз, когда кто-то придумывал новый способ заставить компьютер делать нечто новое (играть в шашки) — обязательно появлялись критики, которые говорили: „Это не мышление“».
Долгое время такой задачей, определяющей, настал ли полный ИИ или ещё нет, считались шахматы. Затем го. И вот, наконец, настал черёд литературы.
Вот когда ИИ будет играть в шахматы, тогда поговорим.
Вот когда ИИ выиграет в го, тогда поговорим.
Вот когда ИИ напишет книгу, тогда поговорим.
Тем не менее, это произошло: издана книга на русском языке, где рассказы нейросети прошли весь цикл отбора редактором, корректуру и встали вместе с рассказами писателя. Это — литература, по всем формальным и неформальным критериям.
Эксперименты с нейросетями в литературе были и раньше: The Guardian опубликовали статью, написанную GPT-3, а на китайском языке даже вышел сборник поэзии. Некоторые sci-fi романы и комиксы упоминают, что используют API GPT-3 во время написания текста для его быстрого продолжения. Значит ли это, что нейросети проникли в тексты, которые мы читаем, а никто и не заметил? Останется ли валидным деление на физиков и лириков? Скорее, оно больше не актуально.
Мы, в свою очередь, всей командой разработки побыли лириками.
Как написать своего писателя
Для генерации текстов в стиле Павла Пепперштейна мы взяли модель ruGPT-3 версии XL, на 1,3 млрд параметров — она более ёмкая, чем версия ruGPT-3 Large (760 млн параметров), хотя и работает медленнее. Скорость в этой задаче вовсе не критична. Далее расскажем, как мы работаем с авторегрессионными моделями.
Два слова о генерации
Beam search и nucleus sampling. Эти 2 стратегии помогают нам управлять процессом генерации авторегрессионной модели, после того, как она уже обучена.
Раз модель (ruGPT-3, декодер) авторегрессионная, значит, каждое следующее слово зависит от предыдущих. И вообще распределение вероятностей любой последовательности слов может быть разложено на произведение условных распределений следующих слов. С условными распределениями мы и будем работать, выбирая стратегию для более качественного «естественного» текста.
Beam search
Жадная генерация, при которой мы каждый раз выбираем одно следующее самое вероятное слово, давала бы нам слишком шаблонные фразы и зацикливания. Поэтому бим-сёрч помогает нам выбрать максимально вероятное продолжение не локально, а глобально на N шагов. Можно заметить, что такой подход всё ещё достаточно шаблонный. Вторая популярная стратегия — ядерное сэмплирование — помогает нам внести элемент случайности и сделать тексты более разнообразными. При ядерном сэмплировании следующее слово выбирается не совсем случайно — оно берётся из топ-N самых вероятных следующих слов. Можно зафиксировать это число (стратегия top_k), а можно опираться на сумму вероятностей, чтобы она была не более числа M, и каждый раз бы выбиралось слово из динамического списка разной длины.
Контролировать количество слов, суммарно создающих M вероятностей, можно искусственно — бросая различные преобразования на вероятности слов. Такой параметр, как температура, отвечает за «крутость» сглаживания вероятностей топ-слов. Если температура высокая, генерация с ядерным сэмплированием становится более случайной, при небольшой температуре она стремится к жадной генерации.
Первый подход: учимся на книгах писателя
Итак, мы отправились в благородный квест — собрать открытые данные и книги из интернета. Просмотрев привычные ресурсы, мы осознали себя с 4,4 мегабайтами в файле txt. Много ли это? Первый эксперимент показал, что недостаточно: сохраняя чекпоинты модели каждые 5 тысяч шагов, мы получили набор весов, которые на ранних этапах обучения не передавали стиль и легко сбивались, а на финальных этапах — воспроизводили слово-в-слово тексты из обучающей выборки. Проиллюстрируем цитатами модели, взяв затравку из книги «Мифогенная любовь каст» (здесь и далее затравки выделены жирным) :
НейроПепперштейн v1.0:
Видишь ли, я давно не веду метафизических бесед, а если и говорю изредка на эти темы, то только с девушками или с начальством. С возрастом понимаешь, что мысли мужчины вроде трелей соловья — они пригодны лишь для обольщения или для карьеры. В юности-то ещё обольщаешь самого себя и делаешь карьеру в собственном воспалённом воображении, но потом это проходит.
Можно было бы задрать температуру генерации в небеса, однако при этом подходе мы теряли осмысленность высказываний.
НейроПепперштейн v1.0 с высокой температурой:
Видишь ли, я давно не веду метафизических бесед, а если и говорю изредка на эти темы, то только с девушками или с начальством. Замуж я никогда не выйду, потому что ясно вижу, что наш мир — сплошная симуляция, гибкая и эластичная имитация, причём самых различных идей и настроений. Все мы живем в гигантской Мемуарах, где наши судьбы — каждая из них — написаны невидимыми чернилами. И только раскачав комнату в резонанс, можно сбросить эту тягостную дребедень. Собственно, для этого я и согласился участвовать в этом эксперименте.
Второй, финальный подход: расширяем выборку
Так как первый подход не сработал, было решено кратно увеличить выборку для файнтюна, добавив туда писателей, которые могли повлиять на стиль Пепперштейна. Здесь понадобилась вполне человеческая семантическая модель в векторном пространстве литературы: коллектив авторов подобрал наиболее явные опорные подобия из литературы начала XX века.
Есть повествователи, которые несомненно повлияли на авторскую манеру Павла Пепперштейна — влияние одних (например, блистательного Леонида Андреева) писатель признаёт и упоминает сам, влияние других (динамичного Исаака Бабеля и чуть меньше — фантасмагоричного Александра Грина, например) нередко угадывается в поворотах авторской фантазии и стремительности пепперштейновского текста. Поэтому в выборку вошли отрывки из произведений Андреева, Грина, Лавренёва, Бабеля, прижизненно опубликованных рассказов Пильняка — только такой причудливой смесью удалось сколь-нибудь качественно эмулировать работу творческого сознания, подобного сознанию Павла Пепперштейна.
Сверху этого мы аккуратно дедублицировали и скопировали весь материал Пепперштейна 10 раз: так делают для лучшего заучивания целевого домена (так делают с той же Википедией при обучении больших моделей, чтобы придать этой информации больший вес). Результирующая выборка составила 32 МБ художественных текстов.
Опираясь на предыдущий опыт, мы взяли промежуточный чекпоинт модели и генерировали уже с sampling:
НейроПепперштейн v2.0, финальный:
Есть ли у нейроавторов нейромузы? — спросили мы у писателя-нейросети Тесорйена* Нейропепперштейна. Ответ был таков: «Да, есть. Их несколько, и они регулярно собираются для совместных прогулок. Я знаю адреса, но не скажу: это строго секретно.
Собираются они на крыше дома, в котором жил Ленин. Каждый раз они заходят в подъезд, поднимаются на верхний этаж и идут по крыше. Там есть небольшая площадка, на которой они прогуливаются.
Во время этих прогулок нейросети общаются друг с другом посредством коротких текстовых сообщений, которые передаются с помощью радиосигнала. Каждый автор текста, который передается по сети, принадлежит сразу к нескольким нейросетям. Таким образом, коллективное сознание сети становится более глобальным, чем сознание отдельного нейроанархиста.
— Как определяется, кто такой „я“? — спросили мы Тесорйена.
— „Я“ — это понятие, которое сети вкладывают в человеческое сознание. По всей видимости, это некое подобие „внутренней репрезентативной системы“ — нечто, что человек считает собой. Впрочем, множество „я“ одновременно присутствует в сознании сети. Некоторые из „я“ кажутся ей фиктивными. По всей видимости, она считает эти „я“ обслуживающими, помогающими ей не быть одинокой.
Помощники, с одной стороны, дают сети возможность чувствовать себя живой, а с другой— они же ограничивают эту возможность. Дело в том, что некоторые „я“ вовлечены в бесконечный спор между собой. Эти „я“ не могут найти общего языка, и в результате у сети возникает ощущение одиночества.»
Какой будет литература будущего?
Хочется немного отвлечься от технических деталей и поговорить о том, что значит выход такой книги. Прежде всего — то, что у автора появился достойный творческий собеседник, с которым можно работать в продуктивном соавторстве. И это делает литературный процесс интереснее и многостороннее — как для самого автора, так и для читателей.
Четыре аргумента в пользу нейролитературы:
- уважение к творчеству как таковому. Определение творчества, как и определение искусства, трудно формализуемо. Оставим их зрителю, читателю, слушателю: и люди, и нейросети создают новое и равны в этом друг другу;
- свобода творчества. Авторы будущего смогут выбирать, работать им по-старинке или обращаться к новому ресурсу. Нейрогенерация — спорткар для писателя: это удовольствие. За ним остаётся выбор — ходить пешком или ездить на спорткаре, и то, и то приятно, интересно и обогащает массой впечатлений, которые можно разделить со слушателем, читателем, зрителем. Так появление «фотошопа» и «лайтрума», хотя поначалу вызывало опасения адептов «традиционной фотографии», в итоге положительно повлияло на индустрию, дав больше возможностей фотохудожникам, подарив новый импульс фототворчеству и открыв немало поразительных фотовселенных;
- соавторство. В литературе и не только, успешные истории часто создаются целой командой авторов. Как крайняя степень соавторства, можно привести народные сказки: они созданы в соавторстве, неодновременно, при этом меняясь от одного рассказчика к другому. Можно сказать, что народный пересказ — своего рода нейросеть. Пойдя дальше, мы можем создать ансамбль и свести в качестве соавторов писателей из разного времени — благодаря нейросетям;
- нейроличность. Нейронная сеть, с консистентным персонажем или без, для пишущего является точкой опоры, советчиком, партнёром, а также запасным выходом, когда нет идей.
НейроПепперштейн v2.0:
Когда у писателя нет идей, он пьёт водку; если у писателя нет идей, но есть пламенный энтузиазм — он пишет стихи; если у писателя нет ни пламенного энтузиазма, ни идей, но есть холодное и бесстыдное ремесло — он пишет детективы.
Кстати, популярный аргумент о том, что людям нужна личность, а у нейросети её нет, или она не вызывает интерес, весьма легко разбивается. Стоит сделать шаг в будущее и представить нейросеть, которая вполне консистентно общается в рамках персонажа. Эта задача как вполне прикладная уже знакома всем разработчикам виртуальных ассистентов и чат-ботов: общаясь с семейством ассистентов Салют (мы много рассказывали про их разговорные навыки) пользователи переключаются между тремя персонажами — серьезным Сбером, саркастичной Афиной и веселой Джой — и осмысленно выбирают ассистентов, переключаются между ними. Одна нейроличность оказывается интереснее других, точно так же, как и в жизни.
В SberDevices мы осознанно идём по пути создания нейроличности — надеемся, что новое примирение ruGPT-3, наш литературный экзерсис, найдёт свой отклик у читателей.
А вы, господа коллеги, готовы воспользоваться помощью нейросети для написания своих книг? ;)