# Хирургия градиентов: как метод PCGrad решает проблемы многозадачного обучения

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

---

В новом видео Янник Кильхер (Yannic Kilcher) разбирает научную работу «Gradient Surgery for Multi-Task Learning», авторы которой предлагают метод PCGrad для решения проблем многозадачного обучения. Исследование фокусируется на ситуации, когда нейросеть обучается выполнять несколько задач одновременно, используя общее внутреннее представление, но сталкивается с конфликтами в процессе оптимизации.

## 🧠 Что такое Multi-Task Learning и чем оно отличается от BERT
[[JUMP:00:00]]

Многозадачное обучение (Multi-Task Learning, MTL) предполагает, что у модели есть один и тот же входной сигнал, на основе которого нужно выполнить несколько разных задач [00:41]. Янник Кильхер приводит пример с фотографией еды из Instagram:

*   **Задача 1:** Определить, является ли объект фруктом [01:08].
*   **Задача 2:** Подсчитать количество калорий в этом блюде [01:21].

Вместо того чтобы обучать два отдельных классификатора, выгоднее создать нейронную сеть с общим скрытым представлением (shared representation) [02:24]. Это особенно полезно, если для одной из задач (например, подсчета калорий) данных много, а для другой — крайне мало [03:04].

Янник Кильхер подчеркивает важное различие между MTL и подходом, используемым в модели BERT [03:32]:

1.  **BERT (Pre-training + Fine-tuning):** Сначала модель обучается на одной задаче (Masked Language Model), а затем последовательно дообучается на других (ответы на вопросы, анализ тональности) [03:45].
2.  **MTL:** Обучение на всех задачах происходит одновременно, чтобы выработать универсальное представление [04:13].

## 📉 Проблема конфликтующих градиентов
[[JUMP:04:40]]

Главная проблема MTL заключается в сложности ландшафта оптимизации. Когда мы суммируем потери (loss) по разным задачам, итоговый ландшафт может сильно отличаться от ландшафта каждой отдельной задачи [07:35].

Янник Кильхер объясняет механизм возникновения конфликтов:

*   **Направление:** Градиент первой задачи может указывать в одну сторону, а градиент второй — в противоположную или под тупым углом [09:51].
*   **Величина:** Одна задача может иметь очень крутой склон (большой градиент), а другая — пологий (маленький градиент) [10:06].
*   **Результат:** Итоговый вектор градиента может направить модель «вверх по холму» относительно одной из задач, ухудшая её показатели [10:32].

Ведущий отмечает, что в обычном обучении на одном датасете мы тоже имеем дело с разными данными, но там шум усредняется стохастически [12:14]. В MTL же возникают систематические ошибки из-за того, что одна задача может быть объективно сложнее другой или иметь иную шкалу функции потерь [13:09].

## 🔪 PCGrad: «Хирургическое» вмешательство в градиенты
[[JUMP:13:37]]

Для решения проблемы авторы статьи предлагают алгоритм PCGrad (Projected Conflicting Gradients). Его суть заключается в следующем: если два градиента конфликтуют (угол между ними больше 90 градусов), один из них проецируется на нормальную плоскость другого [13:52].

Процедура работы алгоритма:

1.  Модель получает батч данных для разных задач.
2.  Вычисляются градиенты для каждой задачи в отдельности.
3.  Проверяется наличие конфликта (отрицательное косинусное сходство).
4.  Если конфликт есть, градиент одной задачи корректируется так, чтобы он перестал мешать другой.
5.  В итоге получается набор неконфликтующих градиентов для обновления весов [14:57].

## 📑 Теоремы и «зловещая триада» условий
[[JUMP:15:12]]

Авторы работы приводят две важные теоремы:

*   **Теорема 1 (Сходимость):** Доказывает, что PCGrad в конечном итоге придет к оптимальному значению, как и классические методы, при условии выпуклости функций [15:25].
*   **Теорема 2 (Скорость):** Утверждает, что PCGrad может достигать меньших потерь быстрее, чем обычное многозадачное обучение (MT) [17:02].

Янник Кильхер подробно разбирает условия, при которых PCGrad дает преимущество (он иронично называет их «святой/зловещей триадой» [20:58]):

1.  Угол между градиентами задач должен быть достаточно большим (задачи должны сильно конфликтовать) [21:10].
2.  Разница в величинах градиентов должна быть существенной [21:10].
3.  Кривизна функции потерь должна быть высокой [21:26].
4.  Скорость обучения (learning rate) должна быть достаточно большой [21:26].

Янник Кильхер выступает в роли «адвоката дьявола» и высказывает критическое замечание: преимущество PCGrad может проявляться только тогда, когда исследователь установил слишком высокую скорость обучения [22:36]. По мнению Кильхера, во многих случаях можно просто снизить learning rate, и классический алгоритм справится не хуже, хотя PCGrad позволяет избежать этой ручной настройки [23:03].

## 🤖 Тесты на роботах и анализ кривизны
[[JUMP:24:10]]

Эффективность метода проверялась на бенчмарках MT10 и MT50, которые представляют собой задачи по манипуляции объектами в симуляции робототехники (всего 10 и 50 различных задач соответственно) [24:10].

Ключевые детали эксперимента:

*   Использовался алгоритм обучения с подкреплением Soft Actor-Critic (SAC) [26:10].
*   В реализации агенты сначала выбирают задачу, взаимодействуют со средой, сохраняют опыт в буфер (replay buffer), а затем обучаются на мини-батчах из разных задач [24:48].
*   Результаты показали, что комбинация SAC + PCGrad значительно превосходит обычный многозадачный SAC и даже обучение каждой задачи по отдельности [26:35].

Авторы также измерили кривизну функции потерь в процессе обучения, используя аппроксимацию Тейлора [27:17]. Они обнаружили, что кривизна увеличивается на порядки по мере прохождения итераций [29:05]. Янник Кильхер отмечает, что условия для работы PCGrad сохраняются на протяжении почти всего процесса обучения: в начале они соблюдаются почти в 100% шагов, а к концу — примерно в половине случаев [30:29].

В завершение Янник Кильхер демонстрирует графики, где видно, что стандартный SAC часто не может выучить более сложную задачу, так как градиент более простой задачи доминирует в процессе обучения. В то же время PCGrad успешно справляется с обеими [31:53].