Как обучить квадрокоптер с ИИ полетам внутри помещения: секреты технологии

Когда вы наблюдаете на тем, как незадачливая муха непрерывно ударяется в окнное стекло, вам не стоит преждевременно полагать, что муха делает неверные движения. Не исключено, это вы наблюдаете за крошечным роботом со встроенной интеллектуальной системой управления на основе искусственного интеллекта, которая находится в режиме самообучения. Так как научить беспилотник летать по определенному маршруту, уклоняясь от препятствий? Можно ли обойтись без цифровой 3D-карты, если речь идёт о навигации внутри помещений? Для решения этой задачи есть несколько подходящих технологий, в том числе имитационное обучение, в котором «учитель» обучает беспилотник летать по разным траекториям, исправляя его действия в случае необходимости. Постепенно БПЛА выучивает маршруты. Но такой подход явно ограничен набором входных данных: учитель не может бесконечно сопровождать беспилотник. В последние годы стали бурно развиваться системы машинного обучения без учителя (self-supervised learning).

Они отлично проявили себя в ряде задач: навигация, хватание предметов (в робототехнике) и задачах «толкать/тянуть» (интуитивная физика). Но способна ли системы самообучения освоить такую сложную задачу как навигация внутри помещений — и преодолеть ограничения имитационного обучения?

Предыдущие исследования показали, что такие системы действительно способны обучаться без учителя в симуляторе, а обученные знания можно переносить в реальный мир. Но на практике более актуален другой вопрос: работает ли самообучение в реальном мире в произвольном помещении, без симулятора и предварительно составленной карты? Ведь именно с такой задачей столкнётся каждый из нас, когда купит робота и привезёт его домой. Тот должен самостоятельно изучить обстановку и начать ориентироваться в любом доме (предварительно лучше убрать из комнат все хрупкие предметы и самому тоже спрятаться).

Исследователи из Университета Карнеги-Меллона (США) поставили максимально сложную задачу, поместив квадрокоптер с нейросетью для самообучения в максимально затруднённое для навигации помещение с большим количеством комнат и мебели. Авторы подчёркивают, что в других исследованиях стараются упростить окружение во избежание столкновений. Они же, наоборот, хотели подтолкнуть БПЛА к максимальному количеству столкновений и аварий, чтобы робот учился именно на этом опыте. Учёные спроектировали систему самообучения, которая учитывает этот отрицательный опыт, а также положительный опыт успешного полёта по траекториям.

Квадрокоптер AR Drone 2.0 под управлением системы машинного обучения прошёл испытания в 20 помещениях дома — и в результате научился эффективно избегать столкновений в каждом из этих помещений. Срок обучения — 40 лётных часов. Исследователи говорят, что стоимость деталей дрона небольшая, и их легко заменить, так что вероятностью катастрофических аварий можно было пренебречь.

Все столкновения были совершенно случайными. БПЛА помещали в произвольную точку пространства — и он летел в случайном направлении. После аварии он возвращался в начальную точку — и снова летел в случайном направлении, пока опять куда-нибудь не врезался.

Камера квадрокоптера снимает на 30 кадрах/с, а после аварии все кадры делятся на две части: в положительную группу помещаются кадры с хорошей траекторией, а в отрицательную группу — кадры, снятые непосредственно перед столкновением. В процессе обучения беспилотник врезался в окружающие предметы 11 500 раз — и собрал одну из самых больших в мире баз по авариям БПЛА. Этот «отрицательный опыт» содержит информацию обо всех возможных способах, какими квадрокоптер может куда-то врезаться.

Группы положительного и отрицательного опыта передавались в качестве входных данных в нейронную сеть, которая научилась делать предсказания, приведёт ли конкретный положительный опыт из текущей траектории к появлению отрицательного опыта из выборки со столкновениями. То есть нейросеть стала предсказывать, куда нужно лететь.

Схема нейронной сети показана на иллюстрации ниже. Веса свёрточных слоёв (серым цветом) рассчитаны заранее по классификации ImageNet, а вот в соединённых слоях (оранжевым) веса выбирались случайно, а наиболее оптимальные значения усваивались в процессе самообучения, полностью на основании данных об авариях. На иллюстрации показаны входные данные — кадры с камеры (слева) и выходные данные нейросети (решение лететь прямо, поворачивать налево или направо).

На следующей схеме показан испытательный полигон — четырёхэтажный дом, где происходило самообучение беспилотника.

На выходе получилась на удивление эффективная система навигации для беспилотников. Достаточно простой подход к самообучению очень эффективен именно для помещений с большим количеством препятствий, в том числе с движущимися препятствиями, такими как люди.

Сравнительное тестирование показало, что эта система навигации в 2-10 раз эффективнее, чем системы самообучения с монокулярной оценкой расстояния. Особенно разница проявляется рядом со стеклянными стенами и стенами без опознавательных знаков, которые традиционно осложняют работу последних.

Научная работа опубликована 19 апреля 2017 года на сайте препринтов arXiv.org (arXiv:1704.05588v2).