# Янник Килчер: «Градиенты — это не всё, что вам нужно»

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

---

В новом видео Янник Килчер (Yannic Kilcher) анализирует научную работу «Gradients are Not All You Need», которая бросает вызов современному тренду на дифференцируемость всего и вся. Автор подробно объясняет, почему в сложных динамических системах классическое обратное распространение ошибки может быть неэффективным и в каких случаях методы «черного ящика» показывают лучшие результаты.

## 🧠 Суть проблемы: когда градиенты ведут в тупик
[[JUMP:01:18]]

Основной тезис статьи, представленной Янником Килчером, заключается в том, что возможность вычислить градиент не всегда означает целесообразность этого действия. Исследователи (Люк Метц и др.) утверждают, что при работе с итерируемыми динамическими системами, склонными к хаотичному поведению, градиенты становятся крайне нестабильными.

По словам Килчера, сегодня наблюдается бум дифференцируемых систем: от физических симуляторов до обучаемых оптимизаторов. Однако в этих случаях градиенты часто обладают огромной дисперсией (variance) и ведут себя непредсказуемо. Вместо того чтобы слепо полагаться на обратное распространение через внутреннюю динамику системы, авторы предлагают использовать оценку градиента методом «черного ящика».

В качестве примера рассматривается линейная итерируемая система, где состояние $s_{k+1}$ получается путем применения матрицы $A$ к предыдущему состоянию $s_k$. Если повторять этот процесс многократно, мы получаем рекуррентную систему, аналогичную нейронным сетям (RNN) или задачам обучения с подкреплением (RL).

## 📉 Математика хаоса: якобианы и спектральный анализ
[[JUMP:12:04]]

Ключ к пониманию проблемы лежит в спектре якобианов — матриц частных производных, описывающих переход системы из одного состояния в другое. Янник Килчер подчеркивает, что поведение градиента напрямую зависит от собственного числа (eigenvalue) этого якобиана:

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



В хаотических системах даже малейшее изменение начальных условий приводит к колоссальным расхождениям в конечном результате. Янник объясняет, что при обратном распространении ошибки через такие системы (BPTT — Backpropagation Through Time) мы сталкиваемся с «телескопическими произведениями» матриц, которые усиливают любую нестабильность.

## 🧪 Трюк репараметризации и его скрытые угрозы
[[JUMP:15:38]]

Янник Килчер подробно разбирает «трюк репараметризации» (reparameterization trick), широко используемый в вариационных автокодировщиках (VAE). Чтобы сделать процесс семплирования из распределения дифференцируемым, случайность выносится за пределы графа вычислений: например, значение берется из нормального распределения и масштабируется параметрами $\mu$ и $\sigma$.

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

## 🛠️ Практическое руководство: инструменты и эксперименты
[[JUMP:26:42]]

В видео выделены три конкретных примера, где дифференцирование «в лоб» проигрывает альтернативным методам.

### 1. Физика твердых тел в Brax
Для тестов использовался пакет **Brax** — библиотека для сверхбыстрых дифференцируемых физических симуляций на JAX.

* **Задача:** Оптимизация стохастической политики управления роботом-муравьем (Ant).
* **Наблюдение:** При малом количестве шагов (unroll length) градиент гладкий. Но чем дольше симуляция, тем более хаотичным становится ландшафт функции потерь.
* **Результат:** Попытки использовать чистые градиенты приводят к взрыву дисперсии. Популярные алгоритмы RL, такие как PPO, справляются с этой задачей значительно лучше.

### 2. Мета-обучение оптимизаторов
Схема «оптимизатор оптимизирует оптимизатор» также страдает от хаоса.

* **Проблема:** Внутренний оптимизатор работает на мини-батчах, что вносит случайность. При длительном развертывании (unrolling) система становится сверхчувствительной к параметрам.
* **Решение:** Усреднение по множеству семплов помогает сгладить ландшафт, но не избавляет от фундаментальной нестабильности при больших горизонтах планирования.

### 3. Упаковка дисков (Disk Packing)
Геометрическая задача размещения частиц разного диаметра в ограниченном объеме.

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

## 💡 Рекомендации: что делать, если градиенты не работают
[[JUMP:40:01]]

Янник Килчер формулирует несколько стратегий, предложенных в статье для борьбы с патологическими градиентами:

1.  **Выбор стабильных систем:** использовать архитектуры, спроектированные для борьбы с нестабильностью, такие как LSTM или GRU, которые за счет механизмов гейтинга более устойчивы к взрыву градиентов.
2.  **Инициализация:** в RNN помогает инициализация весов, близкая к единичной матрице (identity), что удерживает собственные числа якобиана в районе единицы на ранних этапах обучения.
3.  **Дробление симуляции:** в физике можно разделять процесс на части (свободное движение и момент столкновения) и дифференцировать их по отдельности.
4.  **Методы «черного ящика»:** если система хаотична, Килчер рекомендует использовать **Evolutionary Strategies (ES)** или алгоритмы вроде **REINFORCE** и **PPO**. Они дают несмещенную оценку градиента с гораздо меньшей дисперсией в сложных условиях.

> «Тот факт, что вы можете вычислить градиент, не означает, что вы всегда должны это делать», — резюмирует Янник, призывая исследователей не бояться возвращаться к методам черного ящика там, где дифференцируемое программирование заходит в тупик.