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

Yannic Kilcher 9,1 тыс. 32 мин 4 мин 21.04.2020
Главное

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

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

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

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

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

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

📉 Проблема конфликтующих градиентов 4:40

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

💬 Цитаты

«В multi-task learning мы хотим обучаться на разных задачах одновременно... и надеемся, что комбинация задач позволит выучить их лучше, чем по отдельности.»

Янник Кильхер 04:13

«Если я буду выступать в роли адвоката дьявола: я мог бы либо использовать PCGrad, либо просто снизить скорость обучения.»

Янник Кильхер 22:23
👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Multi-Task Learning (MTL)
Подход в машинном обучении, где одна модель обучается выполнять несколько задач одновременно.
Градиент
Вектор, указывающий направление наискорейшего роста функции; используется для обновления весов нейросети.
PCGrad
Алгоритм «проекции конфликтующих градиентов», предотвращающий негативное влияние задач друг на друга.
Константа Липшица
Величина, ограничивающая скорость изменения функции, важная для доказательства сходимости алгоритмов.
📊 Цифры
⚖️ Другая сторона
Искусственный интеллект Янник Кильхер PCGrad Multi-Task Learning градиентный спуск нейронные сети