Изучение динамических миров и способы борьбы с ними

Ссылки на серию:

  1. "Вступление"
  2. Многорукие бандиты | "Ноутбук"
  3. Нестационарный | "Ноутбук"
  4. Марковские процессы принятия решений | "Ноутбук"
  5. Уравнение Беллмана ч. 1

Добро пожаловать в третью статью из серии об обучении с подкреплением. В предыдущей статье мы исследовали первую серию из множества сценариев, которые мы собираемся решить, - Многорукие бандиты. В этой ситуации нам предоставляется среда с фиксированным количеством действий, и мы должны найти действие, которое принесет наибольшую награду. Мы представили несколько стратегий и измерили их эффективность при выполнении этой простой задачи.

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

Стационарные и нестационарные:

В прошлый раз мы начали наш рассказ о казино, полном бандитов в нашем распоряжении. Используя этот пример, мы создали упрощенную среду и разработали сильную стратегию получения высоких вознаграждений - ɛ-жадного агента. Используя эту стратегию, мы смогли найти лучшее действие за достаточно времени и, следовательно, заработать массу вознаграждения. Наш агент работал хорошо, потому что у него был хороший баланс между изучением окружающей среды и использованием своих знаний. Этот баланс позволял агенту узнавать, как ведет себя среда, а также получать высокие награды на этом пути. Но есть небольшое предположение, которое делает наш агент, чтобы вести себя так оптимально, а именно, что среда статична и не меняется. Что мы подразумеваем под этим и где наш агент делает такое предположение?

Стационарный

Когда мы упоминаем слово «стационарный», мы говорим о поведении, лежащем в основе нашего окружения. Если вы помните из прошлого раза, среда определяется как набор действий, которые при взаимодействии приносят случайную награду. Несмотря на то, что вознаграждение является случайным, оно генерируется из центрального или среднего значения каждого действия, которое мы назвали истинным значением. Чтобы понять, о чем я говорю, давайте взглянем на одно из анимированных взаимодействий, которые мы видели в предыдущей статье.

Обратите внимание на статичность истинных значений (красные точки). Несмотря на то, что среда генерирует случайные награды, каждое действие имеет истинное ожидаемое значение, которое никогда не меняется. Это серьезное предположение, за которым практически не последует никакой ценный реальный сценарий. Если бы, например, наша аналогия с казино была статичной, то казино быстро прекратили бы свою деятельность! Итак, как мы можем изобразить более реалистичный сценарий, не усложняя проблему?

Нестационарный

Сделать сценарий многорукого бандита нестационарным на самом деле довольно просто, все, что нам нужно сделать, это убедиться, что ожидаемое значение для всех наших действий всегда меняется. Теперь это изменение не должно быть полностью случайным, поскольку ни одна стратегия не сможет справиться с полностью случайным сценарием. Вместо этого мы хотим, чтобы ожидаемое значение медленно уходило. Это сделано для того, чтобы наш агент мог по-прежнему учитывать предыдущий опыт для принятия решений в будущем. Вот как мы можем реализовать такую ​​среду

Есть небольшие изменения. Теперь каждый раз, когда наш агент взаимодействует с окружающей средой, истинное значение каждого действия изменяется на небольшую случайную величину. Насколько оно меняется, можно контролировать, когда мы создаем среду. Это так, чтобы мы могли поэкспериментировать с этим позже. Как сейчас себя ведет окружающая среда? Мы можем сделать ту же визуализацию, что и раньше, но в нашей новой среде. Поскольку нас не интересует агент, мы не будем строить график его взаимодействия (пока).

Предыдущий график был создан с довольно большим количеством нестационарных объектов для иллюстрации. Обратите внимание, что в некоторых случаях наиболее ценное действие изменяется из-за случайных перемещений. Поскольку нас интересует агент, который ведет себя как можно более оптимально, мы ожидаем, что агент сможет наблюдать за этими изменениями и действовать соответствующим образом.

Текущее представление

Объявив нашу новую среду, давайте посмотрим, как здесь работает ɛ-жадный агент. Зная, что у нашего агента есть пространство для исследования, это только вопрос времени, когда агент заметит, что среда изменилась.

Чтобы сделать визуализацию более понятной, я добавил несколько цветов, чтобы показать, какое действие имеет наибольшее значение (оранжевая точка) и какое действие агент считает лучшим (синяя полоса). Для этой анимации количество прошедшего времени было увеличено до 800 шагов. Сначала агенты могут быстро адаптироваться к изменениям в окружающей среде, но через некоторое время расчетные значения стагнируют и имеют тенденцию к медленному изменению. Это затрудняет отслеживание изменений в будущем и заставляет агента дольше оставаться на неоптимальном действии. Как всегда, давайте посмотрим на график оптимальности этой стратегии, усреднив результаты многих экспериментов.

Как мы видим, сначала наш агент быстро адаптируется к среде, но с течением времени его производительность начинает снижаться. Несмотря на то, что наш агент всегда накапливает опыт и постоянно исследует окружающую среду, кажется, что он не может справиться с динамичным миром. Как мы можем гарантировать, что наш агент еще больше адаптируется к изменениям в будущем?

Проблема с правилом обновления

Вернувшись к предыдущей статье, мы раскрыли способ, с помощью которого мы можем легко оценить, насколько важно принять меры в сценарии многорукого бандита. Эта оценка была сделана с использованием базового среднего значения, которое сходится к ожидаемой ценности действия через заданное время. Если вы когда-либо имели дело со средним значением, вы должны знать, что чем больше элементов вы добавите к операции, тем надежнее будет результат. Допустим, мы хотим взять среднее значение из списка из трех значений:

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

Если вместо этого мы будем использовать больший список значений, то такое же изменение на входе вызовет меньшее изменение на выходе.

Подводя итог, можно сказать, что чем больше информации у нас есть для расчета среднего, тем меньше вероятность отклонений или отклонений в результате. Этот эффект также можно увидеть в правиле инкрементного среднего обновления, которое мы реализовали ранее:

Выражение 1 / n вызывает тот же эффект, учитывая, что по мере увеличения n , значение Q изменяется все меньше и меньше. Это то, что заставляет нашего агента застаиваться. Когда накоплено достаточно опыта, очень сложно заставить нашего агента адаптироваться и изменить свое мнение. Чтобы исправить это, мы должны изменить правило обновления, чтобы последующий опыт не отбрасывался и не игнорировался.

Общее правило обновления

Те, у кого есть некоторый опыт или знания в области машинного обучения в целом, возможно, уже видели закономерность, лежащую в основе правила обновления, представленного выше. Если нет, позвольте мне дать краткое объяснение:

Как правило, для обучения модели машинного обучения мы используем меру, называемую функцией ошибки или потери. Это измерение определяет, насколько производительность нашей модели отличается от ожидаемых результатов. Чтобы улучшить нашу модель, мы обновляем ее параметры, перемещая их против ошибки. Насколько нам следует переместить или изменить наши параметры? Это определяется скоростью обучения. Вот слишком упрощенная демонстрация вышеприведенного утверждения.

Знакомо, правда? h (x) представляет результат нашей модели, а α - скорость обучения. Это сильно упрощенная версия градиентного спуска, который является стандартным методом улучшения модели в большинстве задач машинного обучения. Если интересно по этой теме, я думаю, что это отличная статья о градиентном спуске.

Сравнивая правило возрастающего среднего обновления и градиентный спуск, наша интуиция могла бы сказать, что 1 / n эквивалентно скорости обучения α, и это было бы правильно. Таким образом, мы можем изменить используемое нами правило обновления на более общую версию.

Что это значит? Что ж, теперь мы можем определить α как любое другое, кроме 1 / n. Использование константы для скорости обучения - простой, но эффективный метод, используемый в других парадигмах машинного обучения, поэтому мы могли бы попробовать его и здесь. Реализуем нашего нового агента!

Мы основываем нашу новую реализацию на ɛ-жадном агенте. Есть небольшие изменения. Во-первых, мы добавляем новый параметр под названием ss_func, который позволяет нам при желании изменять функцию размера шага. По умолчанию эта функция возвращает значение 0,1, которое будет постоянным размером шага, используемым здесь. Кроме того, во время обновления оценок мы выполняем функцию ss_func и используем возвращаемое значение в качестве размера нашего шага. Чтобы прояснить ситуацию, следующая строка кода будет эквивалентна объявлению ɛ-жадного агента с использованием этой новой реализации.

Давайте посмотрим, как этот новый агент работает в нашем динамическом сценарии многорукого бандита по сравнению с предыдущей ɛ-жадной стратегией.

И вот так наш агент теперь может адаптироваться к динамичному миру! Используя постоянный размер шага (или скорость обучения), агент больше не будет стагнировать. Напротив, каждый новый опыт ценится одинаково, и поэтому можно преодолеть предыдущий опыт с помощью новых знаний.

Параметр размера шага:

В заключение я хочу вкратце рассказать об этом новом параметре α, о том, как он себя ведет и какие значения подходят для него. Мы уже видели, что значение 0,1 дает отличные результаты в этом сценарии, но как оно будет вести себя с другими значениями?

Параметр размера шага можно рассматривать как меру уверенности в новых знаниях. Высокое значение α аналогично тому, чтобы сказать, что мы полагаем, что наш недавний опыт хорошо отражает текущую проблему. Таким образом, параметр размера шага должен находиться в диапазоне от 0 до 1, где 1 - полная уверенность, а 0 - отсутствие уверенности в том, насколько репрезентативно предыдущее взаимодействие для понимания основной проблемы. Давайте посмотрим, как эти два значения влияют на результат обучения.

Уверенность 1 превратила бы наше правило обновления в следующее:

Здесь мы в основном говорим, что наши оценки должны равняться недавно полученной награде, без учета любого предыдущего опыта. Это сработает только в том случае, если мы знаем (или действительно уверены), что получаемое нами вознаграждение является детерминированным и стационарным. Поскольку в реальном мире это не так (поскольку взаимодействия обычно являются стохастическими, а те, которые не требуют обучения, обычно не требуют алгоритмов обучения), значение 1 для размера шага не следует рассматривать.

Доверие 0 аннулирует часть обновления нашего правила обновления:

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

Что касается других значений в диапазоне от 0 до 1, они определяют, насколько быстро или медленно наш агент реагирует на дисперсию и насколько быстро она будет сходиться. Значения, близкие к 1, быстро обновят оценочные значения и попытаются не отставать от изменений в окружающей среде, но это также будет восприимчиво к шуму. С другой стороны, для схождения небольших значений потребуется больше времени, и они будут медленнее реагировать на динамическую среду. Давайте сравним некоторые значения этого сценария.

Как и предполагалось, крайние значения не подходят для задачи, низкие значения сходятся медленнее, а более высокие значения сходятся быстрее. В отличие от других областей машинного обучения, в которых скорость обучения или размер шага влияют в основном на время сходимости и точность достижения оптимальных результатов, в обучении с подкреплением размер шага тесно связан с динамичностью среды. По-настоящему динамичный мир (который часто и быстро меняется) потребует высоких значений для размера нашего шага, иначе наш агент просто не будет достаточно быстрым, чтобы успевать за изменчивостью мира.

Заворачивать

В этой статье мы рассмотрели идею нестационарности и реализовали ее в сценарии Multi-Armed Bandit. Затем мы исследовали, как наш предыдущий участник, ɛ-жадный агент, действовал в этой новой ситуации, и выявили, что заставляет его вести себя ниже -оптимально. Затем, позаимствовав некоторые концепции из других областей машинного обучения, мы определили новый способ оценки наших действий. Это новое правило обновления допускало постоянный размер шага, что было ключом к решению проблемы нестационарности. Наконец, было продемонстрировано краткое объяснение того, как параметр размера шага влияет на результат обучения.

Эта статья была предназначена для того, чтобы затронуть несколько тем, которые были слишком длинными, чтобы их можно было добавить к предыдущей, но все же имели достаточную ценность, чтобы представить их в серии. Обобщенное правило обновления будет играть роль позже, и по этой причине его пришлось охватить. На этом мы можем попрощаться с Многоруким бандитом и затронуть другие темы. Следующая статья будет посвящена марковским процессам принятия решений (MDP) и заложит основу для знаменитого уравнения Беллмана. Эти две концепции составляют основу обучения с подкреплением, и их понимание может буквально измениться с точки зрения перспективы на мир. Тогда увидимся!

Ссылки на серию:

  1. "Вступление"
  2. Многорукие бандиты | "Ноутбук"
  3. Нестационарный | "Ноутбук"
  4. Марковские процессы принятия решений | "Ноутбук"
  5. Уравнение Беллмана ч. 1

Использованная литература: