В новом видео Янник Кильхер (Yannic Kilcher) разбирает научную работу «Gradient Surgery for Multi-Task Learning», авторы которой предлагают метод PCGrad для решения проблем многозадачного обучения. Исследование фокусируется на ситуации, когда нейросеть обучается выполнять несколько задач одновременно, используя общее внутреннее представление, но сталкивается с конфликтами в процессе оптимизации.
🧠 Что такое Multi-Task Learning и чем оно отличается от BERT 0:00
Многозадачное обучение (Multi-Task Learning, MTL) предполагает, что у модели есть один и тот же входной сигнал, на основе которого нужно выполнить несколько разных задач . Янник Кильхер приводит пример с фотографией еды из Instagram:
- Задача 1: Определить, является ли объект фруктом .
- Задача 2: Подсчитать количество калорий в этом блюде .
Вместо того чтобы обучать два отдельных классификатора, выгоднее создать нейронную сеть с общим скрытым представлением (shared representation) . Это особенно полезно, если для одной из задач (например, подсчета калорий) данных много, а для другой — крайне мало .
Янник Кильхер подчеркивает важное различие между MTL и подходом, используемым в модели BERT :
- BERT (Pre-training + Fine-tuning): Сначала модель обучается на одной задаче (Masked Language Model), а затем последовательно дообучается на других (ответы на вопросы, анализ тональности) .
- MTL: Обучение на всех задачах происходит одновременно, чтобы выработать универсальное представление .
📉 Проблема конфликтующих градиентов 4:40
Главная проблема MTL заключается в сложности ландшафта оптимизации. Когда мы суммируем потери (loss) по разным задачам, итоговый ландшафт может сильно отличаться от ландшафта каждой отдельной задачи .
Янник Кильхер объясняет механизм возникновения конфликтов:
- Направление: Градиент первой задачи может указывать в одну сторону, а градиент второй — в противоположную или под тупым углом .
- Величина: Одна задача может иметь очень крутой склон (большой градиент), а другая — пологий (маленький градиент) .
- Результат: Итоговый вектор градиента может направить модель «вверх по холму» относительно одной из задач, ухудшая её показатели .
Ведущий отмечает, что в обычном обучении на одном датасете мы тоже имеем дело с разными данными, но там шум усредняется стохастически . В MTL же возникают систематические ошибки из-за того, что одна задача может быть объективно сложнее другой или иметь иную шкалу функции потерь .
🔪 PCGrad: «Хирургическое» вмешательство в градиенты 13:37
Для решения проблемы авторы статьи предлагают алгоритм PCGrad (Projected Conflicting Gradients). Его суть заключается в следующем: если два градиента конфликтуют (угол между ними больше 90 градусов), один из них проецируется на нормальную плоскость другого .
Процедура работы алгоритма:
- Модель получает батч данных для разных задач.
- Вычисляются градиенты для каждой задачи в отдельности.
- Проверяется наличие конфликта (отрицательное косинусное сходство).
- Если конфликт есть, градиент одной задачи корректируется так, чтобы он перестал мешать другой.
- В итоге получается набор неконфликтующих градиентов для обновления весов .
📑 Теоремы и «зловещая триада» условий 15:12
Авторы работы приводят две важные теоремы:
- Теорема 1 (Сходимость): Доказывает, что PCGrad в конечном итоге придет к оптимальному значению, как и классические методы, при условии выпуклости функций .
- Теорема 2 (Скорость): Утверждает, что PCGrad может достигать меньших потерь быстрее, чем обычное многозадачное обучение (MT) .
Янник Кильхер подробно разбирает условия, при которых PCGrad дает преимущество (он иронично называет их «святой/зловещей триадой» ):
- Угол между градиентами задач должен быть достаточно большим (задачи должны сильно конфликтовать) .
- Разница в величинах градиентов должна быть существенной .
- Кривизна функции потерь должна быть высокой .
- Скорость обучения (learning rate) должна быть достаточно большой .
Янник Кильхер выступает в роли «адвоката дьявола» и высказывает критическое замечание: преимущество PCGrad может проявляться только тогда, когда исследователь установил слишком высокую скорость обучения . По мнению Кильхера, во многих случаях можно просто снизить learning rate, и классический алгоритм справится не хуже, хотя PCGrad позволяет избежать этой ручной настройки .
🤖 Тесты на роботах и анализ кривизны 24:10
Эффективность метода проверялась на бенчмарках MT10 и MT50, которые представляют собой задачи по манипуляции объектами в симуляции робототехники (всего 10 и 50 различных задач соответственно) .
Ключевые детали эксперимента:
- Использовался алгоритм обучения с подкреплением Soft Actor-Critic (SAC) .
- В реализации агенты сначала выбирают задачу, взаимодействуют со средой, сохраняют опыт в буфер (replay buffer), а затем обучаются на мини-батчах из разных задач .
- Результаты показали, что комбинация SAC + PCGrad значительно превосходит обычный многозадачный SAC и даже обучение каждой задачи по отдельности .
Авторы также измерили кривизну функции потерь в процессе обучения, используя аппроксимацию Тейлора . Они обнаружили, что кривизна увеличивается на порядки по мере прохождения итераций . Янник Кильхер отмечает, что условия для работы PCGrad сохраняются на протяжении почти всего процесса обучения: в начале они соблюдаются почти в 100% шагов, а к концу — примерно в половине случаев .
В завершение Янник Кильхер демонстрирует графики, где видно, что стандартный SAC часто не может выучить более сложную задачу, так как градиент более простой задачи доминирует в процессе обучения. В то же время PCGrad успешно справляется с обеими .