В последнее время я много читал о марковских процессах принятия решений (с использованием итерации значений). но я просто не могу уложиться в них. Я нашел много ресурсов в Интернете/книгах, но все они используют математические формулы, которые слишком сложны для моих компетенций.
Поскольку это мой первый год в колледже, я обнаружил, что объяснения и формулы, представленные в Интернете, используют понятия / термины, которые слишком сложны для меня, и предполагают, что читатель знает некоторые вещи, о которых я просто никогда не слышал. .
Я хочу использовать его в 2D-сетке (заполненной стенами (недостижимо), монетами (желательно) и движущимися врагами (которых нужно избегать любой ценой)). Вся цель состоит в том, чтобы собрать все монеты, не касаясь врагов, и я хочу создать ИИ для основного игрока с помощью марковского процесса принятия решений (MDP). Вот как это частично выглядит (обратите внимание, что аспект, связанный с игрой, здесь не так важен. Я просто действительно хочу понять MDP в целом):
Насколько я понимаю, грубое упрощение MDP заключается в том, что они могут создавать сетку, которая указывает, в каком направлении нам нужно двигаться (своего рода сетка «стрелок», указывающих, куда нам нужно идти, начиная с в определенной позиции на сетке), чтобы достичь определенных целей и избежать определенных препятствий. Конкретно в моей ситуации это означало бы, что он позволяет игроку знать, в каком направлении идти, чтобы собирать монеты и избегать врагов.
Теперь, используя термины MDP, это будет означать, что он создает набор состояний (сетку), который содержит определенные политики (действия, которые необходимо предпринять -> вверх, вниз, вправо, влево) для определенного состояние (позиция в сетке). Политики определяются ценностями «полезности» каждого состояния, которые сами рассчитываются путем оценки того, насколько получение этого состояния будет выгодным в краткосрочной и долгосрочной перспективе.
Это правильно? Или я совсем на ложном пути?
Я хотел бы хотя бы знать, что представляют собой переменные из следующего уравнения в моей ситуации:
(взято из книги «Искусственный интеллект — современный подход» от Russell & Norvig)
Я знаю, что s
будет списком всех квадратов из сетки, a
будет конкретным действием (вверх/вниз/вправо/влево), но как насчет остального?
Как будут реализованы функции вознаграждения и полезности?
Было бы очень здорово, если бы кто-нибудь знал простую ссылку, которая показывает псевдокод для очень медленной реализации базовой версии, похожей на мою ситуацию, потому что я даже не знаю, с чего начать.
Спасибо за ваше драгоценное время.
(Примечание: не стесняйтесь добавлять/удалять теги или сообщать мне в комментариях, должен ли я предоставить более подробную информацию о чем-то или о чем-то подобном.)