Рекуррентная нейронная сеть решает задачу поддержания равновесия

в 15:24, , рубрики: Песочница, метки: , , , , ,

Сразу постановка задачи.

Дано:
Примитивное виртуальное пространство для проведения эксперимента:
1. Аквариум высотой 1000 мм.
2. Дырявое дно аквариума. Уровень воды уменьшается на 1 мм за такт.
3. Стакан с водой, доливка которой в аквариум повышает уровень воды на 6 мм.

Также имеется заготовка нейронной сети, состоящая из:
1. 1000 рецепторов. По 1 рецептору на миллиметр.
2. 1 эффектор. Возбужденный в текущем такте, дает команду вылить стакан воды в аквариум.

Хотелось бы:
1. Добиться поддержания определенного нами уровня воды в аквариуме. Ну, или близко к нему. В текущем примере 500 мм.

Результат эксперимента:
На графике показан уровень воды с течением времени.

image

Укрупненный масштаб на старте эксперимента:

image

1. Стартуем со 100 мм уровня. Видно, что уровень воды неуклонно падает. Необученная заготовка нейросети просто не знает, что делать.
2. Достигнув нуля, т.е. иссушив аквариум, сеть запускает рефлекторную реакцию выливания порции воды.
3. Далее происходит рост уровня воды. Сеть получает поощрение, если уровень приблизился к требуемому. В противном случае — наказание.

Случайные дестабилизирующие воздействия:

image

4. Один раз в 1000 тактов происходит мощное дестабилизирующее воздействие на систему. Доливаем (выливаем) случайное количество воды.
5. Уровень воды в аквариуме стабилизируется.

Что происходит с сетью в процессе эксперимента:
1. Разрастается, создаются новые нейроны.
2. Синапсы обучаются.

Характеристики сети и ее структурных элементов:
1. Сеть — рекуррентная, возможны связи «на себя».
2. Синапсы, нейроны не удаляются.
3. Использовалось около 10000 нейронов и 500000 синапсов.
4. Сеть не использует математических функций над вещественным переменным. Из математики используется только суммирование целочисленных величин.

Что, собственно, предложено инновационного:
1. Способ обучения синапсов (остался за кадром, простите).
2. Механизм добавления/удаления структурных элементов (за кадром).
3. Ну и, в целом, не использующая математику, рекуррентная нейронная сеть.

Что еще необходимо реализовать:
1. Механизм уничтожения «бесполезных» синапсов и нейронов. В текущей реализации они вреда не приносят, но отнимают много времени на обсчет.
2. Визуализация нейросети была бы не лишней.
3. И все остальное… Пока не понятно, т.к. приходится быть последовательным.

Буду рад здоровой критике и вопросам!

Замечания:
1. Тема — хобби для меня.
2. Написано самостоятельно на C++.
3. ИИ будет чуть позже.

Спасибо!

Автор:

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js