Хабрахабр

NeurIPS: как покорить лучшую конференцию по ML

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

Ежегодно запускается порядка 10 дорожек, для решения актуальных проблем академического мира. NeurIPS поддерживает внедрение методов машинного обучения в различных научных дисциплинах. Больше всего я увлечен обучением с подкреплением (Reinforcement Learning или RL), поэтому вот уже второй год участвую в RL-конкурсах, приуроченных к NeurIPS. По результатам соревнований победители выступают на самой конференции с докладами, новыми разработками и алгоритмами.

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

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

Кроме того, вся конференция наполнена последними научными достижениями и state-of-the-art результатами, знать и следить за которыми людям из области data science крайне важно.

Если разбираешься в DL настолько, что можешь дообучить ResNet –– этого достаточно: регистрируйся и вперед. Начать участвовать в подобных конкурсах довольно просто. А если что-то непонятно –– всегда есть каналы в slack/discord/gitter/etc для обсуждения всех возникающих вопросов. Всегда есть публичный лидерборд, на котором можно трезво оценить свой уровень по сравнению с остальными участниками. Если тема действительно “твоя”, то от получения заветного результата ничего не остановит –– во всех конкурсах, в которых я участвовал, все подходы и решения были изучены и реализованы прямо в процессе соревнования.

Проблематика

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

Постановка задачи

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

Симулятор выдавал нам некоторое состояние скелета S (вектор из ~400 чисел). Для получения виртуальной модели управления скелетом предлагалось использовать reinforcement learning. По ходу симуляции скелету выдавалась награда R – как некая константа минус штраф за отклонение от заданной скорости и направления. Требовалось предсказать, какое действие A необходимо совершить (силы активации мышц ног –– вектор из 19 чисел).

Про обучение с подкреплением

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

Повторяете какое-то действие, за выполнение трюка даете вкусняшку, за невыполнение – не даете. Вспомним, как обучают котика собачку новым трюкам. Собачке во всем этом следует разобраться и найти стратегию поведения (“политику” или “policy” в терминах RL), которая максимизирует количество получаемых вкусяшек.

При этом среда, оценивая действия агента, предоставляет ему награду (вкусняшку) – чем лучше поведение агента, тем больше и награда. Формально у нас есть агент (собачка), который обучается по истории взаимодействий со средой (человеком). Соответственно, задача агента – найти политику, которая хорошо максимизирует награду за все время взаимодействия со средой.

0, когда все правила задавались разработчиком, supervised learning – тот самый software 2. Развивая эту тему дальше, rule-based solutions – software 1. Чем дальше мы идем, тем лучше пытаемся повторить то, как обучается сам человек. 0, когда система обучается сама по имеющимся примерам и находит зависимости в данных, reinforcement learning – шаг чуть дальше, когда система сама учится исследовать, экспериментировать и находить требуемые зависимости в своих решениях.

Особенности задачи

От обычного RL отличается тем, что вместо выбора какого-то конкретного действия (нажатия на кнопку джойстика), требуется это действие точно предсказать (а возможностей тут бесконечно много). Задание выглядит типичным представителем обучения с подкреплением для задач с непрерывным пространством действий (RL for continuous action space).

Улучшать есть что: робастность подходов (чтобы не сломать реального робота), sample efficiency (чтобы не собирать данные с реальных роботов месяцами) и другие проблемы RL (exploration vs exploitation trade-off, etc). Базовый подход к решению (Deep Deterministic Policy Gradient) был придуман еще в 2015 году, что довольно давно по меркам DL, область продолжает активно развиваться в применении к робототехнике и real-world RL applications. В этом соревновании реального робота нам не давали – только симуляцию, зато сам симулятор был в 2000 раз медленнее Open Source аналогов (на которых все и проверяют свои RL алгоритмы), а потому выводил проблему sample efficiency на новый уровень.

Этапы соревнования

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

  • 1 этап: скелет учился ходить прямо со скоростью 3 метра в секунду. Задача считалась выполненной, если агент пройдет 300 шагов.
  • 2 этап: менялись скорость и направление с регулярной частотой. Длина дистанции увеличилась до 1000 шагов.
  • 3 этап: финальное решение нужно было упаковать в docker-образ и отправить на проверку. Всего можно было сделать 10 посылок.

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

Финальное решение требовалось прислать в виде docker-образа. Во время 1-го и 2-го этапа прогресс каждого участника отображался на лидерборде. В нем были предусмотрены ограничения на время работы и ресурсы.

Coolstory: public leaderboard and RL

Из-за доступности лидерборда никто не показывает свою лучшую модель, чтобы в финальном раунде выдать “чуть больше обычного” и удивить соперников.

Почему так важны docker-образы

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

Команда

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

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

Во-первых, можно вступить в ряды ods и поискать единомышленников там. Как найти команду? В-третьих, можно пройти замечательный курс от ШАД – Practical RL, по окончании которого уж точно обзаведешься парочкой знакомых. Во-вторых, для RL-fellows есть отдельный чатик в телеграмме – RL club.

Если хотите объединяться – сначала получите свое решение, засабмитьте, появитесь на лидерборде и покажите свой уровень. Стоит, однако, помнить о политике “сабмит – или не было”. Как показывает практика, такие команды получаются куда более сбалансированными.

Мотивация

Это значит, что область не просто тебе нравится, но вдохновляет тебя – ты горишь ею, ты хочешь стать лучшим в ней.
Я познакомился с RL еще 4 года назад – во время прохождения Berkeley 188x — Intro to AI – и до сих пор не перестаю удивляться прогрессу в этой области. Как я уже писал, если тема “твоя” – то тебя ничего не остановит.

Систематичность

Каждый день. Третье, но столь же важное – надо уметь делать то, что ты обещал, вкладываться в соревнование каждый день и просто… решать его. Именно для этого и потребуется мотивация. Никакой врожденный талант не сравнится с умением делать что-то, даже по чуть-чуть, но каждый день. Чтобы преуспеть в этом, советую почитать DeepWork и AMA ternaus.

Time management

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

Overwork

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

Coolstory: deadline after deadline

Ответ довольно прост – перенос дедлайнов. Из-за чего вообще может понадобиться переработать на благо соревнования? В этом году соревнование продлевалось 3 раза: сначала на месяц, потом на неделю и в самый последний момент (за 24 часов до дедлайна) – еще на 2 дня. На таких соревнованиях организаторы часто не могут всего предугадать, из-за чего наиболее простым выходом является дать участникам больше времени. И если во время первых двух переносов нужно было просто правильно организовать дополнительное время, то на последних двух днях надо было просто пахать.

Theory

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

  • Continuous control with deep reinforcement learning – базовая статья по deep reinforcement learning для задач с непрерывным пространством действий.
  • Parameter Space Noise for Exploration – исследование о добавлении шума в веса агента для лучшего исследования среды. По опыту – одна из лучших техник для exploration в RL.

В этом году к ним прибавились еще “парочка”:

Practice

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

Coolstory: episode III

В качестве итоговой оценки решения выступала усредненная награда по 10ти тестовым эпизодам.

66), но один эпизод….эпизод 3 ему не давался (награда 9870). На графике представлены результаты тестирований нашего агента: 9 из 10 эпизодов наш скелет проходил просто отлично (среднее – 9955. Именно эта ошибка привела к падению итогового скора до 9947 (-8 пунктов).

Удача

Не стоит думать, что это противоречивый пункт. И напоследок – не стоит забывать о банальной удаче. Наоборот, немного везения сильно способствует постоянной работе над собой: даже если вероятность удачи всего 10%, человек, который попробовал поучаствовать в соревновании 100 раз преуспеет намного больше, чем тот, кто попробовал всего 1 раз и отказался от идеи.

Тогда я только закончил курс Practical RL в ШАДе и хотел проверить полученные навыки. В прошлом году наша команда — Михаил Павлов и я — участвовала в NeurIPS конкурсах в первый раз и основной мотивацией выступало просто участие в первом NeurIPS соревновании по reinforcement learning. На тот момент наше решение было “довольно простым” и основывалось на Distributed DDPG с parameter noise (публикация и выступление на ml.тренировках). В итоге мы заняли почетное третье место, уступив лишь nnaisene (Шмидхубер) и команде университета из Китая.

Во-первых, просто участвовать в этом соревновании уже не было желания, хотелось его выиграть. В этом году произошла пара изменений. Взять и выиграть – не получилось, но мы вновь заняли 3е место.
Наше решение официально будет представлено на NeurIPS, а сейчас ограничимся малым количеством подробностей. Во-вторых, состав команды тоже изменился: Алексей Гринчук, Антон Печенко и я. Взяв за основу решение прошлого года и успехи off-policy reinforcement learning этого года (статьи выше), мы добавили к этому ряд собственных наработок, о которых расскажем на NeurIPS, и получили Distributed Quantile Ensemble Critic, с помощью которого и взяли третье место.

RL после NeurIPS. Все наши наработки –– система распределенного обучения, алгоритмы и прочее будут опубликованы и доступны в Catalyst.

Coolstory: big boys – big guns

Однако у больших ребят были другие планы – за 2 недели до конца соревнования на конкурс зашли сразу 2 крупных игрока: FireWork (Baidu) и nnaisense (Шмидхубер). Наша команда уверенно шла на 1е место на протяжении всего конкурса. Как мне кажется довольно неплохо для любителей. И если с китайским гугл поделать ничего не удалось, то вот с командой Шмидхубера нам довольно долго удавалось честно бороться за второе место, уступив лишь с минимальным отрывом.

  • Связи. На конференцию приезжают топовые исследователи, с которыми можно пообщаться вживую, чего не дадут никакие email-переписки.
  • Публикация. Если решение занимает призовое место, то команду приглашают на конференцию (а может и не одну) для презентации своего решения и публикации статьи.
  • Предложение работы и PhD. Публикация и призовое место в такой конференции значительно повышают твои шансы на получение должности в таких ведущих компаниях как OpenAI, DeepMind, Google, Facebook, Microsoft.
  • Real world value. NeurIPS проводится для решения актуальных проблем академического и реального мира. Можно быть уверенным, что результаты не уйдут в стол, а действительно будут востребованы и помогут улучшить мир.
  • Драйв. Решать такие конкурсы… просто интересно. В условиях соревнования можно придумать много новых идей, протестировать разные подходы – просто чтобы быть лучшим. И давайте будем честны, когда еще ты можешь погонять скелетов, поиграть в игры и все это с серьезным видом и ради науки?

Coolstory: visa and RL

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

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

RL, чего уж. И переходите на Catalyst.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть