Как стать автором
Обновить
0
Питерская Вышка
Не для школы, а для жизни

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

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

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



О себе


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

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

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




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

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

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

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

Окружение


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

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

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

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


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

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

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



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

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


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

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

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


Becker Alan. Animating Walk Cycles – 2010

ProcrastinatorPro. QWOP Speedrun – 2010

ShvetsovLeonid.HumanSpeedrun – 2015

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

$PF1: dx+dy$


$PF2: \sqrt {dx^2+dy^2}$


$PF3: dx^2+dy^2$


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

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



Результаты


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


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



Отдельно хочется отметить следующий важный результат: нам удалось теоретически доказать, что вознаграждение, основанное на потенциальной функции, не ухудшает оптимальную политику. Для того, чтобы продемонстрировать это преимущество в данном контексте, мы использовали субоптимальный агент, сгенерированный базовым агентом после 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 я получила удовольствие от общения с учеными и почерпнула много новых идей. Количество интересных статей, с которыми я познакомилась за эти несколько дней, было больше, чем за четыре предыдущих года. Сейчас в мире есть «хайп» на машинное обучение, и каждый день в интернете появляются десятки новых статей, среди которых очень сложно найти что-то стоящее. Именно за этим, как мне кажется, стоит ездить на конференции: находить коммьюнити, которые обсуждают новые интересные темы, узнавать о новых идеях и делиться своими. И заводить друзей!
Теги:
Хабы:
Всего голосов 42: ↑39 и ↓3+36
Комментарии14

Публикации

Информация

Сайт
spb.hse.ru
Дата регистрации
Дата основания
1998
Численность
201–500 человек
Местоположение
Россия
Представитель
Павел Киселёв

Истории