Эффекты скользкости в среде OpenAI FrozenLake

Вопрос или проблема

Я пытаюсь разобраться в эффектах 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 значительно увеличивает сложность задачи обучения, поскольку она вводит элемент случайности и неопределенности в процесс принятия решений агента. Изучение оптимальных стратегий в таких условиях требует более продвинутых алгоритмов, способных справляться с шумностями и условиями стохастичности. Понимание этих нюансов позволит разработчикам создавать более адаптивные и эффективные модели для работы в сложных средах с высокой степенью неопределенности.

Оцените материал
Добавить комментарий

Капча загружается...