Часть 1: Вихревой тур по RL

"О нет." Я слышу, как вы говорите, когда нажимаете на другой пост, который призван научить вас обучению с подкреплением. — Не другой.

Что ж, извините за разочарование, но добро пожаловать в еще одну одиссею по чудесному миру обучения с подкреплением. Однако на этот раз ваш хозяин так же невежественен, как и вы!

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

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

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

Текст в основном представляет собой более красивую версию заметок, которые я делал, просматривая лекции на YouTube и читая Саттон и Барто, канонический учебник по RL.

Что касается структуры, то я буду следить за Лекциями Дэвида Сильвера почти поминутно. Я также s̶t̶e̶a̶l присвою некоторые (или все?) изображения, используемые в его слайдах.

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

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

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

Итак, без лишних слов, приступим.

Постановка проблемы: что такое RL?

Обучение с подкреплением (RL) — это область машинного обучения, вдохновленная бихевиористской психологией и связанная с тем, как программные агенты должны действовать в среде, чтобы максимизировать некоторое представление о накопительное вознаграждение.

Википедия

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

Награды

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

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

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

Рассмотрим в качестве примера задачу RL: роботу поручено перемещаться по лабиринту. Скажем, робот получает вознаграждение -1 за каждый шаг, который он делает не у цели (конец лабиринта), и +0 за достижение цели. Если бы агент должен был получить максимально возможную сумму вознаграждения, он неявно вышел бы из лабиринта за минимально возможное количество шагов. Учитывая, что максимальное вознаграждение в этом случае — отрицательное число, но это довольно распространенное явление.

Окружающая среда

«Окружающая среда» часто упоминается в следующих разделах, поэтому важно отличать среду от других понятий, занимающих центральное место в проблеме RL.

Среда — это физическое (или виртуальное) пространство, в котором действует агент. Взять, к примеру, знаменитых игровых агентов Atari: средой будет сам игровой эмулятор со всем его внутренним кодом и игровой логикой. Другой пример: среда беспилотного автомобиля — это реальный мир со всеми вытекающими отсюда сложными физическими явлениями.

Агент не контролирует окружающую среду. Для всех намерений и целей среда является черным ящиком для агента.

Наблюдения

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

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

В случае беспилотного автомобиля наблюдения агента могут быть числовыми показаниями различных датчиков, установленных на автомобиле (ЛИДАР, GPS, камеры и т. д.).

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

Агенты

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

Поскольку агент и все его компоненты, по сути, являются единственными частями проблемы RL, находящимися под контролем разработчика, нам особенно важно понять его структуру.

Эти 4 элемента: Агенты, Окружающая среда, Наблюдения и Вознаграждения — лишь некоторые из элементов, необходимых для решения проблемы RL. Копание глубже потребует строгой математической основы, с помощью которой можно решить проблему в целом, поэтому давайте начнем говорить о математике.

Состояния и марковское свойство

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

Историяпары агент/среда включает все наблюдения, вознаграждения и действия, созданные до определенного момента времени. Естественно, это означает, что история содержит всю информацию, доступную агенту за время его существования.

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

Состояние можно рассматривать как с точки зрения среды (состояние среды), так и с точки зрения агента (состояние агента).

Состояние среды — это частное, внутреннее представление среды о ее собственной истории. Например: состояние среды эмулятора Atari — это все 1024 бита данных, управляющих внутренней логикой игры. Этот набор чисел, наряду с любым действием, которое выбирает агент, полностью характеризует следующий шаг, который предпримет среда, и, таким образом, какое наблюдение и награда будут предоставлены агенту следующим.

Состояние среды обычно невидимо для агента. Например, в примере с Atari агент работает на основе скриншотов, а не напрямую на 1024 битах внутри эмулятора.

В случае беспилотного автомобиля окружающей средой будет весь физический мир. Состояние окружающей среды в этом примере содержит все о физическом мире, от характера ветра в Миннесоте до уровня прилива в Коста-Рике. Все возможные следующие конфигурации реального мира определяются текущим значением этих атрибутов. Однако для беспилотного автомобиля в Сан-Франциско ни один из этих атрибутов не имеет значения (не говоря уже о том, что его почти невозможно собрать или с ним работать), поэтому он работает с наблюдениями, полученными из его локальной среды с помощью его датчиков.

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

Эти определения состояния довольно абстрактны и мало что говорят нам о формальных свойствах состояния. Так что более математическое определение состояния было бы полезно.

К счастью, математики начала 20-го века были довольно умны, так что нам не нужно заглядывать слишком далеко.

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

Итак, чтобы выполнить эти условия, мы требуем, чтобы состояния были состояниями Маркова, обладающими свойством Маркова:

Который гласит: «Состояние является марковским тогда и только тогда, когда распределение вероятностей по следующим состояниям при заданном текущем состоянии равно распределению вероятностей по следующим состояниям при заданных всехпредыдущих состояниях. ”

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

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

Видеть? Типа тавтологичен.

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

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

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

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

В сторону: В лекции уже есть отличный пример того, почему выбор состояния агента важен в частично наблюдаемой среде, поэтому я рекомендую обратить на это внимание. Пример длится около 3 минут и начинается в 47:55.

Анатомия агента обучения с подкреплением

Остается вопрос: как агент использует свое состояние для принятия решений? Какие внутренние компоненты агента делают этот анализ возможным?

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

Политика

«Какие действия я должен предпринять в этом состоянии?»

Политика агента — это функция, которая отображает состояния в действия.

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

Значение Функция

«Если я буду действовать таким образом, насколько хорошо я сейчас нахожусь?»

«Если я поступаю иначе, насколько хорошо это действие, когда я нахожусь в этом состоянии?»

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

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

Чтобы получить интересное представление о функции стоимости в действии, посмотрите Раздел прогнозирования стоимости итогового видео OpenAI об их боте (ах) Dota.

Модель

«Что будет дальше, если я это сделаю?»

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

Модель также может предсказывать вознаграждение с учетом пары состояний и действий.

Классификация типов агентов

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

Агент может быть основан на политике, изучая политику напрямую, не изучая функцию значения.

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

Или агент может быть актером-критиком, имея как изученную политику, так и функцию оценочного значения для этой изученной политики.

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

Вывод

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

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

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