Как создать правильную прямую нейронную сеть с эволюционным алгоритмом - PullRequest
0 голосов
/ 06 марта 2019

Я создал 2D-игру, в которой вы используете редактор карт, чтобы размещать автомобили, препятствия и точки назначения, куда должны ехать автомобили.

Идея состоит в том, что эти машины будут управляться генерацией нейронных сетей с прямой связью.Но я не уверен, как информация должна быть представлена ​​на входном слое и как должна выглядеть эволюция, поэтому я объясню свою идею, и было бы здорово получить совет о том, как сделать эту идею лучше, особенно если что-то не сработает.вообще.

Значения входного слоя:

  1. Нейроны между ними (0,1), представляющие расстояние до препятствия
  2. Нейроны между ними (-1,1)представляет скорость автомобиля и его направление (-1 - максимальная скорость назад, 0 - нет скорости, 0,5 - половина максимальной скорости вперед)
  3. Два нейрона между (-1,1), представляющие cos и sin (или 2 * asin / Pi и 2 * (acos-pi / 2) / Pi) вектора от автомобиля до места назначения относительно некоторой постоянной оси холста (карты).

Значения выходного слоя:

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

Глядя на значения, я думаю об использовании функции tanhywhere.Но разве это хорошая идея использовать одно отрицательное / положительное значение для определения направления (в качестве входа или выхода)?Или это хорошая идея использовать два нейрона, чтобы сообщить нейронной сети, куда она должна идти (очевидно, не может сказать одно значение) и т. Д.

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

...