Как стать автором
Обновить

Комментарии 15

Если бот только 1 - то должен двигаться аналогично "тупому" боту. Но есть нюанс - углы и стены. Если двигаться на упреждение - то можно не выпустить из угла. А значит первому нужно избегать краев поля.

Но тогда в идеале еще инерцию добавить: dx+=cos(a)*force; x=x+dx; dx*=0.98;

Почему именно генетика, а не, например, Q-learning?

Видел мельком, но подробно не изучал. С вашей подачи немного ознакомился) Как раз мой случай описан, про "аниматы", но с лучами-сенсорами. Делал до этого похожее на Q-learning - у сетки был выход на каждое возможное действие, выход с максимальным значением определял выбранное действие (может это и есть Q-learning? Хз, делал интуитивно). Результат мне не очень понравился, хоть он и удивил. А так - биологию люблю.

Спасибо! Питон к сожалению не знаю - по "идеологическим" причинам) Я так понял - оценка должна быть каждый такт?

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

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

Для Q-learning нужен набор возможных действий, ведь так?

Сетке нужно определить направление и силу движения. У меня направление и сила движения в dobule, 64bit или 18446744073709551615 состояний для каждого параметра. Это 18446744073709551615 в квадрате = 340,282,366,920,938,463,426,481,119,284,349,108,225 состояний. Это 340 ундециллионов. Я же все верно рассчитал?

Да, сам по себе Q-learning используется для систем с маленьким дискретным пространством возможных действий. Но можно использовать actor-critic. Вот, кстати, курс есть: https://huggingface.co/learn/deep-rl-course/unit6/advantage-actor-critic

Не понимаю, как actor-critic может решить проблему огромного множества дискретных состояний? Я вижу решение лишь снижением размерности.

Просто actor будет предсказывать действие, как и сейчас у Вас он делает, а critic получать на вход действие+среда и считать награду. Соответственно, critic обучается на известной последовательности ходов, как в q-learning, а actor в связке с critiс, чтобы для заданного состояния среды максимизировать награду

Спасибо за разъяснение, понял.

Я кстати хотел a-c тоже использовать, с на уровне выше - как сознание или мышление, а - как рефлексы. Есть некий набор сетей рефлексов, с имеет некое множество "желаний" и определяет приоритеты. Скорее всего, рекуррентная сеть с ячейками памяти и угасающим сигналом. Но глубоко не вникал еще, пока не упрусь в ограничения текущей модели.

Тут нужно сделать жирный комментарий. Генетическим алгоритмам я посвятил лет 15, в основном разными исследованиями баловался. В результате пришел к таким выводам: в любой более-менее сложной задаче нужно закладывать 1 миллион вычислений целевой функции. Дальше смотрим время 1 вычисления и примерно поймем минимальное время нужное для подгонки. Задача должна быть не слишком овражной. Про плюсы и минусы не буду писать. Конкретно в твоем случае (нахождение оптимальных весов нейросети) я бы тебе посоветовал алгоритм имитации отжига (раз ты игнорируешь метод обратного распространения ошибки!). Имитация отжига тоже очень простой алгоритм и он в твоем случае может дать лучше результат.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории