«Сны» нейронных сетей Google одновременно удивительные и тревожные
Американский писатель-фантаст однажды задал знаменитый вопрос: мечтают ли андроиды об электроовцах? И хотя он был на верном пути, ответ все же нет, не мечтают. Они мечтают о собакоголовых рыцарях на лошадях, верблюдоптицах и свиноулитках на фоне плывущих ландшафтов в стиле Дали.
Программное обеспечение для распознавания изображений Google, которое может обнаруживать, анализировать и даже автоматически титровать изображения, использует искусственные нейронные сети, которые стремятся имитировать человеческий мозг. В процессе под названием «inceptionism», который силами отечественных локализаторов фильмов можно назвать «начинанием», инженеры Google пытались разглядеть, о чем «мечтают» или что «снится» этим искусственным сетям - что они видят в невзрачных изображениях облаков, например? Что видит искусственный мозг, наученный находить снимки собак, когда ему показывают изображение рыцаря?
Google учит свое программное обеспечение, скармливая ему миллионы снимков, выявлять конкретные объекты. Скормив снимок, инженер просит подчеркнуть распознанный объект на изображении. Сеть состоит из слоев - чем выше слой, тем точнее интерпретация. В конце концов, в конечном выходном слое сеть принимает «решение» касательно того, что на картинке.
Но эти сети не ограничены одним только распознаванием изображений. Их подготовка позволяет их также создавать. Вот что вывела сеть, когда ей предложили создать образы следующих объектов, слева направо: антилопа конгони, измерительная колба, муравей, морская звезда, рыба-анемона, банан, парашют, винт.
Круто, не так ли? Но это не все. Инженеры Google решили, что вместо того, чтобы просить программное обеспечение генерировать конкретное изображение, они могут просто скормить ему произвольное изображение и спросить, что то увидит. Вот как Google описала эксперимент:
«Затем мы взяли слой и попросили сеть усилить все, что она обнаружит. Каждый слой сети работает с деталями на разном уровне абстракции, поэтому сложность произведенных деталей зависит от того, какой слой мы решили усилить. К примеру, слои ниже имеют тенденцию производить контуры или простые орнаментальные узоры, поскольку эти слои чувствительны к основным деталям вроде краев и их расположения».
При загрузке изображения в первый слой сеть создала вот это, чем-то напоминающее обработку с помощью привычного фильтра:
Но после этого начало твориться странное. Google начала загружать изображения в верхний слой - тот, который может выявлять целые объекты на снимке - и просить сеть, «что бы ты не увидела, хочу больше этого!».
Возникает петля обратной связи: если облако немного похоже на птицу, сеть сделает его больше похожим на птицу. Это, в свою очередь, приведет к тому, что сеть сразу узнает птицу во время следующего прогона и так далее, пока не появится тщательно выписанная птица, казалось бы, ниоткуда.
Результат чем-то похож на заглядывание в подсознание ИИ. Вот что происходит, когда снимок облаков загружается в сеть, обученную распознавать животных:
Взглянем ближе на детали второго снимка:
Покажите искусственной нейронной сети обычное облачное небо, и она скажет вам, что в небе плавают рыбособаки и свиноулитки. То, что видит ИИ, кому-то не приснится и во время кислотного трипа.
«Начинание» не только учит Google многому о работе искусственных нейронных сетей, но также раскрывает интересные применения технологии. Как выразились инженеры Google, «этот процесс заставляет нас задаться вопросом, могут ли нейронные сети стать инструментом творчества - новым способом смешивать визуальные концепции - или даже пролить толику света на корни творческого процесса в целом».
Ниже еще несколько изображений сети, созданных в петле обратной связи. Наслаждайтесь.