Я создал пользовательское подкрепление обучения environment
и agent
, которое похоже на игру в лабиринт.
В лабиринте есть 5 возможных действий: вверх, вниз, влево, вправо и остаться. Хотя в случае блокировки, например, агент не может подняться, тогда как люди проектируют env
и agent
для имитации этого?
Если быть точным, агент находится в текущем состоянии s0
, и по определению, предпринимая действия вниз, влево и вправо, изменит состояние на некоторые другие значения с немедленным вознаграждением (> 0, если на выходе). Один из возможных подходов заключается в том, что при выполнении действия up
состояние останется на уровне s0
, а наградой будет большое отрицательное число. В идеале агент узнает это и никогда больше не пойдет up
в этом состоянии.
Однако мой агент, похоже, не учится этому. Вместо этого это все еще идет up
. Другой подход заключается в том, чтобы жестко закодировать агент и среду, в которых агент не сможет выполнить действие up
, когда на s0
я могу подумать:
- когда в каком-то состоянии, когда
up
не разрешено, мы смотрим на значения Q различных действий
- выберите действие с наибольшим значением Q, кроме
up
- следовательно, агент никогда не выполнит недопустимое действие
Я спрашиваю, возможен ли вышеуказанный подход? Будут ли какие-либо проблемы, связанные с этим? Или есть лучший дизайн для борьбы с граничными и недействительными действиями?