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

    Мы продолжаем рассказывать о совместных научных проектах наших студентов и 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 я получила удовольствие от общения с учеными и почерпнула много новых идей. Количество интересных статей, с которыми я познакомилась за эти несколько дней, было больше, чем за четыре предыдущих года. Сейчас в мире есть «хайп» на машинное обучение, и каждый день в интернете появляются десятки новых статей, среди которых очень сложно найти что-то стоящее. Именно за этим, как мне кажется, стоит ездить на конференции: находить коммьюнити, которые обсуждают новые интересные темы, узнавать о новых идеях и делиться своими. И заводить друзей!
    Питерская Вышка
    98,00
    Компания
    Поделиться публикацией

    Комментарии 14

      +2

      Поздравляю!


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


      Мне один момент в начале не понятен. Вы пишете


      с осени этого года — студент первого курса магистратуры Питерской Вышки по направлению «Программирование и анализ данных». Кроме того <...> веду занятия — лекции и практики — в бакалавриате Питерской Вышки.

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

        +2
        Здравствуйте,
        Ситуация с Сингапуром меня тоже очень удивила. Как я поняла, в этой стране еще очень много стереотипов, поэтому они редко выдают визы незамужним девушкам.

        Практики — это помощь преподавателю в проверке домашних и практических работ; лекции — у нас есть возможность объявлять факультативные курсы по выбору, один из которых я и планирую провести. Речь не идет, конечно же, о том, что я веду у бакалавров лекции из основной сетки.
          +1
          Интересно, с чем это связано.

          скорее всего — 1) чтобы не было «импорта» невест, и 2) нелегальных хмхм эскорт-услуг.
          А конференция попала в список блокирования — чтобы не было исключений…
          +5
          Спасибо за статью. Интересно. Но ожидал увидеть видео вашего бегающего «робота».
            0
            Написано не очень понятно и стиль так себе.
            Потенциальные функции отдельных частей тела строились с использованием обратных расстояний между соответствующей координатой части тела в видеогенерированных данных и робота-гуманоида.
            То есть чем больше похоже на видео, тем лучше?
              0
              Плюсую. Сыро и популистично. Почему Simbody? Почему три формулки на такую математичную работу? Ни строчки кода ни боле менее серьезного уравнения. Но главное — причем тут картинки бегунов? За начальный алгоритм сгодилось бы и тупое передвижение ногами. А если еще и обратную связь добавить от «гироскопа» — то такая модель и 5 метров запросто бы прошла и даже похоже на пьяного робота.
              JetBrains Research это спонсирует? Мне хочется думать что просто плохая статья и в работе все это есть.
                +1
                Здравствуйте,

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

                Теперь отвечу на вопросы, которые вы уже задали:

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

                Эмпирически заданные правила, такие как «тупое передвижение ногами», лишают модели возможности обучаться. Как я написала выше, было теоретически доказано, что вознаграждение, основанное на потенциальной функции, не ухудшает оптимальную политику. В то время как правила наподобие «соверши шаг левой ногой, затем правой» сильно ограничивают возможное поведение модели, из-за чего она не может найти оптимальную политику.
                  0
                  Не понятно все равно. Что такое политика? Набор временных функций? Итерации естесственно по времени? Как зависит результат от выбора шага по времени? Почему вы говорите что вознаграждение стало основанно на потенциальной функции, предыдущее вознаграждение по пройденному расстоянию не работают в этом случае? Как пройденное расстояние зависит от выбора видео? Если вознаграждение определяет наилучший градиент на каждом шаге, то как быть с локальными максимумами и минимумами? Мы же меряем итоговое пройденное расстояние. Модель агента не имела массы выше таза? Что такое discount factor в статье, релаксационный параметр что-ли?
                    0
                    это самое современное окружение, которое моделирует все кости и связки в теле

                    Надо же… а мышцы моделирует? А что за параметры этих мышц? И что, вы там управляете каждой мышцей отдельно? Я просто понять не могу на чем акцент. Физический движок однозначно не самый лучший, к тому же полумертвый судя по датам на сайте. Карта скелета (кости, связки, мышцы) — тут вообще не физ движки надо смотреть а какие то медицинские ресурсы.

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


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

                    ссылки на публикации: вот и вот


                    Посморел, на пару формул больше. Там даже есть интеграл ).
                  0
                  То есть чем больше похоже на видео, тем лучше?
                  моя версия — т.к. «неправильно ходить» можно множеством способов, модель дополнительно штрафуется, если она ходит «не так как на видео» (или поощряется, если «похоже на видео, но все равно падает»)
                  +1
                  3-ий снизу график, легенда. Человек, вероятно, бегущий, а не бугещий?
                    0
                    Спасибо большое за комментарий, я не заметила :)
                    +1
                    Работа очень крутая. Не ожидала такого от Сингапура. Берите трек на NIPS)

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

                  Самое читаемое