С чего начать обучение бота на нейронной сети?

Рассматривал множество примеров с нейронными сетями, но это были довольно простые примеры, поэтому для текущей задачи - обучить бота играть в футбол - нет ясного представления, какие для этого нужны входные параметры.
Модель игры очень простая: поле, две команды по 3 чел. и один мяч, каждый объект из которых - окружность с определенным радиусом и массой.

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

Тупые боты в пару строк умеют двигаться только прямо к мячу. Была попытка добавить различное поведение с помощью условных операторов, например:
если защитник, не отходить далеко от ворот
если нападающие, оставаться в середине поля если уже два тиммейта у наших ворот
если мяч катится в сторону наших ворот, обограть его сбоку и выбить

С таким поведением уже лучше, но дальше все только усложняется при попытке добавить новые поведения так, чтобы не сломать предыдущие.

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

Как это грамотно подать в сеть, чтобы не было какой-то привязанности к определенному положению на поле, и иметь разные поведения для защитника/нападающего (нужно ли разделять на две сети?)
  • Вопрос задан
  • 1987 просмотров
Решения вопроса 1
angrySCV
@angrySCV
machine learning, programming, startuping
вы должны понимать зачем вам нужно использовать именно нейронную сеть.
Вам лучше с самых азов зайти, кого обучать, как обучать и тд.
например упростить задачу до обучения "футболиста" в качестве "автономного агента", на основе конечного автомата, у которого есть состояние (окружения и его самого) и есть действия - и вы пробуете разные комбинации этих состояний и действий.
Например вы можете описать состояние футболиста как расположение мяча (справа слева впереди, впереди-справа, впереди слева и тд) - сопоставляешь этому состоянию отдельноое действие (движение вправо, влево и тд), дополнительно можешь сопоставить например расстояние до мяча.
например мяч вверху-слева дистанция 10 ячеек -> действие агента -> движения прямо
мяч справа слева дистанция 2 ячееки -> действие агента -> движение влево.
в итоге у тебя получается записанные сопоставления состояниям и действиям.

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

Войдите, чтобы написать ответ

Похожие вопросы