Две недели назад, 13 ноября, наконец-то завершились одни из самых ярких соревнований в этом году. NIPS 2017: Учимся бегать было действительно интересно и сложно решить. Тем не менее, я и мой друг Михаил Павлов заняли 3-е место в финальном туре, и нас пригласили на конференцию NIPS. Более подробное описание вы можете прочитать в нашей статье или в исходном коде PyTorch / Theano.

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

О конкурсе

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

Моделирование

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

Состояние среды было представлено вектором R⁴¹ с координатами и скоростями различных частей тела и местоположениями препятствий.

В качестве действия агент должен выводить вектор R¹⁸ с активациями мышц, по 9 на каждую ногу, каждый в диапазоне [0, 1].

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

Моделирование заканчивается, если агент падает (таз y

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

Методы: алгоритмы включения и выключения политики

В качестве основы в этом конкурсе мы используем самые современные методы градиента политики RL, такие как Оптимизация политики доверительного региона (TRPO) и Оптимизация проксимальной политики (PPO). К сожалению, эти алгоритмы являются алгоритмами оптимизации на основе политики, которые могут только обновлять поведение агента в соответствии с политикой текущего агента.

Чтобы быть более конкретным, в этом методе оптимизации:

  • агент играет одну серию;
  • обновил свою политику в соответствии с этим эпизодом;
  • забудьте об этой серии;
  • и играет следующий.

Этот тип алгоритмов оптимизации хорошо работает во многих средах и симуляторах, таких как Mojoco или Roboschool. Но когда дело доходит до OpenSim…

Это почему?

Основная причина - скорость, OpenSim ~ в 2000 раз медленнее, чем Roboschool. Например, симуляция первого раунда достигает ~ 5–15 тактовых шагов в секунду, а финальный раунд был еще хуже: ~ 0,05–5 тактовых шагов в секунду.

Все это приводит нас к тому, что нам нужно что-то более эффективное с точки зрения выборки, что-то с воспроизведением памяти и возможностью обучения на основе всех данных из произвольных политик. И это было…

Глубокий детерминированный градиент политики (DDPG)

Или, как вы можете сказать, вариант DQN для пространственных сред непрерывного действия. DDPG состоит из сетей актеров и критиков. Критик обучается с использованием уравнения Беллмана и внеполитических данных:

где π - политика актора. Актер обучается максимизировать оценочные Q-значения критика путем обратного распространения через сети критиков и действующих лиц.

Но что действительно важно - он использует буфер воспроизведения. Да, среда по-прежнему очень медленная, но теперь у нас есть история.

DDPG хаки

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

Для разведки мы использовали процесс Орнштейна-Уленбека (OU) (Uhlenbeck and Ornstein 1930) для создания коррелированного во времени шума для эффективного исследования в физических средах.

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

Учимся ускоряться

Хорошо, у нас есть рабочий агент. Но как мы можем это улучшить? Вы только посмотрите на окружающую среду!

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

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

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

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

Последний агент

Объединив все это вместе, мы подходим к финальному этапу обучения.

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

3-е место решение

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

Тем не менее, по сравнению с политическими методами работает довольно хорошо.

Сравнение улучшений DDPG

После окончания соревнований мы также проверяли важность каждой модификации DDPG.

Как видите, наш последний метод очень хорошо справляется с этой средой.

Беги, скелет, беги!

Спасибо за чтение, время демонстраций!