Рецензия на роман «Вымирание»
Эксперимент завершился, я следил за ним почти с самого начала. Сразу напишу дисклеймер, чтобы была понятна моя позиция и потенциальные склонности (в смысле bias). С ИИ во всех его проявлениях я плотно работаю с конца 2022 года, когда вышел Stable Diffusion. Уже тогда было понятно, что технология эта очень интересная, перспективная и прорывная, её можно и нужно использовать в качестве инструмента для решения своих задач и развлечения. Но тогда же стало ясно, что закрытые (проприетарные, облачные, API и т.п.) модели — это путь в никуда, потому что инструмент, который контролирует кто-то ещё, кто может его испортить или отключить, это в лучшем случае игрушка, а в худшем — оружие владельца, нацеленное на тебя. Поэтому я использую исключительно локальные модели, которые можно запускать на своём оборудовании. Я их также дообучаю на своих данных, чтобы получать нужный результат, пишу вспомогательно ПО и всё в таком духе. Ну то есть не просто на каком-то сайте пишу промпты и плачу за токены, это мне неинтересно. Сейчас у меня RTX 5090, которая используется куда чаще для запуска крупных моделей, чем для игр. Это солидное вложение, но я ни разу о нём не пожалел. Всё вышенаписанное будет важно для понимания дальнейшего.
Итак, данную книгу я заметил случайно на главной АТ и заинтересовался, потому что раньше таких экспериментов не встречал. Конечно, многие сейчас втайне используют ИИ, потом их на этом ловят, случается скандал и драма. Здесь же автор сразу честно задал ожидания, именно это и привлекло. LLM в творчестве в основном ранее использовались для ролевых игр, а полномасштабная проза у них не особо получалась из-за малого размера контекста (4-8 тысяч токенов, в такое и главу-то не впихнуть). В наши же дни существуют агентские циклы, в которых модель может писать и потом исправлять написанное, пока не причешет до какой-то степени приличия. Так что вполне логично попробовать создать таким методом крупную повесть.
Что получилось:
- интересная, пусть и не особо оригинальная задумка про попаданцев в игру, которая одновременно является параллельным миром-антиутопией;
- разные персонажи со своими сильными и слабыми сторонами и ролями в RPG смысле, а также небольшим лором
- начало, в целом, хорошее и интригующее — предыстории занятны
- проект таки доведён до конца и не брошен, за это респект уже сам по себе
- длина произведения адекватная, не слишком длинно, не слишком коротко для объёма событий
А вот что не получилось, это и есть самое главное в данной рецензии. В первую очередь нужно отметить огромное количество т.н. ИИ-слопа, которым страдают практически все модели текущего поколения, независимо от их размера. Основные категории слопа, которые я заметил:
- негативный параллелизм вида «Не А. Б.» или «Не А. Не Б. В.»
- неуместный параллелизм (метафоры/сравнения), например «Лариса Вельская наблюдала за ними через стекло, как человек, который всё ещё не решил, спасение это было или ошибка.»
- скудные описания и бедные диалоги, которые строятся через отрицания, чтобы набить объём
Всё это, по моему мнению, не является фундаментальной проблемой LLM. В сфере ИИ слово «никогда» надо было забыть ещё два года назад, потому что развитие идёт экспоненциально, и только выставишь себя дураком, заявляя, что ИИ никогда не научится рисовать руки. Но на данном этапе слоп есть, его надо признавать и работать с ним, а именно, искоренять. Для этого его надо сначала замечать. Тут автор хорошо поработал в первых главах, где текст читался довольно легко и непринуждённо, но через пару глав после попадания в игру качество резко пошло вниз. Я даже не уверен, что там была серьёзная вычитка (а если и была, то что ж там изначально выходило? Страшно представить).
Причины слопа кроются в значительно более узком распределении моделей. Распределение — это в общем случае вероятности, связывающие вход и выход функций (а все модели являются огромными функциями, по существу). Модель получает на вход текст диалога и возвращает распределение вероятностей следующего токена (слова), потом из него случайно выбирается один токен, и цикл повторяется, пока не надоест. Но это распределение для одного слова, а я имею в виду распределение всех возможных текстов (Y), которые модель может написать для данного промпта (X). Давно известно, что модели склонны использовать одни и те же, либо близкие, слова, обороты, названия, просто потому что у них вероятности оказываются значительно выше альтернатив. Ризонинг (рассуждения) помогает частично исправить ситуацию, модель может обдумать варианты и отбросить какие-то из них. Также может помочь более сложный сэмплер типа XTC или DRY. Но это больше костыли, и главную проблему они не решают.
Нужно отметить, что люди-человеки тоже склонны писать слоп, просто иного рода. У нас есть мощный поток книг про попаданцев, про ЛитРПГ, любовные романы для женщин и много чего ещё, что выходит сотнями каждый месяц. Большинство людей пишет, рисует, поёт хуже нейронки средней паршивости, это факт. Но никто не сравнивает себя с большинством, все сравниваются с мастерами, и конечно же пока нейронки мастерам проигрывают. Насколько долго сохранится эта ситуация? Only time will tell, как обожали писать модели прошлого поколения, наевшись GPT-измов. Но, судя по прогрессу в видео- и картинкогенерации, вряд ли дольше нескольких лет. На десятилетия я бы не поставил и сто рублей.
Почему людям вообще интересны книги, фильмы, музыка и прочее искусство? Потому что они расширяют наше собственное «распределение вероятностей». Мы постоянно предсказываем собственное будущее и будущее состояние мира вокруг нас — это основа разума. Читая книгу, мы предсказываем сюжет, слушая музыку — следующий куплет и движение мелодии. Если наши предсказания постоянно сбываются, нам становится скучно, потому что в этом нет новизны. Если же предсказания не оправдываются, но при этом не выглядят случайно, это интригует и радует, мы узнаём что-то новое, неожиданное, нам хочется узнать, что будет дальше, ведь мы попали в новую и неизведанную территорию «распределения автора». А автор это распределение создал с помощью своего уникального жизненного опыта, ну и конечно же изучая чужие труды. Так работает творчество во всех областях (модальностях) у людей. Никто не создаёт чего-то принципиально нового из ниоткуда, а если такое впечатление создаётся, то исключительно потому, что мы не знаем достаточно хорошо жизнь автора.
Нейронки в общем случае не могут получать уникальный опыт самостоятельно, это будет наверняка решено в будущем с помощью робототехники и автономных платформ для изучения мира. Но пока — увы. К счастью, если мы говорим о локальных моделях (о чём я писал в начале), мы можем их дообучать на своих (или не совсем своих) текстах, книгах, картинках, на чём угодно. Это позволит сдвинуть распределение модели в менее мейнстримные области, чтобы выдавать не средненький текст, а необычненький. В частности, коммерческие модели всегда кастрированы «безопасностью», так что им фундаментально сложно ругаться и исследовать «опасные» идеи. Но именно это и привлекает читателя. Нам нужны контрасты, конфликты, эмоции. А эти вещи находятся на «краях» распределения, вероятность попадания в которые довольно низка. И никакой джейлбрейк не поможет туда попасть, если сама модель не заточена на подобный фикшен.
Почему модель вообще пишет слоп? Она следует паттернам в книгах, где делаются противопоставления, метафоры, конфликты в диалогах, но она недостаточно хорошо улавливает цель этих паттернов. Грубо говоря, её «мысль» уже сформирована, она знает, что хочет написать, но паттерн диктует добавить противопоставление, потому что тут так заведено. В итоге «он побежал» превращается в «Он не пошёл. Не пополз. Не закопался в землю. А побежал». Смысла в этом навороте нет абсолютно никакого, он не даёт новой информации или каких-то эмоций.
Простой параллелизм, который я привёл выше, действует по тому же принципу, просто добавляется «как» или «будто», но он не проводит параллель с каким-то иным явлением, чтобы добавить больше неожиданного контекста, а высказывает всё ту же мысль в форме фейковой метафоры, и это раздражает. Например, человек бы написал «Иван посерел как вчерашний пельмень», и в зависимости от контекста это могло бы дать забавные параллели: что Иван жирный, что он морщинистый или что у него внутри тухловатая начинка, с гнильцой человечек-то. LLM для такого пока не хватает то ли размера, то ли ризонинга, не может она подобрать метафору, которая одновременно даст визуал и какие-то сопутствующие коннотации.
Я уверен, что это дело времени, тем более, на русском они всегда писали хуже, чем на английском, и многие проблемы слопа тянутся именно оттуда. Я в переводной книге от 2003 года увидел «Не А. И не Б. А В» и аж перекосился. Благо, там этого реально мало, но сейчас уже чувствительность к таким конструкциям обострена.
Общая бедность диалогов и описаний — это уже прямое следствие плохой специализации модели. Есть файнтюны типа Gemma 4 Ortenzya, которые выдают цветистую прозу на английском. Пожалуй, даже излишне цветистую, нужно умерять пыл вручную у них. Не знаю, чем пользовался автор, но тут диалоги и описания короткие, рублёные, с минимумом деталей и информации. Скорее, модель их вставляет для разбавления текста, часто видно, что получается натужно. Типа «Произошло то-то!» — «В смысле?» — «В прямом». Но в целом это наименее проблемная часть. Если вычистить и заменить первые две категории слопа, читаться будет уже значительно легче и без спотыканий. Учитывая объём, это задача не из простых. Её тоже можно автоматизировать через агентику, впрочем, тот же Hermes Agent может писать сам для себя скрипты и скиллы, если формализовать проблему, он за несколько итераций может написать инструмент, который будет быстро находить такие места, после чего сам агент может их переписать в более удобоваримом виде или удалить.
К бедности диалогов, пожалуй, можно отнести и недостаточную выразительность персонажей. Человеческие авторы обычно насыщают речь их героев какими-то специфичными словечками, оборотами, описанием речи, ругательствами, сленгом и т.п. Здесь у нас все говорят практически одинаково и не интересно. Из-за тяготения моделей к «среднему» необычные нюансы и детали нужно пока добавлять вручную. Именно эти детали и оживляют произведение, дают ему ту самую пресловутую душу. Думаю, в ближайшем будущем и это формализуется или будет как-то закостылено, а пока действуем вручную.
По итогу, первый блин получился комом, но это не повод расстраиваться и всё бросать. Нейронки открыли доступ к искусству и самовыражению для энтузиастов без механических навыков, и это замечательно. К сожалению, для людей бесталанных и ленивых доступ открылся столь же просто, из-за чего мы сейчас и тонем в мультимодальном слопе. Я убеждён, что при должном упорстве мы в итоге придём к применению инженерных итеративных подходов в области искусства, и творить можно будет на очень высоком уровне (типа, «добавь сюжетную линию такую-то» или «добавь персонажу А черту характера Б» и т.д.), при этом, текст будет переписываться точечно для отражения только нужных изменений, и автор сможет сосредоточиться не на подборе слов, а подборе сюжетных поворотов и глобальных идей. Точно так же, как художники прошли путь от смешивания веществ для красок к слоям и вырезать-вставить-повернуть в фотошопе. Но почему-то следующий шаг в виде перехода к текстовому управлению этими процессами у них вызвал лютую ненависть
Но это уже совсем другая история.
Проблема также в том, что модель, порождающая слоп, не понимает, что это слоп, т.к. он наиболее естественен для неё самой. Поэтому многие люди применяют несколько моделей от разных вендоров, чтобы их склонности компенсировались. Среди локальных моделей выбор крайне широк, на HuggingFace масса расцензуренных и дообученных на разных темах современных моделей. Например, можно скачать несколько моделей и автоматически их переключать с помощью llama-swap по запросу, в зависимости от задачи. Но это тоже отдельная большая тема.
Что могу посоветовать автору, если он соберётся писать ещё. В LLM-агентике крайне важно придумать и организовать автономный цикл. Для литературы логично сделать субагента «критика», который будет читать написанное в чистеньком контексте (не зная предыдущей истории написания, чтобы не заполучить bias) и выдавать список проблемных мест. Критик может пользоваться скриптами (на Python, например, их может тоже написать и улучшать сам агент) для быстрого поиска проблем, которые по итогу он возвращает главному агенту. Главный же вносит правки и запускает критика снова, иногда также опционально запуская другого агента, который может оценивать общий ход произведения с точки зрения консистентности, выразительности, интересности (ну тут тоже спорно, давать ли модели судить). И так они крутятся несколько раз, пока качество не устроит всех.
Спасибо за книгу и прочтение рецензии!