# Как научить робота крутить вентили за 10 кликов: разбор Dynamical Distance Learning

Источник: https://www.youtube.com/watch?v=-0aM99dMu_4
Канал: Yannic Kilcher
Опубликовано: 12.04.2020

---

Робот, самостоятельно поворачивающий вентиль — зрелище впечатляющее, особенно когда на все обучение потребовалось лишь 10 подсказок человека. Янник Кильхер (Yannic Kilcher) разбирает статью «Dynamical Distance Learning for Semi-Supervised and Unsupervised Skill Discovery», которая обещает решить одну из самых болезненных проблем обучения с подкреплением (RL) — необходимость ручной настройки функций вознаграждения. Ключ к успеху кроется в том, чтобы научить ИИ понимать «расстояние» между состояниями и стремиться к неизведанным границам.

## 🧱 Проблема «бутылочного горлышка» и функции вознаграждения
[[JUMP:0:00]]

В классическом обучении с подкреплением (Reinforcement Learning) агенту нужна функция вознаграждения, чтобы понять, что он делает правильно. В теории достаточно просто дать награду «1» за достижение цели и «0» за всё остальное. Однако на практике, как объясняет Янник Кильхер, это приводит к возникновению «бутылочного горлышка» в исследовании (exploration bottleneck). 

Представьте робота с множеством суставов и степеней свободы. Вероятность того, что он случайно совершит нужную последовательность движений и дотронется до цели, крайне мала. Чтобы ИИ обучился быстрее, инженеры обычно создают «сглаженный градиент» вознаграждения: чем ближе робот к цели, тем больше промежуточных наград он получает. 

Янник Кильхер выделяет главную проблему этого подхода:

* Чтобы создать хорошую функцию вознаграждения, вы уже должны знать, как решить задачу.
* Если вы знаете, как решить задачу, то обучение с подкреплением превращается в «академическое упражнение», а не в поиск нового решения.
* Ручная настройка наград отнимает огромное количество времени и часто бывает невыполнима для сложных сред.

## 📏 Динамическое обучение расстоянию: суть метода
[[JUMP:5:50]]

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

Представьте лабиринт. Агент перемещается в нём, используя свою текущую стратегию (policy). Даже если он не достигает цели и получает «0» вознаграждения, он всё равно посещает цепочку состояний. Мы можем измерить расстояние между любыми двумя состояниями в этой цепочке просто по количеству шагов, которые потребовались агенту, чтобы перейти из точки А в точку Б.



Ключевые особенности функции расстояния:

* **Плотный сигнал:** В отличие от редких наград за достижение цели, данные о расстояниях доступны на каждом шагу обучения.
* **Универсальность:** Функция расстояния $D$ принимает два состояния — текущее и целевое. Это отличает её от обычной «функции ценности» (value function), где цель часто подразумевается неявно.
* **Простота обучения:** Модель просто учится предсказывать, сколько шагов займет путь между двумя кадрами из истории перемещений.

## 🧭 Исследование фронтира: как ИИ находит путь в лабиринте
[[JUMP:11:43]]

Если у нас есть рабочая функция расстояния, обучение становится тривиальным: агент просто выбирает те действия, которые минимизируют расстояние до цели. Но что если цель еще не найдена?

Янник Кильхер объясняет алгоритм «неконтролируемого открытия навыков» (unsupervised skill discovery):

1.  Агент сохраняет все свои попытки в «буфер воспроизведения» (replay buffer).
2.  ИИ анализирует этот буфер и ищет состояние, которое находится **дальше всего** от стартовой точки.
3.  Это состояние объявляется временной целью. Агент пытается достичь его снова и, оказавшись там, начинает случайные исследования уже из этой новой точки.
4.  Таким образом, ИИ постоянно расширяет «фронтир» (границу) своих знаний об окружении, пока случайно не наткнётся на истинную цель.

Этот подход Янник сравнивает с известным алгоритмом **Go Explore**, который также фокусируется на возвращении в далекие состояния для дальнейшего поиска.

## 👥 Полуавтоматический режим: роль человека
[[JUMP:14:15]]

Метод Dynamical Distance Learning (DDL) особенно эффективен в полуавтоматическом режиме (semi-supervised). Именно так робот из начала видео научился крутить вентиль.

Процесс выглядит так:

* Робот совершает серию случайных движений (unsupervised exploration).
* Человеку показывают несколько результатов и просят выбрать тот, который «ближе всего» к желаемому результату.
* Выбранное состояние становится новой целью. Робот использует функцию расстояния, чтобы стабильно достигать этой точки и исследовать пространство дальше.
* Для обучения сложным навыкам (как в примере с роботом-манипулятором) потребовалось всего 10 таких вмешательств со стороны человека.



## ⚙️ Технические детали и обучение модели
[[JUMP:15:20]]

Технически реализация DDL выглядит на удивление просто. Авторы используют стандартную регрессию.

Параметры обучения:

* **Функция потерь:** Среднеквадратичная ошибка (MSE) между предсказанным и реальным количеством шагов.
* **Стоимость перехода:** В простейшем случае цена каждого шага принимается за единицу.
* **Входные данные:** Пары состояний из эпизодов, сохраненных в памяти.

В экспериментах метод показал отличные результаты на модели Hopper (прыгающий робот). В режиме без учителя робот сам открыл навыки движения вправо и влево, просто потому что эти действия уводили его максимально далеко от начальной точки.

## ⚠️ Критика: где метод может дать сбой
[[JUMP:20:07]]

Несмотря на элегантность подхода, Янник Кильхер высказывает ряд сомнений относительно его универсальности. По его мнению, у DDL есть «слабые места»:

* **Высокий фактор ветвления:** Если в среде слишком много направлений движения, понятие «самого далекого состояния» может стать бессмысленным. Вы можете уйти очень далеко по одному пути, но так и не исследовать тысячи других веток.
* **Ловушки и циклы:** Янник предполагает, что агент может попасть в циклическое движение или выбрать сложный кружной путь, пропустив очевидный короткий маршрут, потому что он зациклен на максимизации расстояния.
* **Специфичность сред:** Метод может отлично работать в лабиринтах или с манипуляторами, но буксовать в комбинаторно сложных задачах.

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