Редкие и двоичные вознаграждения

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

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

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

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

Многоцелевой RL

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

Где «a» - это действие-кандидат, а «s» - текущее состояние.

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

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

В своей статье Воспроизведение опыта задним числом исследователи из OpenAI приводят простой пример такой проблемы. Предположим, у нас есть состояние, состоящее из вектора двоичных чисел (0–1), и мы хотим обучить агента достигать любого заданного двоичного вектора цели. Возможные действия - переключать один бит каждый раз, с наградой -1 за каждый временной шаг, на котором цель не была достигнута. очевидно, что если мы установим размер векторов состояния и цели достаточно большими, у нас не будет никакой надежды на решение этой проблемы с помощью обычных методов. Вероятность случайного переключения битов и как-то наткнуться на желаемый вектор цели крайне маловероятна, и даже при использовании специализированных методов исследования (вроде того, о котором я писал в предыдущей статье) мы, скорее всего, потерпим неудачу, поскольку каждый вектор цели вроде совсем другая проблема для этих методов. Пространство государственных целей слишком велико. Авторы демонстрируют, что с DQN максимальный размер решаемого вектора равен 13, после чего вероятность успеха резко падает до нуля.

Повторение ретроспективного опыта - уроки неудач

Обучение вне политики

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

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

В RL мы пытаемся изучить политику, которая максимизирует ожидаемое совокупное вознаграждение с учетом распределения начальных состояний. Мы изучаем политику, взаимодействуя с окружающей средой путем проб и ошибок, и используем собранные в процессе данные для улучшения нашей политики. Но некоторые алгоритмы RL могут изучать политику на основе данных, собранных другой политикой. Эта другая политика регистрирует ее взаимодействие с окружающей средой, и наш алгоритм обучения может использовать это, чтобы вывести потенциально лучшую политику. С этого момента я буду называть политику, которую мы пытаемся изучить, просто политикой, а другую - политикой исследования. Цель политики исследования состоит в том, чтобы исследовать достаточное количество пространства состояния-действия, чтобы наш алгоритм обучения мог сделать вывод о том, какие действия следует предпринять в различных состояниях. Классическими примерами внеполитических алгоритмов обучения являются DQN (Deep-Q-Network) и DDPG (Deep Deterministic Policy Gradient). Эти алгоритмы могут изучать значение пар состояния-действия при данных, собранных политикой исследования.

Напротив, алгоритмы обучения On-Policy должны полагаться только на данные, собранные той же политикой, что и изученная, что означает, что они не могут использовать исторические данные, собранные другой политикой, включая более старые версии самих себя (до Например, обновление SGD для нейронной сети). Типичными примерами алгоритмов обучения на основе политики являются различные методы градиента политики, такие как REINFORCE и A3C (Asynchronous Advantage Actor-Critic).

Повтор задним числом

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

Как мы видели, данные в буфере воспроизведения опыта могут происходить из политики исследования, что открывает интересную возможность; что, если бы мы могли добавить вымышленные данные, представив, что произошло бы, если бы обстоятельства были другими? Это именно то, что на самом деле делает Hindsight Experience Replay (HER).

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

где r с индексом k - это награда, полученная на шаге k серии, а a с индексом k - действие, совершенное на шаге k эпизода. Идея HER состоит в том, чтобы представить, что наша цель на самом деле была S 'все время, и что в этой альтернативной реальности наш агент успешно достиг цели и получил за это положительное вознаграждение. Итак, помимо кэширования реальной траектории, как было показано ранее, мы также кэшируем следующую траекторию:

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

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

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

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

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

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

Это очень элегантный и простой метод решения сложной и важной проблемы во многих приложениях RL. Ознакомьтесь с бумагой. Я реализовал эксперимент с переворачиванием битов с использованием HER и, кроме того, использовал HER для обучения агента навигации в среде 2D Gridworld, не стесняйтесь взглянуть.