Видео
Чем объясняется нынешний триумф нейронных сетей и чего нам ждать от них дальше? Лекция Сергея Маркова, специалиста по методам машинного обучения и основателя портала «XX2 ВЕК».
Я сегодня расскажу про творчество нейронных сетей, [а именно — их подвида] генеративных моделей, как их называют специалисты по машинному обучению. В лекции я не буду погружаться очень глубоко в технические подробности построения таких моделей. Скорее я поговорю чуть-чуть об истории, как машинное обучение к этому пришло, как системы искусственного интеллекта (ИИ) до такой жизни докатились, что на сегодняшний день они уже не только успешно распознают какие-то сложные образы, но и пытаются творить и создавать какую-то новую информацию. Я покажу много примеров того, как нейронные сети это умеют делать сейчас, и прокомментирую то, что мы будем видеть. Дальше я отвечу на те вопросы, которые у вас возникнут.

Вообще говоря, современный бум, связанный с машинным обучением, с ИИ, во многом связан с появлением свёрточных нейронных сетей как одной из разновидностей многослойных нейронных сетей. Здесь надо сказать, что, в сущности, сама модель свёрточных нейронных сетей появилась достаточно давно — это модель, которая была разработана в 80-е годы. Собственно, появление этой модели как таковой вызвало достаточно лавинообразный рост интереса к глубоким нейронным сетям и к тому, какие задачи можно при помощи них решать. Здесь, по всей видимости, произошло одновременно стечение нескольких обстоятельств, которые вызвали вот этот современный бум машинного обучения и ИИ. Конечно, очень важным элементом в этом буме было то, что в 2010-м году такой известный специалист по нейронным сетям как Ян Лекун (Yann LeCun) продемонстрировал систему, основанную на свёрточных нейронных сетях, которая очень хорошо справлялась с распознаванием рукописного текста. Есть такой достаточно старый и заслуженный массив, который называется MNIST, в просторечии — «мнист», это наборы рукописных цифр. И Ян Лекун показал свёрточную нейронную сеть, которая справлялась с распознаванием этих рукописных цифр гораздо лучше, чем большинство ранее использовавшихся для этого методов машинного обучения. Это подстегнуло интерес к этому направлению со стороны специалистов по машинному обучению. В течение последующих нескольких лет было создано несколько весьма впечатляющих проектов. Первым применением свёрточных нейронных сетей оказались системы, предназначенные для распознавания. Но распознавание не обязательно графических изображений — в принципе, это может быть любая аналоговая информация. Это может быть и звуковая информация, например, или информация о физической активности человека, которую вы снимаете с акселерометра или гироскопа, встроенных в телефон, и т. д.

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

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

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

И вот если мы говорим о свёрточных нейронных сетях, то они в своей архитектуре во многом дублируют то, что делает человеческая сетчатка. Сетчатка человеческого глаза действительно представляет собой очень похожую на свёрточные нейронные сети топологию. Там тоже есть свёрточные слои. Интересно, что ещё Норберт Винер (Norbert Wiener) в «Кибернетике» [книга Норберта Винера, где он впервые говорит о науке кибернетике — АА] обратил внимание на то, что сетчатка, по всей видимости, не так проста, как кажется. Это не просто передаточная структура, а структура, которая способна выполнять достаточно сложные вычислительные операции. И Винер в «Кибернетике» пишет, что, по всей видимости, сетчатка способна выполнять аффинные преобразования. Нейрофизиологи в разные времена то сходились, то расходились со специалистами по вычислительной математике. Пример того, что мы имеем сейчас в результате тесного сотрудничества нейрофизиологов со специалистами по информатике — это импульсные нейронные сети, более биологически достоверные, чем те обычные вычислительные нейронные сети, которые мы используем в большинстве современных задач. Они начались с модели Ходжкина-Хаксли. Эта модель была построена на основе изучения гигантского аксона кальмара. В принципе, мозг кальмара — это такой очень интересный в этом плане объект, потому что в силу того, что там отсутствует изолирующая оболочка, там очень крупные единичные клетки нервной ткани. Вот если вы посмотрите на картинку 1, там, на приборном стекле, лежит одиночный нейрон кальмара. И эта вот длинная ниточка — это аксон. Именно поэтому в 60-е годы, обладая достаточно скромным лабораторным арсеналом, Ходжкин и Хаксли смогли, тем не менее, провести очень большую серию опытов по изучению работы нейрона кальмара, и появилась модель Ходжкина-Хаксли, которая затем развивалась, претерпевая определённые дополнения и уточнения, и дала основу современным импульсным нейронным сетям.

Картинка 1
Картинка 1.

Другой пример — это более поздний проект.

Картинка 2
Картинка 2.

На картинке 2 — это такая очень увлекательная игра, которая называется iWire. Она началась с того, что главный персонаж этой игры, мышонок Гарольд, скоропостижно скончался, после чего мозг этого мышонка был извлечён, нарезан тонкими микронными слоями, отсканирован при помощи электронного микроскопа. Затем встал вопрос: «Давайте попробуем восстановить структуру синаптических связей в этом мозге». Прикинули очень быстро, оказалось, что нужно будет от 200 до 300 лет членам исследовательской группы в MIT (Massachusetts Institute of Technology), чтобы вручную разобрать эти снимки. Поэтому они поступили следующим образом — они создали игру в интернете, в которой каждый желающий и болеющий за дело науки может зарегистрироваться и посоревноваться с другими людьми в раскраске вот таких вот микронных срезов сетчатки мышонка Гарольда. Если вы правильно все раскрасите, то вы получите много очков, если неправильно — то мало, и есть реальная возможность попасть в топ. А каким образом проверить, правильно или неправильно — понятно, нужно разным людям просто раздать одно и то же изображение, и, если вы раскрасили так же, как большинство других людей, значит наверно правильно.

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

Картинка 3
Картинка 3.

Если быть строгими, DeepMind — это не совсем Google, это изначально независимая компания, которую купила компания Alphabet, а Alphabet — это, собственно, самая главная компания в Google, которой принадлежит Google в том числе. Но это детали. Собственно они распознавали собак на изображениях. Был очень большой набор изображений, и нейронную сеть учили классифицировать это изображение, говорить, есть на этом изображении собака хоть где-то или нет. И разработчикам этой свёрточной нейронной сети пришла идея: «Почему бы нам её не вывернуть наизнанку. Если наша сеть видит какую-то фичу на этом изображении, давайте попробуем увеличить веса, распространить их обратно через слои, не слева направо, а справа налево, и таким образом усилить на изображении те условно детектированные фичи. То есть, увеличить степень «собачности» этого изображения. Ну и получились очень забавные creepy-картинки, когда на вход нейронной сети, обученной на массиве изображений собак, вы подаёте произвольное изображение, и она показывает, где есть хоть что-то похожее на собак, и делает это ещё более похожим на собак. На части собак, скорее. Собственно, это породило большое направление, которое называется перенос стиля (style transfer). Идея заключается в том, чтобы обучить нейронную сетку на картинках какого-то художника и затем перенести стиль этого художника на произвольное изображение. Сейчас есть довольно много таких коммерческих проектов. Есть приложение Prisma, ну и 1000 её разных клонов. Но это всё, в конечном счёте, наследники того самого DeepDream. Вот ещё несколько картинок для развлечения.

На самом деле, быстро догадались, что этот подход можно использовать, например, для раскраски изображений. Мы можем обучить нейронную сеть на большом количестве цветных изображений, и дальше заставить усиливать потенциальные распознанные фичи цвета, по черно-белой картинке научить сеть догадываться, где какой цвет, и дальше точно также усиливать фичи, соответствующие каждому цвету. Если набор изображений достаточно большой, нейронная сеть обучается, запоминает, какие предметы, какого бывают цвета. Если вы предъявили листву много раз в разных видах, и она все время была зелёная, то теперь нейронная сеть, увидев что-то похожее на листву или траву, будет окрашивать это в зелёный цвет, и т. д. Здесь (картинки 6, 7) можно посмотреть, на более крупных картинках видно лучше, там левая картинка — обесцвеченная, средняя — то, как раскрасила картинку нейронная сеть, и справа — это реальные цвета, которые были у изображения до обесцвечивания. То есть, конечно, когда нет информации о цвете, её полностью восстановить нельзя, поэтому, естественно, такая модель будет ошибаться в ряде случаев. Но она будет делать правдоподобные ошибки. Если бы машина была красной, то, может быть, она окажется синей, потому что чаще в нашей нейронной сети встречались синие машины. Но в целом, почему бы машине не быть синей. По крайней мере, в той обучающей выборке, которая была у нейронной сети, этому ничто не противоречит.

Картинка 6
Картинка 6.
Картинка 7
Картинка 7.

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

Вот у компании Yahoo была, как у большинства крупных интернет-компаний, нейронная сеть, которая нужна для выявления порно. Мы предъявляем нейронной сети много разных картинок, а она должна нам сказать, порно это или не порно, то есть, большая свёрточная нейронная сеть с тремя свёрточными слоями, с тремя полносвязными, и вот её обучили на огромном количестве картинок «порно/не порно». И потом, естественно, в свете развития генеративных моделей, возникла идея: «Давайте мы заставим сетку генерировать порно». В принципе, по мере развития нейронных сетей, качество порно должно расти. Вот это (картинки 8, 9) текущее состояние вещей, точнее, начало 16-го года. Я уверен, сейчас уже есть примеры получше.

Картинки 8 и 9
Картинки 8 и 9.

Слева — это картинки, сгенерированные нейронной сетью, на которых градус порно близок к нулю, то есть исчезающе маленький. Справа — это, по мнению нейронной сети, самое хардкорное порно, которое можно представить. Сомнений нет в том, что это «порно»! Очень интересно смотреть на эти картинки, потому что вроде бы на них порно нет, но если мы посмотрим на них боковым зрением, то что-то в этом есть.

Очень интересный проект, связанный со звуком — это проект вот буквально самый что ни на есть горячий, появившийся в конце сентября. Это архитектура, dilated convolution — называются эти слои, так называемая растянутая свёртка, без перекрытия. Оказалось, что такая многослойная сеть очень хорошо умеет распознавать звук. Лучше, чем обычная свёрточная нейронная сеть. Сейчас почти во всех крупных фреймворках появилась реализация вот этих dilated convolution, в частности, в TensorFlow есть готовая реализация. Это тоже работа DeepMind’а, и они подумали: «Давайте попробуем синтезировать речь при помощи нейронной сети». Можно запихнуть большое количество реальной речевой информации, 300—400 часов речи, и построить просто авторегрессионную модель, рекурсивную нейронную сеть, которая каждую следующую амплитуду звукового файла генерирует на основе какого-то количества предыдущих амплитуд. И вот оказалось, что если мы в обычной речи возьмём четверть секунды истории влево, плюс передадим туда информацию о фонемах — какие фонемы стояли слева, и какие фонемы идут сейчас справа от той точки, где мы производим генерацию, то можно сделать весьма качественный синтез речи.

Вот я сейчас несколько сэмплов поставлю, чтобы вы оценили качество работы такой системы.

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

Этот подход можно применить и к музыке, и получить нечто подобное.

По-моему, напоминает творчество композитора Каравайчука. У таких моделей весьма большие перспективы. Моя группа сейчас работает над воспроизводством этой работы. Третий вариант с тарабарщиной мы уже умеем. С фонемами скоро должно получиться. Сравнивали качество на основе «mean opinion score», то есть просто опрашивали людей в двойном слепом испытании, просили оценить качество, сравнивали старые методы синтеза — конкатенативный и параметрический, и то, что делает Wavenet, и настоящего диктора. И тут (картинка 10) есть столбиковая диаграмма, по ней видно, что по субъективным оценкам было преодолено больше половины оставшегося разрыва по качеству между системами машинного синтеза речи и настоящей человеческой речью.

Картинка 10
Картинка 10.
.
Комментарии