![](https://media.wired.com/photos/5ff4814762dc9f2effae9942/master/w_2560%2Cc_limit/Science_yang7HR.jpg)
Несколько лет назад разработчики из Boston Dynamics сняли несколько видео, где показано, как люди толкают роботов хоккейными клюшками и прочими предметами. Видео быстро стало вирусным, а многие пользователи, просмотревшие их, стали прогнозировать скорое восстание роботов, выступивших против своих мучителей.
Но, конечно, все это не просто так — роботов учили реагировать на неожиданные внешние факторы. А это очень непросто, поскольку нужно предусмотреть огромное количество разных сценариев. Сейчас по следам Boston Dynamics пошли исследователи из Чжэцзянского (Китай) и Эдинбургского (Великобритания) университетов. Команда исследователей разработала сложную программу обучения роботов на падение, толчки, заносы и т.п. Насколько можно судить, программа весьма эффективная.
![](https://habrastorage.org/webt/os/4-/os/os4-osfaj5l86aiwlki0evrvldw.png)
Главная задача — научить роботов быстро восстанавливаться после того, как их в буквальном смысле роняют. Зачем? В реальной жизни, если роботу нужно будет выполнять какие-то задачи вне лаборатории, а в обычном мире, падать придется неоднократно. Где-то машина поскользнётся, может быть, кто-то и толкнет — например, на улице, в час пик, когда робот-курьер отправится доставлять посылку. И это не говоря уже о сценарии, когда робот получает профессию спасателя/разведчика местности.
Вне зависимости от того, какую профессию получит робот, ему нужны специальные скиллы. Для курьера — один набор скиллов, для спасателя — второй, для помощника геолога — третий. В любом случае будут какие-то уникальные навыки, плюс универсальные — умение быстро подниматься после падения, как пример.
Группа экспертов из Китая и Англии как раз и занимается созданием программной платформы для тренировки робота — в нашем случае это робот-собака. Специалисты уже разработали самообучаемую систему с восемью основными алгоритмами, которые позволяют механической собаке учиться взаимодействовать с реальным миром. Для обучения задействована специализированная нейросеть на основе обучения с подкреплением. Сначала нейросеть тренирует виртуальных роботов, то есть их модели, разрабатывая разные сценарии реагирования на внешние факторы. После того, как этот этап заканчивается, результат обучения в виде набора алгоритмов «заливается» уже в реального робота. И мы получаем уже обученную систему. Все это можно сравнить с программами, которые получал Нео в «Матрице». Раз — и он знает кунг-фу, два — умеет управлять вертолетом, три — получает экспертные знания по вооружению.
С роботом примерно то же самое. Заливается готовая программа — и недвижимая доселе машина уже умеет вставать после падений, огибать препятствия, ходить по льду и т.п.
Такая система обучения гораздо эффективнее метода проб и ошибок с реальным роботом. Для того, чтобы научиться правильно действовать в сложных ситуациях, нейросеть проводит тысячи или даже миллионы симуляций. Реальный робот, если бы проходил через все эти испытания, поломался бы после десятого или сотого падения. А в симуляции можно делать что угодно, хоть ронять систему с небоскреба, если это понадобится для обучения.
Еще одна особенность обучения в том, что изначально базовые навыки робота тренируются по отдельности. Как и говорилось выше, таких навыков-алгоритмов восемь. Если раньше схему обучения мы сравнивали с «Матрицей», то здесь уже на помощь приходит сценарий футбольной команды. Каждый навык можно сравнить с отдельным членом команды — голкипером или полузащитником. Каждого из них тренируют особому набору скиллов, а вместе, после достижения определенных результатов, все они становятся эффективной командой. Примерно так все работает и с роботом — его отдельно учат вставать, отдельно — огибать препятствия и т.п. А потом все эти навыки соединяются вместе. Главное — превратить все полученные навыки в единую гибкую систему, где ничего не противоречит и не мешает друг другу.
![](https://habrastorage.org/webt/_e/sp/xm/_espxmbtnbishckam4hdmjhdcq4.png)
На картинке выше показано, как робота учат ходить по пересеченной местности с большим количеством камней. Он следует за своей целью — виртуальным зеленым шаром, и временами падает. После каждого падения он получает определенный опыт, который позволяет следующий раз избежать подобной ситуации. После тысячи виртуальных падений робот учится ходить по пересеченной местности практически без ошибок — и не падает. А если и да, то быстро встает.
Все это потом усложняется путем добавления внешних факторов — робота толкают в разные стороны, подбрасывают камни и т.п. В итоге машина адаптируется и очень быстро приходит в рабочий режим после воздействия неожиданных внешних факторов. Разработчики говорят, что дети учатся примерно так же — ведь ребенок не умеет подниматься по лестнице, огибать препятствия, избегать опасностей в виде луж и т.п. Всему этому приходится учиться методом проб и ошибок.
![](https://media.wired.com/photos/5a8cb44dba6c4c501b725604/master/w_2560%2Cc_limit/evildog.jpg)
Разработчики не могут предусмотреть все на свете, понятно, что роботу придется как-то реагировать и на непредвиденные проблемы. Но базовые навыки, полученные в ходе такого обучения, помогут справиться с самыми серьезными задачами. Ну а полученный опыт один робот сможет передать второму, тот — третьему и т.п. Все, как описывал Шекли в «Страж-птице», только
![](https://habrastorage.org/webt/1h/dq/mj/1hdqmj1bvguax5hnugdz0ci_jbw.jpeg)