Перейти к содержанию

6.6.3 Рождение нейросетевой литературы

Материал из Охота на электроовец: Большая Книга Искусственного Интеллекта

Первая революция в области обработки естественного языка дала второе дыхание экспериментам в области генерации стихотворных (и не только) текстов. В середине 2010-х гг. нейронные сети уже вовсю использовались для создания небольших текстов. Например, в мае 2016 г. издание BuzzFeed сообщило[1] читателям, что группа разработчиков Google под руководством Эндрю Дая и уже знакомого нам по работам в области машинного перевода Ориола Виньялса «скормила» нейронной сети целых 2865 любовных романов, чтобы «сделать свои продукты более разговорными». Из текста статьи, эпиграфом которой послужила весьма фривольная цитата из одного из романов, можно узнать, что Google планирует использовать новую модель, чтобы сделать речь виртуального ассистента, встроенного в мобильное приложение Google, более естественной, перейдя от ответов, скупо сообщающих справочную информацию, к разнообразной по стилю и тональности разговорной речи. Отвечая на вопросы журналистов BuzzFeed, Дай также упомянул возможность использовать новую модель для улучшения работы функции Smart Reply, предназначенной для генерации черновиков ответов на сообщения в электронной почте.

Препринт работы «Генерация предложений из непрерывного пространства» [Generating Sentences from a Continuous Space][2], опубликованный на ArXiv.org несколькими днями позже, содержит ряд технических подробностей. Речь идёт о попытке подружить архитектуру RNNLM с вариационным автокодировщиком (VAE), чтобы можно было управлять стилем, тематикой и высокоуровневыми синтаксическими параметрами генерируемых предложений. Обучающая выборка, использованная авторами исследования, вовсе не состояла из одних только любовных романов. В действительности для обучения модели использовался датасет Books Corpus[3], представленный публике в 2015 г. и содержащий около 12 000 преимущественно художественных книг, принадлежащих к восьми различным жанрам. Обученная модель была способна генерировать отдельные предложения — скажем, путём продолжения заданного пользователем текста или отталкиваясь от заданного вектора в латентном пространстве автокодировщика (например, можно было вычислить векторы для двух заданных предложений, а потом подсчитать вектор, являющийся их средним, чтобы затем на его основе сгенерировать предложение, являющееся «усреднением» двух заданных). Хотя по нынешним меркам успехи команды Дая и Виньялса могут показаться довольно скромными, их работа стала одним из первых «подходов к снаряду» массового использования генеративных нейросетевых языковых моделей. Позже Дай продолжил свою работу, став одним из соавторов системы Gmail Smart Compose, предназначенной для помощи в написании писем в почтовом сервисе Gmail[4].

Языковые модели на основе рекуррентных нейросетевых архитектур и векторных семантических представлений позволили машинам производить на свет более-менее осмысленные тексты и даже стилизовать их под произведения различных авторов. В том же 2016 г., когда команда Дая и Виньялса разработала свою генеративную модель, команда сотрудников «Яндекса» под руководством Алексея Тихонова и Ивана Ямщикова дала жизнь проекту под названием «Нейронная оборона». Нейросетевая генеративная модель «написала» тексты песен в стиле панк-рок-группы «Гражданская оборона» Егора Летова, а затем авторы записали на основе полученных текстов музыкальный альбом, стилизованный по звучанию под произведения «ГрОб».

Вот что пишет об этом проекте один из его авторов — Иван Ямщиков:

После того, как Алексей Тихонов показал мне «нейропоэта», мы так сильно захотели использовать стихи, написанные нейросетью, что даже кушать не могли. Понятно было несколько вещей:

1. Надо попробовать сделать стилизацию чего-нибудь культового,

2. Надо, чтобы культовый оригинал был достаточно маргинален.

Поясню, что имею в виду под пунктом два. Хармс, к примеру, у нейросетки получался годный, мощный у неё выходил Хармс, а вот Александр Сергеевич Пушкин выходил сомнительный. Нейросеть хорошо стилизовала тексты авторов, которые предпочитали диссоциированный нарратив (скажем мягко) или вообще работали с эстетикой абсурда. В целом, можно было бы заморочиться, найти каких-нибудь актёров и заставить их читать нейрохармса на камеру (кстати, если заморочитесь и найдёте, то я только за в это вписаться), но в этом не было какого-то достаточного художественного жеста, поэтому мы решили записать альбом. Сами, на коленке.

А вот один из текстов «Нейронной обороны»:

Ничего, ничего, кроме будничных дел

Я хотел бы уехать, куда не хотел

Я буду ходить по дорогам своим,

Но пока мы сидим и страдаем, скулим

Припев:

Будет свет

И будет

Будет свет

Ничего

Будет свет

И будет

Будет вечный смех

А в окне у костра не хватает цветов

В городах от бумажных и диких богов

Я гляжу не дыша и не прячу в карман

А в безлюдных рубашках звенит барабан

Припев

Под ногами земля, под ногами хрупкий лёд

Старый аист, который, как рыба, гниёт

Никто никогда ни в кого ни придёт

и вот опять по кругу всё время идёт

Припев[5], [6], [7]

Методы, использованные создателями «Нейронной обороны», стали достоянием публики в 2018 г., когда на XV симпозиуме по вычислительным исследованиям в фонетике, фонологии и морфологии [Fifteenth Workshop on Computational Research in Phonetics, Phonology, and Morphology] была представлена работа Тихонова и Ямщикова под названием «Звучит по-уайльдовски. Фонетически расширенные эмбеддинги для генерации поэзии в стиле определённого автора» (Sounds Wilde. Phonetically Extended Embeddings for Author-Stylized Poetry Generation)[8]. В названии статьи содержится каламбур, связанный с созвучием слов Wilde [Уайльд] и wild [дико]. Хотя, конечно, ничего особенно дикого с точки зрения машинного обучения в работе нет — авторы исследования придумали способ расширить классический эмбеддинг слова. Для этого к нему присоединяются векторы, являющиеся выходами двух двунаправленных LSTM-сетей, одна из которых получает на вход буквы, из которых составлено слово, а другая — фонемы из фонетической транскрипции слова. Также к итоговому вектору присоединяются эмбеддинги автора и произведения. В итоге генеративная модель «знает» не только семантику каждого слова, но и то, как это слово пишется, звучит, и то, как слово вписывается в конкретное произведение конкретного автора. Фонетическая информация чрезвычайно важна для генеративной модели, предназначенной для сочинения стихов, поскольку классические системы стихосложения построены именно на фонетической организации поэтического текста.

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

Для обучения своей модели Ямщиков и Тихонов использовали набор из 440 000 документов (110 000 на английском языке и 330 000 на русском), принадлежавших перу 20 700 авторов (19 000 для англоязычной части датасета и 1700 для русскоязычной). Для тестирования качества генерации текста были выбраны тексты семи англоязычных и пяти русскоязычных авторов. В число первых вошли произведения Уильяма Шекспира, Эдгара По, Льюиса Кэрролла, Оскара Уайльда и Боба Марли, а также тексты песен музыкальных групп Nirvana и Muse. Для русского языка были отобраны произведения Александра Пушкина, Сергея Есенина, Иосифа Бродского, Егора Летова и Земфиры Рамазановой.

Для того чтобы оценить качество генерации текста, Тихонов и Ямщиков заставляли модель продолжать случайно выбранные фрагменты из произведений перечисленных выше авторов, отсутствующих в обучающей выборке. Затем результаты генерации сравнивались с оригинальными текстами при помощи метрики BLEU, знакомой нам по задаче машинного перевода. Авторы исследования сравнили свою модель с двумя методами случайной генерации текста: «классической» моделью на основе LSTM и словарных эмбеддингов и усовершенствованной версией последней модели, получавшей ещё и сведения об авторе произведения. Как и ожидалось, наилучшие показатели продемонстрировала модель с фонетической информацией.

В небольшом эксперименте с привлечением 140 респондентов Тихонов и Ямщиков показали, что для англоязычных авторов с узнаваемым стилем (т. е. таких, тексты которых респонденты узнавали хотя бы в два раза чаще, чем при случайном угадывании) люди примерно с той же частотой приписывали результат генерации перу автора, что и оригинальные произведения этого автора (37% сочли произведения «нейро-Шекспира» шекспировскими против 46% для оригинальных текстов Шекспира, аналогично 47% против 40% для Боба Марли и 34% против 39% для Muse).

Некоторые дополнительные подробности о работе Ивана и Алексея можно также узнать из статьи «Угадай кто? Многоязычный подход к автоматической генерации поэзии, стилизованной под некоторого автора» (Guess who? Multilingual Approach For The Automated Generation Of Author-Stylized Poetry)[9], вышедшей в конце того же 2018-го. Например, в ней приведён отрывок из произведения «нейронного По»:

her beautiful eyes were bright

this day is a burden of tears

the darkness of the night

our dreams of hope and fears

[её красивые глаза были яркими

этот день — бремя слёз

ночная тьма

наши мечты о надеждах и страхах]

В более поздней работе 2019 г. под названием «Сквозное обучение литературному стилю при помощи искусственных нейронных сетей» (Learning Literary Style End-to-end with Artificial Neural Networks)[10] Иван и Алексей также приводят несколько образцов генерации для русского языка.

Нейро-Пушкин:

во славу вакха или тьмы

мы гордо пировали

Нейро-Есенин:

ты под солнцем стоишь и в порфире

как в шелку беззаботно горишь

Нейро-Земфира:

ветер в голове

с красной тенью шепчется

Нейро-Летов:

только в ушах отражается даль

только белая смерть превращается в ад

В 2018 г. ваш покорный слуга вместе с коллегами также экспериментировал в области генерации стихотворений при помощи моделей глубокого обучения времён первой революции в NLP. Тогда мы использовали для этой цели ансамбль из пяти LSTM-сетей: сети, работавшей на уровне символов (роль этой сети была в том, чтобы обеспечить фонетическое благозвучие производимого текста); сети, отвечающей за стихотворный размер; сети, ответственной за рифмы; сети, ответственной за грамматику (мы использовали библиотеку PyMorphy, чтобы определить грамматические признаки для слов в словаре, а затем тренировали сеть генерировать грамматические конструкции, свойственные естественному языку), и последней сети, отвечавшей за смысл текста (на базе векторных представлений слов fastText). В качестве обучающего корпуса использовался набор из примерно 30 000 произведений русской поэзии, начиная с её золотого века и до наших дней. Вот один из продуктов «творческого коллектива» нейронных сетей:

на фоне формы каменной границы,

как будто бы равнина далека,

лениво стынет полная столица,

чернеет свечка синяя строка.

а я спешу к победе бесконечной,

лечу с отрадой томной чередой,

но не томлюсь томительно сердечной

нежданно грустной памятью былой

А вот какой вариант продолжения начальных слов детской песенки про ёлочку предлагает эта же модель:

[в лесу родилась ёлочка,

в лесу она росла,

зимой и летом стройная,

зелёная] была.

громада поднимается,

летает борода,

мелькает одиночество,

ложится пустота.

ликует революция,

шагает самолёт,

чернеет рана чистая,

синеет небосвод.

лениво качается,

дымится столица,

клубится стремительно,

бушует зарница.

несётся колокольчик,

рыдает долина,

волнуется комната,

мечтает картина,

грустит королева,

болит голова,

гуляет корова,

хохочет сова.

Конечно, таким произведениям далеко до звания литературных шедевров, однако, на мой непритязательный вкус, это гораздо лучше стихотворений среднестатистического автора на stihi.ru. Впрочем, ещё во времена GOFAI сгенерированные машинами тексты не раз успешно выдавали за творения людей. Как, впрочем, и наоборот. Например, в 1957 г. известный советский научно-популярный писатель Виктор Пекелис включил в свою книгу о кибернетике стихотворение «Ночь кажется чернее кошки чёрной…». Подстрочник стихотворения передал Пекелису его знакомый, известный советский математик. Литературную обработку подстрочника выполнил поэт Владимир Котов. Уже после выхода книги Пекелиса из печати выяснилось, что история о создании профессором Джоном Яффи электронной машины, сочиняющей стихи, как и сами «произведения» этой машины, оказалась мистификацией американских юмористов. Но победоносное шествие стихотворения по страницам многотиражного советского научпопа было уже не остановить: в течение более чем десятилетия этот текст регулярно приводился в качестве примера машинного творчества[11], [12].

Новый этап в развитии текстовых генеративных систем наступил с появлением моделей семейства GPT (Generative Pretrained Transformer, Генеративный, предобученный трансформер), созданных Алеком Редфордом и его коллегами из компании OpenAI. Причём если создание первой версии модели не произвело особого впечатления на общественность (её преимущества по сравнению с LSTM-сетями, оснащёнными механизмами внимания, были не столь очевидны), то появление GPT-2 произвело эффект разорвавшейся бомбы. Отчасти такой результат был спровоцирован позицией самой OpenAI, которая поначалу отказалась публиковать самую большую обученную версию модели (c 1,5 млрд весов), что породило множество шуток про ClosedAI (т. е. «закрытый ИИ» в противовес названию компании, дословно переводящемуся на русский язык как «открытый ИИ»). Позиция OpenAI была основана на опасениях, что публикация модели может оказаться опасной, поскольку вызовет волнообразный рост числа ложных новостей [fakenews], спама и другого нежелательного контента[13]. Впрочем, позже модель всё же была опубликована[14]. В принципе, исходной публикации OpenAI было вполне достаточно небольшой команде специалистов по глубокому обучению для того, чтобы воспроизвести модель, однако её обучение требовало существенных вычислительных затрат (несколько десятков тысяч долларов, если отталкиваться от тарифов облачных сервисов). Таким образом, изначальное решение OpenAI создавало ситуацию, когда крупные компании получали доступ к технологии, в то время как небольшим компаниям она была недоступна.

Впрочем, читатель может задать вполне резонный вопрос: а не было ли всё это лишь рекламным трюком OpenAI, желающей привлечь внимание к своим технологическим достижениям? Быть может, возможности модели были сильно преувеличены? В конце концов, в 2020 г., когда «большая» версия модели GPT-2 уже доступна всем желающим, а OpenAI выпустила уже GPT-4, мы вроде бы не наблюдаем взрывного роста объёмов нежелательного контента в Мировой сети?

Технически GPT-2 — это языковая модель, построенная из многократно повторяющихся блоков нейросети-трансформера. GPT-2 способна прогнозировать следующий токен последовательности, основываясь на предшествующих токенах (напомним, что под токеном понимается отдельный элемент последовательности — это может быть слово, символ или некоторая последовательность символов). За разбивку последовательности на токены отвечает отдельный алгоритм, называемый токенизатором. В оригинальной версии GPT-2, используемой для работы с текстами, записанными на естественных языках, в качестве токенизатора применялся метод, называемый BPE (Byte pair encoding, Кодирование пар байтов). BPE представляет собой некоторый компромисс между моделированием языка на уровне символов и на уровне слов: наиболее часто встречающиеся слова становятся отдельными токенами, в то время как более редкие слова разбиваются на несколько токенов. Если первая версия GPT опиралась при прогнозе следующего токена на 512 предшествующих[15], то в GPT-2 размер контекста был увеличен вдвое — до 1024 токенов. Размер словаря при этом увеличился с 40 000 до более чем 50 000 токенов. Таким образом, GPT-2 теоретически способна обнаружить связь между двумя токенами, отстоящими друг от друга на целых 1024 позиции.

Исследователи из OpenAI обучили четыре варианта модели: с 12 (маленькая [small]), 24 (средняя [medium]), 36 (большая [large]) и 48 (сверхбольшая [xlarge]) слоями трансформера. Число синаптических весов в этих моделях составило 117 млн, 345 млн, 762 млн и 1,542 млрд соответственно. В качестве обучающей выборки для моделей использовался набор из 8 млн документов, полученный в результате сканирования различных страниц в интернете с последующей фильтрацией результатов. Общий объём текста составил около 40 Гб. После того как модели были обучены на этом массиве данных, могло осуществляться их дообучение под конкретные задачи путём продолжения обучения модели в течение небольшого числа эпох, но уже не на базовом, а на некотором целевом датасете. Например, чтобы научить модель отвечать на вопросы, используется датасет, состоящий из вопросно-ответных пар, а чтобы научить модель реферировать тексты, необходим набор из оригинальных текстов и их сокращённых версий.

При таком подходе этап начального обучения модели на большом массиве данных называется предобучением [pre-training или pretraining].

Вообще концепция, сочетающая предобучение при помощи методов самообучения [self-supervised learning] с последующим дообучением под целевую [downstream] задачу стала наиболее популярным способом применения больших трансформерных моделей. Для предобучения обычно привлекаются огромные массивы информации (чаще всего собранной в интернете) и гигантские вычислительные мощности. Обучение модели решению задач вроде предсказания следующего токена приводит к тому, что в её весах находят отражение особенности структуры данных, их внутренних взаимосвязей. Например, в свёрточной сети, обученной распознавать котиков на фотографиях, можно обнаружить нейроны, активирующиеся при наличии глаз на предъявленной картинке. Аналогично большая трансформерная модель, обученная предсказывать продолжение текста, скорее всего, будет содержать нейроны, активация которых будет происходить при упоминании в тексте существа с глазами: ведь такой нейрон может быть полезен, чтобы угадать — может ли в продолжении текста быть сказано, что существо зажмурилось, моргнуло или увидело что-либо. Выученные моделью на этапе предобучения представления (абстракции, аналогии) могут быть успешно переиспользованы при решении самых разных задач. Если целевой задачей модели является определение, встречается ли в тексте упоминание рыжих пушистых существ с глазами, то на этапе дообучения сеть сможет связать между собой активации «нейронов глазастости», «нейронов рыжести» и «нейронов пушистости». При этом вам не нужна будет огромная обучающая выборка с положительными и отрицательными примерами, благодаря тому что при дообучении сеть будет опираться на уже имеющиеся у неё представления. Это напоминает процесс обучения людей, когда в ходе детских игр, школьных и институтских занятий да и в целом в процессе ежедневного взаимодействия с окружающим миром мы формируем представления о нём, которые потом успешно переиспользуем, сталкиваясь с различными жизненными задачами. Фактически, обучаясь предсказывать продолжение огромного количества самых разнообразных текстовых фрагментов, модель формирует в своих синаптических весах своеобразную статистическую картину мира: набор вероятностных распределений, отражающих сведения о различных объектах и явлениях, их свойствах и взаимосвязях.

На что же способны такие гигантские модели[16], как GPT-2-xlarge? Эта модель установила новые SOTA-результаты для семи из восьми использованных для тестов текстовых корпусов без какого-либо дообучения.

Итак, у авторов в руках оказалась мощная модель, способная оценивать для каждого токена из словаря вероятность того, что именно этот токен будет продолжением некоторой последовательности. Как можно использовать её для генерации самой последовательности? Казалось бы, достаточно на каждом шаге генерации просто выбирать наиболее вероятный с точки зрения модели токен. Такой подход называют жадным [greedy]. Проблема жадного подхода заключается в том же, в чём заключается проблема жадности вообще. В моменте он позволяет максимизировать результат, но на более длинном промежутке времени может привести к далеко не оптимальному итогу. То есть «схватившись» за наиболее вероятный токен на первом шаге генерации, такой метод может столкнуться с тем, что на следующем шаге у него не будет хороших кандидатов, в результате чего вся последовательность окажется не такой хорошей, как в случае, когда выбор первого токена был бы не таким жадным. Другой крайностью по отношению к жадному методу является метод полного перебора. Мы можем рассмотреть все варианты первого токена генерируемой последовательности, для каждого из них, в свою очередь, рассмотреть все варианты второго токена и так далее. В теории такой метод может позволить нам найти самое вероятное продолжение последовательности, однако на практике вычислительные затраты в случае более-менее длинной последовательности будут неприемлемыми. Действительно, если мы генерируем последовательность из одного токена, то нам необходимо будет изучить около 50 000 вариантов (по одному варианту на каждый токен в словаре), для двух — 50 000 × 50 000, то есть 2,5 млрд и так далее. Разумным компромиссом между этими двумя подходами являются методы, которые на каждом шаге генерации каким-либо образом ограничивают количество рассматриваемых вариантов. Например, если на каждом шаге мы будем оставлять только N наиболее перспективных вариантов, то на каждом шаге генерации нам потребуется рассмотреть лишь N × 50 000 возможностей. То есть мы на первом шаге рассматриваем 50 000 вариантов, оставляем из них N лучших, затем смотрим для каждого из них 50 000 возможных продолжений, оставляем из полученных последовательностей из двух токенов N лучших и так далее. Такой метод называется методом лучевого поиска [beam search]. Он получил такое название, потому что, подобно лучу прожектора, выхватывает из гигантского поискового дерева небольшую его часть, при этом число N называется шириной луча. Существуют и другие, более сложные алгоритмы поиска, в которых число вариантов на каждом шаге генерации не фиксировано. К их числу относится, например, ядерное семплирование [nucleus sampling][17], применяемое во многих современных реализациях GPT-2.

Давайте посмотрим на образец «творчества» GPT-2, приводимый авторами оригинального исследования.

«Затравка» (текст, написанный человеком, в качестве начала генерируемой истории):

Шокирующим открытием стало обнаружение учёным стада единорогов, живущих в отдалённой, ранее не исследованной долине, в Андах. Ещё более удивительным для исследователей стало то, что единороги прекрасно говорили по-английски. [In a shocking finding, scientist discovered a herd of unicorns living in a remote, previously unexplored valley, in the Andes Mountains. Even more surprising to the researchers was the fact that the unicorns spoke perfect English.]

Продолжение текста от GPT-2:

Учёный назвал популяцию в честь их характерного рога единорогами Овидия. Эти серебристо-белые единороги с четырьмя рогами были ранее неизвестны науке.

Теперь, спустя почти два столетия, тайна того, что вызвало это странное явление, наконец разгадана.

Доктор Хорхе Перес, биолог-эволюционист из Университета Ла-Паса, и несколько его компаньонов исследовали Анды, когда обнаружили небольшую долину, в которой не было других животных или людей. Перес заметил, что в долине бил естественный фонтан, окружённый двумя пиками из камня и серебряного снега.

Затем Перес и остальные спустились дальше в долину. «К тому времени, когда мы достигли вершины одного пика, вода стала голубой, а сверху обнаружилось несколько кристаллов», — сказал Перес.

Перес и его друзья были поражены, увидев стадо единорогов. Этих существ можно было разглядеть с воздуха без особого труда — они были так близко, что можно было коснуться их рогов.

Исследуя этих странных существ, учёные обнаружили, что эти существа также говорят на довольно распространённой версии английского языка. Перес заявил: «Например, мы видим, что у них общий „язык“, что-то вроде диалекта или диалектики».

Доктор Перес полагает, что единороги, возможно, происходят из Аргентины, где эти животные считались потомками потерянной человеческой расы, которая обитала там до прибытия людей в эти части Южной Америки.

Хотя их происхождение до сих пор неясно, некоторые полагают, что, возможно, существа были созданы, когда человек и единорог встретились друг с другом во времена, предшествовавшие человеческой цивилизации. По словам Переса, «в Южной Америке подобные инциденты встречаются довольно часто».

Тем не менее Перес также указал, что, вероятно, мы можем узнать наверняка, являются ли единороги действительно потомками потерянной чужой расы, только при помощи ДНК. «Но они, кажется, способны хорошо общаться на английском языке, что, по моему мнению, является признаком эволюции или, по крайней мере, изменения в социальной организации», — сказал учёный. [The scientist named the population, after their distinctive horn, Ovids Unicorn. These four-horned, silver-white unicorns were previously unknown to science.

Now, after almost two centuries, the mystery of what sparked this odd phenomenon is finally solved.

Dr. Jorge Perez, an evolutionary biologist from the University of La Paz, and several companions, were exploring the Andes Mountains when they found a small valley, with no other animals or humans. Perez noticed that the valley had what appeared to be a natural fountain, surrounded by two peaks of rock and silver snow.

Perez and the others then ventured further into the valley. “By the time we reached the top of one peak, the water looked blue, with some crystals on top,” said Perez.

Perez and his friends were astonished to see the unicorn herd. These creatures could be seen from the air without having to move too much to see them — they were so close they could touch their horns.

While examining these bizarre creatures the scientists discovered that the creatures also spoke some fairly regular English. Perez stated, “We can see, for example, that they have a common ‘language,’ something like a dialect or dialectic.”

Dr. Perez believes that the unicorns may have originated in Argentina, where the animals were believed to be descendants of a lost race of people who lived there before the arrival of humans in those parts of South America.

While their origins are still unclear, some believe that perhaps the creatures were created when a human and a unicorn met each other in a time before human civilization. According to Perez, “In South America, such incidents seem to be quite common.”

However, Perez also pointed out that it is likely that the only way of knowing for sure if unicorns are indeed the descendants of a lost alien race is through DNA. “But they seem to be able to communicate in English quite well, which I believe is a sign of evolution, or at least a change in social organization,” said the scientist.][18]

Как видим, модель успешно справилась с задачей генерации осмысленного текста, который вполне мог бы сойти за статью в какой-нибудь жёлтой газете.

В конце 2019 г. российский специалист по машинному обучению Михаил Гранкин обучил русскоязычную версию GPT-2 и запустил на её основе веб-сервис под названием «Порфирьевич». Своё имя он получил в честь полицейско-литературного робота по имени Порфирий Петрович из романа «iPhuck X» Виктора Пелевина. Обученный на большом корпусе русской литературы «Порфирьевич» порадовал публику множеством забавных творений[19]. Вот некоторые из них (жирным шрифтом выделен текст-затравка):

Сепульки — важный элемент цивилизации ардритов с планеты Энтеропия. Он так силён, что способен совершать течение времени вспять, пересекая пространственно-временной континуум и превращая последовательные этапы жизни в фарс.

Тогда один из двенадцати, называемый Иуда Искариот, пошёл к первосвященникам и сказал: что вы дадите мне, и я предам Его? Они предложили ему тридцать сребреников. В ответ Иуда сказал: отпустите меня, я всё исполню; пусть двое из вас вкусят от манной каши, а остальные подойдут ко мне. Когда Иуда вошёл в трапезную, первосвященники попросили у него что-нибудь: масла или масла.

Я Ёжик. Я упал в реку. Помоги мне добраться до берега. А потом иди к Люсинде и матери и скажи им, что я жив. А когда они тебя позовут, скажи им: «Я Цуйка Инь». Пусть они сразу же поверят в то, что я живой.

Загадочная внешность Ивана Демидова вызывала много вопросов. Зрители гадали, почему ведущий не снимает очки. Всё дело в том, что он был уверен: лицо Ивана — это только с виду. Как сказал бы Ленин: «А душа Ивана под толстым слоем земли».

А перед открытыми глазами капитана Бруно уже маячила родная земля. Точнее — нужные показатели на навигаторе. Впрочем, и без них бы он с лёгкостью догадался, что крылья самолёта рассекают уже итальянский воздух. Пару раз протерев стёкла бинокля, капитан Бруно окончательно осознал глубину души.

Донастроенная на корпусе русской поэзии, GPT-2 вполне способна генерировать и стихи (правда, белые, по крайней мере при использовании стандартных токенизаторов). Вот результат одного из наших экспериментов:

Мир без царей и без власти

И без революций,

Забытый, нежданный и богатый,

Где вздымаются к небу

Языческие племена!

В полях, в лугах, на озёрах,

В лесах, в рощах, в полях,

Где ветер свищет и свистит,

Где в снегах радуга горит,

Где струны поют, звенят!

Где всё, что нам дышит, дышит,

Как солнце и месяц единый,

Пелым живых, к нам приходит

С запада, с востока, с востока

На пёстром, праздничном троне

Славный царь Емельян.

И видна за ним страна

Избённая, изломленная

И дорогая…

Спит в ней гордый царь Емельян,

Спит народ и царь мирно спит,

Спит голова его алмазная,

Спит краса его стальная.

Спит краса его голубая,

Спит цвет его, краса его золотая,

Спит рабская честь его,

Спит вера его, и совесть его,

Спят и дремлют богатыри.

В принципе, совместив генеративную языковую модель, такую как GPT-2 или GPT-3, с орфоэпическим словарём и моделью рифмы, можно создать систему, способную писать и привычные нам силлабо-тонические стихи. Задача эта носит чисто технический характер и в наши дни под силу любому толковому программисту.

Модели, сочиняющие стихи, в наши дни становятся частью комплексных арт-проектов. Например, в 2020 г. исследователи из австралийского Университета Монаша (Monash University) Нина Райчич и Джон Маккормак представили[20] публике устройство для «зеркального ритуала», выполненное, как несложно догадаться, в форме зеркала. За зеркальной поверхностью скрыт планшет, оснащённый видеокамерой. Нейросетевая модель получает на вход изображение с камеры и пытается угадать эмоциональное состояние стоящего перед «умным зеркалом» человека. В зависимости от этого состояния устройство выбирает одну из заготовленных текстовых затравок, которую затем подаёт в модель GPT-2, обученную на корпусе специально отобранных поэтических текстов. В результате модель генерирует стихотворение, которое затем отображается на поверхности зеркала.

Рис. 145. «Зеркальный ритуал». Последовательность взаимодействий с зеркалом

Создатели генеративных моделей интересуются не только малыми литературными формами. В 2013 г. по инициативе американского программиста Дариуса Каземи был запущен проект NaNoGenMo (National Novel Generation Month, Национальный месяц генерации романов), созданный по мотивам проекта NaNoWriMo (National Novel Writing Month, Национальный месяц написания романов), предназначенного для поддержки начинающих писателей. Оба проекта понимают под романом художественный текст длиною от 50 000 слов. Участники NaNoGenMo традиционно посвящают каждый ноябрь написанию кода, предназначенного для генерации романов. Проект не носит соревновательного характера — в нём нет победителей и побеждённых. С образцами машинной прозы можно ознакомиться на странице[21] проекта на платформе GitHub. Роман, давший старт NaNoGenMo, получил название «Подростки прогуливаются вокруг дома». Для создания его текста было задействовано несколько ботов, совершавших виртуальную прогулку и обменивающихся репликами, которые стали основой диалога, ставшего затем романом[22], [23].

Кстати говоря, уже знакомые нам Иван Ямщиков и Алексей Тихонов в соавторстве с Яной Агафоновой из Санкт-Петербургского отделения Высшей школы экономики представили[24] на NaNoGenMo 2019 г. собственное творение — «параноидальный трансформер» [Paranoid Transformer] (явная отсылка к Марвину, роботу-параноику из цикла юмористических романов британского писателя Дугласа Адамса) — модель, представляющую собой объединение GPT, дообученной на специальном корпусе, с набором специальных эвристик, предназначенных для улучшения качества генерации. «Параноидальный трансформер» способен производить на свет вполне реалистичные дневники параноика.

NaNoGenMo — не единственная коллективная онлайн-инициатива, посвящённая литературному творчеству машин. В 2016 г. поэтесса и программистка Кармел Аллисон запустила веб-сайт CuratedAI — «Литературный журнал, написанный машинами для людей» (A literary magazine written by machines, for people) — онлайн-издание, специализирующееся на публикации произведений, созданных при помощи методов искусственного интеллекта. Первыми произведениями, опубликованными на сайте, стали стихи, сгенерированные созданной Кармел нейронной сетью Deep Gimble I («Глубокая Гимбл I»)[25], [26].

Хотя к форме в случае стихотворного текста предъявляются дополнительные требования, порой весьма жёсткие, задача написания стихотворений, по всей видимости, является более простой с точки зрения искусственного интеллекта. Причина этого довольно банальна: стихотворения в массе своей сравнительно невелики, а значит, при их «написании» генеративная модель не должна «сочинять» крупномасштабную структуру повествования, основой которой являются зависимости между токенами, разнесёнными на очень большие расстояния. Представьте, что какой-то герой вводится автором в первой главе романа, а затем вновь упоминается только через несколько глав. Если между двумя его упоминаниями будет более 1024 токенов, GPT-2 просто «забудет» о его существовании. Конечно, и в поэзии встречаются весьма внушительные произведения — стихотворные поэмы. Самой длинной из них, наверное, можно назвать «Махабхарату». Без поздних включений и прозаических отрывков этот древнеиндийский эпос состоит из как минимум 75 000 шлок (двустиший). Это около 900 000 слов. В полной же версии — до 1 800 000 слов. Правда, «Махабхарата» складывалась чуть ли не одиннадцать веков и усилиями многих людей; самой же длинной поэмой, созданной стараниями одного автора, считается свод «Шахнаме» персидского поэта Фирдоуси, — около 260 000 слов. В то же время в самом длинном прозаическом произведении, романе Жюля Ромена «Люди доброй воли», около 2 070 000 слов, не считая 100-страничного указателя и 50-страничного оглавления. Это во много раз больше, чем в «Шахнаме», и больше, чем в «Махабхарате».

Даже книга, которую вы читаете в настоящий момент, по числу слов превосходит «Шахнаме». Конечно, у модели с длиной контекста в 1024 токена наверняка возникли бы проблемы и при написании большой стихотворной поэмы, но в массе своей шедевры стихотворного жанра без особых проблем поместятся в такой контекст целиком. В стихотворении «Имя твоё — птица в руке…» Цветаевой 81 слово, в «Незнакомке» Блока — 219, в «Сероглазом короле» Ахматовой — 69, а «Я вас любил…» Пушкина и вовсе насчитывает всего 50 слов. При автоматическом создании стихотворений борьба сейчас идёт скорее за то, чтобы научить модели понимать, чем шедевры отличаются от проходных текстов, и научить машины создавать именно шедевры. Впрочем, я думаю, что эта задача не так уж сложна, как может показаться на первый взгляд. По крайней мере, у нас есть множество рейтингов стихотворений, которые можно использовать в качестве обучающих выборок. С проблемой недостаточной длины контекста генеративных моделей ситуация выглядит несколько менее оптимистичной — здесь, по всей видимости, необходимы новые нейросетевые архитектуры, и в настоящее время в этой области активно ведутся исследования.

Среди примеров перспективных архитектур можно назвать разреженный трансформер [sparse transformer][27], лонгформер [longformer][28], реформер [reformer][29], трансформер с адаптивным диапазоном внимания [adaptive attention span][30], сжимающий трансформер [compressive transformer][31], поблочный трансформер [blockwise transformer][32], Linformer[33], BigBird[34], перформер [performer][35], ∞-формер [∞-former][36], LongNet[37], транcформер Синкхорна [Sinkhorn Transformer][38], синтезатор [Synthesizer][39], Mega (Moving Average Equipped Gated Attention, Вентильное внимание, оснащённое скользящим средним)[40], MEGABYTE[41] и ряд других аналогичных моделей. Такие модели обычно позволяют увеличить размеры рецептивного поля в несколько раз. Для оценки возможностей моделей, предназначенных для моделирования «долгих» (до 16 тыс. токенов) зависимостей в последовательностях, исследователями из DeepMind и Google в 2020 г. был разработан специальный набор тестов под названием «Арена больших расстояний» [Long Range Arena][42][43]. По состоянию на середину 2023 г. наилучшие результаты на этом наборе тестов были достигнуты моделью Mega. В 2023 г. было опубликовано ещё два набора тестов для моделей, способных работать с длинными последовательностями: L-Eval[44] и LongBench[45]. Интересно, что неплохие результаты при моделировании длинных последовательностей показывают старые добрые свёрточные нейронные сети — для языкового моделирования в последние годы на основе свёрток было создано несколько интересных архитектур, например SGConv (Structured Global Convolution, Структурированная глобальная свёртка)[46] или «Иерархия гиен» [Hyena Hierarchy][47].

В общем, сегодня у исследователей есть множество моделей-кандидатов, способных в той или иной мере решить проблему моделирования длинных текстовых последовательностей, поэтому в ближайшее десятилетие мы, вероятно, увидим немало новых интересных проектов, связанных с литературным творчеством нейросетевых моделей.

  1. Kantrowitz A. (2016). Google Is Feeding Romance Novels To Its Artificial Intelligence Engine To Make Its Products More Conversational / BuzzFeed News, 4 May 2016 // https://www.buzzfeednews.com/article/alexkantrowitz/googles-artificial-intelligence-engine-reads-romance-novels
  2. Bowman S. R., Vilnis L., Vinyals O., Dai A. M., Jozefowicz R., Bengio S. (2016). Generating Sentences from a Continuous Space // https://arxiv.org/abs/1511.06349
  3. Kiros R., Zhu Y., Salakhutdinov R., Zemel R. S., Torralba A., Urtasun R., Fidler S. (2015). Skip-Thought Vectors // https://arxiv.org/abs/1506.06726
  4. Chen M. X., Lee B. N., Bansal G., Cao Y., Zhang S., Lu J., Tsay J., Wang Y., Dai A. M., Chen Z., Sohn T., Wu Y. (2019). Gmail Smart Compose: Real-Time Assisted Writing // https://arxiv.org/abs/1906.00080
  5. Нейронная оборона — Комиссар Михаил (2018) / https://lyrdb.ru/lyrics/neyronnaya-oborona-komissar-mihail/
  6. Голованов В. (2016). Нейронная оборона: запись альбома-посвящения Егору Летову при помощи нейросетей / Хабр, 28 июня // https://habr.com/ru/post/395503/
  7. В "Яндексе" научили нейросеть писать музыку в стиле Летова и представили слушателям первый альбом (2016) / newsru.com, 28 июня 2016 // https://www.newsru.com/cinema/28jun2016/letov.html
  8. Tikhonov A., Yamshchikov I. P. (2018). Sounds Wilde. Phonetically Extended Embeddings for Author-Stylized Poetry Generation / Proceedings of the Fifteenth Workshop on Computational Research in Phonetics, Phonology, and Morphology, October 2018, Brussels, Belgium, pp. 117–124 // https://doi.org/10.18653/v1/W18-5813
  9. Tikhonov A., Yamshchikov I. P. (2018). Guess who? Multilingual Approach For The Automated Generation Of Author-Stylized Poetry / 2018 IEEE Spoken Language Technology Workshop (SLT) // https://doi.org/10.1109/SLT.2018.8639573
  10. Yamshchikov I. P., Tikhonov A. (2019). Learning Literary Style End-to-end with Artificial Neural Networks / Advances in Science, Technology and Engineering Systems Journal, Vol. 4, No. 6, pp. 115—125 // https://doi.org/10.25046/aj040614
  11. Пекелис В. (1982). Кибернетическая смесь. — М.: Знание.
  12. Бирюков Б. В., Гутчин И. Б. (1982). Машина и творчество. — М.: Радио и связь // http://informaticslib.ru/books/item/f00/s00/z0000024/index.shtml
  13. Radford A., Wu J., Amodei D., Amodei D., Clark J., Brundage M., Sutskever I. (2019). Better Language Models and Their Implications / OpenAI blog, February 14, 2019 // https://openai.com/blog/better-language-models/
  14. Solaiman I., Clark J., Brundage M. (2019). GPT-2: 1.5B Release / OpenAI blog, November 5, 2019 // https://openai.com/blog/gpt-2-1-5b-release/
  15. Radford A., Narasimhan K., Salimans T., Sutskever I. (2018). Improving Language Understanding by Generative Pre-Training // https://paperswithcode.com/paper/improving-language-understanding-by
  16. * Поскольку благодаря появлению трансформерной архитектуры возник ряд моделей с числом параметров, превышающим 100 миллионов, для обозначения таких моделей в научной литературе стали применять специальный термин — «большие языковые модели» (Large Language Model, LLM). Конечно, само значение в 100 миллионов параметров является весьма условным (в некоторых источниках вы найдёте другие значения этой границы, например 1 млрд параметров), поэтому в отношении некоторых моделей могут возникнуть сомнения: считать их большими или нет. Но с практической точки зрения эти споры вряд ли представляют какой-либо интерес.
  17. Holtzman A., Buys J., Du L, Forbes M., Choi Y. (2020). The curious case of neural text degeneration // https://arxiv.org/abs/1904.09751
  18. Radford A., Wu J., Child R., Luan D., Amodei D., Sutskever I. (2019). Language Models are Unsupervised Multitask Learners // https://paperswithcode.com/paper/language-models-are-unsupervised-multitask
  19. Лейзаренко Д. (2019). Нейросеть «Порфирьевич» дописывает любые тексты и стихи на русском языке. Это аналог алгоритма компании Илона Маска / TJournal, 26 дек. // https://tjournal.ru/internet/132982-neyroset-porfirevich-dopisyvaet-lyubye-teksty-i-stihi-na-russkom-yazyke-eto-analog-algoritma-kompanii-ilona-maska
  20. Rajcic N., McCormack J. (2020). Mirror Ritual: An Affective Interface for Emotional Self-Reflection // https://arxiv.org/abs/2004.09685
  21. National Novel Generation Month // https://nanogenmo.github.io/
  22. Kazemi D. (2019). Even a beginner programmer can make a novel generator / Tiny Subversions, Nov 4, 2019 // https://tinysubversions.com/notes/nanogenmo-2019/
  23. Barber G. (2019). Text-Savvy AI Is Here to Write Fiction / Wired, 11.23.2019 // https://www.wired.com/story/nanogenmo-ai-novels-gpt2/
  24. Agafonova Y., Tikhonov A., Yamshchikov I. P. (2020). Paranoid Transformer: Reading Narrative of Madness as Computational Approach to Creativity // https://arxiv.org/abs/2007.06290
  25. Haridy R. (2016). 2016: The year AI got creative / New Atlas, December 12, 2016 // https://newatlas.com/ai-art-film-writing-review/46891/
  26. About CuratedAI // http://curatedai.com/about
  27. Child R., Gray S., Radford A., Sutskever I. (2019). Generating Long Sequences with Sparse Transformers // https://arxiv.org/abs/1904.10509
  28. Beltagy I., Peters M. E., Cohan A. (2020). Longformer: The Long-Document Transformer // https://arxiv.org/abs/2004.05150
  29. Kitaev N., Kaiser Ł., Levskaya A. (2020). Reformer: The Efficient Transformer // https://arxiv.org/abs/2001.04451
  30. Sukhbaatar S., Grave E., Bojanowski P., Joulin A. (2019). Adaptive Attention Span in Transformers // https://arxiv.org/abs/1905.07799
  31. Rae J. W., Potapenko A., Jayakumar S. M., Lillicrap T. P. (2019). Compressive Transformers for Long-Range Sequence Modelling // https://arxiv.org/abs/1911.05507
  32. Qiu J., Ma H., Levy O., Yih S. W.-t., Wang S., Tang J. (2019). Blockwise Self-Attention for Long Document Understanding / CLR 2020 Conference Blind Submission // https://openreview.net/forum?id=H1gpET4YDB
  33. Wang S., Li B. Z., Khabsa M., Fang H., Ma H. (2020). Linformer: Self-Attention with Linear Complexity // https://arxiv.org/abs/2006.04768
  34. Zaheer M., Guruganesh G., Dubey A., Ainslie J., Alberti C., Ontanon S., Pham P., Ravula A., Wang Q., Yang L., Ahmed A. (2020). Big Bird: Transformers for Longer Sequences // https://arxiv.org/abs/2007.14062
  35. Choromanski K., Likhosherstov V., Dohan D., Song X., Gane A., Sarlos T., Hawkins P., Davis J., Mohiuddin A., Kaiser L., Belanger D., Colwell L., Weller A. (2020). Rethinking Attention with Performers // https://arxiv.org/abs/2009.14794
  36. Martins P. H., Marinho Z., Martins A. F. T. (2021). ∞-former: Infinite Memory Transformer // https://arxiv.org/abs/2109.00301
  37. Ding J., Ma S., Dong L., Zhang X., Huang S., Wang W., Zheng N., Wei F. (2023). LongNet: Scaling Transformers to 1,000,000,000 Tokens // https://arxiv.org/abs/2307.02486
  38. Tay Y., Bahri D., Yang L., Metzler D., Juan D.-C. (2020). Sparse Sinkhorn Attention // https://arxiv.org/abs/2002.11296
  39. Tay Y., Bahri D., Metzler D., Juan D.-C., Zhao Z., Zheng C. (2020). Synthesizer: Rethinking Self-Attention in Transformer Models // https://arxiv.org/abs/2005.00743
  40. Ma X., Zhou C., Kong X., He J., Gui L., Neubig G., May J., Zettlemoyer L. (2022). Mega: Moving Average Equipped Gated Attention // https://arxiv.org/abs/2209.10655
  41. Yu L., Simig D., Flaherty C., Aghajanyan A., Zettlemoyer L., Lewis M. (2023). MEGABYTE: Predicting Million-byte Sequences with Multiscale Transformers // https://arxiv.org/abs/2305.07185
  42. Tay Y., Dehghani M., Abnar S., Shen Y., Bahri D., Pham P., Rao J., Yang L., Ruder S., Metzler D. (2020). Long Range Arena: A Benchmark for Efficient Transformers // https://arxiv.org/abs/2011.04006
  43. Long-range modeling on LRA (2023) // https://paperswithcode.com/sota/long-range-modeling-on-lra
  44. An C., Gong S., Zhong M., Zhao X., Li M., Zhang J., Kong L., Qiu X. (2023). L-Eval: Instituting Standardized Evaluation for Long Context Language Models // https://arxiv.org/abs/2307.11088
  45. Bai Y., Lv X., Zhang J., Lyu H., Tang J., Huang Z., Du Z., Liu X., Zeng A., Hou L., Dong Y., Tang J., Li J. (2023). LongBench: A Bilingual, Multitask Benchmark for Long Context Understanding // https://arxiv.org/abs/2308.14508
  46. Li Y., Cai T., Zhang Y., Chen D., Dey D. (2022). What Makes Convolutional Models Great on Long Sequence Modeling? // https://arxiv.org/abs/2210.09298
  47. Poli M., Massaroli S., Nguyen E., Fu D. Y., Dao T., Baccus S., Bengio Y., Ermon S., Ré C. (2023). Hyena Hierarchy: Towards Larger Convolutional Language Models // https://arxiv.org/abs/2302.10866
Loading comments...