Моя задача связана с большим типом среды мира сетки (размер сетки может быть 30x30, 50x50, 100x100, самое большое 200x200).Каждый элемент в этой сетке содержит 0 или 1, которые случайным образом инициализируются в каждом эпизоде.Моя цель состоит в том, чтобы обучить агента, который запускается в произвольной позиции в сетке, и перейти к каждой ячейке со значением 1 и установить ее в 0. (Обратите внимание, что в целом сетка в основном равна 0 с редкими 1 с),
Я пытаюсь обучить модель DQN 5 действиям для выполнения этой задачи:
1) Переместиться вверх
2) Переместиться вправо
3)Переместить вниз
4) Переместить влево
5) Очистить (устанавливает для текущего элемента значение 0)
«Состояние», которое я даю модели, является текущей сеткой (тензор NxM)).Я указываю текущее местоположение агента через конкатенацию сплющенного тёплого (1x (N * N)) тензора к выходу моего вектора сверточного признака (до слоев FC).
Однако я нахожу, чтоЭпсилон-жадная политика разведки не приводит к достаточной разведке.Кроме того, на ранних этапах обучения (когда модель по существу выбирает случайные действия в любом случае), псевдослучайные комбинации действий в конечном итоге «отменяются», и мой агент не удаляется достаточно далеко от начальной точки, чтобы обнаружить, что существуетячейка со значением 1 в другом квадранте сетки, например.Я получаю сходящуюся политику на сетке 5x5 с не сверточной моделью MLP, поэтому я считаю, что моя реализация верна.
1) Как я могу поощрять исследование, которое не всегда "отменяется"out ", чтобы исследовать только локальный регион до моего начального местоположения?
2) Является ли этот подход хорошим способом для выполнения этой задачи (при условии, что я хочу использовать RL)?
3) Я думаю, что попытка работать с «непрерывным» пространством действия (модель выводит индексы элементов «1») будет более трудной для достижения конвергенции.Разумно ли всегда пытаться использовать дискретные пространства действий?