БПЛА 11 500 раз врезался в окружающие объекты, летая по случайно выбранным траекториям
Как научить беспилотный летательный аппарат перемещаться по заданному маршруту, уклоняясь от препятствий? Можно ли обойтись без цифровой 3D-карты, если речь идёт о навигации внутри помещений? Для решения этой задачи есть несколько подходящих технологий, в том числе имитационное обучение, в котором «учитель» обучает беспилотник летать по разным траекториям, исправляя его действия в случае необходимости. Постепенно БПЛА выучивает маршруты. Но такой подход явно ограничен набором входных данных: учитель не может бесконечно сопровождать беспилотник.
В последние годы стали бурно развиваться системы машинного обучения без учителя (self-supervised
learning). Они отлично проявили себя в ряде задач: навигация, хватание предметов (в робототехнике) и задачах «толкать/тянуть» (интуитивная физика). Но способна ли системы самообучения освоить такую сложную задачу как навигация внутри помещений — и преодолеть ограничения имитационного обучения?
Предыдущие исследования показали, что такие системы действительно способны обучаться без учителя в симуляторе, а обученные знания можно переносить в реальный мир. Но на практике более актуален другой вопрос: работает ли самообучение в реальном мире в произвольном помещении, без симулятора и предварительно составленной карты? Ведь именно с такой задачей столкнётся каждый из нас, когда купит робота и привезёт его домой. Тот должен самостоятельно изучить обстановку и начать ориентироваться в любом доме (предварительно лучше убрать из комнат все хрупкие предметы и самому тоже спрятаться).
Исследователи из Университета Карнеги-Меллона (США) поставили максимально сложную задачу, поместив квадрокоптер с нейросетью для самообучения в максимально затруднённое для навигации помещение с большим количеством комнат и мебели. Авторы подчёркивают, что в других исследованиях стараются упростить окружение во избежание столкновений. Они же, наоборот, хотели подтолкнуть БПЛА к максимальному количеству столкновений и аварий, чтобы робот учился именно на этом опыте. Учёные спроектировали систему самообучения, которая учитывает этот отрицательный опыт, а также положительный опыт успешного полёта по траекториям.
Квадрокоптер AR Drone 2.0 под управлением системы машинного обучения прошёл испытания в 20 помещениях дома — и в результате научился эффективно избегать столкновений в каждом из этих помещений. Срок обучения — 40 лётных часов. Исследователи говорят, что стоимость деталей дрона небольшая, и их легко заменить, так что вероятностью катастрофических аварий можно было пренебречь.
Все столкновения были совершенно случайными. БПЛА помещали в произвольную точку пространства — и он летел в случайном направлении. После аварии он возвращался в начальную точку — и снова летел в случайном направлении, пока опять куда-нибудь не врезался.
Камера квадрокоптера снимает на 30 кадрах/с, а после аварии все кадры делятся на две части: в положительную группу помещаются кадры с хорошей траекторией, а в отрицательную группу — кадры, снятые непосредственно перед столкновением. В процессе обучения беспилотник врезался в окружающие предметы 11 500 раз — и собрал одну из самых больших в мире баз по авариям БПЛА. Этот «отрицательный опыт» содержит информацию обо всех возможных способах, какими квадрокоптер может куда-то врезаться.
Группы положительного и отрицательного опыта передавались в качестве входных данных в нейронную сеть, которая научилась делать предсказания, приведёт ли конкретный положительный опыт из текущей траектории к появлению отрицательного опыта из выборки со столкновениями. То есть нейросеть стала предсказывать, куда нужно лететь.
Схема нейронной сети показана на иллюстрации ниже. Веса свёрточных слоёв (серым цветом) рассчитаны заранее по классификации ImageNet, а вот в соединённых слоях (оранжевым) веса выбирались случайно, а наиболее оптимальные значения усваивались в процессе самообучения, полностью на основании данных об авариях. На иллюстрации показаны входные данные — кадры с камеры (слева) и выходные данные нейросети (решение лететь прямо, поворачивать налево или направо).
На следующей схеме показан испытательный полигон — четырёхэтажный дом, где происходило самообучение беспилотника.
На выходе получилась на удивление эффективная система навигации для беспилотников. Достаточно простой подход к самообучению очень эффективен именно для помещений с большим количеством препятствий, в том числе с движущимися препятствиями, такими как люди.
Сравнительное тестирование показало, что эта система навигации в 2-10 раз эффективнее, чем системы самообучения с монокулярной оценкой расстояния. Особенно разница проявляется рядом со стеклянными стенами и стенами без опознавательных знаков, которые традиционно осложняют работу последних.
Научная работа опубликована 19 апреля 2017 года на сайте препринтов arXiv.org (arXiv:1704.05588v2).
Комментарии (11)
ploop
12.05.2017 16:54+1без цифровой 3D-карты
На сколько я понял, за 11к столкновений он тупо составил эту карту, «прощупав» помещение.red75prim
12.05.2017 17:08+3Тестирование обычно выполняется на примерах не входящих в обучающую выборку. В этом случае 4 из 6-ти тестов были произведены в незнакомых дрону условиях.
eMarchenko
12.05.2017 17:19Я правильно понимаю, что за 40 часов система методом тыка выучила, как выглядят
стенывсе препятствия в доме?
Ugrum
12.05.2017 17:24Да просто устал он об стены биться, плюнул и решил про себя "Ладно, человеки, на этот раз ваша взяла. Выполню я ваши требования. Но ещё одну зарубку на память я поставил..."
IvanTamerlan
13.05.2017 00:2111 500 зарубок на память!
Если предположим, что у беспилотника есть нос («Заруби себе на носу!»), а одна зарубка несет 1Мбайт информации (фото, заметки и прочие навигационные данные), тогда имеем, что память носа составляет 11,23 Гбайт. Таким образом мы выяснили емкость носа-накопителя для беспилотника.
А если серьезно. Для беспилотника будет очень большой проблемой:
1) встретить себе подобного (т.е. другой беспилотник)
2) иной НЛО (та же муха, еще есть попугаи)
3) передвигающиеся объекты-скалы (тот же человек для беспилотника что скала, облет которой занимает время)
4) внезапно нападающие объекты (кошка, собака)
5) перемещение объектов (все объекты в примере были статичными)
6) вредные объекты, столкновение с которыми будет разрушительным (огонь из камина, вода в ванной) или сильно повреждающим (хрупкие предметы или просто ткань типа штор с кучей рюшечек для наматывания на лопасти)
главное, чтобы подобные методы обучения методом реального столкновения с препятствием не пытались использовать робоавтомобили, иначе будут статьи, типа:
Alex_ME
13.05.2017 01:07+1Я далеко не специалист в машинном обучении, но последнее время интересуюсь подобным методом обучения (в рамках обучения хождению антропоморфного робота).
Возможно, я ошибаюсь, но разве это не обучение с подкреплением (reinforcement learning)? Формально — это обучение с учителем, но "учителем" выступает среда\модель.
Sadler
13.05.2017 12:03Обычно да, но необязательно. Вполне может быть просто итеративный процесс обучения вида: тестируем модель и собираем данные -> учим модель -> тестируем новую модель и собираем новые данные.
Garbus
13.05.2017 05:44+2Интересно, почему для подобных целей не используют методы ультразвуковой эхолокации? Неужели шумы и вибации самого коптера полностью забивают полезный сигнал?
itsbeto
15.05.2017 22:32когда то давно, при изучении детской психологии, узнал, что малышу необходимо около 12 тысяч повторений, чтобы его рука с ложкой каши попала ему в рот, а не мимо. так, наблюдение.
saboteur_kiev
Выглядит весьма интересно!
Если бы у этого квадракоптера были лапки, чтобы сесть на препятствие и ощупать его — была бы практически настоящая искусственная муха…