В конце 2019 года были опубликованы Документы (1 и 2) Обучение с подкреплением вверх ногами Юргена Шмидхубера и Рупеша Кумара Шривастава и др. были опубликованы. Когда я начал читать их, их новый подход к изучению области обучения с подкреплением сразу же меня зацепил и заинтересовал.

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

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

Но сначала для тех, кто не знает об обучении с подкреплением вверх ногами, краткое введение…

Что такое перевернутое обучение с подкреплением (UDRL)

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

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

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

Учитывая функцию потерь L, оптимальная функция поведения B для набора траекторий τ определяется как:

Принимая во внимание, что len(τ) — длина любой траектории τ, d^r — желаемое вознаграждение, а d^h — желаемый горизонт до тех пор, пока желаемое не будет получено. В качестве функции потерь используется кросс-энтропия между наблюдаемым и прогнозируемым распределениями действий.

Как видите, основная концепция довольно проста. Для получения более подробной информации об алгоритме я буду ссылаться на статьи (1 и 2) или на среднюю статью коллеги-исследователя.

Базовая реализация

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

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

Как и в Paper, UDRL показал себя на удивление лучше в среде с разреженным вознаграждением. Вы также можете видеть, что мои результаты (2) показывают более высокую дисперсию полученного вознаграждения. Это связано с тем, что я выполнял только 10 оценочных прогонов каждые 50000 шагов из-за моей меньшей вычислительной мощности, а не 100, как авторы статьи.

Исследовательская работа

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

В обучении с подкреплением рекуррентные нейронные сети показали превосходство над сетями прямой связи не только для POMDP, но и для обычных MDP. Следовательно, разумным шагом для развития и улучшения UDRL является расширение алгоритма с долговременной кратковременной памятью.

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

Рекомендация теоретического документа для этого процесса казалась простой:

Но после реализации и во время тестовых прогонов я заметил, что это не работает так хорошо и не может сходиться в простой среде CartPole-v0 (Это не обязательно должно быть связано с теорией, но вполне может быть из-за неправильной реализации с моей стороны).

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

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

И снова версия UDRL с LSTM явно превзошла стандартную версию:

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

После этих результатов я захотел протестировать алгоритм сейчас для LunarLander-v2, более сложной среды, чем CartPole-v0.

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

Из-за этого я попробовал исходный метод выборки данных из статьи и другие методы — все безуспешно. Думая, что, возможно, среда не применима или вызывает проблемы с LSTM, которые я тестировал в других средах (Pendulum, Pong…). К сожалению, даже в этих средах у базовой версии UDRL были проблемы со сходимостью, и в большинстве случаев она давала сбой.

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

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

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

При этом, если вы заинтересованы в этом проекте, имеете некоторый опыт в области глубокого обучения и рекуррентных нейронных сетей или глубокого обучения с подкреплением и хотите принять участие или помочь мне в этом проекте, не стесняйтесь обращаться ко мне на GitHub | ЛинкедИн | Электронная почта.