Хабрахабр

Нечувствительные к весам нейронные сети (WANN)

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

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

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

Вероятно, из-за этих врожденных проблем используемого сейчас математического аппарата, обучение с подкреплением (Reinforcement Learning), призванное максимально имитировать обучение живых существ на основе награды, на практике работает далеко не так хорошо, как хотелось бы. Даже отбросив отличия в механизме обучения (в мозге нет точного аналога алгоритма обратного распространения ошибки, например) и отсутствие разномасштабных временных корреляций, на основании которых биологический мозг строит свою работу, у искусственных нейронных сетей есть еще несколько проблем, не позволяющих им в достаточной степени имитировать живой мозг. Сами разработчики шутят, что мозг — это RNN + A3C (т.е. Хотя в его основе лежат действительно хорошие и правильные идеи. рекуррентная сеть + алгоритм актер-критик для ее обучения).

И хотя неокортекс, отвечающий за высшую нервную деятельность у млекопитающих, имеет примерно однородную структуру, общая структура мозга явно задана генами. Одним из самых заметных отличий биологического мозга от искусственных нейронных сетей является то, что структура живого мозга преднастроена миллионами лет эволюции. У человека тоже имеются физические ограничения в структуре мозга, которые сложно объяснить. Более того, отличные от млекопитающих животные (птицы, рыбы) вообще не имеют неокортекса, но при этом демонстрируют сложное поведение, недостижимое современными нейронными сетями. Но в реальности зрительный нерв способен пропустить через себя не более 2-3 Мп. Например, разрешение одного глаза примерно 100 Мп (~100 млн светочувствительных палочек и колбочек), а значит от двух глаз видеопоток должен быть около 200 Мп с частотой не менее 15 кадров в секунду. И его соединения направлены вовсе не к ближайшей части мозга, а в затылочную часть в зрительную кору.

К примеру, если младенцу родом всего несколько минут показать язык, то благодаря зеркальным нейронам, он тоже высунет язык. Поэтому не умаляя значения неокортекса (его, грубо говоря, при рождении можно считать аналогом случайно инициированных современных нейронных сетей), факты говорят о том, что даже у человека огромную роль играет заранее заданная структура мозга. Хорошо известно, что у младенцев с рождения "вшито" превосходное распознавание человеческих лиц. Аналогично происходит с детским смехом. Младенец не будет часами кричать, если голоден. Но что еще важнее, нервная система всех живых существ оптимизирована для условий их жизни. Или испугается чего-то и замолчит. Он устанет. Она сделает несколько попыток, решит что он горький(с) и уйдет. Лиса не будет до полного изнеможения вплоть до голодной смерти тянуться за недоступным виноградом. Причем у разных видов разное. И это не процесс обучения, а заранее заданное биологией поведение. И они этому выучились не в процессе проб и ошибок, а такова их биология, заданная инстинктами. Некоторые хищники сразу бросаются за добычей, а другие долго сидят в засаде. Аналогично, многие животные имеют вшитые программы избегания хищников начиная с первых минут жизни, хотя они физически еще не могли их выучить.

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

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

После добавления или удаления которых, нейросеть приходится обучать заново с нуля. К сожалению, существующие алгоритмы оптимизации структуры сети, такие как Neural Architecture Search (NAS), оперируют целыми блоками. Это ресурсоемкий процесс и не полностью решает проблему.

Идея заключается в том, чтобы заменить все веса нейросети одним "общим" весом. Поэтому исследователи предложили упрощенную версию, которая получила название "Weight Agnostic Neural Networks" (WANN). А после еще и оптимизировать ее, чтобы сеть хорошо работала со всеми возможными значениями этого общего веса (общим для всех соединений между нейронами!). И в процессе обучения подбирать не веса между нейронами, как в обычных нейросетях, а подбирать структуру самой сети (количество и расположение нейронов), которая с одинаковыми весами показывает наилучшие результаты.

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

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

Сначала создается набор простых нейросетей, а потом делается одно из трех действий: добавляется новый нейрон в существующее соединение между двумя нейронами, добавляется новое соединение со случайными другим нейроном, либо меняется функция активации в нейроне (см. Для поиска такой архитектуры исследователи воспользовались алгоритмом Topology search algorithm (NEAT). А дальше, в отличие от классических NAS, где ищутся оптимальные веса между нейронами, здесь все веса инициализируются одним единственным числом. рисунки ниже). Таким образом получается сеть, которая не зависит от конкретного веса между нейронами, а хорошо работает во всем диапазоне (но все веса по-прежнему инициируется одним числом, а не разными как в обычных сетях). И оптимизация осуществляется для поиска структуры сети, которая лучше всех работает в широком диапазоне значений этого одного общего веса. При этом в качестве дополнительной цели для оптимизации стараются минимизировать число нейронов в сети.

Ниже представлена общая схема алгоритма.

  1. создается популяция простых нейросетей
  2. каждая сеть инициализирует все свои веса одним числом, причем для широкого диапазона чисел: w=-2...+2
  3. полученные сети сортируются по качеству решения задачи и по числу нейронов (в сторону уменьшения)
  4. в части лучших представителей добавляется один нейрон, одна связь или меняется функция активации в одном нейроне
  5. эти модифицированные сети используются в качестве начальных в пункте 1)

Работает ли это на практике? Все это хорошо, но для нейронных сетей предложены сотни, если не тысячи разных идей. Ниже пример результата поиска такой архитектуры сети для классической задачи тележки с обратным маятником. Да, работает. 0, но с -1. Как видно из рисунка, нейросеть неплохо работает со всеми вариантами общего веса (лучше с +1. А после оптимизации этого единственного веса, начинает работать вообще идеально (вариант Fine-Tuned Weights на рисунке). 5 тоже пытается поднять маятник).

А получить можно в итоге более точный оптимальный параметр, скажем, 1. Что характерно, дообучать можно как этот единственный общий вес, так как подбор архитектуры делается на ограниченном дискретном числе параметров (в примере выше -2,-1,1,2). А можно лучший общий вес использовать как начальную точку для дообучения всех весов, как в классическом обучении нейросетей. 5.

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

Обратите внимание, что это езда на "голых инстинктах", с единым общим весом во всех соединениях, без классической точной настройки всех весов. Ниже пример найденной WANN сети для задачи управления машинкой на основе пикселей. При этом нейросеть получается крайне простой по своей структуре.

Так, обычная случайно инициализированная нейросеть на MNIST показывает точность около 10%. Другим вариантом использования WANN исследователи предлагают создавать ансамбли из WANN сетей. Подобранная единичная WANN нейросеть выдает около 80%, но ансамбль из WANN с разными общими весами, показывает уже >90%.

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

Ссылки

  1. Запись в блоге Google AI
  2. Интерактивная статья, в которой можно изменять значения общего веса и следить за результатом
  3. Статья в Nature о важности вшитых инстинктов при рождении
Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть