Как отмечалось в некоторых комментариях, ваш вопрос действительно включает в себя большой набор базовых знаний и тем, которые вряд ли можно красноречиво охватить в стеке потока. Однако здесь мы можем предложить подходы, чтобы обойти вашу проблему.
Прежде всего: чем занимается ваша ГА? Я вижу набор двоичных значений; кто они такие? Я вижу их как либо:
- плохо : последовательность инструкций «повернуть направо» и «повернуть налево». Почему это плохо? Потому что вы в основном делаете случайную, грубую попытку решения вашей проблемы. Вы не развиваете генотип: вы уточняете случайные догадки.
- лучше : каждый ген (местоположение в геноме) представляет особенность, которая будет выражена в фенотипе. Не должно быть соотношения 1: 1 между геномом и фенотипом!
Позвольте мне привести вам пример: в нашем мозгу 10 10 13 нейронов. Но у нас всего около 10 ^ 9 генов (да, это не точное значение, потерпите меня на секунду). Что это говорит нам? Что наш генотип не кодирует каждый нейрон. Наш геном кодирует белки, которые затем идут и составляют компоненты нашего тела.
Следовательно, эволюция воздействует на генотип напрямую, выбрав признаки фенотипа. Если бы у меня было 6 пальцев на каждой руке, и если бы это сделало меня лучшим программистом, сделало бы меня больше детей, потому что я более успешен в жизни, то мой генотип был бы выбран эволюционным путем, потому что он содержит способность дать мне более подходящее тело (да, здесь есть каламбур, учитывая среднее соотношение ворка-к-воспроизводимости большинства людей здесь).
Теперь подумайте о своем GA: что вы пытаетесь достичь? Вы уверены, что развивающиеся правила помогут? Другими словами - как бы вы выступили бы в лабиринте? Что может быть наиболее успешным, что может вам помочь: иметь другое тело или иметь память о правильном пути, чтобы выбраться? Возможно, вы захотите пересмотреть свой генотип и сделать так, чтобы он кодировал способности запоминания . Возможно, закодируйте в генотипе, сколько данных может храниться и как быстро ваши агенты могут получить к ним доступ, а затем измерить пригодность с точки зрения того, как быстро они выходят из лабиринта.
Другой (более слабый) подход может заключаться в кодировании правил, которые ваш агент использует, чтобы решить, куда идти. Сообщение о возвращении домой - это кодирование функций, которые после выражения могут быть выбраны по пригодности.
Теперь к нейронной сети. Следует помнить, что NN являются фильтрами . Они получают вход. выполнить над ним операции и вернуть вывод. Что это за выход? Может быть, вам просто нужно различать истинное / ложное условие; например, как только вы передадите карту лабиринта в NN, он может сказать вам, можете ли вы выйти из лабиринта или нет. Как бы вы сделали такую вещь? Вам нужно будет правильно кодировать данных.
Это ключевой момент для NN: ваши входные данные должны быть правильно закодированы. Обычно люди нормализуют его, возможно, масштабируют, возможно, вы можете применить к нему сигма-функцию, чтобы избежать слишком больших или слишком малых значений; это детали, которые касаются ошибок и производительности. Теперь вам нужно понять, что такое NN, и для чего вы не можете его использовать.
К твоей проблеме сейчас. Вы упомянули, что хотите использовать NN: а как же,
- использование нейронной сети для управления агентом и
- используя генетический алгоритм для развития параметров нейронной сети?
Перефразировано так:
- давайте предположим, что у вас есть робот: ваш NN управляет левым и правым колесом, и в качестве входного сигнала он получает расстояние до следующей стены и сколько он проделал до сих пор (это только пример)
- вы начинаете с генерации случайного генотипа
- превращают генотип в фенотип: первый ген - это чувствительность сети; второй ген кодирует коэффициент обучения; третий ген .. и так далее и тому подобное
- теперь, когда у вас есть нейронная сеть, запустите симуляцию
- посмотрите, как это работает
- генерирует второй случайный генотип, развивает второй NN
- Посмотрите, как этот второй человек выполняет
- найдите лучшего человека, затем либо измените его генотип, либо рекомбинируйте его с проигравшим
- повтор
здесь есть превосходное чтение по этому вопросу: Inman Harvey Microbial GA .
Надеюсь, я кое-что понял по таким вопросам. NNs и GA не являются серебряной пулей для решения всех проблем. В некоторых они могут сделать очень многое, в других они просто неправильный инструмент. Это (до сих пор!) Зависит от нас, чтобы получить лучший, и для этого мы должны понимать их хорошо.
Удачи в этом! Приятно знать такие вещи, которые делают повседневную жизнь более увлекательной:)