Хабрахабр

[Перевод] OpenAI демонстрирует перенос сложных манипуляций из симуляций в реальный мир

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

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

Такие сложные задачи всё ещё решаются через практическое обучение и приобретение опыта, и задача состоит в том, чтобы найти способ обучать робота быстрее и эффективнее, чем просто дать роботизированной руке что-то, чем можно манипулировать снова и снова, пока она не поймёт, что срабатывает, а что – нет; на это может уйти сотня лет.
Вместо того, чтобы ждать сотню лет, исследователи из OpenAI использовали обучение с подкреплением, чтобы натренировать свёрточную нейтронную сеть управлять пятипалой рукой робота Shadow для манипуляции объектами – и всего за 50 часов. У людей уходят годы тренировок на то, чтобы научиться надёжно работать пальцами, но у роботов нет столько времени на обучение. Реальная рука Shadow смогла успешно провести наладонные манипуляции с реальными объектами безо всякой повторной тренировки. Им удалось сделать это через симуляцию, технику, печально известную, как «обречённая на успех» – однако они аккуратно вносили в неё случайные факторы, чтобы приблизить её к переменчивости реального мира.

Хотите натренировать дофигиллион роботов дофигиллион часов в одну дофигилионную долю секунды? В идеале, всех роботов нужно тренировать в симуляциях, потому что симуляции можно масштабировать, не создавая множество реальных роботов. Но попробуйте провернуть такое в реальном мире – и проблема того, что никто не знает, сколько точно это будет, «дофигиллион», будет наименьшей из ваших проблем. Это можно сделать — если заполучить достаточный объём вычислительных мощностей.

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

Вместо этого OpenAI ставит на первое место не точность, а изменчивость, снабжая свои умеренно реалистичные симуляции множеством мелких подстроек, чтобы получаемое поведение оказалось достаточно надёжным для работы и вне симуляции. Распространённый подход к этой проблеме – попытаться сделать симуляцию настолько точной, насколько возможно, и надеяться, что она окажется достаточно близкой к реальному миру, чтобы вы смогли извлечь из неё какое-то полезное поведение.

В OpenAI прекрасно понимают, что используемые ими симуляции недостаточно сложны для того, чтобы смоделировать всю гору важнейших вещей, от трения до износа кончиков пальцев реальной роборуки. Процесс рандомизации – ключ к тому, что делает систему (названную Dactyl) способной эффективно перейти от симуляции к реальному миру. Сюда входит масса, все измерения объекта, трение его поверхности и пальцев робота, демпфирование пальцев робота, сила воздействия моторов, ограничения сочленений, люфт и шум мотора, и прочее. Чтобы робот сумел обобщить то, чему он учится, OpenAI вносит случайные переменные во все возможные аспекты симуляции, чтобы попытаться покрыть всю переменчивость мира, которую невозможно хорошо смоделировать. И это только сам процесс манипуляции – в работе RGB-камер, оценивающих положение объекта, также есть немало случайных переменных, которые, правда, немного легче визуализировать. К объекту прилагаются небольшие случайные воздействия, чтобы симуляция справлялась с динамикой, которую нельзя смоделировать.

Столбцы соответствуют снимкам со случайными изменениями – все они одновременно скармливаются нейросети.
Ряды показывают снимки с одной и той же камеры.

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

Единственная обратная связь, доступная системе (как в симуляции, так и в реальности) – расположение кубика и пальцев руки, при этом система начинала, не имея каких-то определённых понятий по поводу того, как именно надо держать или вращать кубик. Все эти повороты кубика (а система способна, по меньшей мере, на 50 успешных манипуляций подряд) стали возможными благодаря 6144 процессорам и 8 GPU, набравшим 100 лет симулированного опыта работы робота всего за 50 часов. Робот изобрёл те же самые техники, что используют люди, однако, с небольшими (и интересными) модификациями: Ей пришлось самостоятельно разбираться со всем этим – включая вращение пальцев, одновременную координацию нескольких пальцев, использование силы гравитации, координация приложения сил.

Это, возможно, объясняется наличием у мизинца руки Shadow Dexterous Hand дополнительной степени свободы по сравнению с указательным, средним и безымянным пальцами, что делает его более подвижным. Для чёткого захвата объекта робот обычно использует мизинец вместо указательного или среднего пальцев. Это значит, что наша система способна самостоятельно изобрести технику хватания, имеющуюся у людей, но лучше адаптировать её к собственным ограничениям и возможностям. У людей более подвижными обычно бывают указательный и средний палец.

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

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

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

Мы связались с Йонасом Шнайдером, членом команды технических специалистов из OpenAI, чтобы подробнее расспросить об этом проекте.

Редакция: Почему наладонная манипуляция в робототехнике – настолько сложная задача?

Успешные стратегии манипуляции требуют правильной координации во всех этих степенях свободы, а это уменьшает допустимый размер ошибки по сравнению с обычными взаимодействиями с объектами – такими, например, как простой захват. Йонас Шнайдер: Манипуляции происходят в весьма ограниченном пространстве, а роботу доступно большое количество степеней свободы. Моделирование этих соприкосновений – задача тяжёлая, склонная к появлению ошибок. Во время наладонных манипуляций регистрируется очень много соприкосновений с объектом. К примеру, проблема может возникнуть, когда у вас есть линейная обратная связь, не регистрирующая нелинейную динамику происходящего. Ошибки во время выполнения приходится контролировать во время работы руки, что вызывает проблемы у традиционного подхода, основанного на планировании движений заранее.

Как вы решаете, какие параметры делать случайными, и как именно? Судя по всему, случайные переменные – ключ к тому, чтобы навыки, полученные в симуляции, можно было надёжно применять в реальности.

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

К примеру, мы наблюдали, как наш робот иногда ронял объект, опуская кисть, и не успевая поднять её до тех пор, пока объект с неё не скатится. Некоторые случайные вариации были основаны на эмпирических наблюдениях. И мы могли, конечно, потратить силы на то, чтобы сделать работу контроллера более надёжной, но вместо этого мы просто добавили рандомизации ко времени срабатывания каждого контроллера. Мы обнаружили, что из-за проблем с низкоуровневым контроллером выполнение наших действий иногда могло задерживаться на несколько сотен миллисекунд. Нам кажется, что на более высоком уровне это может оказаться интересным подходом к разработке роботов будущего; для каких-то задач разработка очень точного оборудования может оказаться неприемлемо дорогой, а мы продемонстрировали, как эти недостатки оборудования можно корректировать при помощи более продвинутых алгоритмов.

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

Пока неясно, как именно выглядит асимптотическая кривая характеристик, но мы считаем свой проект законченным, поскольку даже один удачный поворот находится далеко за пределами возможностей наилучших из существующих сегодня методов обучения. На примере какой-то конкретной задачи это трудно оценить, поскольку мы никогда не проводили тесты больше, чем 50 поворотов. Если вашей задачей будет оптимизация для очень долгих последовательностей действий и высокой надёжности, то увеличение тренировок, вероятно, поможет. На самом деле, мы выбрали цифру в 50 поворотов, потому что решили, что 25 поворотов однозначно продемонстрируют, что задача решена, а потом добавили ещё 25, для 100% запаса. Но в какой-то момент, как мы думаем, робот начнёт больше приспосабливаться к симуляции, и хуже работать в реальном мире, и тогда придётся добавлять ещё больше рандомизаций, чтобы усложнить симуляцию, что, в свою очередь, увеличит надёжность итоговой системы.

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

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

Один из наших интернов, Сяо-Ю Фиш Тан как раз работает над тем, чтобы сделать зрительную модель совершенно независимой от точки расположения камер, используя ту же базовую технику случайной вариации положения и ориентации камеры в крупных пределах. Что касается камер, то зрительная модель тренировалась отдельно, и пока мы вносим лишь небольшие случайные вариации в положение камер, поэтому при каждом изменении положения камеры мы запускаем тренировку заново.

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

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

Это можно провернуть, устроив всё так, чтобы у вас было множество объектов в самостоятельно стабилизирующемся окружении, не имеющем разных состояний (к примеру, корзина мячей). Что касается подхода «кистевой фермы» – главное ограничение в обучении физических роботов состоит в малой масштабируемости полученных навыков до более сложных задач. Опять же, вместо того, чтобы настроить всю систему один раз, вам придётся настраивать её N раз, и поддерживать её в работоспособном состоянии после того, допустим, как робот заметался и что-то поломал. Но это будет очень трудно сделать тем же способом для задачи сборки чего-либо, когда после каждого прогона ваша система оказывается в новом состоянии. Всё это гораздо проще и легче делать в симуляциях с эластичной вычислительной мощностью.

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

Где у вашей системы самое тонкое место?

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

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

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

Над чем будете работать дальше?

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

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

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

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

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

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