Weight Agnostic Neural Networks

Adam Gaier, David Ha

Статья: https://arxiv.org/abs/1906.04358

Интерактивная статья: https://weightagnostic.github.io/

Код: https://github.com/weightagnostic/weightagnostic.github.io



Очень интересная работа снова про важность архитектур сетей (а не весов). У Дэвида Ха, кстати, крутые работы, рекомендую следить.



Главный вопрос статьи: до какой степени сама архитектура сети, без обучения каких-либо весов, может кодировать решения определённых задач? Архитектура с правильным inductive bias может быть способна это делать.



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



Идея в том, что давайте вообще не будем обучать веса, заменим обучение на сэмплирование, а до кучи, чтобы избежать проблем больших размерностей, заэнфорсим weight sharing для _ВСЕХ_ весов и будем сэмплить только одно число — сделаем все веса одинаковыми. Да ещё и будем выбирать решения, работающие в диапазоне весов, а не только с одним конкретным. Поэтому Weight Agnostic Neural Networks (WANN).



Для поиска таких сетей запускается эволюционный алгоритм, похожий на широко известный NEAT (там, правда, и веса оптимизировались):

1) Создаём популяцию минимальных простых разреженных сеток (без скрытых узлов);

2) Каждая сеть оценивается для разных значений параметра веса ([-2, -1, -0.5, +0.5, +1, +2]), итог усредняется;

3) Сети ранжируются по качеству _И_ сложности (многокритериальная оптимизация);

4) Отбираем лучших, мутируем и создаём новую популяцию.

5) goto 2



Мутации бывают такие: добавить узел, добавить соединение, изменить активацию (взята достаточно богатая библиотека активаций, там много нетипового, например, синусоида или инвертирование).



Из двух сетей с одинаковым качеством выбирается более простая. Используются три критерия: среднее качество по всем значениям веса, максимальное качество для лучшего веса, число соединений в сети. Чтобы помочь сложным структурным изменениям, которые могут потребовать нескольких улучшений, ранжирование по сложности сделано вероятностным: в 80% случаев сети ранжируются по среднему качеству и сложности, а в 20% случаев по среднему качеству и максимальному качеству.



Эксперимент запускается на трёх задачах непрерывного управления: CartPoleSwingUp, BipedalWalker-v2 и CarRacing-v0. Проверяются варианты: все рандомные веса, рандомный общий вес, настраиваемый общий вес, настраиваемые веса.



WANN со случайным общим весом вполне работают. Если этот вес потом потюнить, то работают ещё лучше. Итоговое качество ниже, чем у полностью обучаемых сетей, но весьма достойно.



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



Также авторы проверяют метод на задаче классификации (MNIST), получается вполне разумное качество, сравнимое с однослойной сеткой с тысячами весов, обучаемой градиентным спуском.



Поскольку получаемые таким способом сети работоспособны при разных значениях параметров, получается простой способ ансамблирования: перебираем разные значения, считаем предсказания и агрегируем.



Важная и интересная работа, напоминающая, что текущий мейнстримовый подход к AI не факт, что самый правильный:



“The first lesson from neuroscience is that much of animal behavior is innate, and does not arise from learning. Animal brains are not the blank slates, equipped with a general purpose learning algorithm ready to learn anything, as envisioned by some AI researchers; there is strong selection pressure for animals to restrict their learning to just what is needed for their survival.”



(“A Critique of Pure Learning: What Artificial Neural Networks can Learn from Animal Brains”, https://www.biorxiv.org/content/10.1101/582643v1)



Авторы расшарили свой код и призывают к дальнейшему экспериментированию. Также весьма зачётный список ссылок в работе.