Научите робота собирать предметы в мире сетки до достижения состояния терминала с помощью обучения подкреплению - PullRequest
0 голосов
/ 02 февраля 2019

Моя проблема заключается в следующем.У меня есть простой мир сетки:

https://i.imgur.com/2QyetBg.png

Агент запускается в начальном состоянии, помеченном как START, и цель состоит в том, чтобы достичь состояния терминала, помеченного как END.Но агент должен избегать барьеров, помеченных знаком X, и, прежде чем достичь состояния КОНЕЦ, он должен собрать все предметы, помеченные буквой F. Я реализовал это с помощью Q-Learning и Sarsa, а агент достиг состояния КОНЕЦ и избежатьбарьеры (X состояния).Так что эта часть работает хорошо.

Мой вопрос: как я могу заставить агента собирать все предметы (состояния F) до того, как они достигнут состояния END?Используя Q-Learning или Sarsa, он избегает барьеров, достигает состояния END, но не собирает все предметы.Обычно посещают одно состояние F и после того, как агент переходит в состояние END.

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 07 февраля 2019

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

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

Другая функция вознаграждения, которую я могу себе представить, - это функция, которая возвращает -1 для посещения состояния КОНЕЦ без сбора предметов, 1 для посещения состояния КОНЕЦ с собранными предметами и 0 для посещения любого другого состояния (или, например,-0,02, если вы хотите, чтобы цель была достигнута как можно быстрее).

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

...