В этом материале приведён краткий обзор использования модульного подхода в задачах глубокого обучения. Более детальный разбор этой темы вы можете найти здесь. Если вас интересует модульный подход к тонкой настройке (дообучению) моделей обработки естественного языка — взгляните на наше учебное руководство 2022 года по EMNLP. Дополнительные материалы по модульному глубокому обучению вы можете найти на этом ресурсе. Передовые модели глубокого обучения, развитие которых подстёгивают законы масштабирования, становятся всё больше и больше. Эти модели представляют собой монолитные структуры. Их, с момента, когда они ещё совершенно ничего не «знают», подвергают предварительному обучению, проводя его силами технических специалистов по тщательно продуманному плану. Тонкая настройка этих моделей, в силу их размера, превратилась в дорогое удовольствие, а её альтернативы, вроде контекстуального обучения, на практике часто дают неустойчивые результаты. Но, в то же время, эти модели всё ещё плохо показывают себя в решении многих задач — таких, как формирование суждений путём манипулирования символами, темпоральное понимание различных явлений, генерирование многоязычных текстов и т.п. Модульный подход способен помочь нам в решении некоторых из этих исключительно сложных задач. Разбивая модели на модули, мы можем отделить фундаментальные знания и способности к рассуждению о языке, о видимых объектах, и о прочем подобном, от возможностей, нужных для решения конкретных задач в различных предметных областях. Модульный подход, кроме того, даёт нам гибкий инструмент расширения моделей в расчёте на новые условия, даёт механизм дополнения их новыми возможностями. Здесь я поделюсь с вами самыми важными наблюдениями и выводами, которые касаются различных аспектов темы модульного глубокого обучения. Мы производим категоризацию модульных подходов к глубокому обучению по четырём измерениям: Вычислительные функции: как реализован модуль. Функции маршрутизации: как выбирают активные модули. Агрегирующие функции: как агрегируются выходные данные активного модуля. Условия обучения: как обучают модули. Ниже мы приведём результаты изучения различных конфигураций этих компонентов. Мы представляем нейронную сеть  в виде композиции функций , каждая из которых имеет собственный набор параметров . Функция может представлять собой слой или компонент слоя — такой, как линейное преобразование. Мы выделяем три базовых типа вычислительных функций, которые «сшивают» модуль, имеющий параметры, с функциями модели: Композиция параметров. Модули модифицируют модель на уровне индивидуальных весов: . Композиция входов. Вход функции x конкатенируется с параметрами модуля: . Композиция функций. Выходы функции модели и модуля комбинируются: . Мы приводим обзор трёх вычислительных функций (в дополнение к гиперсети) в виде части архитектуры трансформеров на следующем рисунке: Мы выделяем два основных способа использования модулей для изменения параметров модели: Корректировка разреженного подмножества параметров. Корректировка параметров в низкоразмерном пространстве. «Разреженные» методы близко связаны с сокращением избыточных нейронов в скрытых слоях искусственной нейронной сети и с гипотезой лотерейного билета. Такие методы могут быть структурированы и могут применяться лишь к особым группам параметров. Обучение на основе подсказок можно рассматривать как поиск текстовой подсказки, ориентированной на конкретную задачу, эмбеддинг которой вызывает желаемое поведение системы. Альтернативой этому является непосредственное обучение на основе непрерывных подсказок — на входе модели или в каждом её слое. Это — наиболее общая категория вычислительных функций. Она вбирает в себя стандартные многозадачные методы обучения, модули, которые адаптируют к чему-либо заранее обученные модели (известные как «адаптеры), методы изменения масштаба моделей. Кроме того, методы композиции параметров и входов можно выразить в виде композиции функций. Ниже, в качестве примера, показаны три метода композиции функций. Вместо того чтобы формировать параметры модуля непосредственно, в ходе обучения модели, их можно сгенерировать с помощью вспомогательной модели (гиперсети), зависящей от дополнительной информации и от метаданных. Ниже приведена краткая сводка по сильным и слабым сторонам различных вычислительных функций. Подробности об этом ищите здесь и здесь. Сравнение различных вычислительных функций  Эффективность параметров Эффективность обучения Эффективность выводов Производительность Пригодность для композиции Композиция параметров + - ++ + + Композиция входов ++ -- -- - + Композиция функций - + - ++ + Функция маршрутизации  определяет то, какие модули будут активными, основываясь на заданных входных данных. Выбор модулей осуществляется путём назначения всем модулям из списка  баллов . Ниже будет приведён обзор различных методов маршрутизации. Функция маршрутизации может быть фиксированной. Тогда все решения, связанные с маршрутизацией, принимаются на основе того, что заранее известно о задаче. Но возможен и альтернативный подход — маршрутизация на основе обучения модели. Методы маршрутизации на основе обучения отличаются тем, насколько точно задан выбор маршрута. При жёсткой маршрутизации модель учится делать точный, неизменный выбор конкретного маршрута. При гибкой маршрутизации выбор зависит от распределения вероятностей, связанных с модулями. При фиксированной маршрутизации используются метаданные — такие, как описание особенностей задачи. Это позволяет принимать определённые решения о маршрутизации до обучения модели. Фиксированная маршрутизация используется в большинстве методов композиции функций. В частности, речь идёт о многозадачном обучении и о применении адаптеров. При применении фиксированной маршрутизации осуществляется выбор разных модулей для различных аспектов целевого окружения. Например — это может быть задача и язык в обработке естественных языков, или робот и задача при обучении с подкреплением. Это позволяет обобщать модели на неизвестные сценарии. Маршрутизация на основе обучения обычно реализуется на базе многослойных персептронов. Этот подход к маршрутизации предусматривает необходимость борьбы с дополнительными сложностями. Среди них — нестабильность обучения, коллапс модуля, переобучение модели. Существующие методы маршрутизации на основе обучения часто не отличаются оптимальностью. Дело в том, что они представлены модулями, которые, во-первых, не являются достаточно специализированными, и во вторых — недостаточно интенсивно используются. Но, когда между задачей и соответствующей возможностью системы нет чёткой однозначной связи, маршрутизация на основе обучения — это единственный подходящий вариант. Жёсткая маршрутизация на основе обучения моделирует выбор того, будет ли модуль активным, основываясь на бинарной логике. Так как модель невозможно научить принятию чётких решений напрямую, пользуясь методом градиентного спуска, системы учат, пользуясь обучением с подкреплением, эволюционными алгоритмами или стохастической репараметризацией. Методы гибкой маршрутизации, основанной на обучении, обходят необходимость точного выбора модуля. Они действуют через изучение взвешенной комбинации показателей в форме распределения вероятностей между доступными модулями. Классический пример этого — модель «смесь экспертов». Так как активация всех модулей — это ресурсозатратная операция, свежие методы гибкой маршрутизации на основе обучения ориентируются на выбор top- и даже top-1 модулей. Маршрутизация на уровне токенов ведёт к более эффективному обучению, но ограничивает выразительные возможности модульных представлений. Система маршрутизации может выбирать модули на глобальном уровне, воздействуя на всю сеть, может выполнять распределение задач для каждого конкретного слоя, или даже принимать иерархические решения о маршрутизации. Ниже показаны схемы различных уровней маршрутизации. Агрегирующая функция определяет то, как комбинируются выходы модулей, выбранных посредством механизма маршрутизации. На практике системы маршрутизации и агрегации часто объединяют. Агрегирующие функции могут быть классифицированы аналогично вышеописанным вычислительным функциям. Но вычислительные функции соединяют соответствующие части моделей с компонентами модулей, а агрегирующие функции отвечают за объединение множества компонентов модуля на разных уровнях: Агрегация параметров. Агрегируются параметры модулей:  Агрегация представлений. Агрегируются модульные представления:  Агрегация входов. Параметры модуля конкатенируются на уровне входов:  Агрегация функций. Агрегируются модульные функции:  Агрегирование информации из множества модулей путём интерполяции их весов тесно связано с линейной связностью решений. Это показывает, что при определённых условиях, таких, как одни и те же инициализационные значения, две сети связаны линейным путём невозрастающей ошибки. Основываясь на этом предположении, в модели, с использованием арифметических операций, могут быть проведены модульные изменения. Делается это для того чтобы убрать или извлечь какую-либо информацию из модели. В качестве альтернативы — выходы различных модулей можно интерполировать путём агрегации скрытых представлений модулей. Один из способов выполнения такой агрегации заключается в изучении системой взвешенной суммы представлений. Это похоже на то, как система маршрутизации учится назначать балл i каждому из модулей. Модель, кроме того, может изучить взвешенные данные, которые учитывают скрытые представления. Например — посредством механизма внутреннего внимания. Если модели предоставлена подсказка, то передача ей нескольких инструкций или нескольких образцов, выполняемая путём конкатенации, может рассматриваться как форма агрегации входных данных. «Мягкие» подсказки можно изучать в различных ситуациях. Например — в таких, как работа с задачами и языком, или с атрибутами и объектами. Их агрегация выполняется путём конкатенации. И наконец — мы можем агрегировать модули на уровне функций, изменяя порядок выполнения вычислений. Можно агрегировать их последовательно, когда выход одного модуля становится входом другого, после чего это повторяется для следующих модулей. Для создания более сложных конфигураций модулей можно агрегировать их иерархически, основываясь на древовидной структуре. Последнее измерение из тех, по которым мы можем дифференцировать модульные методы глубокого обучения — это то, как обучаются модели. Мы выделяем три стратегии модульного обучения: Совместное обучение. Непрерывное обучение. Ретроспективная адаптация. В многозадачной системе обучения модульные компоненты, ориентированные на конкретную задачу, обучают совместно для смягчения катастрофических взаимных помех, используя фиксированную маршрутизацию или обучаемую систему маршрутизации. Совместное обучение, кроме того, может дать полезные инициализационные данные для модульных параметров, может позволить использовать дополнительные модульные компоненты по мере развития модели. В ходе непрерывного обучения в модель, со временем, добавляют новые модули. Параметры предыдущих модулей обычно «замораживают», а новые модули подключают к существующим различными способами. Методы этой группы ещё известны как «тонкая настройка моделей с эффективным использованием параметров», так как они обычно используются для адаптации больших, заранее обученных моделей, к целевой ситуации. Мы рассматриваем подобные методы для задач обработки естественного языка в этом учебном руководстве. Многие из вышеописанных методов оцениваются на основе их способности масштабировать большие модели, или на основе того, как они поддерживают перенос знаний, полученных в одной области, на другую область с применением небольшого количества образцов. Модульный подход, кроме того, чрезвычайно важен и в других сферах, в том числе — в задачах планирования и систематического обобщения, в число которых входят: Иерархическое обучение с подкреплением. Конструирование нейропрограмм. Причинно-следственный анализ. Ниже приведено схематическое изображение этих задач. Для того чтобы организовать обучение модели, проводимое через длительные промежутки времени, или проводимое при использовании сильно разреженных и отложенных наград в обучении с подкреплением, часто полезно обучить модель промежуточным абстракциям, известным, как опции или навыки, в форме переносимых подполитик. С изучением подполитик связаны сложности, имеющие отношение к специализации и мониторингу, а так же — к пространству действий и опций. Среди стратегий, используемых для борьбы с этими сложностями, можно отметить применение внутренних наград, подцелей, а так же — языка в качестве промежуточного пространства. Модульный подход, кроме того, можно использовать для симуляции программ. Делается это путём динамического конструирования графа программы на основе входных данных, или путём глобального конструирования графа на основе описания задачи. В дополнение к системам маршрутизации и к вычислительным функциям, подобные архитектуры могут быть расширены за счёт внешней памяти. Симуляция программ полезна в тех случаях, когда решение задачи основано на решении подзадач в правильной последовательности. Модульный подход в методах причинно-следственного анализа отражает модульность в (физических) механизмах мира. Считается, что модули независимы и подходят для многократного использования, поэтому модели машинного обучения, копирующие эту структуру, отличаются повышенной устойчивостью к вмешательствам и к сдвигам локального распределения. Среди сложностей, характерных для применения модулей в этой сфере, можно отметить специализацию каждого модуля на конкретном механизме, а так же — совместное изучение абстрактных представлений и их взаимодействий в графе причинно-следственных связей. Представленные методы используются для решения самых разных задач. Сначала мы расскажем об их типичных применениях в сфере обработки естественного языка, а потом проведём аналогии, касающиеся их использования в задачах обработки речи, в задачах компьютерного зрения, а так же — в других сферах машинного обучения. В сфере машинного перевода применялись билингвальные адаптеры. Они позволяли адаптировать большие многоязычные нейросетевые модели к конкретному направлению перевода между двумя языками. Этот подход был расширен, что привело к появлению более эффективных монолингвальных адаптеров. Для обеспечения положительного переноса между языками использовались гиперсети. Здесь применялись и другие подходы — такие, как подсети, ориентированные на конкретный язык или на конкретную предметную область. Применяются здесь и модели типа «смесь экспертов». Языковые модели комбинируют с модулями задач для того чтобы обеспечить перенос, с языка источника на целевой язык, больших моделей, подвергшихся тонкой настройке в расчёте на конкретную задачу. В рамках этого подхода предложено множество вариантов систем. Это, например, обучение адаптеров для языковых пар или для семейств языков, обучение подсетей, ориентированных на языки и задачи, использование гиперсетей для генерирования различных компонентов. Модульные системы, представляющие конкретную предметную область, обучают, используя адаптеры или подсети. Обычно для этого задействуют набор разделяемых модулей и модулей предметной области, которые обучают совместно, используя дополнительную регуляризацию или члены, описывающие потери, в параметрах модулей. Модули, кроме прочего, можно использовать для хранения внешних знаний и их внедрения в модели. Этот подход можно скомбинировать со знаниями о языке, о предметной области или о задаче. Тут обычно пользуются такой стратегией: обучают модели на синтетических данных, созданных на основе информации, имеющейся в базе знаний. В сфере машинной обработки речи проводились эксперименты с теми же методами, что и в сфере обработки естественного языка. Главные отличия заключаются в том, что базовая модель, применяемая при обработке речи — это обычно разновидность wav2vec, и в том, что модульные представления оптимизировались с учётом цели нейросетевой темпоральной классификации. Модульный подход здесь применяется чаще всего в форме обучения адаптеров для автоматического распознавания речи. В сфере компьютерного зрения наиболее часто применяются модули, представляющие собой адаптеры и подсети, основанные на моделях ResNet или Vision Transformer. В мультимодальном обучении и задачи, и информация о модальности захватываются в различных модулях для разных приложений. Например, недавно появившаяся модель Flamingo использует «замороженные» предварительно обученные зрительную и языковую модели. В её рамках обучают новые адаптерные слои для того чтобы регулировать языковые представления с помощью визуальных данных, поступающих на вход модели. Дальнейшие исследования сферы модульного глубокого обучения включают в себя, кроме прочих, следующие направления: Комбинирование различных вычислительных функций. Углубление понимания природы и различий разных модульных представлений. Интеграция систем обучаемой маршрутизации в предварительно обученные модели. Измерение эффективности работы различных методов маршрутизации. Непосредственное создание информации, хранящейся в подсетях. Разработка обучаемых методов агрегирования. Создание расширяемых модульных многозадачных моделей. Мы представили систему классификации модульных инструментов глубокого обучения по четырём основным измерениям. Принимая во внимание тенденцию к предварительному обучению всё больших и больших моделей, мы считаем, что модульный подход будет иметь исключительно важное значение в подобных проектах. Он позволит наладить более стабильную разработку моделей путём разбиения их на модули. Развитие модульного подхода, кроме того, приведёт к созданию таких методов работы, которые будут направлены на устранение существующих ограничений, и таких, которые можно будет использовать в различных нейросетевых архитектурах. Надо сказать и о том, что модульный подход может способствовать сдвигам в среде разработчиков моделей. Сейчас разработка моделей сконцентрирована в небольшом количестве крупных организаций, а может случиться так, что созданием модульных компонентов будет заниматься множество небольших компаний и индивидуальных разработчиков. Мы в wunderfund.io занимаемся высокочастотной алготорговлей с 2014 года. Высокочастотная торговля — это непрерывное соревнование лучших программистов и математиков всего мира. Присоединившись к нам, вы станете частью этой увлекательной схватки. Мы предлагаем интересные и сложные задачи по анализу данных и low latency разработке для увлеченных исследователей и программистов. Гибкий график и никакой бюрократии, решения быстро принимаются и воплощаются в жизнь. Сейчас мы ищем плюсовиков, питонистов, дата-инженеров и мл-рисерчеров. Присоединяйтесь к нашей команде.