# Learning Rate Grafting: как эффективно скрестить оптимизаторы в нейросетях

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

---

## Оптимизатор «Графтинг»: как разделить направление и шаг обучения в нейросетях
[[JUMP:0:00]]

Исследователь и ведущий YouTube-канала Янник Килчер (Yannic Kilcher) представил обзор научной работы, посвященной технике «графтинга» (grafting) — методу, который позволяет переносить график скорости обучения (learning rate) из одного оптимизатора в другой. Авторы статьи, чьи имена были деанонимизированы Килчером в ходе обзора, исследуют фундаментальные различия между адаптивными методами оптимизации и классическим стохастическим градиентным спуском (SGD). Основная идея заключается в том, что успех многих современных методов, таких как Adam или AdaGrad, во многом объясняется специфическим графиком изменения шага обучения, который они генерируют «на лету», а не только уникальными направлениями поиска минимума.

### 🛠 Метод «графтинга»: как это работает
[[JUMP:7:32]]

Графтинг — это бинарная операция, объединяющая два разных оптимизатора в процессе обучения одной модели. Суть подхода заключается в разделении двух аспектов обновления весов:

1.  **Направление (Direction):** Определяется одним оптимизатором (например, SGD).
2.  **Величина шага (Magnitude):** Определяется другим оптимизатором (например, Adam).

Алгоритм работает следующим образом: оба оптимизатора получают на вход текущие веса и градиенты и независимо вычисляют предлагаемые шаги. Затем система вычисляет нормы этих шагов и нормализует «направляющий» оптимизатор, чтобы он двигался в заданном направлении, но с «масштабом» (размером шага), предложенным вторым методом. 

По словам Килчера, это позволяет, например, использовать простоту и эффективность SGD, добавив ему «умный» график скорости обучения от Adam, при этом не тратя дополнительные ресурсы памяти на хранение состояний Adam.

### 📉 Аналитика и результаты экспериментов
[[JUMP:26:42]]

В ходе экспериментов, описанных в работе, выяснилось несколько ключевых моментов:

*   **Эффективность SGD:** При использовании специфического графика скорости обучения от Adam, модель SGD часто демонстрирует результаты, сопоставимые или даже превосходящие оригинальный Adam.
*   **Снижение потребления памяти:** Поскольку графтинг позволяет имитировать поведение адаптивных методов, используя только базовый SGD, это дает значительную экономию памяти GPU.
*   **Исследовательский потенциал:** Метод стал мощным инструментом для понимания того, почему одни алгоритмы работают лучше других, позволяя буквально «смешивать» их поведение и изучать влияние отдельных компонентов.

### 🚀 Практическое применение: извлечение коррекций
[[JUMP:31:43]]

Один из наиболее прикладных результатов исследования заключается в возможности «заморозки» полученных знаний. Авторы предлагают:

1.  Запустить процесс обучения на нескольких тысячах шагов (например, 2000 для архитектуры BERT), используя оба оптимизатора одновременно.
2.  Вычислить медианное соотношение норм шагов между оптимизаторами для каждого слоя нейросети.
3.  В дальнейшем использовать только SGD, применяя к нему зафиксированные коэффициенты коррекции скорости обучения для каждого слоя.

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