После добавления случайных факторов в относительно простое моделирование робот OpenAI научился выполнять сложные ручные операции.
Ручное управление — одно из тех занятий, которое находится на вершине списка «навыков, которые не требуют больших усилий от человека, но чрезвычайно сложны для роботов».
Недолго думая, мы можем адаптивно управлять пальцами, большим пальцем и ладонью, принимая во внимание трение и силу тяжести, манипулируя объектами одной рукой, не используя другую — трюк, который вы наверняка проделывали сегодня много раз, по крайней мере, на своем телефоне.
Людям требуются годы обучения, чтобы научиться надежно пользоваться пальцами, но у роботов не так много времени на обучение.
Такие сложные проблемы по-прежнему решаются посредством практического обучения и опыта, и задача состоит в том, чтобы найти способ обучать робота быстрее и эффективнее, чем просто давать роботизированной руке что-то, чем можно манипулировать снова и снова, пока он не поймет, что работает и что работает. что нет; это может занять сто лет. Вместо того, чтобы ждать сто лет, исследователи из ОпенАИ использовал обучение с подкреплением для обучения сверточная нейтронная сеть управляйте пятипалой рукой Шэдоу, чтобы манипулировать объектами — всего за 50 часов.
Им удалось сделать это с помощью моделирования, метода, общеизвестно «обреченного на успех», но они осторожно вводили в него случайные факторы, чтобы приблизить его к изменчивости реального мира.
Настоящая рука Шэдоу могла успешно выполнять манипуляции с реальными объектами без какого-либо повторного обучения.
В идеале все роботы должны быть обучены на симуляциях, поскольку симуляции можно масштабировать без создания большого количества реальных роботов.
Хотите обучить миллионы роботов в течение миллиона часов за одну миллиардную долю секунды? Это можно сделать, если у вас достаточно вычислительной мощности.
Но попробуйте осуществить это в реальном мире – и проблема в том, что никто точно не знает, сколько это будет «дуллионов», станет наименьшей из ваших проблем.
Проблема с обучением роботов в симуляциях заключается в том, что реальный мир невозможно точно смоделировать, а еще сложнее точно смоделировать незначительные неприятности, такие как трение, податливость и взаимодействие нескольких объектов.
Таким образом, общее мнение заключается в том, что симуляция — это здорово, но существует большой и пугающий разрыв между успехом симуляции и успехом в реальном мире, что в некотором смысле умаляет ценность симуляций.
Не помогает и то, что те самые вещи, которые было бы неплохо смоделировать (например, манипуляции с рук), в то же время сложнее всего точно смоделировать из-за того, насколько они физически требовательны.
Обычный подход к этой проблеме — попытаться сделать симуляцию максимально точной и надеяться, что она достаточно близка к реальному миру, чтобы из него можно было извлечь какое-то полезное поведение.
Вместо этого OpenAI отдает предпочтение изменчивости, а не точности, внося в свои умеренно реалистичные симуляции множество небольших настроек, чтобы гарантировать, что полученное поведение будет достаточно надежным, чтобы работать вне симуляции.
Процесс рандомизации является ключом к тому, что позволяет системе (называемой Dactyl) эффективно переходить от симуляции к реальному миру.
OpenAI прекрасно понимает, что используемые ими симуляции недостаточно сложны, чтобы смоделировать массу критически важных вещей, от трения до износа кончиков пальцев настоящей роботизированной руки.
Чтобы робот мог обобщить то, что он изучает, OpenAI вводит случайные переменные во все возможные аспекты моделирования, пытаясь охватить всю изменчивость мира, которую невозможно хорошо смоделировать.
Сюда входят масса, все размеры объекта, трение его поверхности и пальцев робота, демпфирование пальцев робота, сила моторов, суставные ограничения, люфты и шум мотора и так далее.
К объекту применяются небольшие случайные силы, позволяющие моделировать динамику, которую невозможно смоделировать.
И это только сам процесс манипуляции — в работе RGB-камер, оценивающих положение объекта, тоже присутствует множество случайных величин, визуализировать которые, однако, немного проще.
В строках показаны снимки с одной камеры.
Столбцы соответствуют снимкам со случайными изменениями — все они одновременно подаются в нейросеть.
OpenAI называет это «рандомизацией окружающей среды», а в случае манипуляций с помощью портативных устройств они «хотели посмотреть, может ли увеличение масштаба рандомизации окружающей среды решить проблему, которая невозможна с помощью доступных в настоящее время методов робототехники».
И это то, что произошло в результате работы двух независимо обученных систем (одна визуальная, другая для манипулирования), которые визуально распознают положение куба и поворачивают его в разные положения.
Все эти вращения куба (а система способна совершить не менее 50 успешных манипуляций подряд) стали возможными благодаря 6144 процессорам и 8 графическим процессорам, накопившим 100 лет опыта моделирования роботов всего за 50 часов.
Единственная обратная связь, доступная системе (как в симуляции, так и в реальности), — это расположение куба и пальцев, и система начинала без каких-либо конкретных представлений о том, как именно держать или вращать куб.
Ей пришлось во всем этом разбираться самостоятельно, включая вращение пальцев, координацию нескольких пальцев одновременно, использование гравитации, координацию приложения сил.
Робот изобрел те же методы, которые используют люди, однако с небольшими (и интересными) модификациями: Чтобы точно схватить объект, робот обычно использует мизинец вместо указательного или среднего пальца.
Это может быть связано с тем, что мизинец Тени Ловкой Руки имеет дополнительную степень свободы по сравнению с указательным, средним и безымянным пальцами, что делает его более гибким.
У людей обычно более подвижны указательный и средний пальцы.
Это означает, что наша система способна самостоятельно изобрести технику хватания, которая есть у людей, но лучше адаптировать ее к собственным ограничениям и возможностям.
Различные типы захватов, которые система изучила.
Слева направо и сверху вниз: захват кончиками пальцев, захват ладонью, захват тремя пальцами, захват четырьмя пальцами, захват пятью пальцами и силовой захват. Мы наблюдали еще одну интересную параллель в работе пальцев человека и нашего робота.
В этой стратегии рука удерживает объект двумя пальцами и вращает его вокруг этой оси.
Оказалось, что у маленьких детей такая моторика еще не успела развиться, поэтому они обычно вращают предметы с помощью проксимального или среднего фаланги пальцев .
Лишь позже в жизни они переходят на дистальные фаланги, как это делает большинство взрослых.
Интересно, что наш робот обычно опирается на дистальные фаланги, когда ему нужно повернуть объект. Преимущество технологии в том, что, как оказывается, роботов еще можно обучить выполнять сложные физические действия в симуляциях, а затем сразу использовать накопленные навыки в реальности – и это действительно большое достижение, поскольку обучение в симуляциях проходит очень много.
быстрее, чем на самом деле.
Мы обратились к Йонасу Шнайдеру, члену технической команды OpenAI, чтобы узнать больше об этом проекте.
Редакционный : Почему ручные манипуляции в робототехнике являются такой сложной задачей? Йонас Шнайдер : Манипуляции происходят в очень ограниченном пространстве, и роботу доступно большое количество степеней свободы.
Успешные стратегии манипулирования требуют правильной координации всех этих степеней свободы, что снижает вероятность ошибки по сравнению с традиционными взаимодействиями объектов, такими как простой захват. При ручных манипуляциях фиксируется множество контактов с объектом.
Моделирование этих контактов — сложная задача, подверженная ошибкам.
Ошибки при выполнении приходится контролировать во время движения руки, что вызывает проблемы с традиционным подходом к предварительному планированию движений.
Например, проблема может возникнуть, если у вас есть линейный обратная связь, не регистрирующая нелинейную динамику происходящего.
Похоже, что случайные переменные являются ключом к тому, чтобы навыки, полученные в симуляции, могли быть надежно применены в реальности.
Как вы решаете, какие параметры сделать случайными и каким образом? Во время калибровки мы приблизительно оцениваем, какие параметры могут измениться, а затем решаем, какие из них будет наиболее важно воспроизвести при моделировании.
Затем мы устанавливаем значения этих параметров равными калибровочным значениям и добавляем случайные отклонения вокруг среднего значения.
Амплитуда изменений зависит от нашей уверенности — например, мы не сильно меняли размер объекта, поскольку можем его точно измерить.
Некоторые случайные вариации были основаны на эмпирических наблюдениях.
Например, мы наблюдали, как наш робот иногда ронял предмет, опустив руку и не успев поднять ее, пока предмет не скатился с нее.
Мы обнаружили, что из-за проблем с низкоуровневым контроллером наши действия иногда могли задерживаться на несколько сотен миллисекунд. И мы могли бы, конечно, потратить силы на то, чтобы сделать контроллер более надежным, но вместо этого мы просто добавили рандомизацию к таймингу каждого контроллера.
На более высоком уровне мы думаем, что это может быть интересным подходом к проектированию роботов будущего; Для некоторых приложений разработка очень точного оборудования может быть непомерно дорогой, и мы продемонстрировали, как эти аппаратные недостатки можно исправить с помощью более совершенных алгоритмов.
Как вы думаете, насколько улучшятся ваши результаты, если вы подождете вместо 100 лет моделируемого времени, например, 1000? Это сложно оценить для какой-либо конкретной проблемы, поскольку мы никогда не тестировали более 50 вращений.
Пока неясно, как именно выглядит асимптотическая кривая производительности, но мы считаем наш проект завершенным, поскольку даже один успешный поворот далеко превосходит возможности лучших доступных сегодня методов обучения.
Фактически мы выбрали цифру в 50 оборотов, потому что решили, что 25 оборотов наглядно продемонстрируют, что проблема решена, а затем добавили еще 25 для 100% запаса.
Если ваша цель — оптимизировать очень длинные последовательности действий и высокую надежность, то увеличение вашей подготовки, скорее всего, поможет. Но в какой-то момент, мы думаем, робот начнет лучше адаптироваться к симуляции и хуже работать в реальном мире, и тогда нам придется добавить еще больше рандомизаций, чтобы усложнить симуляцию, что, в свою очередь, увеличит надежность конечной системы.
Насколько хорошо ваши результаты могут быть обобщены? Например, сколько повторных тренировочных усилий потребуется, чтобы повернуть кубик меньшего размера или куб, который был мягким или скользким? А как насчет другого расположения камеры? Кстати, просто для развлечения пытался провести манипуляции с мягкими кубиками и кубиками меньшего размера, и оказалось, что качество работы не сильно снижается по сравнению с вращением жесткого кубика.
В симуляции мы также экспериментировали с кубиками разного размера, и это тоже хорошо сработало (хотя мы не пробовали это с настоящим роботом).
В моделировании мы также использовали случайные изменения размера куба.
Мы не пробовали это точно, но я думаю, что если мы просто увеличим случайное изменение размера куба в симуляции, рука сможет манипулировать кубиками разного размера.
Для камер визуальная модель обучалась отдельно, и пока мы вводим лишь небольшие случайные вариации положения камер, поэтому каждый раз, когда положение камеры меняется, мы начинаем обучение заново.
Один из наших стажеров, Сяо-Ю Фиш Тан, в настоящее время работает над тем, чтобы сделать визуальную модель полностью независимой от местоположения камеры, используя ту же базовую технику случайного изменения положения и ориентации камеры в больших масштабах.
Чем симуляционное обучение отличается от подходного обучения? грубая сила "где используется куча настоящих роботов? Интересно, что наш проект начался с того, что мы поставили под сомнение идею использования моделирования для развития робототехники.
Мы уже много лет мы наблюдаем наблюдая, как робототехника достигает впечатляющих результатов в симуляциях с использованием обучения с подкреплением.
Однако, общаясь с исследователями, занимающимися классической робототехникой, мы постоянно сталкиваемся с недоверием к тому, что такие методы могут работать в реальном мире.
Основная проблема в том, что симуляторы не совсем точны с физической точки зрения (даже если они хорошо выглядят для человеческого глаза).
Проблема усугубляется тем, что более точное моделирование требует большей вычислительной мощности.
Поэтому мы решили установить новый стандарт, который требует работы с очень сложной аппаратной платформой, которая должна учитывать все ограничения моделирования.
Что касается подхода «кисточной фермы», то основным ограничением в обучении физических роботов является низкая масштабируемость полученных навыков для более сложных задач.
Сделать это можно, расположив все так, чтобы у вас было множество объектов в самостабилизирующейся среде, не имеющей разных состояний (например, корзина с мячами).
Но сделать это точно так же для задачи сборки чего-либо, когда после каждого запуска ваша система оказывается в новом состоянии, будет очень сложно.
Опять же, вместо того, чтобы настроить всю систему один раз, вам придется настроить ее N раз, и поддерживать ее в рабочем состоянии после того, как, скажем, робот побродил и что-то сломал.
Все это гораздо проще и легче реализовать в симуляциях с эластичной вычислительной мощностью.
Таким образом, наша работа поддерживает идею симуляционного обучения, поскольку мы показали, как проблема перемещения может быть решена даже для очень сложных роботов.
Однако это не заменяет идею обучения настоящего робота; было бы очень сложно преодолеть ограничения моделирования при работе с деформируемыми объектами и жидкостями.
Где самое слабое место вашей системы? На данный момент это случайные вариации, разработанные вручную и адаптированные под конкретную задачу.
В будущем, возможно, можно будет попытаться изучить эти варианты, добавив еще один уровень оптимизации — это тот же процесс, который мы делаем сегодня вручную («попробуйте несколько рандомизаций и посмотрите, помогут ли они»).
Вы также можете пойти еще дальше и использовать игру между обучающимся агентом и его противником, который пытается помешать (но не сильно) его прогрессу.
Эта динамика может привести к созданию очень надежных наборов правил работы роботов, поскольку чем лучше работает агент, тем хитрее должен быть противник, чтобы вмешаться в него, что еще больше повышает производительность агента и так далее.
Ээта идея уже изучал другие исследователи.
Вы говорите, что ваша главная цель — создать роботов для реального мира.
Что еще нужно сделать, прежде чем это станет возможным? Мы пытаемся расширить возможности роботов для работы в средах без строгих ограничений.
В таких средах невозможно все предусмотреть заранее и подготовить для каждого объекта свою модель.
Также может быть неудобно наносить какие-либо отметки на предметы за пределами лаборатории.
Получается, что нашим роботам придется научиться действовать в самых разных ситуациях, как делать разумный выбор в ситуации, с которой они ранее не сталкивались.
Над чем вы будете работать дальше? Мы продолжим создавать роботов со все более сложным поведением.
Пока рано говорить какой именно.
В долгосрочной перспективе мы надеемся наделить роботов общими способностями манипулирования объектами, чтобы они могли научиться взаимодействовать с окружающей средой так, как это делает ребенок — играя с близлежащими объектами, не обязательно под присмотром взрослых.
Мы считаем, что интеллект — это взаимодействие с реальным миром, и для достижения нашей цели — создания безопасного искусственного интеллекта общего назначения — нам необходимо иметь возможность учиться как на реальных сенсорных данных, так и на симуляциях.
Теги: #Разработка робототехники #Робототехника #искусственный интеллект #пальцы #рука #ручные манипуляции
-
Почему Важно Чистить Реестр
19 Oct, 24 -
Интервью С Создателями Zenter
19 Oct, 24 -
Форма Без Содержания
19 Oct, 24 -
Уменьшение Размера Папки Winsxs
19 Oct, 24 -
Eclipse Scala Ide — Это Уши Дохлого Осла...
19 Oct, 24