Как стать автором
Обновить

Это наконец произошло: нейросеть и человек написали книгу. Вместе! Рассказываем, как им помогали разработчики

Время на прочтение 9 мин
Количество просмотров 15K
Всего голосов 28: ↑26 и ↓2 +24
Комментарии 34

Комментарии 34

Надо emojich'а прикрутить))

Круто! Уже хочу ее почитать.
> Долгое время такой задачей, определяющей, настал ли полный ИИ или ещё нет, считались шахматы. Затем го. И вот, наконец, настал черёд литературы.

> Вот когда ИИ будет играть в шахматы, тогда поговорим.

> Вот когда ИИ выиграет в го, тогда поговорим.

> Вот когда ИИ напишет книгу, тогда поговорим.

Здесь не все так просто. Если в шахматы на уровне гроссмейстер может играть даже телефон, то для ГО уже нужно специально мощное железо, не говоря о генерации книг. В то время как обычный человек может писать книги и играть в ГО на профессиональном уровне. Так что может эти задачи формально и решены, но далеко не идеально.

всё же, чтобы играть в ГО/шахматы на профессиональном уровне, человек тоже должен быть не обычный, а одаренный (т.е. тоже условно "специальное мощное железо")

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

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

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

Ожидания от моделей все время повышаются, но сама возможность решить такую новую задачу - имхо уже очень важный показатель.

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

Так что с Го это только вопрос времени.

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

А когда появятся рассказы с сюжетом, персонажами и тд? Все таки генерировать псевдо-филосовский текст задача не очень сложная и малополезная

Это уже следующий этап в списке:

> Вот когда ИИ напишет интересную книгу, тогда поговорим.

НЛО прилетело и опубликовало эту надпись здесь
То, что лежит в общем доступе — это полуфабрикат, который нужно предварительно допилить под собственные нужды.
Первое. ruDALL-E намного лучше генерирует картинку, когда кроме описания есть ещё и затравка. Достаточно просто небольшой верхней полоски 256x8, дёрнутой от случайной картинки в похожей стилистике (даже если в ту полоску не попадает ничего, кроме фрагментов фона).
Второе. Эта сетка обладает рекуррентными свойствами, т.е. ей на вход можно подать её же собственный выхлоп, таким образом раз за разом итеративно улучшая картинку. Глянул — картинка вроде нравится, но вот есть области, заполненные мусором. Просто командуем их переделать.
Третье. Качество генерации во многом ограничено не собственно трансформером, а «входными воротами», VAE. Поэтому нужно хорошо представлять, как эта штука работает и что с ней можно сделать (в частности, VAE допускает интерполяцию картинок, оценку степени схожести с неким образцом, бесшовную сшивку разнородных фрагментов и многое другое — естественно, если напрямую дёргать методы его модели).
Мои примеры генерации
Лягушечки:








Разное:









Как я понимаю, нейросеть генерирует N вариантов текста, затем опытный человек выбирает наиболее подходящий и тщательно дорабатывает напильником, чтобы не получилось "Волны перекатывались через мол и падали вниз стремительным домкратом" . Так что, с одной стороны, нейросеть пока не готова писать книги "под ключ".

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

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

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

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

А там есть и персонажи, и сюжет!

Это полноценные рассказы) В этом и фишка.

Конечно, это ещё не роман на 100 страниц, но на 5-10 страниц полноценный текст.

Просто не надо воспринимать нейронки как заменители автора, которые сами по себе сделают всё от начала до конца. На данный момент это всего лишь инструмент, но инструмент очень полезный, прямо IDE для писателя.
Я в порядке хобби время от времени пишу фанфики, и вот такая нейронка повышает выход текста в единицу времени примерно вдвое, главным образом за счёт избавления от «тупняков», когда вроде и понятно, что писать, но никак не удаётся сформулировать фразу, чтоб выглядело прилично и при этом не слишком банально.
Часто от сетки даже не требуется готового решения — просто более-менее связный выхлоп, который по ассоциациям натолкнёт уже человека на нужную мысль.
Также сетку можно использовать для генерации имён персонажей, для перефразирования, для генерации «окружения» (набор предметов в локации) и т.д.
Теперь о том, как вообще выглядит повседневная работа с нейронкой. Естественно, лысым питонячьим скриптом никто не пользуется, для комфортной работы созданы разного рода GUI-обёртки. Я использую KoboldAI с моделью ruGPT3_large, которую он отлично переваривает. Он может запускаться как на локальной машине, так и в облаке (правда, сейчас с оплатой облачных сервисов типа Colab Pro вообще грустно). Пускаю его на старенькой машине на GeForce 1070Ti (это даже с избытком, модель и на 6Гб VRAM без проблем идёт, подозреваю что даже и на 4Гб VRAM запустится). Машина используется в том числе в качестве сервера, поэтому доступ к сетке есть с любого устройства, на котором есть браузер и выход в Интернет.
Скрин оптимальных настроек для ruGPT3_large


Фик в процессе написания


Как и любой другой инструмент, этот необходимо осваивать. Как минимум, научиться составлять запросы, набить шаблонов и написать скриптов, освоить работу с контекстом (через WorldInfo), а дальше рано или поздно ещё и потюнить сетку через создание soft prompt'ов захочется…

Вау! Впечатляющая работа! А будет в open source? И.. почему температура такая маленькая?

В целом, согласна по поводу нейронок, мы ещё не исследовали все, что они могут решать, даже в текущем сетапе.

И… почему температура такая маленькая?
Потому что высокое значение repetition penalty. С таким значением можно выставить температуру даже в 0.4 и всё ещё получать связный текст без зацикливаний. Когда же температура слишком высока, модель часто «меняет тему», выдавая хоть и согласованный текст, но не по теме содержимого контекста.
Кстати, размер контекста тоже лучше сильно большим не брать. 1024 токена обычно достаточно, 1248 — вероятно максимум: если длина затравки слишком велика, качество выхлопа тоже начинает заметно падать.
А будет в open source?
Что именно? KoboldAI и так open source, и у него есть множество форков.

Очень интересно! А вы модель пробовали тюнить для более качественных результатов?

Я, годика этак два назад, натюнил актуальную тогда GPT-2 от Гранкина, на 4k фанфиках и с сайтиком, где можно поиграться. Модель и кривенькое АПИ к ней тут, если кому-то будет интересно.

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

Эка невидаль. Вот если бы книга написала нейросеть - было бы другое дело

AI-книга заменит программиста?))

Нейросеть в лице сбера получила свой гонорар, как по авторскому договору, только чуть переделанному))

А вот если дообучить модель на текстах Джеймса Хэвока...

Жду генератор книг - задал визардом героев, накидал в GUI сюжетную линию и пересечения линий персонажей и кнопка "Сделать хорошо"

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

Рецепт: возьмите 0,5 килограмма нешлифованного пеперштейна, выварите в 3 литрах свежевыжатого леонида андреева, постоянно помешивая, добавьте по вкусу бабеля, и щепотку грина для терпкости. Через полчаса осторожно извлеките пеперштейн шумовкой. По готовности к отвару добавьте лавренева. Можно подавать к столу. Приятного аппетита!

Сверху этого мы аккуратно дедублицировали и скопировали весь материал Пепперштейна 10 раз: так делают для лучшего заучивания целевого домена 

А можете немного пояснить этот момент? Как это было проделано (может где об этом почитать)? А то я немного запутался в терминологии - кажется что дедубликация оставляет только уникальные строки, но копирование их 10 раз создает 10 дублей? Или я неправильно понимаю?

Хороший вопрос!

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

Какой у вас при таком обучение вышел ppl?

Зарегистрируйтесь на Хабре , чтобы оставить комментарий