Как DQN работает в среде, где вознаграждение всегда равно -1 - PullRequest
0 голосов
/ 25 января 2019

Учитывая, что среда OpenAI Gym MountainCar-v0 ВСЕГДА возвращает -1.0 в качестве награды (даже когда цель достигнута), я не понимаю, как сходится DQN с повторением опыта, но я знаю этоделает, потому что у меня есть рабочий код , который доказывает это.Работая, я имею в виду, что когда я обучаю агента, агент быстро (в течение 300-500 эпизодов) учится решать проблему горных автомобилей.Ниже приведен пример от моего обученного агента.enter image description here

Насколько я понимаю, в конечном итоге должна быть найдена "редкая награда".Тем не менее, насколько я вижу из кода OpenAI Gym , никакой награды, кроме -1, не бывает.Это больше похоже на среду без вознаграждения.

Что почти отвечает на мой вопрос, но на самом деле это не так: когда задача завершается быстро, возвращает (сумма наград)эпизод больше.Так что, если автомобиль никогда не найдет флаг, возврат -1000.Если автомобиль быстро обнаружит флаг, возврат может быть -200.Причина, по которой это не отвечает на мой вопрос, заключается в том, что при использовании DQN и воспроизведения опыта эти возвраты (-1000, -200) никогда не присутствуют в памяти воспроизведения опыта.Все, что имеет память, это кортежи в форме (состояние, действие, награда, next_state), и, конечно, помните, что кортежи извлекаются из памяти случайным образом, а не эпизод за эпизодом.

Еще один элемент этого конкретногоСреда OpenAI Gym состоит в том, что состояние «Готово» возвращается в двух случаях: нажатие на флаг (yay) или тайм-аут после некоторого количества шагов (boo).Тем не менее, агент рассматривает оба одинаково, принимая награду -1.Таким образом, что касается кортежей в памяти, оба события выглядят одинаково с точки зрения вознаграждения.

Итак, я не вижу в памяти ничего, что указывало бы на то, что эпизод прошел хорошо.

И поэтому я понятия не имею, почему этот код DQN работает для MountainCar.

1 Ответ

0 голосов
/ 30 января 2019

В DQN вы изучаете Q-функцию, которая в основном приближает ваш доход. В памяти вы храните кортежи с помощью (s, a, s ', r) и заново обучаете свою Q-функцию этим кортежам. Если для данного кортежа вы работали хорошо (вы быстро достигли флажка), то вы собираетесь снова испытать его, повторно используя кортеж для тренировки, потому что Q-функция выше для этого кортежа.

Во всяком случае, обычно опыт воспроизведения работает лучше для любой проблемы, а не только для горной машины.

...