Вопрос или проблема
Я пытаюсь разобраться в эффектах is_slippery
в среде open.ai FrozenLake-v0 .
Согласно моим результатам, когда is_slippery=True
, что является значением по умолчанию, решить задачу намного труднее, чем когда is_slippery=False
. Это занимает примерно 10K итераций для решения, когда is_slippery=True
, по сравнению с примерно 150 итерациями, когда is_slippery=False
.
Я использовал один и тот же метод кросс-энтропии для обоих случаев.
Теперь моя проблема заключается в том, чтобы понять реализацию из репозитория и то, как они смогли смоделировать шаги в среде таким образом, чтобы имитировать скользкость.
Это реализация из репозитория с различными способами выполнения шагов в зависимости от is_slippery
.
for row in range(nrow):
for col in range(ncol):
s = to_s(row, col)
for a in range(4):
li = P[s][a]
letter = desc[row, col]
if letter in b'GH':
li.append((1.0, s, 0, True))
else:
if is_slippery:
for b in [(a - 1) % 4, a, (a + 1) % 4]:
li.append((
1. / 3.,
*update_probability_matrix(row, col, b)
))
else:
li.append((
1., *update_probability_matrix(row, col, a)
))
Согласно документации в этом репозитории:
Однако, лед скользкий, поэтому вы не всегда будете двигаться в том направлении, которое намеревались.
Это подразумевает, что is_slippery
увеличивает шум. В частности, матрица переходов будет затронута. Имеет смысл, что вашему моделированию требуется больше времени для обучения, когда увеличивается шум между предполагаемым и фактическим действием.
Похоже, в этом примере много жестко закодированных чисел. Похоже, что человек с глубокими знаниями этой конкретной среды добавил константы для учета увеличения шума.
Возможно, более полезна следующая интуиция:
На самом поверхностном уровне абстракции, скользкость выключена, что означает, что среда детерминирована — оптимальная политика — это кратчайший путь. При включенной скользкости она становится стохастической — агенты, следующие детерминированной политике, начинают входить в циклы и скользить в ямы, которых они научились избегать. В этом случае оптимальная политика представляет собой комбинацию избегания падения в ямы и следования кратчайшему пути.
Флаг скользкости означает, что агент рискует двигаться в двух перпендикулярных направлениях, когда хочет перейти в следующее состояние. Рядом с ямой движение в сторону наибольшей награды приведёт к катастрофе (яме) в третий раз. Таким образом, оптимальная политика состояла бы в том, чтобы избегать ям, придавая приоритет одному безопасному направлению, обычно под прямым углом к наивысшей награде и напротив ямы. Однако это имеет только 1/3 шанса достичь следующего лучшего состояния на следующем шаге.
Обучение оптимальной политики в такой ситуации более сложная задача для некоторых алгоритмов RL, чем для других. Если память мне не изменяет, Expected SARSA должен быть лучше, чем Q-learning или DQN в данном контексте.
Ответ или решение
Влияние скользкости в среде OpenAI FrozenLake
Скользкость (is_slippery
) в среде FrozenLake от OpenAI — это важный параметр, который определяет уровень стохастичности (ошибки) в действиях агента. Стандартная версия этой среды позволяет изучить, как изменения в окружающей среде влияют на обучение и принятие решений в задачах управления с использованием методов глубокого обучения и усиленного обучения.
Определение скользкости в FrozenLake
При настройках is_slippery=True
среда становится случайной, что означает, что агент не всегда будет двигаться в том направлении, в котором он намеревался. Это создает дополнительную неопределенность в процессе обучения, так как идеальный маршрут к цели больше не является единственным – агент может случайно скользить в сторонние направления, что приводит к неожиданным результатам.
Это изменение можно наблюдать в коде источника, где в зависимости от состояния is_slippery
, определяется вероятность каждого действия. Когда параметр включен, для каждого действия агент имеет шанс получить одно из трех возможных направлений движения (влево, вправо и прямо), что приводит к увеличению вероятности запутаться и оказаться в ловушке на дне озера.
Влияние на обучение
В вашем эксперименте вы отметили заметное отличие в количестве итераций, необходимых для успешного завершения задач при разных значениях параметра is_slippery
. При is_slippery=True
вам потребовалось около 10 000 итераций, чтобы найти решение, тогда как при is_slippery=False
это число сократилось до 150. Это говорит о том, что случайные движения и возможность слиться в ловушку значительно усложняют задачу, так как оптимальная стратегия становится менее предсказуемой.
Такое поведение указывает на необходимость более сложных подходов к обучению. Например, алгоритмы, которые учитывают ожидания и стохастичность, такие как Expected SARSA, могут продемонстрировать лучшие результаты в условиях увеличенной шумности по сравнению с Q-learning или DQN, которые могут столкнуться с трудностями из-за неопределенности в действиях.
Стратегия оптимального поведения
С точки зрения стратегии, при включении скользкости, оптимальный подход заключается не просто в поиске кратчайшего маршрута к награде, а в том, чтобы избегать ловушек и сочетать два подхода: нахождение безопасных маршрутов и стремление к максимальному вознаграждению. Это, в свою очередь, влияет на то, как обучается агент и как он должен строить политику.
Допустим, агент находится рядом с ловушкой. Если он идет к награде, он может оказаться в ловушке в 1/3 случаев. Таким образом, оптимальная политика может требовать от него выбора безопасного направления, что также может оказаться рискованным из-за вероятности столкнуться с другими ненадежными состояниями.
Заключение
Скользкость в среде OpenAI FrozenLake значительно увеличивает сложность задачи обучения, поскольку она вводит элемент случайности и неопределенности в процесс принятия решений агента. Изучение оптимальных стратегий в таких условиях требует более продвинутых алгоритмов, способных справляться с шумностями и условиями стохастичности. Понимание этих нюансов позволит разработчикам создавать более адаптивные и эффективные модели для работы в сложных средах с высокой степенью неопределенности.