Читать нас в Telegram
Иллюстрация: Надя Луценко

Чтобы разобраться в том, как работают нейросети-писатели, мы обратились к двум специалистам. Борис Орехов — кандидат филологических наук, цифровой филолог, компьютерный лингвист и исследователь, который занимается генерацией и изучением художественных текстов. Чтобы узнать больше об его экспериментах, можно, например, почитать рубрику «Нейростихи» в «Системном Блоке», сборник башкирской нейропоэзии или нейропрозу Набокова. Михаил Ким — куратор и автор рубрик «Глоссарий» и «Как это работает» в «Системном Блоке», исследователь в области глубинного обучения, занимающийся нейросетевыми технологиями в IT-индустрии. У нас можно прочитать, например, материал Михаила о языковых моделях и найти составленный им большой каталог нейросетей. Обоим экспертам мы задали одинаковые вопросы.

Как обучают нейросети, которые потом генерируют текст? 

Обученная нейросеть генерирует текст последовательно слово за словом, объясняет Михаил Ким. При генерации каждого следующего слова она должна учитывать все предыдущие сгенерированные слова, которые называются контекстом, поскольку иначе текст получится бессвязным. Например, если попросить вас продолжить фразу «мама мыла», то вы, вероятно, скажете «раму»: в этом примере вы примерили на себя роль нейросети для генерации текста (на самом деле вы отчасти ею и являетесь), вы учли контекст (начало фразы) и предложили следующее слово.

Почему вы могли ответить именно «раму»? Скорее всего вы уже видели или слышали это выражение (например, в букваре) и запомнили, что после «мама мыла» идёт «раму». Не исключено, что вы предложили иное продолжение: возможно, вы ответили «посуду» или «малыша». Сказать, что какое-то продолжение правильное, а какое-то нет, очевидно, нельзя. Мыть, вообще говоря, можно многое. Но если так, то каким образом различать, как оценивать разные продолжения? Оценивать их можно в терминах частотности. 

Например, мы можем собрать тексты на русском языке; затем найти в каждом тексте предложения, в которых присутствует словосочетание «мама мыла»; из каждого такого предложения выписать слово, которое стоит после начала фразы. И в конце подсчитать, как часто каждое выписанное слово встречалось: например, мы нашли всего 1000 предложений, содержащих «мама мыла», из них 650 заканчивались словом «раму» (частота этого продолжения равна (650/1000)*100% = 65%), 201 — словом «посуду» (20.1%), а 149 — словом «малыша» (14.9%). Эти проценты являются вероятностями встречи каждого продолжения при данном контексте. 

ФразаПродолжениеВероятность
Мама мылараму65%
посуду20.1%
малыша14.9%

Именно этому мы хотим научить нейросеть: для каждого слова языка при заданном контексте выдавать вероятность того, что это слово является продолжением. На практике невозможно рассмотреть все слова языка, и поэтому ограничиваются относительно небольшим набором (например 20 тысяч самых встречаемых), который называют словарём.

Для обучения нейросети нужны обучающие данные: например, архив всей Википедии, художественные тексты и другие виды текстов. При обучении из собранных данных берётся фрагмент текста, и к нему добавляются специальные слова, которые обозначают начало и конец фрагмента, — обозначим их как [начало] и [конец]. Например, «[начало] Король оказался голым [конец]». Слова в этом фрагменте сдвигаются вправо: «[начало] Король оказался голым» (слово [конец] сдвинулось вправо), и полученный текст подают на вход модели. Модель производит сложные преобразования над фрагментом и в конце возвращает таблицу чисел. В этой таблице каждая строка соответствует префиксу поданного на вход фрагмента, а каждый столбец — слову из словаря. В нашем случае префиксами являются: [начало]; [начало] Король; [начало] Король оказался; [начало] Король оказался голым. На пересечении строки и столбца стоит вероятность того, что слово, соответствующее столбцу, встречается после префикса, соответствующего строке. 

Другими словами, в таблице записаны вероятности встречи каждого слова словаря при заданных контекстах, где контекстами являются префиксы сдвинутого фрагмента. Поскольку мы знаем весь фрагмент целиком, мы для каждого контекста знаем наиболее вероятное продолжение: понимаем, что для контекста [начало] продолжением является Король, для [начало] Корольоказался, [начало] Король оказалсяголым и [начало] Король оказался голым [конец]. Поэтому мы можем сравнить соответствующие ячейки таблицы, которую выдала модель, со 100% (максимальной вероятностью) и на основе отклонения от правильного ответа лучше настроить модель. Обучение модели заключается в повторении этой процедуры со всеми фрагментами текстов из обучающих данных.

«Требования» к художественным текстам

По словам Бориса Орехова, специфика обучения нейросетей зависит от того, какие именно художественные тексты мы хотим получить на выходе и какие у нас требования к художественным текстам. Один из самых понятных вариантов — принять, что мы ожидаем прозаический художественный текст, повествующий о каких-то событиях, то есть конвенциональный, обычный рассказ или повесть.

С технической точки зрения, нейросеть, которая пишет такое произведение, должна помнить контекст происходящего, отмечает Михаил Ким. Это довольно большая проблема для нейросетей. Они быстро забывают контекст, но по мере развития технологий инженеры стараются с этим бороться, и нейросети учатся всё лучше запоминать контекст. Нейросеть к пятой или пятнадцатой странице произведения может забыть, про кого она рассказывает историю, и если в начале был заявлен какой-то персонаж, то он может потом неожиданно выветриться из памяти. Ещё несколько лет назад с этим было хуже, чем сейчас. То есть виден прогресс нейросетей. Особенно хорошо себя показали нейросети на основе архитектуры трансформер, про которые «Системный Блокъ» уже писал и которые сегодня используются во всех лучших нейросетевых моделях. Все поколения GPT и ChatGPT — это трансформеры. Трансформеры также работают под капотом Балабобы и Алисы «Яндекса».

Но с точки зрения искушенного читателя или опытного филолога такого рода текст — по крайней мере, на том уровне генерации, который мы видим сейчас, — очень скучный. Будет ли способен человек принять его за художественный в полном смысле этого слова — большой вопрос. То есть, если мы имеем довольно непритязательные критерии и считаем, что любая история — это художественный рассказ, то ничего страшного, поясняет Борис Орехов. Но если мы считаем, что художественное произведение должно быть неожиданным, должно удивлять своей формой и нетипичными поворотами сюжета, то этого читатель не дождётся. Чем лучше нейросети имитируют человеческую речь, тем хуже они как писатели — в смысле удивления, в смысле новостей, которые нам сообщает текст.

Легко представить себе точку зрения, что называть такие тексты художественными можно с большой натяжкой, или их вовсе не следует называть художественными, чтобы не путать понятия. Но следует отметить, что плохие нейросети (плохо обученные нейросети) выдают тексты гораздо более интересные. Чем больше нейросеть допускает ошибок и чем менее она технологична, тем она интереснее: выдаёт нетривиальные сочетания слов, изобретает свои собственные слова, которые очень похожи на настоящие, но при этом обладают собственной образной свежестью. 

С этой точки зрения любопытными представляются нейросети, появившиеся до архитектуры трансформер. Например, хорошо себя показала архитектура рекуррентных нейронных сетей в варианте длинной краткосрочной памяти (long short-term memory, LSTM). И сравнивая не просто абстрактные художественные тексты, а именно поэтические, которые выдают современные трансформеры и устаревшие рекуррентные сети, мы видим, что рекуррентные сети в целом интереснее по своим результатам генерации. 

Они ближе к тому, что искушённые читатели готовы признать поэзией. Поэтому, как ни парадоксально, правильный ответ на вопрос «как обучать нейросети, которые генерируют текст»‎: обучать их следует плохо, обучать их следует так, чтобы они допускали ошибки, если мы говорим про короткие тексты (короткие рассказы или поэтические тексты). Если же мы говорим про написание больших нарративных текстов размером с роман, то ответ на этот вопрос никто не знает, потому что пока технологически невозможно сделать так, чтобы за один раз нейросеть написала роман.

В чём разница между генерацией прозы и поэзии? Зависит от точки зрения читателя или инженера, который организовывает этот процесс. Для читателя, конечно, поэзия и проза — это абсолютно разные вещи, потому что они по-разному устроены. Читатель привык в течение XX века, что поэзия — это особенный речевой жанр, в котором возможно всё. В том числе и совершенно непредставимые нелепости: несвязность, нелогичность, возможна и даже одобряется непоследовательность. И несмотря на то, что проза XX века тоже может быть такой, она не создала себе подобной репутации. От прозы читатель в гораздо меньшей степени ждёт, что она будут нелогична и несвязна, и гораздо меньше подготовлен к этому. Поэтому поэтические тексты, некачественные с точки зрения грамматичности, которые порождает нейросеть, мы склонны ей прощать. Читатели так поступают благодаря общей репутации поэзии. В прозе, как выяснилось, это в меньшей степени ожидается читателем. 

Получается, что генерация прозы и поэзии — это разные задачи: они требуют неодинаковые планки при оценке результатов. Если, например, слова не будут сочетаться друг с другом (например, первая строка не связана логически со второй), то читатель не станет переживать по этому поводу. Хотя у инженеров может быть другая точка зрения. А в остальном, кажется, что разница между задачей генерации поэзии и прозы не столь существенна. Главное не в том, проза это или поэзия, а в том, нарративный это текст или «‎лирический»‎. То есть рассказывает этот текст историю или нет. Если он не рассказывает историю, то неважно, он нам дан в прозе или стихах. А если он рассказывает историю, то мы ожидаем, что у неё будет начало, экспозиция, кульминация, развязка. 

Тут есть разные сложности. Не так хорошо это получается даже у прекрасных трансформеров. ChatGPT, например, справляется с короткими историями. Это новость. Ещё пару лет назад ничего подобного мы не видели. А в лирике история не нужна, поэтому нужно определиться, с какой строгостью мы готовы подходить к результату. У нас есть представления о том, как должен быть устроен нарратив, а в отношении лирики таких критериев гораздо меньше, и они гораздо менее конвенциональны.

«‎Бессвязные» тексты человека и нейросети: сходства и ключевое отличие

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

Есть одно базовое свойство, которое отличает тексты, порождаемыми людьми, в каком бы состоянии сознания они ни находились, и тексты, которые порождает компьютер. Это свойство называется интенциональностью. У человека есть цель. Он осознаёт себя и порождает текст, создавая какое-то сообщение, даже если этот человек не в себе, и сообщение не может быть раскодировано адресатом, потому что закодировано оно адресантом таким образом, что это невозможно передать другому. Даже если это так, всё равно такие тексты содержат какое-то сообщение. Даже душевнобольные люди пытаются нам что-то сказать, а компьютеры — нет, потому что, чтобы компьютеры оказались в той же точке, они должны обладать сознанием и должны иметь мотивацию. И ни того, ни другого у них нет. 

Есть занятная концепция, которая называется «‎философский зомби». Философы говорят так: представьте себе, что есть человек, который выглядит, как человек, совершает какие-то действия, как человек, имеет мимику, голос и что-то говорит, но при этом, в отличие от настоящего человека, он не мыслит, у него нет сознания и разума. Это такой зомби, но, поскольку это мысленный эксперимент, он философский. Компьютеры в некотором смысле точно такие же философские зомби, то есть они порождают тексты, которые очень похожи на настоящие, но при этом за ними не стоит никакого сознания. Другими словами, современные замечательные большие языковые модели — это в некотором смысле зомби.

Конечно, читатель может «порождать смыслы», читая и тексты нейросети, в которых нет интенциональности. Но есть очень важная модернистская идея, что при чтении текста важно понимать сообщения, которые нам посылает автор этого текста. Более того, у нас есть идея, что когда мы встречаемся с каким-то текстом, мы всегда, даже бессознательно, предполагаем, что у этого текста обязательно есть смысл, и никак иначе быть не может. Но с точки зрения классического понимания того, что такое смысл, у компьютерного текста его быть как раз не может. Это называется презумпция осмысленности. 

Тогда, если мы считаем, что всегда важно, какой смысл вкладывается в текст, получается, что те смыслы, порождаемые читателем, — второстепенны. А если мы считаем, что читатель первичен, и что сказал или хотел сказать автор — это не так важно, то вступаем на почву постмодернистского релятивизма. При этом трудно логически доказать, что позиция автора вообще с какой-то точки зрения важна. Это недоказуемое утверждение, и это болезненно, потому что на этом принятии первичности автора базируется в нашей науке довольно много, и в литературоведении в том числе: вся история про биографии писателей, про датировку рукописей, про их атрибуцию упирается в эту идею. А если считать, что это неважно, тогда внезапно пропадает и необходимость вообще думать об авторе. Если мы полностью отделяем тексты Пушкина от самой личности Пушкина, тогда пропадает значимость половины литературоведческих работ, которые имеют в виду, вот этот текст написан Пушкиным в южной ссылке, а этот написан в Михайловском и так далее. Это болезненная тема. Отсюда выходит, что должно быть важно, этот текст сочинил компьютер или нет. И если компьютер — тогда непонятно, зачем его вообще читать, потому что не порождается никакого сообщения. А если считать, что первичен читатель, и читатель решает, интересно ему читать или нет, тогда можно обращаться и к компьютерному тексту.

В чём разница между большими языковыми моделями универсального назначения (ChatGPT, Bard, LLaMa) и специализированными, которые обучены на каком-то небольшом корпусе, например, на Набокове?

Большие языковые модели универсального назначения обучают на огромном наборе самых разнообразных текстов, при этом не только текстов, написанных на естественных языках, но и на языках программирования, отвечает Михаил Ким. Таким образом модель приобретает ту самую универсальность, о которой говорится в вопросе. После обучения на массивном корпусе языковые модели обучаются следовать инструкциям, которые даёт пользователь. Без этого этапа ChatGPT не смогла мы выполнять команды вроде «напиши текст», «сделай выжимку», а могла бы просто генерировать текст. Для того, чтобы обучить модель выполнять команды, собирается отдельный обучающий набор, содержащий пары «команда-ответ». Стоит также отметить, что такое обучение производят и для того, чтобы модель не выдавала токсичные или опасные ответы (вроде рецептов вредных веществ). Задача, при которой нейросети обучаются следовать инструкциям, относительно новая и довольно сложная: сейчас в NLP сформировалась целая область, которая ею занимается. 

Модели, предназначенные для имитации, решают намного более узкую задачу. Поэтому их, во-первых, не обучают на столь большом количестве текстов. Однако часто перед обучением на корпусе автора модель предобучают на корпусе обычных текстов, написанных на языке произведений. И, во-вторых, не обучают выполнению инструкций. Последнее немаловажное отличие — размер модели. Универсальные модели обычно на порядки больше моделей для стилизации, поскольку способность качественно решать широкий спектр задач появляется только у моделей определённого размера.

Пример того, как можно обучить нейросеть генерировать тексты в стиле определённого писателя, — это материал «Системного Блока» «Как дообучить языковую модель писать в стиле Достоевского».

Обучая модель на текстах одного автора, мы сталкиваемся с большими системными проблемами, утверждает Борис Орехов. Любые нейросети любых архитектур чувствительны к размеру обучающей выборки. Если обучающая выборка будет маленькой, то тогда качество генерации в любом случае будет невысоким. Например, это касается грамматической связности. В результатах генерации нейросети грамматическая связность берётся из обобщений того, что нейросеть видит перед собой. У неё будет слишком мало примеров, если это текст одного автора. Но бывают исключения, когда у нас есть довольно обширное оставленное наследие, например, 90 томов Толстого, в котором семь миллионов слов. Конечно, для современных нейросетей семи миллионов слов критически мало. Хотя это лучше, чем 1 миллион слов, но этого недостаточно. 

Что делать в этом случае? Берётся модель, которая была обучена на достаточно представительной выборке текстов некоторого языка, чтобы она сначала выучилась грамматике, сочетаемости слов, базовым вещам в языке, а потом модель специально дообучается на текстах определённого писателя. 

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

Что получается и не получается у нейросетей обоих типов в стилизации под творчество конкретных авторов?

Результаты, которые выходят у моделей, дообученных на определённом корпусе, например, Набокова или жанра школьных сочинений, действительно похожи на обучающую выборку, отвечает Борис Орехов. Сгенерированный текст воспроизводит какие-то особенности стиля Набокова. Какие именно — это вопрос, который нуждается в отдельном исследовании.

Само понятие стиля, например, тоже не очень простое с методологической точки зрения, но кажется, что стиль, как бы мы его не понимали, воспроизводится нейросетями, а также имитируются жанровые особенности. 

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

В какие ограничения современных нейросетей мы упираемся? 

Сложности со связностью текста в первую очередь связаны с размером обучающей выборки и размером самой модели, отмечает Михаил Ким. Если обучать модель только на небольшом корпусе текстов автора, то модель с трудом сможет выучить язык. Аналогично и с размером модели: ей может просто не хватить мощности для того, чтобы обучиться генерировать связный текст. Чаще всего в академии нет вычислительных ресурсов, необходимых для обучения больших моделей на объёмных выборках. 

Борис Орехов добавляет, что существуют проблемы моделей, которые нельзя решить просто расширением корпуса. В любом очень большом, но всё-таки ограниченном корусе всегда есть специфические темы, которые обозреваются реже, чем другие. Например, в корпусе, собранном из интернета, будет очень много текстов, посвящённых экономике и финансам: про это много пишут, много учебных и других материалов в сети. Современная нейросеть может на них обучиться и будет неплохо понимать, о чём идёт речь. А если вы спросите у нейросети про то, о чём мало написано даже в очень большом корпусе, например, про конкретный этический аспект философии Кьеркегора? Здесь, конечно, в силу того, что нейросети обязательно ориентируются на некоторые статистически значимые показатели, она будет путаться, и, естественно, будет работать плохо.

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

Какие из этих ограничений могут уйти в будущем?

Закон Мура, согласно которому производительность процессоров удваивается каждые 24 месяца, выполняется до сих пор, отмечает Михаил Ким. Интерес к специализированным типам вычислителей для обучения нейросетей растёт, растут и объёмы инвестиций в этой сфере: только недавно капитализация Nvidia, основного производителя таких вычислитей, достигла одного триллиона долларов. Поэтому постепенно будет уменьшаться и цена обучения больших языковых моделей.

Борис Орехов делать прогнозы отказался 🙂 Потому что они всё равно не сбываются

Могут ли нейросети помочь филологам в их движении к мировому господству? 

Последний вопрос мы задали персонально Борису Орехову. Сможет ли нейросеть приносить пользу филологам? Сейчас кажется, что генерация художественных текстов нейросетями нужна… просто потому что это забавно.

«Давайте сделаем, это прикольно»‎ — неплохая мотивация, считает исследователь. Это слова, с которых могли начинаться великие проекты в истории человечества, совершенно не обязательно на этом основании что-то отметать. Что касается того, поможет ли нейросеть решить какие-то проблемы филологам, надо сначала узнать, какие проблемы есть у филологов, что именно им надо решать? Тот же Виктор Владимирович Виноградов, который написал о стиле несколько книг, совершенно не утруждал себя определением того, что такое стиль. Если это кому-то не нужно, он не определяет, а просто двигается дальше, исходя из некоторого интуитивного определения. Поэтому Борис Орехов не думает, что нужно мучительно выдавливать из себя какое-то определение. Хотя существует эпистемологический приоритет определения, при котором считается, что мы не можем что-то знать, если мы не знаем определения этого чего-то. Но философия XX века, в частности Витгенштейн, как будто избавила нас от необходимости следовать этому эпистемическому приоритету определения. Поэтому кажется, что нейросети нас не подталкивают к этому. 

И кажется, благодаря нейросетям мы не узнаем чего-то нового о художественном творчестве. Это очень давний стереотип, что если мы воспроизведём некоторый сложный синтетический процесс в машине, то мы станем лучше его понимать. Шахматы показали, что это не так: человечество научилось очень хорошо обучать компьютеры играть в шахматы, но не приблизилось ни на шаг к пониманию того, как шахматист делает свой интуитивный ход. И то же самое касается, видимо, всего остального, с чем мы имеем дело: компьютерное моделирование процесса не помогает узнать ничего об этом. 

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

Материал подготовлен в рамках спецпроекта «Писатели vs Нейросети»