Учитывая, что среда OpenAI Gym MountainCar-v0 ВСЕГДА возвращает -1.0 в качестве награды (даже когда цель достигнута), я не понимаю, как сходится DQN с повторением опыта, но я знаю этоделает, потому что у меня есть рабочий код , который доказывает это.Работая, я имею в виду, что когда я обучаю агента, агент быстро (в течение 300-500 эпизодов) учится решать проблему горных автомобилей.Ниже приведен пример от моего обученного агента.![enter image description here](https://i.stack.imgur.com/odrPU.gif)
Насколько я понимаю, в конечном итоге должна быть найдена "редкая награда".Тем не менее, насколько я вижу из кода OpenAI Gym , никакой награды, кроме -1, не бывает.Это больше похоже на среду без вознаграждения.
Что почти отвечает на мой вопрос, но на самом деле это не так: когда задача завершается быстро, возвращает (сумма наград)эпизод больше.Так что, если автомобиль никогда не найдет флаг, возврат -1000.Если автомобиль быстро обнаружит флаг, возврат может быть -200.Причина, по которой это не отвечает на мой вопрос, заключается в том, что при использовании DQN и воспроизведения опыта эти возвраты (-1000, -200) никогда не присутствуют в памяти воспроизведения опыта.Все, что имеет память, это кортежи в форме (состояние, действие, награда, next_state), и, конечно, помните, что кортежи извлекаются из памяти случайным образом, а не эпизод за эпизодом.
Еще один элемент этого конкретногоСреда OpenAI Gym состоит в том, что состояние «Готово» возвращается в двух случаях: нажатие на флаг (yay) или тайм-аут после некоторого количества шагов (boo).Тем не менее, агент рассматривает оба одинаково, принимая награду -1.Таким образом, что касается кортежей в памяти, оба события выглядят одинаково с точки зрения вознаграждения.
Итак, я не вижу в памяти ничего, что указывало бы на то, что эпизод прошел хорошо.
И поэтому я понятия не имею, почему этот код DQN работает для MountainCar.