Хабрахабр

Как я научила робота бегать по видео с YouTube

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

Если мы научимся понимать, как человек двигается, и сможем воспроизводить его движения «по образу и подобию» — это сильно облегчит внедрение роботов во многие области. Смоделировать все возможные движения человека и описать все сценарии поведения — достаточно сложная задача. Как раз для того, чтобы роботы учились повторять и анализировать движения сами, и применяется машинное обучение.

О себе

Меня зовут Александра Малышева, я выпускница бакалавриата по направлению «Прикладная математика и информатика» Санкт-Петербургского Академического университета, а с осени этого года — студент первого курса магистратуры Питерской Вышки по направлению «Программирование и анализ данных». Кроме того, я работаю в лаборатории «Агентные системы и обучение с подкреплением» JetBrains Research, а также веду занятия — лекции и практики — в бакалавриате Питерской Вышки.

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

Описание задачи

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

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

Например, оценить прохождение длинной дистанции мы можем только в случае, когда агент достиг финиша. Как было верно отмечено в предыдущей статье, основная проблема при переходе от выдуманных/простых задач к реальным/практическим задачам состоит в том, что награды в таких задачах, как правило, очень редки. Решить эту проблему можно, дав агенту на старте примеры того, как «нужно играть» — так называемые демонстрации экспертов. Для этого ему нужно выполнить сложную и правильную последовательность действий, что получается далеко не всегда.

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

Окружение

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

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

Таким образом, с одной стороны, нужно за определенное время пройти как можно дальше, а, с другой стороны, сделать так, чтобы мышцы как можно меньше «работали». Награда рассчитывается как изменение положения таза вдоль оси x за вычетом штрафа за использование связок. Эпизод обучения оканчивается в случае, если достигнуто либо 1000 итераций, либо высота таза ниже 0,65 метра, что означает падение модели человека.

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

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

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

Для этого мы применили несколько хитростей:

  • Для начала было необходимо адаптировать среду OpenSim для того, чтобы можно было эффективно использовать алгоритмы обучения с подкреплением. В частности, в описание окружающей среды мы добавили двумерные координаты положений частей тела относительно таза.
  • Было увеличено количество примеров прохождения дистанции за счет симметричности среды. В изначальном положении агент стоит абсолютно симметрично относительно левой и правой стороны тела. Поэтому после одного прохождения дистанции можно добавлять сразу два примера: тот, который произошел, и зеркально симметричный относительно левой или правой стороны тела агента.
  • Для увеличения скорости работы алгоритма был реализован пропуск фреймов: запуск алгоритма выбора следующего действия агента производился только каждую третью итерацию, в остальных случаях повторялось последнее выбранное действие. Таким образом, количество итераций запуска алгоритма выбора действия агента сократилось с 1000 до 333, что уменьшило количество требуемых вычислений.
  • Предыдущие модификации заметно ускорили обучение, однако процесс обучения все еще происходил медленно. Поэтому было дополнительно реализован метод ускорения, связанный с уменьшением точности вычислений: тип используемых значений в векторе состояния агента был изменен с double на float.

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

Так при чем тут YouTube?

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

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

Мы рассмотрели три источника данных:

Animating Walk Cycles – 2010

ProcrastinatorPro.
Becker Alan. HumanSpeedrun – 2015 QWOP Speedrun – 2010

ShvetsovLeonid.

… и три разных функции расстояния:

$PF1: dx+dy$

$PF2: \sqrt $

$PF3: dx^2+dy^2$

Здесь dx (dy) — абсолютная разница между координатой x (y) соответствующих частей тела, взятых из видеоданных и координата x (y) агента.

Ниже приведены результаты, полученные при сравнении различных источников данных для потенциальной функции на основе PF2:

Результаты

Сравнение производительности между базовым уровнем и подходом к формированию вознаграждения:

Конечный результат через 24 часа по-прежнему показывает значительное преимущество подхода с использованием метода потенциальных функций. Оказалось, что формирование вознаграждения значительно ускоряет обучение, достигая удвоенной скорости за 12 часов обучения.

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

Первые шаги в науке

Дипломный проект я закончила довольно рано. Хочется отметить, что у нас к защите диплома подходят очень ответственно. Уже с сентября студенты знают тему, критерии оценки, что и когда стоит делать. Когда все настолько ясно, очень удобно работать, не возникает ощущения «у меня целый год впереди, могу начать делать со следующей недели/месяца/полугодия». В итоге, если работать эффективно, можно получить конечные результаты дипломной работы уже к Новому году, а оставшееся время потратить на настройку модели, сбор статистически значимых результатов и написание текста диплома. Именно так произошло и со мной.

Единственное, что мне нужно было сделать — перевести и переупаковать дипломную работу. За два месяца до защиты диплома у меня уже был готов текст работы, и мой научный руководитель, Алексей Александрович Шпильман, предложил написать статью на Workshop on Adaptive and Learning Agents (ALA) at ICML-AAMAS. Это была моя первая публикация и я была безумно рада, когда увидела у себя на почте письмо со словом «Accepted». В итоге мы отправили статью на конференцию и… ее приняли! К сожалению, в это же время я стажировалась в Южной Корее и не смогла лично присутствовать на конференции.

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

Написать статью на workshop хорошо, но на main track — лучше

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

И, конечно, я была очень рада, когда узнала, что статью приняли! Написать статью на воркшоп хорошо, но на main track — лучше. Огромным бонусом стала возможность познакомиться с Сингапуром. Более того, наши коллеги и спонсоры из JetBrains согласились оплатить мою поездку на конференцию.

Когда билеты были уже куплены, отель забронирован и мне оставалось только получить визу, на почту пришло письмо:

Оказывается, посольство Сингапура не принимает к рассмотрению заявления от незамужних и безработных девушек до 35 лет. Мне не выдали визу при том, что у меня были документы, подтверждающие выступление на конференции! И даже если девушка работает, но не замужем, шанс получить отказ все еще очень велик.

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

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

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

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

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

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

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

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

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