[Из песочницы] Механический Шекспир: способны ли машины на литературное творчество?
Была ночь, огни Бориспольской трассы пролетали мимо окон такси. Водитель выключил музыку, невыносимо давившую мне на мозг после тяжелого перелета, и, чтобы не заснуть, начал говорить.
Сначала, конечно, о политике, «довели страну», и все в таком роде, потом о чем-то личном. Я тоже не хотел отключаться прямо на переднем сидении, поэтому пытался его слушать.
—… И тогда нам всем придет конец, — донеслись до меня обрывки фразы. — Точнее только им, не мне. Я надежно подстраховался. Когда их всех: водителей такси, маршруток, даже трамваев выкинут на улицу, меня уже там не будет. Я буду сидеть в тепле, пить кофе и громко-громко смеяться.
— Почему-почему их выкинут на улицу? — заспанно переспросил я.
— Ты что, про Убер не слышал? Что они с водителями делают — только репетиция, да. Скоро, уже очень скоро они запустят свои автопилоты. Это будет дешевле, безопаснее, круче! Всех этих бездарностей ждет работа на стройке. Или бомжатник. Но не меня, я умнее их.
— Да? — протер я глаза.
— Да! Я роман начал писать! Остросюжетный! Знаешь, у меня тут, — постучал пальцем по виску, — столько сюжетов сидит — закидайся. Вожу это разных людей, каждый что-то ляпнет. А память у меня с детства — дай Бог каждому. Кто у меня здесь только не ездил: трансвестит, сделавший уже три операции, все никак определиться не может; элитная проститутка — всю дорогу тараторила о шумерской клинописи; любовник министра одного ехал, столько всего нарассказывал… Имена только меняй и пиши — блокбастер будет!
—А …
— Единственное, что пишу я пока не очень. Скачал себе пару учебников, читаю после работы. Каждый вечер для тренировки записываю, что услышал за день. Кстати, может ты что-нибудь интересное расскажешь, а то сегодня почему-то голяк полный. Могу даже скидку сделать.
— Что у меня интересного… Я программист, лечу вот из …
— Слышь, программист, — перебил меня водитель, — о жизни своей можешь не рассказывать. Она у вас всех одинаковая, неинтересно. Скажи мне лучше другое: эти роботы, которые машины научились водить, они романы скоро писать начнут? Только честно. Я не обижусь, не боись. Просто если скоро — в моем плане нет никакого смысла, нужно на программиста идти тогда, кому-то ж этих роботов ремонтировать потом, настраивать …
Я, честно сказать, растерялся. С одной стороны, насколько я на тот момент знал, вроде ни один алгоритм еще не умел писать даже приблизительно осмысленный текст, не говоря уже о художественном. А с другой, брать на себя сейчас такую ответственность за чужую жизнь, сказать, что профессия писателя в безопасности, а потом, спустя пару лет, ждать этого таксиста с обрезом у своего дома?
— Давай так, — сказал я ему после неловкой паузы. Я тут немного погуглю, почитаю, осмыслю. И напишу статью. Может кому-то еще будет интересно, у кого те же проблемы.
Потом я расплатился и ушел досыпать после тяжелой дороги. Утром о своем обещании конечно же забыл. Вспомнил чуть позже, а там уже совесть замучила: пришлось действительно писать.
Надеюсь, мой случайный друг, (я так и не спросил, как тебя зовут), ты поверил невыспавшемуся пассажиру и читаешь сейчас эту статью. А если нет — черт с тобой. Кому-то пригодится.
Так вот.
Пессимисты прошлого
На первый взгляд, задача программного написания художественных произведений выглядит просто:
- Создаем Супер-Мега-Искусственный Интеллект.
- Заставляем его написать роман.
Ну нет, скажете вы, это же робот! Белая пластиковая фигня! Он только команды выполнять умеет, куда ему творить? Он не понимает ни человеческих эмоций, ни мотивов, о чем он вообще может написать? Об электроовцах?
С таким мнением вы не останетесь в одиночестве. Также полагала одна очень умная женщина: дочь известного поэта, а заодно первый в истории программист — Ада Лавлейс.
Она утверждала, что компьютер, даже очень мощный, не способен ни на творчество, ни даже на то, что мы называем «интеллектом». Ведь любая машина — всего лишь бездумный исполнитель алгоритмов, заложенных в нее человеком. То есть даже если компьютер когда-нибудь и напишет стихотворение или роман — все равно авторские права будут принадлежать кодеру, который его на это запрограммировал.
Понять мы ее, конечно, можем. Перед глазами благородной дамы стоял пример батюшки, известного повесы и дебошира: только такой склад характера может быть у настоящего поэта. Если ее любимая, логическая и точная машина обречена стать чем-то подобным — лучше уничтожить ее прямо сейчас, чтобы потом не пришлось отправлять десант в прошлое.
С другой стороны, ее ключевой аргумент о «выполнении программой только заранее заданных алгоритмов» в последнее время трещит по швам.
Началось все с того, что над сложными программными комплексами начали работать сотни, а то и тысячи людей. И программистов, которые бы понимали, что делает абсолютно каждая функция, в крупных проектах обычно не водится. То есть за счет сотрудничества разных людей, программы уже стоят на уровень выше того, что способен создать один человек. Представьте себе роман с тысячей авторов. То-то же.
Дальше — больше. Последние достижения машинного интеллекта базируются на алгоритмах, которые никто и никогда не писал. Программы создают их сами, основываясь на данных, которые им скармливают в невероятных количествах. Дошло уже до того, что на вопрос «как работает программа?» ее создатели лишь разводят руками. Назад в человеческие знания таинственные нолики и единицы просто так не конвертируются.
Преемник Ады, Алан Тьюринг, был настроен немного оптимистичнее. Он даже посвятил несколько строк доказательству того, что бессмертная душа может жить не только в человеческом теле, но и в любом другом сосуде. Например, в боевом человекообразном роботе. За такие пассажи его не очень любили на родине, в консервативной Англии.
Даже несмотря на то, что, взломав «Энигму», он серьезно повлиял на результаты Второй Мировой, гендерные предпочтения оказались для публики важнее научных достижений, и в конце концов «народ-победитель» довел вчерашнего героя до самоубийства.
Программистам Тьюринг известен прежде всего своей «машиной», на основе которой возникли все существующие языки программирования, но популярной культуре более знакомо другое его творение — знаменитый Тест Тьюринга.
Мнение о том, что оценить «интеллект» робота можно просто с ним побеседовав, захватила умы ведущих фантастов середины прошлого века и настолько успела всем надоесть, что когда несколько лет назад тест таки был пройден, никто, в конце концов, ничего и не заметил.
Дело в том, что специально наученные лексические генераторы кроме как «выдать себя за человека» собственно ничего и не умеют. А для повседневных проблем гораздо полезнее оказались системы, которые не пытались скопировать человеческое поведение, а просто решали поставленные перед ними задачи.
Кстати, похожая революция произошла на столетие раньше в автомобиле- и самолетостроении. Как только конструкторы перестали пытаться создать «металлического коня» или «деревянную птицу», сразу же удалось построить механизмы, оказавшиеся гораздо полезнее произведений слепой эволюции.
Человек тоже, если честно, — так себе вычислительный механизм. Будучи предназначенным для конкретной цели — выживания среди диких животных и себе подобных, человеческий организм в некоторых областях безнадежно отстает от примитивнейших механизмов. Какой смысл пытаться имитировать то, что можно сделать лучше?
Именно поэтому после Тьюринга понятие «искусственный интеллект» поселилось разве что в фантастических романах, а программисты тем временем взялись за решение конкретных задач, стоявших перед экономикой.
В космос летали ракеты, на биржах торговались акции. Компьютеры успешно рассчитывали оптимальные расписания движения поездов и самолетов. Пока романтики зачитывались правилами робототехники, простые работники бобины и перфокарты вводили в ламповые машины алгоритмы разной степени сложности.
Логично было бы предположить, что проблему сочинения литературных произведений можно решить аналогичным способом. Мол, выпишем алгоритмы, согласно которым писатель или поэт составляет слова из букв, закинем их в жерло компьютера и вуаля — держите новую поэму. Или стихотворение. Или строчку текста хотя бы, нет?
По привычке программисты обратились к экспертам, ожидая получить четкий набора правил бизнес-логики. Когда-то они так же ходили к физикам, железнодорожникам и даже биологам. Последние с математикой дружили так себе, но среди них оказалось много физиков, говорить с которыми программистам было проще.
Но с филологами вышел полный швах. Формальные признаки текста, сказали они, конечно же существуют. Стихотворный размер, жанры и поджанры, стили речи и письма, в конце концов. Но если расставить ударения машину научить еще можно (после долгого прописывания примеров вручную), то сформулировать в математических терминах особенности стиля Бодлера филологи отказывались наглухо.
Мол, ни в какие цифры настоящее искусство загнать нельзя. И не надо! Ибо кто тогда нам, филологам, зарплату платить будет? Идите словом, дорогие программисты, рассчитывать траектории ядерных ракет. Это нам в ближайшее время понадобится гораздо больше. Вот они и пошли.
Единственной составляющей художественного текста, хоть как-то подходящей для алгоритмизации, долгое время был сюжет. Ведь в большинстве случаев в произведении были главные герои, которые совершали определенные действия. Например, двигались из точки А в точку Б. Прямо как ракеты, подумали программисты и взялись за различные генераторы сюжетов.
Некоторые, честно говоря, даже давали неплохие результаты. Кто-то умудрялся оформить их в целые книги. Только вот Ада Лавлейс, критически прищурив глаз, заметила бы, что такие программы — не более, чем вариации «шляпы сюжетов», когда автор пишет на клочках бумаги сначала имена персонажей, затем события, а потом по очереди вытягивает бумажки, описывая в литературной форме, что произошло и с кем. И если и есть какое-то творчество в этом процессе, то исключительно со стороны автора, который на этих листочках пишет. А со стороны машины здесь один лишь генератор случайных чисел.
Доливали масла в огонь мистики: творчество, мол, — это медитативный процесс, своеобразное общение писателя с духами. Если существуют какие-то правила, то только в их эфирном мире. Пока мы не научим наши компьютеры подключаться туда по HDMI, никакого творчества от компьютеров ждать не стоит.
Эту позицию разделяют и авторы учебников по «creative writing». Большинство советов там о том, как заставить себя сесть за стол, расслабиться и начать «слушать свою брокколи». После того как она надиктует вам текст, стоит только исправить ошибки, выбросить все наречия и можно отправлять рукопись в издательство.
Что ж, метод может и действенный, но для написания программы непригоден абсолютно. Ведь, чтобы запрограммировать что-то, нужно знать, как это что-то работает. Не так ли?
На самом деле… не совсем. Но об этом немного позже.
Мир как правила и представление
Если копнуть глубже, проблема формализации возникает не только в литературе. Философы Древней Греции тоже очень любили давать определение всему, с чем встречались на своем пути. Сначала получалось неплохо. Только вот оказалось, что наибольшие проблемы возникают с простыми понятиями, понятными даже ребенку. Добро, зло, красота, уродство, добродетель, порок, Бог.
После нескольких анекдотичных случаев вроде «человек — это двуногое без перьев», Платон устал работать над определениями и постановил, что настоящие правила этого мира, так называемые Идеи, существуют где-то в параллельном мире, а к нам долетают только их тени. Человеческая душа, имея доступ к этому «Идеальному миру», может без труда их различать, а наше мышление, ограниченное миром материальным, понять этого величия не может.
Поговорить об Идеях под хорошее вино, впрочем, никто не запрещает. Хотя нет, все-таки запрещает.
Витгенштейн, один из ведущих философов двадцатого века, в свое время безапелляционно заявил: «О чем невозможно говорить — о том лучше молчать».
Нет, он не был врагом свободы слова. Просто речь, отметил он, в отношении нашего мышления, — откровенно вторична. Она может помочь в базовом общении и даже передаче какой-то части знаний в печатном виде, но то главное, что происходит с нами, — в слова конвертируется слабо.
Максимум, что мы можем, — это давать названия неким фактам, элементарной единице этого мира. В отличие от «понятий», «факты» описывают то, что мы видим, без лишних обобщений. Конкретный стол стоит в конкретной комнате при конкретной температуре, атмосферном давлении и уровне освещения. Никакой Идеи Стола в комнате нет, а значит и говорить о ней нет смысла. Весь мир вокруг — просто конфигурация атомов и волн, в которую болезненное человеческое воображение пытается впихнуть термины, которые само не понимает.
Ребенок приходит к отцу и говорит: «Папа, я придумал слово карчапан. Что оно значит?». Такими Витгенштейн видел всех философов прошлого. Зато «факты» такими проблемами не страдают. Мы уже знаем, что мы видим. Остается понять — почему?
На язык описания «фактов» серьезно претендовала математика. Стройными рядами формул пытались объяснить все: от взаимодействия атомов до несчастных браков. Только вот когда модель становилась хоть немного сложнее, формулы сразу теряли свою элегантность и превращались в десятиэтажные нотации тензоров и «странных аттракторов» (единственный термин, который я до сих пор помню из курса функционального анализа).
Таким образом, перевести авангард современной математики в булеву логику оказалось еще сложнее, чем художественные тексты. К тому же и сама математика, как показал Гедель, оказалась не такой уж и всесильной. Словом, полное фиаско.
Настолько полное, что часть философов окончательно пустилась во все тяжкие и создала странное учение под названием «постструктурализм». Проблему описания окружающего мира в текстовом формате они решили очень просто. Текст, мол, не описывает, а порождает этот мир. Своеобразное учение Витгенштейна наоборот: если об этом никто не написал — этого на самом деле не существует.
Эта точка зрения могла бы очень понравиться программистам, ведь ввести в компьютер текст гораздо проще, чем заставить собирать информацию о мире миллионами разнообразных датчиков. Только вот сами постулаты теории оказались настолько близки к полной чуши, что, кроме самих создателей, их, кажется, так никто и не понял. Поэтому после смерти Фуко и Делеза течение медленно, но верно растворилась в ризоме.
Окончательно разочаровавшись в философах, программисты обратились к представителям более приземленных специальностей. Например, к уже знакомым биологам.
Уподобиться мозгу
Двадцатый век, кроме прорывов в кибернетике и способах убивать друг друга, принес еще и неплохие результаты в понимании того, как устроены люди. Все больше и больше процессов, которые ранее могли объяснить только общением с духами, теперь приписывали мозгу. До полного понимания того, как работает наше сознание, еще, конечно, очень и очень далеко, но в базовых вещах, вроде строения нейронов, наука уже ориентируется достаточно неплохо.
Так, судя по всему оказалось, что знаменитая Пещера идей — это, на самом деле, просто область внутри нашего черепа. Мозг, получая из органов чувств информацию об окружающем мире, записывает ее на «жесткий диск«в только ему понятной форме из нейронов и связей между ними.
Про «чтение» такой записи речь пока не идет, но мы знаем, что ключевыми характеристиками нашей «пещеры» являются: а) абстракция, то есть объединение черт различных предметов и явлений под одним «ключом» и б) постоянное обновление данных на основе входящей информации.
Система хранения данных типа «мозг» — на несколько порядков лучше всего, пока что созданного человеком. И единственным, хотя и очень неприятным недостатком является то, что как в язык, так и в математику все наши знания и весь наш жизненный опыт конвертируются очень и очень плохо.
Возникает даже забавная ситуация, когда специалист экстра-класса, способный выполнять сложнейшие задачи, не может объяснить ученикам, как это у него получается. Бедолагам остается только наблюдать за Мастером и пытаться воспроизвести каждое его движение. Как перевести это все на машинный язык, вопрос пока даже не стоит.
Казалось бы, очередной тупик. Но ученые, почесав затылок, задумались. А почему бы нам не убрать посредников, неспособных даже между собой договориться, и не выпустить наши программы напрямую во внешний мир? Пусть они сами берут — и учатся! Соблазнительно, не так ли?
Первой попыткой было сотрудничество Уоррена Маккалока и Уолтера Питтса в 1943 году. Стоит отметить, что ни один из них не был программистом. Маккалок — нейропсихолог, нейрофизиолог, философ, поэт, имел с математикой достаточно сложные отношения. Но это компенсировал Питтс — вундеркинд-математик, от которого в восторге был сам Рассел. Питтс сбежал из дома в 15 лет, чтобы ошиваться вокруг MIT, куда его упорно не принимали из-за возраста и отсутствия формального образования.
Маккалок всю жизнь мечтал построить модель человеческого мозга. Питтс помог ему в этом, упростив нейрон до булевого оператора, получающего на вход двоичные числа и на выходе либо активирующийся (результат «да») или остающийся спокойным (результат «нет»).
Такая модель мозга была слишком упрощенной, но вместе с тем ее значимость трудно переоценить. На тот момент самым популярным психологическим течением был психоанализ — полумистическое учение об Иде, Эго и Оргоне, понятиях несовместимых с научным взглядом на мир. Попытка формализовать самый таинственный процесс во Вселенной, человеческое мышление, не могла не выстрелить.
После публикации первой статьи «A logical calculus of the ideas immanent in nervous activity» работой пары заинтересовался Норберт Винер, впоследствии сделавший Питтса своей правой рукой. Позже к ним присоединился и сам фон Нейман. Без преувеличения можно сказать, что модель Питтса позволила построить компьютер таким, как мы знаем его теперь.
Начиная с определенного этапа, нейронные сети отделились от кибернетики. Моделирование человеческого мозга перестало быть самоцелью, к тому же, новые результаты ученых-биологов показали, что мозг работает несколько сложнее, чем модификация линейной регрессии.
Тем не менее, определенные задачи даже таким приемам удавались на ура: базовое распознавание изображений, математическое прогнозирование. Даже медицина получила свою порцию инноваций: нейросети заставляли анализировать кардиограммы.
После стремительного взлета часто бывает очень болезненное падение. Так случилось и в этот раз. Известный и очень авторитетный в своих кругах математик и философ Марвин Мински (сосед Питтса по комнате) в 1969 году издал книгу «Перцептроны». В отличие от широкой публики, он понимал, чем именно занимаются программисты, и спокойно, без эмоций, доказал, что в данной интерпретации так называемые «нейронные» сети имеют очень четкие ограничения. Даже оператор «XOR», базовое понятие программирования, однослойными моделями, которые тогда использовались, описать было невозможно.
Наложившись на первые неудачи в промышленном использовании и отсутствие новых прорывов в лабораториях, эта книга стала могильщиком нейросетей: отсутствие грантов и, как следствие, отток специалистов отправили отрасль в длительный криогенный сон, из которого она стремительно вышла только полстолетия спустя.
Второе пришествие, как водится, стало еще ослепительнее предыдущего. За последние годы нейросети ворвались практически во все области компьютерных наук, и ситуация везде выглядела одинаково: десятилетия исследований, тысячи экспертов, миллионы страниц доводили эффективность алгоритма до фантастической цифры в 80%. А потом приходила нейросеть и без специальных знаний, простым перебором данных показывала результат 90–95%. Так произошло с распознаванием изображений, машинным переводом, генерацией и пониманием человеческой речи, прогнозированием и профессиональной аналитикой. Да что там, сейчас вообще трудно назвать отрасль, куда еще не пролезло вездесущее «машинное обучение».
Нейросети играючи раскусили ранее нерешаемую задачу распознавания изображений: научились отличать кота от собаки — им просто показали миллион картинок и сказали, где что изображено. Все характеристики «кошачести», которые не смогли сформулировать сотни ученых за десятилетия исследований, сеть определила для себя сама.
Удивив весь мир, несколько лет назад команда AlphaGo преодолела одного из сильнейших игроков в Го. Эта игра, в отличие от шахмат, математическому решению не подлежит — слишком велико число вариантов развития событий.
Программе математика и не понадобилась. Вместо этого, она просто «прочитала» все матчи между людьми, доступные в записи, а затем еще несколько миллионов раз сыграла сама с собой. Самым оскорбительным для свергнутого чемпиона стало то, что в обучении программы даже не участвовали известные гроссмейстеры — ей объяснили только базовые правила и критерий победы. Все остальное — набор проб и ошибок.
Подход оказался достаточно общим. Совсем недавно таким же образом программа обыграла игроков людей в покер.
Что же поменялось, спросите вы, по сравнению с серединой двадцатого века? И почему методы, признанные ранее полностью провальными, теперь вдруг заработали так эффективно?
Во-первых, улучшились сами методы. Даже несмотря на отсутствие финансирования, фанатики в пыльных лабораториях одна за другой выписывали сложные формулы, оптимизируя быстродействие и разрабатывая методы избавления от шума.
Во-вторых, конечно, железо. Всем известен пример айфона, вычислительная мощность которого превышает суммарные ресурсы машин, отправивших человека на Луну. Как всегда, двигателем прогресса стала индустрия развлечений: современные системы машинного обучения работают в основном на видеокартах, производители которых сходили с ума, пытаясь выдать геймерам картинку пореалистичнее.
Третьим, и самым главным фактором, стали данные. Ребенку, чтобы он понял, что такое «стол», достаточно показать один-два примера. Нейросети хорошо учатся на выборках, начинающихся от десятков тысяч.
Можно, конечно, попенять на несовершенство современных методов, но в защиту бедного алгоритма следует отметить, что ребенок на самом деле получает гораздо больше информации о предмете. Он видит его с разных сторон, может понюхать, потрогать и даже порой отгрызть кусочек лака, чтобы получить как можно больше разных характеристик. Сеть мы учим на фотографиях — количество каналов уменьшено до одного, еще и без пространственной ориентации. Вот и приходится компенсировать качество количеством.
Сейчас человечество выбрасывает в интернет больше данных, чем было создано за всю историю. Развитие цифровой фотографии привело к тому, что, наверное, ни один уголок планеты не остался незадокументированным.
С другой стороны, радикально выросло и число текстов, написанных человеком. Теперь значительная часть общения между людьми происходит в сети, а художественных текстов в последнее время стало на порядки больше. Казалось бы, ничто не мешает обучить нейросеть на них и вперед — к новым литературных вершинам.
На самом деле, не все здесь так просто. Давайте разберемся почему.
В поисках нейропегаса
Несмотря на всю свою мощность, сети не могут пока и близко сравниться с человеком в некоторых сферах. Создание осмысленных текстов — в их числе. Причин этому много, но самые важные — две.
Первая — те же пресловутые правила. Люди не учатся исключительно на примерах. Им объясняют учителя, дают информацию книги, у людей есть физические и химические формулы, синтаксические законы, словари и энциклопедии. А вот нейронную сеть, обученную на живых примерах, подкорректировать вручную уже невозможно — разве что сгенерировать на основе «правил» дополнительные примеры, но даже в этом случае есть большая вероятность переобучения и, как следствие, — полной непригодности системы для реальной жизни.
(Также, кстати, нет никакой возможности перевести правила, обнаруженные машиной, назад в человеческую речь. Поэтому победа над Ли Седолем вряд ли научит чему-то новому игроков-людей: почему сеть сделала тот или иной ход навсегда останется для нас тайной).
Вторая и главная разница между нашим мозгом и битами в памяти компьютера — исходные данные. Человек не получает абсолютно все свои знания из окружающего мира. Большинство информации идет в виде «заводской прошивки» — инстинктов, эмоциональных реакций, базовых правил поведения.
Этими данными человек обязан миллионам поколений предков, вплоть до бактерий, которые своими постоянными попытками, победами и неудачами формировали генетический код — наверное, самый плотный носитель информации из всех нам известных. Мы не то, что не можем внедрить эти данные в нейросеть, мы и осознать их не способны.
Конечно же, обе эти проблемы решаются любимым методом нейронных сетей: «Нам надо больше, больше, БОЛЬШЕ данных», но оказывается, что для решения в лоб задачи такой сложности, как генерация прозы, даже всех букв, когда-либо написанных человечеством, пока недостаточно.
Дело в том, что текст — не герметичный набор данных, а скорее отражение внешнего мира, и, чтобы постичь «связи» в тексте, нужно понять «связи» самого мира, или, по сути, построить Универсальную Модель, которая будет знать о мире практически все, что знает среднестатистический человек. То есть опять же построить Сильный Искусственный Интеллект, до чего сейчас еще очень и очень далеко.
(На самом деле задачи на понимание мира могут быть вполне тривиальными. Классический пример — предложение «Игрушка не влезла в коробку, потому что она слишком большая». Что здесь — «она»?
Ребенок ответит сразу: он понимает значение слова «большая» и умеет соединить его со значением «не влезла». Для компютера же оба смысла равны, на уровне самого текста ответа на эту задачу не существует.)
Но с другой стороны, что мешает программам просто сгенерировать набор символов, не заморачиваясь их смыслом? Ничего, этим они в последнее время и занимаются. Давайте разберемся как.
У продвинутого читателя уже давно должен был возникнуть один вопрос. Нейросети, мол, в большинстве случаев строятся для классификации и прогнозирования. То есть, мы имеем много данных на входе и ограниченный (часто скалярный) результат на выходе.
Мы скармливаем сети сотню тысяч квартир с набором параметров и цену каждой из них. Затем натравливаем на еще одну позицию, цены которой мы не знаем. Результат — одно число, прогнозируемая стоимость квартиры.
Мы показываем алгоритму миллион картинок кошек и миллион картинок собак, указывая, кто есть кто. Затем показываем новую картинку, и алгоритм должен угадать, кот на ней изображен, или собака.
Как такой механизм в принципе можно использовать для генерации хоть чего-то?
Первый метод — обратные вычисления. Нейросеть по своей сути — система линейных уравнений, а, следовательно, ее можно спокойно вывернуть в противоположную сторону. Мы не ставим задачу «что на этой картинке?». Вместо этого мы указываем готовый результат (например, «кот») и спрашиваем: «Как по-твоему он должен выглядеть?».
Именно так поступили разработчики Гугла в 2015 году. Их результаты, напоминающие скорее произведения сюрреалистов, хоть и продемонстрировали наглядно работу нейросети, на какую-то эстетическую ценность претендуют со скрипом. К тому же, один раз обученная нейросеть с таким подходом может дать только один, детерминированный результат для каждого набора входных данных — ограничение не из приятных. Подходит такой способ для генерации текста? Честно говоря, вряд ли.
Вообще говоря, обработка текста по сравнению с обработкой изображений имеет несколько достаточно неприятных аспектов. Во-первых, картинки можно легко сжимать. Вследствие особенностей человеческого зрения, предназначенных для рассматривания далеких предметов, мы даже на иконках 16×16 способны разглядеть какие-то детали.
Для текста сжатия без потерь — абсолютно нетривиальная задача. Нельзя просто взять и объединить соседние символы, как мы поступаем с пикселями. Вместо этого нужно искать обходные пути — анализировать части речи, чтобы выбросить эпитеты, строить модель событий, чтобы объединить несколько предложений в одно. Словом, вся «слепота» нейросетей к бизнес-логике сразу куда-то исчезает.
Во-вторых, текст гораздо чувствительней к шуму. Если для картинки несколько не слишком ярких точек не на своих местах погоды не сделают, то слу«ча%йны*е си$мво^лы, разбросанные по тексту, абсолютно неприемлемы — читать такие опусы чрезвычайно трудно, а порой от замены всего нескольких брюкв вообще меняется весь смысл.
Второй способ генерирования чего-то нового построен на умении нейронной сети прогнозировать. Пусть текст, предполагают адепты этого метода, является определенным временным рядом. И каждая следующая буква каким-то образом зависит от предыдущих. Теперь остается только научить систему на заданных «взаимозависимостях» и заставить ее прогнозировать, какие символы должны быть в тексте следующими.
Несмотря на тривиальность этого подхода, результаты, полученные с его помощью, впечатляют. Первая программа-генератор, описанная Андреем Карпати, умышленно оперирует исключительно символами в отличие от аналогов, пытавшихся искать взаимные связи между словами. И даже в такой постановке удалось получить хоть и бессмысленный, но читабельный и даже стилистически близкий к оригиналу кусок текста.
Генерации подверглись Шекспир, речи Обамы, рекламные заголовки и даже тексты выступлений на конференции TED.
Интересные выводы можно сделать из генерации карт для игры Хартстоун. На первых порах система выдает полную ерунду, но уже после нескольких итераций некоторые карты начинают выглядеть осмысленно — их уже спокойно можно включать в игру.
Мощности современных алгоритмов хватает даже для поэзии (в том числе, китайской и хокку) или текстов песен, но успех там, честно говоря, достигается в основном за счет ручного выбора исследователем приличных вариантов. Хорошую прозу так пока сгенерировать не получится.
Во-первых, проблема в объеме. Как говорилось ранее, сжимать текст, особенно художественный, — достаточно трудно. А количество взаимосвязей длинного прозаического текста пока превышает вычислительные возможности даже самых мощных кластеров.
Вторая проблема — обучение с учителем. Большинство данных, которые сейчас используются для машинного обучения, были когда-то размечены людьми вручную. Существует даже специальный ресурс «Механический турок», где люди за небольшую плату помогают ученым со всего мира обучать свои алгоритмы.
Для размещения на этом сайте задачи должны занимать максимум несколько секунд эффективного времени обычного человека: «Есть ли на картинке лицо?», «В какую сторону поворачивает дорога?», «Какое слово говорит голос на записи?». За счет простоты, можно получить очень большую базу данных за относительно короткое время.
Заставить пользователей читать рассказы, сгенерированные работами, трудно. Во-первых, текст, составленный наполовину из тарабарщины, а наполовину из гениальных предложений, все равно остается бредом. Во-вторых, даже если роботы когда-нибудь научатся писать что-то осмысленное, второй вариант того же текста не будет иметь того же эффекта, что первый, — читать одно и то же скучно.
Значит, придется наполнять базу произведениями людей. Но и здесь возникает вопрос: какими должны быть критерии оценки? Как мы уже упоминали ранее, машинное обучение конвертирует большие объемы данных в небольшой результат. Как выглядит результат для прозы?
Первое и наиболее логичное предположение — написанное должно иметь хоть какой-то смысл. То есть текст, пусть даже сгенерированный с помощью машинного обучения, нужно сначала преобразовать в последовательность событий и определить, не противоречат ли они друг другу.
Понимание текста, в отличие от генерации, продвинулось гораздо дальше. IBM Watson недавно победил в викторине, Google построил базу данных смыслов слов разных языков. На рынок постепенно выходят анализаторы текста для воспроизведения событий на основе тысяч статей в интернет-изданиях.
Чрезвычайно важной является задача понимания человеческих команд — интернет вещей постепенно перекочевывает из фантастических сериалов в реальный мир, и ваше общение с микроволновкой через какие-то год-два превратится из первых признаков помешательства в практическую необходимость. Людей трудно переучивать на язык инструкций — роботы должны просто понимать, что от них хочет хозяин.
Последствия этой революции могут сыграть значительную роль в генерации художественных текстов — программа сможет прогонять свои «творения» через базовые фильтры и абсолютного бреда на выходе уже не будет. Но этого, безусловно, мало.