Специалисты из исследовательской лаборатории OpenAI создали алгоритм для роботизированной копии человеческой руки, позволяющий ей поворачивать кубик в заданное положение. Изначально алгоритм обучался в виртуальном пространстве, а затем выученный навык удалось перенести на физическую реализацию, рассказывают разработчики в блоге проекта. В одном из испытаний робот смог 50 раз подряд успешно перевернуть кубик в нужное положение, не уронив его.
Инженеры уже давно научились создавать сложные электромеханические аналоги человеческой руки. Но, как правило, они применяются в качестве протезов вместо ампутированной конечности или в качестве телеуправляемого устройства. Алгоритмы для автономного управления такими сложными устройствами пока заметно отстают от инженерных наработок в создании роборук.
Группа разработчиков из некоммерческой организации OpenAI смогла создать алгоритм, позволяющий роботизированному аналогу руки самостоятельно выполнять простую для людей, но крайне сложную для роботов задачу — поворачивать куб нужной стороной без помощи второй руки или дополнительных предметов. Поскольку обучение на физической реализации роборуки требует огромного количества времени, исследователи обучали его на компьютерной симуляции. Созданная разработчиками виртуальная среда основана на физическом движке MuJuCo и игровом движке Unity. В ней они симулировали работу роборуки Shadow Dexterous Hand.
Несмотря на то, что движок довольно точно симулирует реальные физические взаимодействия, он все равно имеет несколько упрощений, а также не учитывает постепенный износ реальной роборуки. Для того, чтобы выученный алгоритмом навык можно было перенести на реальное устройство, исследователи случайным образом меняли параметры во время симуляции. К примеру, менялся размер и вес кубика, уровень трения между предметами и даже направление силы.
В качестве алгоритма для планирования движений исследователи выбрали рекуррентную нейросеть с долгой краткосрочной памятью (LSTM). Наличие такой памяти позволило алгоритму успешно справляться со случайным изменением параметров среды. Во время каждой симуляции он получал данные о положении кончиков пальцев и кубика, и планировал следующее движение. Успехом считались попытки, во время которых виртуальная роборука повернула кубик нужным образом и не уронила его. Кроме того, исследователи готовили систему к реальной среде и создали дополнительный промежуточный алгоритм на основе сверточной нейросети, который получал на входе три синтезированных фотографии руки с разных ракурсов и определял положение кубика.
Для обучения алгоритмов исследователи использовали компьютер с 6144 процессорными ядрами и восемью мощными видеоускорителями, который позволил провести за 50 реальных часов около ста лет симулированных попыток. В результате исследователям удалось обучить алгоритмы и перенести навыки в реальную среду. В ней использовалась настоящая роборуки, а в качестве входных данных применялись данные о положении ее пальцев и изображения с трех камер. Кроме того, для проверки алгоритмов по отдельности в реальной среде была установлена система отслеживания движений куба из 16 камер.
Выяснилось, что алгоритм для вычисления положения кубика из трех изображений с камер практически не уступает сложной системе отслеживания движений. С ней медианное количество последовательных успешных попыток составило 13 раз, а без нее — 11,5. Максимальные результаты были гораздо выше. Исследователи показали ролик с рекордным показателем, составившим 50 последовательных успешных попыток:
В 2016 году специалисты из компании X (ранее известной как Google X) иначе решили проблему быстрого обучения роботизированных манипуляторов. Они создали для этого систему из нескольких манипуляторов, объединенных в единую сеть. Данные с манипуляторов поступали на центральный сервер, где происходило дополнительное обучение и настройка нейросетевой модели, параметры которой рассылались обратно на манипуляторы.
Григорий Копиев