Modern Robotics и Physical AIУрок 1.2 · DAgger
1.2 Часть 1 · Обучение по демонстрациям

DAgger и вмешательства

В уроке 1.1 политика съезжала с маршрута: она попадала туда, где оператор не ездил, и примеров там не было. Мы добавляли такие примеры, предполагая, куда она съедет: шумным оператором и сдвинутыми кадрами. В этом уроке обойдёмся без предположений: Ада едет сама, а эксперт подсказывает правильное действие там, куда она заехала. Это DAgger. Потом разберём, как беречь время эксперта-человека: пусть он сам перехватывает управление, когда видит опасность, или робот зовёт его, когда сомневается.

Ада — домашний гуманоидный робот, на котором построены лабораторные работы курса. Подробнее о ней — в уроке 0.1.

≈ 40 минутлаборатория и 3 интерактива
ДВЕ АДЫСделай итерацию DAgger и сравни с политикой из урока 1.1 на тех же стартах
40 ПОДСКАЗОКРеши, где спросить учителя, если его время ограничено
ЭКСПЕРТПерехватывай управление, как в HG-DAgger, пока Ада не проедет без тебя
КРИВАЯПострой по точкам: DAgger против «ещё больше демонстраций» при равной разметке
БЮДЖЕТНайди порог, при котором Ада просит помощи редко и вовремя

Начать урок ↓

1 Проблема

Где взять нужные данные

В уроке 1.1 политика разбивалась по одной причине: она попадала туда, где оператор никогда не ездил. Оператор вёл Аду по центру коридора, а Ада из-за мелких ошибок съезжала к стене. Примеров «что делать у стены» в данных не было, поэтому там она и ошибалась, и каждая ошибка уводила её ещё дальше от примеров.

Во второй половине урока 1.1 мы добавили в данные состояния рядом с маршрутом: шумного оператора и сдвинутые кадры. Это помогло, но это догадка: мы заранее предполагали, куда политика съедет. Если она съедет туда, куда мы не догадались, примеров снова не будет.

Надёжнее не угадывать, а спрашивать. Пусть Ада едет сама, а эксперт в каждой точке, куда она заехала, говорит правильное действие. Добавляем эти примеры и переобучаем — данные появляются ровно там, где политика ошибается. Это DAgger. Как он устроен и почему работает?

2 Идея

DAgger: едет политика, размечает эксперт

DAgger (Dataset Aggregation) — это цикл из четырёх шагов. Его предложили в 2011 году Стефан Росс, Джефф Гордон и Дрю Багнелл:

  1. Обучить политику на демонстрациях эксперта.
  2. Пустить политику ехать самой и записать все состояния, в которые она попала.
  3. Попросить эксперта разметить эти состояния правильными действиями.
  4. Добавить новые примеры ко всем старым и переобучить политику. Повторить с шага 2.

Цикл убирает причину дрейфа. В behavior cloning первая ошибка уводила политику туда, где примеров нет, и в худшем случае ошибки копились как εT2\varepsilon T^2. В DAgger за несколько кругов примеры появляются как раз там, куда политика заезжает. Авторы доказали, что тогда ошибка растёт линейно по длине эпизода, а не квадратично.

Есть оговорка: если одна ошибка необратима — например, Ада упала с лестницы, — выигрыш пропадает.

Под капотом: алгоритм и гарантия
D←∅\mathcal{D} \leftarrow \varnothing; π^1←\hat\pi_1 \leftarrow любая политика
для i=1,…,Ni = 1, \ldots, N:
πi←βi π∗+(1−βi) π^i\pi_i \leftarrow \beta_i\,\pi^* + (1 - \beta_i)\,\hat\pi_i — с вероятностью βi\beta_i на шаге действует эксперт
собрать траектории πi\pi_i длиной TT
Di←{(s,π∗(s))}\mathcal{D}_i \leftarrow \{(s, \pi^*(s))\} для всех посещённых ss
D←D∪Di\mathcal{D} \leftarrow \mathcal{D} \cup \mathcal{D}_i
π^i+1←\hat\pi_{i+1} \leftarrow обучить с учителем на D\mathcal{D}
вернуть лучшую π^i\hat\pi_i на валидации

На практике β1=1\beta_1 = 1, а на следующих итерациях эксперт не вмешивается: в статье этот вариант «часто работает лучше всего». Возвращают лучшую политику на валидации, а не последнюю.

Гарантия: при достаточном числе итераций

J(π^)≤J(π∗)+u T εN+O(1)J(\hat\pi) \le J(\pi^*) + u\,T\,\varepsilon_N + O(1)

Здесь εN\varepsilon_N — лучшая достижимая ошибка на агрегированных данных, а uu — насколько одна ошибка увеличивает стоимость эпизода. Если ошибку можно быстро исправить, uu ограничено, и рост линейный. Если ошибка необратима, uu растёт вместе с TT, и преимущество перед behavior cloning пропадает. Для доказательства нужен алгоритм обучения без сожалений (no-regret): например, обучение на всех накопленных данных с выпуклой функцией потерь.

🎮

Как это проверяли. В оригинальной статье были видеоигры. В Super Tux Kart экспертом был человек с джойстиком, и обычный behavior cloning не улучшался от новых демонстраций, а DAgger почти перестал вылетать с трассы после пяти итераций. В Super Mario Bros экспертом был планировщик с доступом к внутреннему состоянию игры. В лаборатории ниже устроено так же: правильный руль подсказывает классический планировщик, который знает точную карту дома.

Сколько таких кругов понадобится Аде, чтобы перестать врезаться?

🔬 Лаборатория

Ада учится на своих ошибках

Проверим на политике из урока 1.1: она обучена на 10 аккуратных поездках робота-оператора и доезжает 6 раз из 10. Сначала сделаем итерацию DAgger и сравним результат с исходной политикой на тех же стартах. Потом ограничим время учителя: он разметит только 40 кадров, а где спросить, решаешь ты. В последней задаче эксперт — ты: перехватываешь управление, когда Ада начинает съезжать. Задачи — справа, по одной.

политика из урока 1.1политика, которую учимподсказки учителя
Под капотом: что внутри лаборатории
  • Мир и политика — те же, что в уроке 1.1. Стартовая политика обучена на 10 аккуратных поездках робота-оператора.
  • Проверка. Обе Ады проезжают по 10 раз с одних и тех же стартов с одинаковым шумом в моторах, как в лаборатории урока 1.1.
  • Итерация DAgger. Политика проезжает маршрут сама с шумом 0,2 рад/с, учитель-планировщик размечает каждое посещённое состояние. Новые примеры добавляются ко всем старым, сеть дообучается 500 итераций с шагом 0,003.
  • 40 подсказок. Каждое касание выбирает 10 ближайших кадров из 10 поездок политики урока 1.1 в радиусе 35 см. Учитель размечает только их, сеть дообучается так же, как в DAgger, каждый раз от исходной политики.
  • Ты — эксперт. Старт и шум — из той проверочной поездки, где политика урока 1.1 врезается. Пока кнопка зажата, руль ведёт курсор, и эти пары «наблюдение → твой руль» идут в данные. После поездки сеть дообучается.

Итог лаборатории: одной итерации DAgger хватает, чтобы Ада доезжала 10 из 10 вместо 6 из 10. Но сравнение неравное: политика после DAgger получила новые размеченные примеры, а политика из урока 1.1 — ни одного. Может быть, DAgger выигрывает только потому, что данных стало больше?

3 Сравнение

DAgger против «ещё больше демонстраций»

Чтобы это проверить, сравним два способа при одинаковом числе размеченных примеров. Серая кривая — behavior cloning на 5, 10, 20 и 40 аккуратных демонстрациях. Оранжевая — те же 5 демонстраций плюс итерации DAgger, по одной размеченной поездке на итерацию. Каждая точка — обучение с нуля и 20 проверочных поездок, на точку уходит секунда-две. Точки добавляешь ты, задача — справа.

behavior cloning
демонстраций
DAgger
итераций после 5 демонстраций
behavior cloning: больше аккуратных демонстрацийDAgger: 5 демонстраций и размеченные поездки политики
Нажми любую кнопку, чтобы добавить точку.

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

4 Люди

Почему людям неудобен DAgger

С человеком DAgger работает хуже. Планировщику всё равно, кто ведёт машину, а человеку — нет. Попробуй сказать, как правильно повернуть руль, глядя на видео, где рулит кто-то другой: реакции не те, обратной связи нет, ощущение задержки. Авторы HG-DAgger (2019) писали именно об этом: при разметке «со стороны» качество меток человека падает.

Их решение: человек не размечает всё подряд, а перехватывает управление, когда видит опасность, и сам возвращает его политике. В данные попадают только участки, где вёл человек. В лаборатории это режим «Ты — эксперт».

В эксперименте на настоящем автомобиле с виртуальными препятствиями у HG-DAgger не было ни столкновений, ни съездов, хотя выборка была маленькой.

Под капотом: HG-DAgger

Политика — ансамбль сетей. Человек сам решает, когда перехватить управление и когда вернуть его. В данные попадают только пары «наблюдение → действие человека» с его участков; на участках политики метки не собирают.

Попутно авторы оценивают, где политике опасно ехать одной. «Сомнение» ансамбля — норма диагонали ковариации его выходов. Порог τ\tau — среднее последних 25% значений сомнения в моменты, когда человек перехватывал управление. В симуляции при старте внутри «безопасной» по τ\tau области столкновений было в 12 раз меньше.

🚗

Вмешательства в индустрии. Беспилотные компании годами считали disengagements — случаи, когда человеку приходится брать управление. У Waymo удалённые операторы сегодня не ведут машину, а советуют системе, и она может совет отвергнуть. У домашнего гуманоида 1X NEO незнакомые задачи выполняет удалённый оператор, и эти сессии становятся данными для обучения.

Задача: кто решает, когда нужен эксперт

У HG-DAgger остаётся слабое место: чтобы вовремя перехватить управление, человек должен всё время смотреть на робота. Методы этого семейства собирают данные там, куда заезжает политика, а различаются тем, кто решает, когда звать эксперта. Разложи карточки по корзинам: перетащи карточку или нажми её, а потом корзину.

Может ли робот сам понять, когда ему нужна помощь?

5 Бюджет внимания

Робот просит помощи, когда сомневается

Может, если умеет оценить свою неуверенность. Человек не может смотреть на робота весь день, поэтому политика должна сама понимать, когда ей нужна помощь, и звать эксперта только тогда.

Простой способ оценить неуверенность — обучить три сети на одних данных с разной инициализацией. Там, где данных много, они отвечают одинаково. Там, где данных нет, начинают спорить. Разброс их ответов и есть неуверенность.

Ниже Ада едет десять раз. Если разброс ансамбля выше порога, она просит помощи, и этот шаг ведёт учитель. Задача справа: найди порог, при котором Ада почти не врезается и не зовёт человека без необходимости.

Так устроен ThriftyDAgger (2021). Там робот, который зовёт человека по порогу, обошёл HG-DAgger, где решает человек: 73 успешных вставки из 100 против 57.

поездки Адышаги, где она просила помощи и ехал учитель
—шагов с просьбой о помощи
—доля таких шагов
—аварий из 10
—доехали из 10

Сначала обучи ансамбль.

Под капотом: неуверенность ансамбля

Три сети π1,π2,π3\pi_1, \pi_2, \pi_3 учатся на одних данных и отличаются только начальными весами. Политика едет по среднему ответу, а неуверенность — разброс ответов:

π(s)=13∑k=13πk(s),σ(s)=13∑k=13(πk(s)−π(s))2.\begin{aligned} \pi(s) &= \frac13 \sum_{k=1}^{3} \pi_k(s), \\ \sigma(s) &= \sqrt{\frac13 \sum_{k=1}^{3} \bigl(\pi_k(s) - \pi(s)\bigr)^2}. \end{aligned}

Если σ(s)>τ\sigma(s) > \tau, робот просит помощи.

Там, где данных много, сети сходятся к одному ответу. Где данных нет, каждая экстраполирует по-своему, и σ\sigma растёт. ThriftyDAgger добавляет второй сигнал — риск: обученная оценка вероятности не доехать до цели. Пороги он выбирает так, чтобы человек вмешивался в заданной доле шагов, например в 1%.

Подходящий порог есть, но окно узкое: ниже него Ада зовёт человека слишком часто, выше — перестаёт просить помощи и врезается.

Из каждого вмешательства мы пока брали одно — правильное действие в этом месте. Есть ли в нём ещё что-то полезное?

6 Дальше

От вмешательств к обучению с подкреплением

Есть. Само вмешательство говорит, что политика попала в плохое место: иначе человек не стал бы брать управление. Этот сигнал «здесь что-то пошло не так» используют как награду в обучении с подкреплением:

Подробно обучение с подкреплением разберём в части 5, а π*0.6 — в уроке 3.8.

7 Проверь себя

Семь вопросов о типичных заблуждениях

8 Итог

Итоги урока

  1. DAgger лечит сдвиг распределения: политика едет сама, эксперт размечает её состояния, данные копятся.
  2. При равной разметке DAgger выигрывает у «ещё больше демонстраций»: важно не сколько данных, а где они.
  3. Людям трудно размечать со стороны. HG-DAgger: человек перехватывает управление сам, в данные идут его участки.
  4. Неуверенность можно мерить разбросом ансамбля и просить помощи только тогда, когда сеть сомневается.
  5. Вмешательство — ещё и сигнал «здесь плохо». На нём строят обучение с подкреплением в системах 2025 года.

Открытые вопросы

Ты запускаешь пилот роботов-курьеров с удалёнными операторами. Как построить процесс, чтобы каждое вмешательство улучшало политику?

Записывать каждое вмешательство вместе с наблюдениями до него и действиями оператора; регулярно добавлять эти данные ко всему датасету и переобучать; следить за метрикой «вмешательств на час» по версиям политики; настроить порог, при котором робот сам зовёт оператора, и проверять, что вмешательств становится меньше без роста аварий.

Почему в DAgger важно агрегировать все данные, а не учиться только на последней итерации?

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

Гид по статье

Ross, Gordon, Bagnell, «A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning», AISTATS 2011.

Материалы

➡️

Дальше: мультимодальность. DAgger и вмешательства решают проблему сдвига: примеры появляются там, куда заезжает политика. Остаётся другая проблема. Бывает, что правильных действий два: оператор объезжает препятствие то слева, то справа. Политика, обученная на среднеквадратичную ошибку, выдаёт среднее этих действий и едет прямо в препятствие. Так Ада въезжала в чайник в уроке 0.1. Почему так происходит и как научить политику выбирать одно действие — урок 1.3.

Урок пригодился? Скажи спасибо — так автор узнает, что курс читают.