title: 'Применение машинного обучения в робототехнике'
---
## События
### Conference on Robot Learning
Крупнейшая мировая конференция по обучению роботов (в 2020 году опубликовано [160 докладов](https://corlconf.github.io/corl2020/all) и всё доступно для изучения)
### Columbia Artificial Intelligence and Robotics Lab
[Github](https://github.com/columbia-ai-robotics)
Проекты лаборатории:
#### Decentralized Multi-arm Motion Planner
Децентрализованный планировщик движений для ассамблей роботов манипуляторов. Планировщик обучен на 1-4 манипуляторах, но при этом показал свою работоспособность на произвольном количестве манипуляторов. То есть является масштабируемым.
В проекте использованы следующие python-библиотеки: PyTorch 1.6.0, pybullet, numpy, numpy-quaternion, ray, tensorboardX. Для визуализации симуляций в Blender одним из авторов была разработана библиотека [pybullet-blender-recorder](https://github.com/huy-ha/pybullet-blender-recorder). Доступны предварительно обученные модели.
#### AdaGrasp: Learning an Adaptive Gripper-Aware Grasping Policy
Разработка универсальной стратегии захвата для всех популярных моделей устройств механического захвата. Исследователи обучали модель на разных приспособлениях.
[Видео-обзор](https://www.youtube.com/watch?v=ub4ZyegbTSw) исследования по основным алгоритмам обучения с подкреплением
Используемое ПО: OpenAI Gym
Исследование проводилось на базе виртуальной среды [FetchReach-v1](https://gym.openai.com/envs/FetchReach-v1/) от OpenAI. [Обзор](https://openai.com/blog/ingredients-for-robotics-research/) решений для обучения роботов от OpenAI
Результат(в случае с манипулятором): DDPG показал крайне низкую производительность - достижение приемлемого результата к 600 эпохе обучения, остальные три намного лучше
### Liliana STAN, Adrian Florin NICOLESCU, Cristina PUPĂZĂ '2020 [pdf](https://journals.indexcopernicus.com/api/file/viewByFileId/1158070.pdf)
Машинное обучение для сборочных роботов. Обзор решений и подходов.
Вызовы обучения с подкреплением в робототехнике:
* Наличие большого количества степеней свободы у современных промышленных манипуляторов(6-7 DoF) приводит к т.н. "проклятью размерности" (взрывному росту числа возможных действий и состояний) и не позволяет использовать ряд алгоритмов. __Возможные способы решения:__ выбор алгоритмов, нечувствительных к проклятью.
* Необходимость в большом количестве данных для обучения и длительность обучения. Создание баз данных на реальных объектах очень затратно, долго по времени и небезопасно. __Возможные способы решения:__ создание проектов как [KnowRob](https://www.knowrob.org/) для сбора и аггрегирования данных многочисленных роботов в разных предметных областях, формирование баз данных.
* Проблема переноса алгоритмов обучения в другие среды и сценарии - _Transfer Learning_. Современные алгоритмы RL чувствительны к настройке гипер-параметров и требуют адаптации под каждый новый случай для достижения лучшей производительности.
* Обучение роботов в виртуальных средах способно компенсировать недостаток "реальных" данных, но оно чувствительно к недостаточной точности моделей как самого робота, так и его окружающей среды. Возникает проблема переносимости алгоритмов из симуляции в реальность - _Sim-to-Real Transfer_, выражающаяся в т.н. _Reality Gap_ - расхождении в поведении движков физики и реального мира. Возможные способы решения: добавление шума в модели окражующей среды; domain randomization - добавление большего количества вариантов сред.
* Проблема безопасности. В ходе обучение параметры робота (от условий окружающей среды и компонентов) могут изменяться и процесс обучения может не сойтись. __Возможный способ решения:__ использования низкоуровневых стратегий с использованием "мягких роботов"(?).
* Главный вызов в роботизации сборочных операций - надёжность, повторяемость, гибкость. __Возможные способы решения:__ использование иерархической декомпозиции задач (Hierarchical Task Decompositions) и переиспользования навыков (Skill Reusability), когда большая задача разбивается на несколько маленьких, которые потом проще переносить на новые задачи.
* Вычислительная ресурсоёмкость. Решается развитием CPU/GPU/FPGA, паралеллизацией и это делает RL-подходы более применимыми на практике.
Главные стимулы для использования RL в робототехнике:
* изучение задачам, которые не могут быть напрямую запрограммированы
* оптимизация сложные задач, которые не имеют аналитических решений (известна функция затрат (например, снизить энергии для выполнения задачи)
* адаптация навыков к новым (ранее не встречавшимся) задачам.
* [OpenAI Gym](https://gym.openai.com) - Наиболее распространённая библиотека для обучения с подкреплением. Стандарт индустрии.
* [Deepmind Acme](https://github.com/deepmind/acme) - Вторая по популярности библиотека для RL
* [Surreal](https://github.com/SurrealAI/surreal) - Open-Source Distributed Reinforcement Learning Framework by Stanford Vision and Learning Lab. Активно не разрабатывается.
Ключевая особенность заключается в том, что части взаимодействуют между собой через сеть, что делает возможным реализацию обмена данными со множественными экземплярами частей как на одной машине, так и на нескольких.
Разработано [JOANNEUM RESEARCH – Institute for Robotics and Mechatronics](https://joanneum.at/robotics), Klagenfurt, Austria. Активно разрабатывается по сей день, но развитого сообщества нет - всего 2 контрибьютора - это авторы статьи.
В [Paper](https://arxiv.org/pdf/2007.02753.pdf) также приведена сравнительная таблица(Table I, страница 7) фреймворков для глубокого машинного обучения роботов. Рассмотрены OpenAI Gym - Robotics Suite, DeepMind Control Suite, SURREAL Robotics Suite, RLBench, SenseAct, gym-gazebo-2, robo-gym. Показатели сравнения: количество форков, поддерживаемые роботы, количество задач, поддержка виртуального и реального железа, масштабируемость, используемая платформа симуляции. robo-gym
Проект для обучения агентов на Unity, интегрирована с gym. Среды мультяшные, не очень фотореалистичные.
### Gym Ignition
[Github](https://github.com/robotology/gym-ignition) | [Документация](https://robotology.github.io/gym-ignition/master/index.html) | [Пример применения (видео)](https://youtu.be/mo4ZRi0mmSQ?t=145)
Фреймворк для создания воспроизводимых виртуальных сред для обучения с подкреплением. В Gym-ignition представлена попытка создания унифицированного программного интерфейса как для реальных роботов и сред, так и для виртуальных.
Фреймворк состоит из следующих компонентов:
* ScenarI/O (Scene Interfaces for Robot Input / Output) - слой абстракции C++ для взаимодействия с виртуальными и реальными роботами. Этот слой позволяет скрыть детали реализации конкретного физического движка.
* Gazebo ScenarI/O: Реализация интерфейсов ScenarI/O для взаимодействия с симулятором Ignition Gazebo. Предоставляются python-биндинги набором функций, сопоставимым с популярными альтернативами - например, pybullet и mujoco-py.
* gym_ignition: python-пакет с набором инструментов для создания OpenAI Gym сред и обучения в них роботов. Пакет предоставляет такие абстрации как `Task` и `Runtime` для облегчения создания сред, которые могут запускаться прозрачно во всех реализациях ScenarI/O (различные симуляторы, реальные роботы, ...). Пакет также содержит функции для расчёта инверсной кинематики и динамики с несколькими физическими телами, поддерживающей плавающих роботов на основе библиотеки iDynTree.
* gym_ignition_environments: Демонстрационные среды с образцовой структурой, созданные с помощью gym_ignition и gym-ignition-models.
Фреймворк сочетает преимущества обучения с подкреплением без модели (model-free RL) и планировщика движения (motion planner, MP) на основе выборки с минимальными знаниями о конкретных задачах.
Для задач, требующих касания манипулятором или его приспособлением других предметов целесообразно использовать RL-policy, а в задачах, где нужно перемещение манипулятора в сложных стеснённых условиях, используется планировщик. Ключевая роль алгоритма состоит в том, что в ходе решения задач выбирается либо планировщик движения, либо прямое выполнение политики обучения с подкреплением. Тем самым достигается высокая производительность. В симуляциях использовался движок физики Mujoco.
Open source симулятор для автономных транспортных средств от Microsoft AI & Research. Интересен тем, что поддерживаются оба игровых движка для рендеринга - Unreal Engine и Unity(пока экспериментальная поддержка). Разработаны python-обёртки для OpenAI Gym и ROS.
Для поддержки URDF в AirSim [разработан](http://www.mitchellspryn.com/2019/01/19/Simulating-Arbitrary-Robots-Using-the-Unreal-Engine.html) форк - [UrdfSim](https://github.com/mitchellspryn/UrdfSim).
Набор виртуальных сред (в основном жилые помещения для людей) для обучение мобильных роботов. Используется bullet и gym-подобный интерфейс для взаимодействия с агентом.
## Обучение с подкреплением - определения и подходы
___Обучениес подкреплением (ОП)___ - разновидность алгоритмов машинного обучения, наряду с обучением без учителя и обучением с учителем.
Алгоритм состоит в следующем:
* агент, руководствуясь стратегией (policy), воздействует (action, a) на окружающую среду с текущим состоянием (state, s)
* в ответ агент получает новое состояние окружающей среды s' и награду r
* на новом шаге агент меняет свою стратегию, чтобы максимизировать суммарное вознаграждение(value).
### Отличие ОП и обучения с учителем
Цель обучения с учителем – научиться обобщать, располагая лишь фиксированным набором данных с ограниченным количеством примеров. Каждый пример состоит из входа и желательного выхода (или метки), так что реакция на выбор агента следует незамедлительно.
Напротив, в ОП акцент ставится на последовательных действиях, которые можно предпринять в конкретной ситуации. В данном случае единственное, что дает учитель, – сигнал вознаграждения. Какое действие правильно при данных условиях, неизвестно, в отличие от обучения с учителем.
### Дилемма исследования(exploration)/использования(exploitation) в ОП
Агент должен совершать действия, которые с высокой вероятностью приведут к достижению цели (использование), но в то же время должен пробовать _иные действия_, чтобы другие части окружающей среды не остались неисследованными (исследование). Эту двойственность называют дилеммой (или компромиссом) исследования–использования, она призвана решить трудную проблему поиска баланса между исследованием и использованием окружающей среды. Она важна также и потому, что, в отличие от обучения с учителем, агент ОП может влиять на окружающую среду, т. к. вправе собирать новые данные, коль скоро считает это полезным.
### Off-policy, on-policy
_Off-policy_ - алгоритм ОП, где стратегия агента, воздействующего на среду (поведенческая стратегия), отличается от стратегии, которую обучают (целевая стратегия). Целевая стратегия фактически не используется для влияния на состояние среды.
_On-policy_ - алгоритм, где воздействует на среду и обучается одна и та же стратегия. То есть стратегия обучается на тех же данных, которые генерирует.
Алгоритмы с разделенной стратегией(off-policy) менее устойчивы и их труднее проектировать, чем алгоритмы с единой стратегией, зато у них более высокая выборочная эффективность, т. е. для обучения нужно меньше данных.
### Model-free, model-based
Модель описывает поведение окружеющей среды, то есть может предсказать её состояние в следующем шаге. Если модель есть и известна(model-based), то можно использовать алгоритмы планирования. Модель может быть известна заранее или формироваться в ходе взаимодействия с окружающей средой.
Model-free делятся на
* Q-learning - алгоритм на основе обучения функции ценности действия); как правило это алгоритмы с разделённой стратегией(off-policy), чтобы сделать возможным обучение на базе предыдущего опыта, так как выборочные данные можно хранить в буфере воспроизведения.
* Policy gradient (градиент стратегии, метод оптимизации стратегии); как правило, это on-policy алгоритмы с единой стратегией. Актор-критик (actor-critic) - разновидность алгоритма оптимизации единой стратегии (актор) c одновременным обучением Q-функции ценности (критик). Поскольку алгоритмы исполнитель–критик обучают и используют функцию ценности, они классифицируются как алгоритмы градиента стратегии, а не как гибридные.
* Гибридные - сочетают обучение стратегии и функции ценности.
К model-based алгоритмам относятся
* чистое планирование
* встроенное планирование для улучшения стратегии и генерации выборки из аппроксимированной модели
* динамическое программирование - семейство алгоритмов, в которых модель используется для оценивания функции ценности. Смысл в том, чтобы разбить задачу на меньшие перекрывающиеся подзадачи, а затем найти решение исходной задачи, объединяя решения подзадач. Является одним из самых простых подходов. Подходит для вычисления оптимальной стратегии, поскольку имеется точная модель окружающей среды. Cложность экспоненциально возрастает вместе с увеличением числа состояний.
### Выбор алгоритма ОП
Нет универсальных алгоритмов, все имеют как преимущества, так и недостатки. Наиболее значимые критерии оценки - устойчивость, выборочная эффективность, время обучения, простота использования, надёжность. Алгоритмы градиента стратегии более устойчивы и надежны, чем алгоритмы функции ценности. С другой стороны, методы функции ценности обладают лучшей выборочной эффективностью, поскольку это методы с разделенной стратегией и потому могут использовать предшествующий опыт. В свою очередь, алгоритмы, основанные на модели, лучше алгоритмов Q-обучения с точки зрения выборочной эффективности, но гораздо дороже с вычислительной точки зрения и работают медленнее.