OpenAI демонструє перенесення складних маніпуляцій з симуляцій в реальний світ

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

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

У людей йдуть роки тренувань на те, щоб навчитися надійно працювати пальцями, але у роботів немає стільки часу на навчання. Такі складні завдання все ще вирішуються через практичне навчання і набуття досвіду, і завдання полягає в тому, щоб знайти спосіб навчати робота швидше і ефективніше, ніж просто дати роботизованою руці щось, чим можна маніпулювати знову і знову, поки вона не зрозуміє, що спрацьовує, а що ні, на це може піти сотня років.

Замість того, щоб чекати сотню років, дослідники з OpenAI використовували навчання з підкріпленням, щоб натренувати сверточную нейтронну мережа управляти пятипалой рукою робота Shadow для маніпуляції об’єктами – і всього за 50 годин. Їм вдалося зробити це через симуляцію, техніку, сумно відому, як «приречена на успіх» – однак вони акуратно вносили в неї випадкові фактори, щоб наблизити її до мінливості реального світу. Реальна рука Shadow змогла успішно провести надолонні маніпуляції з реальними об’єктами без повторного тренування.

В ідеалі, всіх роботів потрібно тренувати в симуляції, тому що симуляції можна масштабувати, не створюючи безліч реальних роботів. Хочете натренувати дофигиллион роботів дофигиллион годин в одну дофигилионную частку секунди? Це можна зробити — якщо отримати достатній обсяг обчислювальних потужностей. Але спробуйте провернути таке в реальному світі і проблема того, що ніхто не знає, скільки точно це буде, «дофигиллион», буде найменшою з ваших проблем.

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

Поширений підхід до цієї проблеми – спробувати зробити симуляцію настільки точною, наскільки можливо, і сподіватися, що вона виявиться досить близькою до реального світу, щоб ви змогли витягти з неї якесь корисне поведінка. Замість цього OpenAI ставить на перше місце не точність, а мінливість, забезпечуючи свої помірно реалістичні симуляції безліччю дрібних підстроювань, щоб отримується поведінка виявилося достатньо надійним для роботи і поза симуляції.

Процес рандомізації – ключ до того, що робить систему (названу Dactyl), здатної ефективно перейти від моделювання до реального світу. У OpenAI прекрасно розуміють, що використовуються ними симуляції недостатньо складні для того, щоб змоделювати всю гору найважливіших речей, від тертя до зносу кінчиків пальців реальної роборуки. Щоб робот зумів узагальнити те, чому він навчається, OpenAI вносить випадкові змінні у всі можливі аспекти симуляції, щоб спробувати покрити всю мінливість світу, яку неможливо добре змоделювати. Сюди входить маса, всі вимірювання об’єкта, тертя його поверхні і пальців робота, демпфірування пальців робота, сила впливу моторів, обмеження зчленувань, люфт і шум мотора, і інше. До об’єкту додаються невеликі випадкові впливу, щоб симуляція справлялася з динамікою, яку можна змоделювати. І це тільки сам процес маніпуляції – в роботі RGB-камер, що оцінюють стан об’єкта, також є чимало випадкових змінних, які, правда, трохи легше візуалізувати.

Читайте також  The Super Tiny Compiler — тепер російською


Ряди показують знімки з однієї і тієї ж камери. Стовпці відповідають знімками з випадковими змінами – всі вони одночасно згодовуються нейромережі.

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

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

Для чіткого захоплення об’єкта робот зазвичай використовує мізинець замість вказівного або середнього пальців. Це, можливо, пояснюється наявністю в мізинця руки Shadow Dexterous Hand додаткової міри свободи порівняно з вказівним, середнім і безіменним пальцями, що робить його більш рухливим. У людей більш рухливими зазвичай бувають вказівний і середній палець. Це означає, що наша система здатна самостійно винайти техніку хапання, наявну у людей, але краще адаптувати її до власних обмежень і можливостей.


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

Ми спостерігали ще одну цікаву паралель в роботі пальців людей і нашого робота. За цієї стратегії рука тримає об’єкт двома пальцями і обертає навколо цієї осі. Виявилося, що у маленьких дітей подібна моторика ще не встигає виробитися, тому вони зазвичай обертають об’єкти за допомогою проксимальної або середньої фаланг пальців. І тільки пізніше вони переключаються на дистальні фаланги, як робить більшість дорослих. Цікаво, що наш робот при необхідності обертання об’єкта зазвичай покладається на дистальні фаланги.

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

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

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

Йонас Шнайдер: Маніпуляції відбуваються в дуже обмеженому просторі, а роботу доступна велика кількість ступенів свободи. Успішні стратегії маніпуляції вимагають правильної координації у всіх цих ступенях свободи, а це зменшує допустимий розмір помилки у порівнянні з звичайними взаємодіями з об’єктами, такими, наприклад, як простий захоплення. Під час наладоних маніпуляцій реєструється дуже багато зіткнень з об’єктом. Моделювання цих зіткнень – завдання важка, схильна до появи помилок. Помилки під час виконання доводиться контролювати під час роботи руки, що викликає проблеми традиційного підходу, заснованого на плануванні рухів заздалегідь. Приміром, проблема може виникнути, коли у вас є лінійна зворотній зв’язок, не реєструє нелінійну динаміку того, що відбувається.

Судячи з усього, випадкові змінні – ключ до того, щоб навички, отримані в симуляції, можна було надійно застосовувати в реальності. Як ви вирішуєте, які параметри робити випадковими, і як саме?

Читайте також  Інформаційна безпека банківських безготівкових платежів. Частина 7 — Базова модель загроз

Під час калібрування ми грубо прикидаємо, які саме параметри можуть змінюватися, і потім вирішуємо, поведінка яких з них найбільш важливо буде відтворити у симуляції. Потім ми встановлюємо значення цих параметрів рівними калібрувальним, і додаємо випадкових варіацій в районі середнього значення. Амплітуда варіацій залежить від нашої впевненості – наприклад, розмір об’єкта ми варіювали не дуже сильно, оскільки ми можемо його точно виміряти.

Деякі випадкові варіації були засновані на емпіричних спостереженнях. Наприклад, ми спостерігали, як наш робот іноді кидав об’єкт, опускаючи кисть, і не встигаючи підняти її до тих пір, поки об’єкт з неї не скотиться. Ми виявили, що з-за проблем з низькорівневим контролером виконання наших дій інколи могло затримуватися на кілька сотень мілісекунд. І ми могли, звичайно, витратити сили на те, щоб зробити роботу контролера більш надійною, але замість цього ми просто додали рандомізації до часу спрацьовування кожного контролера. Нам здається, що на більш високому рівні це може виявитися цікавим підходом до розробки роботів майбутнього; для якихось завдань розробка дуже точного обладнання може виявитися неприйнятно дорогою, а ми продемонстрували, як ці недоліки устаткування можна коригувати за допомогою більш просунутих алгоритмів.

Як ви думаєте, наскільки ваші результати покращилися б, якщо б ви почекали 100 років симулированного часу, а, наприклад, 1000?

На прикладі конкретної задачі це важко оцінити, оскільки ми ніколи не проводили тести більше, ніж 50 поворотів. Поки неясно, як саме виглядає асимптотична крива характеристик, але ми вважаємо свій проект закінченим, оскільки навіть один вдалий поворот знаходиться далеко за межами можливостей найкращих з наявних сьогодні методів навчання. Насправді, ми вибрали цифру в 50 поворотів, тому що вирішили, що 25 поворотів однозначно продемонструють, що задача вирішена, а потім додали ще 25, для 100% запасу. Якщо вашим завданням буде оптимізація для дуже довгих послідовностей дій і високої надійності, то збільшення тренувань, ймовірно, допоможе. Але в якийсь момент, як ми думаємо, робот почне більше пристосовуватися до симуляції, і гірше працювати в реальному світі, і тоді доведеться додавати ще більше рандомизаций, щоб ускладнити симуляцію, що, в свою чергу, збільшить надійність підсумкової системи.

Наскільки добре ваші результати піддаються узагальненню? Приміром, скільки зусиль на повторні тренування довелося б затратити для обертання куба меншого розміру, або куба, який був би м’яким, або слизьким? Щодо іншого розташування камер?

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

Що стосується камер, то зорова модель тренувалася окремо, і поки ми вносимо лише невеликі випадкові варіації в положення камер, тому при кожному зміні положення камери ми запускаємо тренування заново. Один з наших інтернів, Сяо-Ю Фіш Тан якраз працює над тим, щоб зробити зорову модель абсолютно незалежною від точки розташування камер, використовуючи ту ж базову техніку випадкової варіації положення і орієнтації камери у великих межах.

Ніж тренування в симуляції відрізняється від підходу “грубої сили”, де використовується купа реальних роботів?

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

Читайте також  Готуємо Matrix в домашніх умовах

Що стосується підходу «кистьовий ферми» – головне обмеження в навчанні фізичних роботів полягає в малій масштабованості отриманих навичок до більш складних завдань. Це можна провернути, влаштувавши все так, щоб у вас було безліч об’єктів самостійно стабилизирующемся оточенні, не має різних станів (наприклад, кошик м’ячів). Але це буде дуже важко зробити тим же способом для задачі складання чого-небудь, коли після кожного прогону ваша система виявляється в новому стані. Знову ж таки, замість того, щоб налаштувати всю систему один раз, вам доведеться налаштовувати її N разів, і підтримувати її в працездатному стані після того, припустимо, як робот заметушився і щось поламав. Все це набагато простіше і легше робити в симуляції з еластичною обчислювальною потужністю.

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

Де у вашої системи найтонше місце?

На поточний момент – це випадкові варіації, розроблені вручну і заточені під певну задачу. У майбутньому, можливо, можна буде спробувати навчитися цим варіацій, додавши ще один шар оптимізації, який представляє собою той процес, який ми здійснюємо вручну («спробуй кілька рандомизаций і подивися, чи допомагають вони»). Також можна піти ще далі, і використовувати гру між які навчаються агентом і його опонентом, які намагаються перешкодити (але не сильно) його прогресу. Ця динаміка може призвести до появи досить надійних наборів правил для роботи роботів, оскільки, чим краще виходить у агента, тим хитромудріші доводиться бути опоненту, щоб заважати йому, що ще більше покращує роботу агента, і так далі. Цю ідею вже вивчали інші дослідники.

Ви говорите, що вашою головною метою є створення роботів для реального світу. Що ще потрібно зробити перед тим, як це стане можливим?

Ми намагаємося розширити можливості роботів для роботи в оточенні без жорстких обмежень. В таких середовищах неможливо передбачити все заздалегідь і для кожного об’єкта заготовити свою модель. Також буває незручно ставити якісь мітки на об’єктах поза лабораторії. Виходить, що нашим роботам доведеться навчитися, як діяти в безлічі ситуацій, як робити розумний вибір в ситуації, з якої вони раніше не стикалися.

Над чим будете працювати далі?

Ми будемо і далі створювати роботів зі все більш ускладненим поведінкою. Поки рано говорити, яким саме. У довгостроковій перспективі ми сподіваємося наділити роботів загальними здібностями маніпулювання з об’єктами, щоб вони могли вчитися взаємодіяти з оточенням так, як це робить дитина – граючи з наявними поблизу об’єктами, не обов’язково під наглядом дорослих. Ми думаємо, що інтелект зав’язаний на взаємодію з реальним світом, і щоб виконати наше завдання щодо створення безпечного штучного інтелекту загального призначення, нам необхідно вміти вчитися як на основі сенсорних даних з реального світу, так і на основі симуляцій.

Степан Лютий

Обожнюю технології в сучасному світі. Хоча частенько і замислююся над тим, як далеко вони нас заведуть. Не те, щоб я прям і знаюся на ядрах, пікселях, коллайдерах і інших парсеках. Просто приходжу в захват від того, що може в творчому пориві вигадати людський розум.

You may also like...

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *