Американские инженеры разработали алгоритм машинного обучения, позволяющий ноге робота самостоятельно определять свою структуру и свойства окружающей среды, а также использовать эти данные для вырабатывания оптимальных движений. В качестве примера авторы показали, как робот с помощью обучения с подкреплением научился двигать ногой конвейерную ленту. Статья с описанием алгоритма и экспериментов опубликована в журнале Nature Machine Intelligence.
Как правило, за походку робота отвечает заранее определенный алгоритм, который постоянно рассчитывает похожие движения исходя из внешних условий, а также модели ног робота. Такой подход позволяет роботам неплохо справляться с передвижением по предсказуемым поверхностям, но не так хорошо работает в сложных условиях. В последние годы немало групп инженеров пошли дальше и стали использовать в роботах алгоритмы машинного обучения, позволяющие роботу самому искать оптимальную походку исходя из знаний о собственном строении, внешнем мире и особенностях взаимодействия с ним. Такой подход, к примеру, недавно позволил четвероногому роботу ANYmal научиться вставать после падений. Но в этой работе, как и в большинстве аналогичных, разработчикам пришлось заранее создать точную модель робота.
Инженеры из Университета Южной Калифорнии под руководством Франсиско Валеро-Куэваса (Francisco Valero-Cuevas) показали, что для выучивания оптимальных движений роботу не обязательно иметь модель собственного строения. В качестве демонстратора подхода разработчики выбрали двухсегментную ногу, приводимую в движение с помощью системы из трех тросов, имитирующих сухожилия у животных. Каждый трос присоединен к отдельному электромотору, который при вращении натягивает или наоборот расслабляет его, приводя в движение тот или иной сегмент ноги. Кроме того, на каждом из двух «суставов» ноги расположен датчик, в реальном времени измеряющий угол между сегментами, а также угловые скорость и ускорение. Эти данные — единственное, что получает алгоритм в качестве обратной связи.
Алгоритм, разработанный инженерами, основан на относительно простой трехслойной нейросети. Для того, чтобы нога могла понять свое строение, во время экспериментов отдельный алгоритм создает псевдослучайные команды движения. Эти команды, а также наблюдаемые во время их выполнения данные с датчиков, передаются нейросети, которая создает на их основе модель ноги. С каждым новым движением модель обновляется и нейросеть получает достаточно точное математическое представление ноги робота.
В качестве экспериментальной проверки инженеры решили не создавать полноценного ходячего робота, а поставили более простую задачу. Во время экспериментов нога была закреплена над конвейерной лентой. Задача алгоритма заключалась в том, чтобы продвинуть ленту как можно дальше. Разработчики применили для этой задачи метод обучения с подкреплением, при котором алгоритм получает от среды за каждую попытку награду, соразмерную успешности выполнения задачи. В данном случае инженеры выбрали простую функцию награды, которая представляет собой число, соответствующее расстоянию, на которое переместилась лента. В результате авторы показали, что при использовании такого подхода нога научилась достаточно далеко продвигать ленту.
Метод обучения с подкреплением часто используется для обучения роботов, причем как в симуляции, так и на реальных устройствах. Показательный пример применения обоих подходов сразу в прошлом году продемонстрировали разработчики из OpenAI. Они создали виртуальную модель роборуки, которой необходимо было научиться вертеть кубик в руке и ориентировать его нужной стороной. Изначально разработчики обучали множество копий виртуальной роборуки, а затем им удалось успешно перенести выученный навык на настоящую роборуку. Во время экспериментов роборука смогла ориентировать кубик нужной стороной до 50 раз подряд, не роняя его.
Григорий Копиев