Хорошая модель машинного обучения часто требует обучения с большим количеством образцов. Люди, напротив, усваивают новые концепции и навыки гораздо быстрее и эффективнее. Дети, которые видели кошек и птиц всего несколько раз, могут быстро отличить их друг от друга. Люди, которые умеют ездить на велосипеде, скорее всего, откроют для себя способ быстрой езды на мотоцикле практически без демонстрации. Можно ли разработать модель машинного обучения с аналогичными свойствами — быстрое изучение новых концепций и навыков с помощью нескольких обучающих примеров? По сути, именно на это и направлено метаобучение.

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

Задачи могут быть любым четко определенным семейством задач машинного обучения: обучение с учителем, обучение с подкреплением и т. д. Например, вот пара конкретных задач метаобучения:

  • Классификатор, обученный на изображениях, отличных от кошек, может определить, содержит ли данное изображение кошку, увидев несколько изображений кошек.
  • Игровой бот способен быстро освоить новую игру.
  • Мини-робот выполняет желаемую задачу на поверхности в гору во время теста, даже если он был обучен только в среде с плоской поверхностью.

В этом посте мы сосредоточимся на случае, когда каждая желаемая задача представляет собой задачу обучения с учителем, такую ​​​​как классификация изображений. Существует много интересной литературы по метаобучению с задачами обучения с подкреплением (он же «Метаобучение с подкреплением»), но мы не будем их здесь освещать.

Простой вид

Хорошая модель метаобучения должна быть обучена различным учебным задачам и оптимизирована для достижения наилучшей производительности при распределении задач, включая потенциально невидимые задачи. Каждая задача связана с набором данных $\mathcal{D}$, содержащим как векторы признаков, так и истинные метки. Оптимальные параметры модели:

Это очень похоже на обычную задачу обучения, но один набор данных рассматривается как одна выборка данных.

Методическая классификация — это воплощение метаобучения в области обучения с учителем. Набор данных $\mathcal{D}$ часто разбивается на две части: набор поддержки $S$ для обучения и набор прогнозов $B$ для обучения или тестирования, $\mathcal{D}=\langle S, B\rangle. $. Часто мы рассматриваем задачу K-кратной классификации N-классов: опорный набор содержит K помеченных примеров для каждого из N классов.

Обучение так же, как тестирование

Набор данных $\mathcal{D}$ содержит пары векторов признаков и меток, $\mathcal{D} = {(\mathbf{x}_i, y_i)}$, и каждая метка принадлежит известному набору меток $\mathcal{ L}^\text{метка}$. Допустим, наш классификатор $f_\theta$ с параметром $\theta$ выводит вероятность того, что точка данных принадлежит классу $y$, учитывая вектор признаков $\mathbf{x}$, $P_\theta(y \vert \mathbf{x})$.

Оптимальные параметры должны максимизировать вероятность истинных меток для нескольких обучающих пакетов $B \subset \mathcal{D}$:

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

  1. Образец подмножества меток, $L \subset \mathcal{L}^\text{label}$.
  2. Попробуйте набор поддержки $S^L \subset \mathcal{D}$ и обучающую группу $B^L \subset \mathcal{D}$. Оба они содержат только точки данных с метками, принадлежащими выбранному набору меток $L$, $y \in L, \forall (x, y) \in S^L, B^L$.
  3. Набор поддержки является частью входных данных модели.
  4. Окончательная оптимизация использует мини-пакет $B^L$ для вычисления потерь и обновления параметров модели посредством обратного распространения точно так же, как мы используем его в обучении с учителем.

Вы можете рассматривать каждую пару выборочных наборов данных $(S^L, B^L)$ как одну точку данных. Модель обучена таким образом, чтобы ее можно было обобщить на другие наборы данных. Символы красного цвета добавляются для метаобучения в дополнение к цели контролируемого обучения.

Идея в некоторой степени похожа на использование предварительно обученной модели в классификации изображений (ImageNet) или языковом моделировании (большие текстовые корпуса), когда доступен только ограниченный набор образцов данных для конкретной задачи. Мета-обучение продвигает эту идею на шаг вперед, вместо тонкой настройки в соответствии с одной второстепенной задачей, оно оптимизирует модель, чтобы она была хороша для многих, если не для всех.

Другой популярный взгляд на метаобучение разделяет обновление модели на два этапа:

  • Классификатор $f_\theta$ — это «обучаемая» модель, обученная выполнению поставленной задачи;
  • Тем временем оптимизатор $g_\phi$ учится обновлять параметры модели обучаемого с помощью набора поддержки $S$, $\theta’ = g_\phi(\theta, S)$.

Затем на последнем этапе оптимизации нам нужно обновить как $\theta$, так и $\phi$, чтобы максимизировать:

Общие подходы

Существует три распространенных подхода к метаобучению: на основе показателей, на основе моделей и на основе оптимизации. У Ориола Виньялса есть хорошее резюме в его докладе на симпозиуме по метаобучению @ NIPS 2018:

Как моделируется $P_\theta(y \vert \mathbf{x})$?

$f_\тета(\mathbf{x}, S)$

$\sum_{(\mathbf{x}_i, y_i) \in S} k_\theta(\mathbf{x}, \mathbf{x}_i)y_i$ (*)

$P_{g_\phi(\theta, S^L)}(y \vert \mathbf{x})$

(*) $k_\theta$ — функция ядра, измеряющая сходство между $\mathbf{x}_i$ и $\mathbf{x}$.

Далее мы рассмотрим классические модели в каждом подходе.

Основная идея метаобучения на основе метрик аналогична алгоритмам ближайших соседей (то есть классификатору k-NN и кластеризации k-средних) и оценке плотности ядра. Прогнозируемая вероятность по набору известных меток $y$ представляет собой взвешенную сумму меток выборок опорного набора. Вес генерируется функцией ядра $k_\theta$, измеряющей сходство между двумя выборками данных.

$ P_\theta(y \vert \mathbf{x}, S) = \sum_{(\mathbf{x}_i, y_i) \in S} k_\theta(\mathbf{x}, \mathbf{x}_i )y_i$

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

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

Сверточная сиамская нейронная сеть

Сиамская нейронная сеть состоит из двух сетей-близнецов, и их выходы совместно обучаются сверху с функцией изучения взаимосвязи между парами выборок входных данных. Сети-близнецы идентичны, имеют одинаковые веса и параметры сети. Другими словами, оба относятся к одной и той же сети встраивания, которая обучается эффективному встраиванию, чтобы выявить взаимосвязь между парами точек данных.

Кох, Земель и Салахутдинов (2015) предложили метод использования сиамской нейронной сети для однократной классификации изображений. Во-первых, сиамская сеть обучается задаче проверки, чтобы определить, относятся ли два входных изображения к одному и тому же классу. Он выводит вероятность того, что два изображения принадлежат одному и тому же классу. Затем, во время тестирования, сиамская сеть обрабатывает все пары изображений между тестовым изображением и каждым изображением в наборе поддержки. Окончательный прогноз — это класс опорного изображения с наибольшей вероятностью.

  1. Во-первых, сверточная сиамская сеть учится кодировать два изображения в векторы признаков с помощью функции встраивания $f_\theta$, которая содержит пару сверточных слоев.
  2. L1-расстояние между двумя вложениями равно $\vert f_\theta(\mathbf{x}_i) — f_\theta(\mathbf{x}_j) \vert$.
  3. Расстояние преобразуется в вероятность $p$ с помощью линейного слоя прямой связи и сигмоиды. Это вероятность того, что два изображения взяты из одного и того же класса.
  4. Интуитивно потеря - это перекрестная энтропия, потому что метка двоичная.

Изображения в тренировочном пакете $B$ могут быть дополнены искажениями. Конечно, вы можете заменить расстояние L1 на другую метрику расстояния, L2, косинус и т. д. Просто убедитесь, что они дифференциальные, и тогда все остальное будет работать так же.

Учитывая набор поддержки $S$ и тестовое изображение $\mathbf{x}$, окончательный прогнозируемый класс:

где $c(\mathbf{x})$ — метка класса изображения $\mathbf{x}$, а $\hat{c}(.)$ — предсказанная метка.

Предполагается, что изученное вложение можно обобщить, чтобы его можно было использовать для измерения расстояния между изображениями неизвестных категорий. Это то же предположение, что и трансферное обучение с использованием предварительно обученной модели; например, ожидается, что сверточные функции, изученные в модели, предварительно обученной с помощью ImageNet, помогут другим задачам изображения. Однако преимущества предварительно обученной модели уменьшаются, когда новая задача отличается от исходной задачи, на которой была обучена модель.

Соответствующие сети

Задача Matching Networks (Vinyals et al., 2016) состоит в том, чтобы выучить классификатор $c_S$ для любого заданного (небольшого) множества опор $S={x_i, y_i}_{i= 1}^k$ (классификация k-shot). Этот классификатор определяет распределение вероятностей по выходным меткам $y$ для тестового примера $\mathbf{x}$. Как и в других моделях на основе метрик, выходные данные классификатора определяются как сумма меток выборок поддержки, взвешенных по ядру внимания $a(\mathbf{x}, \mathbf{x}_i)$, которое должно быть пропорционально сходству между $\mathbf{x}$ и $\mathbf{x}_i$.

Ядро внимания зависит от двух встроенных функций, $f$ и $g$, для кодирования тестовой выборки и выборки набора поддержки соответственно. Весом внимания между двумя точками данных является косинусное сходство, $\text{косинус}(.)$, между их векторами вложения, нормализованное softmax:

Простое встраивание

В простой версии функция встраивания представляет собой нейронную сеть с одной выборкой данных в качестве входных данных. Потенциально мы можем установить $f=g$.

Полноконтекстные вложения

Векторы встраивания являются важными входными данными для построения хорошего классификатора. Использование одной точки данных в качестве входных данных может оказаться недостаточным для эффективной оценки всего пространства признаков. Таким образом, в модели Matching Network дополнительно предлагалось улучшить функции внедрения, принимая в качестве входных данных весь набор поддержки $S$ в дополнение к исходному входу, чтобы изученное внедрение можно было скорректировать на основе взаимосвязи с другими образцами поддержки.

Этот метод встраивания называется «Полное контекстное встраивание (FCE)». Интересно, что это помогает улучшить производительность в сложной задаче (классификация с несколькими выстрелами в mini ImageNet), но не имеет значения в простой задаче (Omniglot).

Процесс обучения в Matching Networks предназначен для сопоставления выводов во время тестирования, см. подробности в предыдущем разделе. Стоит отметить, что документ Matching Networks усовершенствовал идею о том, что условия обучения и тестирования должны совпадать.

Сеть отношений

Relation Network (RN) (Sung et al., 2018) похожа на сиамскую сеть, но с некоторыми отличиями:

  1. Отношения не фиксируются простым расстоянием L1 в пространстве признаков, а предсказываются классификатором CNN $g_\phi$. Оценка отношения между парой входных данных, $\mathbf{x}_i$ и $\mathbf{x}_j$, равна $r_{ij} = g_\phi([\mathbf{x}_i, \mathbf{x }_j])$, где $[.,.]$ — конкатенация.
  2. Целевой функцией является потеря MSE, а не кросс-энтропия, потому что концептуально RN больше фокусируется на прогнозировании оценок отношений, что больше похоже на регрессию, чем на бинарную классификацию, $\mathcal{L}(B) = \sum_{(\mathbf{x }_i, \mathbf{x}_j, y_i, y_j)\in B} (r_{ij} — \mathbf{1}_{y_i=y_j})²$.

(Примечание: существует еще одна сеть отношений для реляционных рассуждений, предложенная DeepMind. Не запутайтесь.)

Прототипы сетей

Прототипные сети (Snell, Swersky & Zemel, 2017) используют функцию встраивания $f_\theta$ для кодирования каждого входного сигнала в вектор признаков размерности $M$. Вектор признаков прототипа определяется для каждого класса $c \in \mathcal{C}$ как средний вектор встроенных выборок вспомогательных данных в этом классе.

Распределение по классам для данного тестового входа $\mathbf{x}$ является softmax по обратному расстоянию между векторами встраивания тестовых данных и векторами-прототипами.

где $d_\varphi$ может быть любой функцией расстояния, если $\varphi$ дифференцируема. В статье они использовали квадрат евклидова расстояния.

Функция потерь представляет собой отрицательное логарифмическое правдоподобие: $\mathcal{L}(\theta) = -\log P_\theta(y=c\vert\mathbf{x})$.

Модели метаобучения на основе моделей не делают предположений о форме $P_\theta(y\vert\mathbf{x})$. Скорее, это зависит от модели, разработанной специально для быстрого обучения — модели, которая быстро обновляет свои параметры за несколько шагов обучения. Это быстрое обновление параметров может быть достигнуто его внутренней архитектурой или контролироваться другой моделью метаобучения.

Нейронные сети с дополненной памятью

Семейство архитектур моделей использует внешнюю память для облегчения процесса обучения нейронных сетей, включая Нейронные машины Тьюринга и Сети памяти. С явным буфером хранения сети проще быстро вводить новую информацию и не забывать ее в будущем. Такая модель известна как MANN, сокращение от Memory-Augmented Neural Network. Обратите внимание, что рекуррентные нейронные сети только с внутренней памятью, такие как ванильные RNN или LSTM, не являются MANN.

Поскольку ожидается, что MANN будет быстро кодировать новую информацию и, таким образом, адаптироваться к новым задачам уже после нескольких образцов, он хорошо подходит для метаобучения. Взяв за основу Нейронную машину Тьюринга (NTM), Santoro et al. (2016) предложили ряд модификаций схемы обучения и механизмов извлечения памяти (или механизмов адресации, решающих, как присваивать веса внимания векторам памяти). Пожалуйста, сначала просмотрите раздел NTM в моем другом посте, если вы не знакомы с этим вопросом, прежде чем читать дальше.

Вкратце: NTM связывает нейронную сеть контроллера с внешней памятью. Контроллер учится читать и записывать строки памяти с помощью мягкого внимания, а память служит хранилищем знаний. Веса внимания генерируются его механизмом адресации: на основе контента + на основе местоположения.

Чтобы использовать MANN для задач метаобучения, нам нужно обучить его таким образом, чтобы память могла быстро кодировать и захватывать информацию о новых задачах, и в то же время любое сохраненное представление было легко и стабильно доступно.

Обучение, описанное в Santoro et al., 2016, происходит интересным образом, так что память вынуждена удерживать информацию дольше, пока позже не будут предъявлены соответствующие метки. В каждом обучающем эпизоде ​​метка истинности $y_t$ представлена ​​с смещением на один шаг, $(\mathbf{x}_{t+1}, y_t)$: это истинная метка для ввод на предыдущем временном шаге t, но представленный как часть ввода на временном шаге t+1.

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

Далее давайте посмотрим, как обновляется память для эффективного поиска и хранения информации.

Помимо процесса обучения, используется новый механизм адресации, основанный исключительно на содержании, чтобы сделать модель более подходящей для метаобучения.

Как читать по памяти?
Внимание при чтении строится исключительно на основе схожести контента.

Во-первых, вектор ключевых признаков $\mathbf{k}_t$ создается контроллером на временном шаге t как функция входных данных $\mathbf{x}$. Подобно NTM, взвешивающий вектор чтения $\mathbf{w}_t^r$ из N элементов вычисляется как косинусное сходство между вектором ключа и каждой строкой вектора памяти, нормализованное softmax. Вектор чтения $\mathbf{r}_t$ представляет собой сумму записей памяти, взвешенных такими весами:

где $M_t$ — матрица памяти в момент времени t, а $M_t(i)$ — i-я строка в этой матрице.

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

  • Редко используемые места: чтобы мы могли сохранить часто используемую информацию (см. LFU);
  • Последнее использованное местоположение: мотивация заключается в том, что после того, как часть информации будет получена один раз, она, вероятно, не будет вызываться снова некоторое время (см. MRU).

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

Предпочтение LRUA осуществляется таким образом, чтобы все было дифференцируемо:

  1. Вес использования $\mathbf{w}^u_t$ в момент времени t представляет собой сумму текущих векторов чтения и записи в дополнение к затухшему последнему весу использования, $\gamma \mathbf{w}^u_{t-1}$ , где $\gamma$ — коэффициент затухания.
  2. Вектор записи представляет собой интерполяцию между предыдущим весом чтения (предпочитает «последнее используемое местоположение») и предыдущим наименее используемым весом (предпочитает «редко используемое местоположение»). Параметр интерполяции — это сигмоид гиперпараметра $\alpha$.
  3. Наименее используемый вес $\mathbf{w}^{lu}$ масштабируется в соответствии с весами использования $\mathbf{w}_t^u$, в которых любое измерение остается равным 1, если оно меньше n-го наименьшего элемента в вектор и 0 в противном случае.

Наконец, после того как наименее используемая ячейка памяти, обозначенная $\mathbf{w}_t^{lu}$, обнуляется, каждая строка памяти обновляется:

Meta Networks (Munkhdalai & Yu, 2017), сокращение от MetaNet, представляет собой модель метаобучения с архитектурой и процессом обучения, предназначенным для быстрого обобщение по задачам.

Быстрые веса

Быстрое обобщение MetaNet опирается на «быстрые веса». На эту тему есть несколько статей, но я не читал их все подробно и не нашел очень конкретного определения, только расплывчатое согласие в концепции. Обычно веса в нейронных сетях обновляются стохастическим градиентным спуском в целевой функции, и известно, что этот процесс медленный. Один из более быстрых способов обучения — использовать одну нейронную сеть для прогнозирования параметров другой нейронной сети, а сгенерированные веса называются быстрыми весами. Для сравнения, обычные веса на основе SGD называются медленными весами.

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

Компоненты модели

Отказ от ответственности. Ниже вы увидите, что мои аннотации отличаются от аннотаций в документе. imo, статья написана плохо, но идея все равно интересна. Поэтому я представляю идею на своем родном языке.

Ключевые компоненты MetaNet:

  • Функция встраивания $f_\theta$, параметризованная $\theta$, кодирует необработанные входные данные в векторы признаков. Подобно Сиамской нейронной сети, эти вложения обучены быть полезными для определения того, относятся ли два входа к одному и тому же классу (задача проверки).
  • Базовая модель учащегося $g_\phi$, параметризованная весами $\phi$, выполняет реальную задачу обучения.

Если мы остановимся здесь, это будет похоже на сеть отношений. Кроме того, MetaNet явно моделирует быстрые веса обеих функций, а затем объединяет их обратно в модель (см. рис. 8).

Поэтому нам нужны две дополнительные функции для вывода быстрых весов для $f$ и $g$ соответственно.

  • $F_w$: LSTM, параметризованный $w$, для быстрого изучения весов $\theta^+$ функции вложения $f$. Он принимает в качестве входных данных градиенты потерь при встраивании $f$ для задачи проверки.
  • $G_v$: нейронная сеть, параметризованная параметром $v$, быстро учится взвешивать $\phi^+$ для базового обучающегося $g$ на основе его градиентов потерь. В MetaNet градиенты потерь учащегося рассматриваются как метаинформация о задаче.

Хорошо, теперь давайте посмотрим, как обучаются метасети. Обучающие данные содержат несколько пар наборов данных: набор поддержки $S=\{\mathbf{x}'_i, y'_i\}_{i=1}^K$ и тестовый набор $U=\{\mathbf {x}_i, y_i\}_{i=1}^L$. Напомним, что у нас есть четыре сети и четыре набора параметров модели, которые нужно изучить, $(\theta, \phi, w, v)$.

Учебный процесс

  1. Выборка случайной пары входных данных на каждом временном шаге t из набора поддержки $S$, $(\mathbf{x}’_i, y’_i)$ и $(\mathbf{x}’_j, y_j)$. Пусть $\mathbf{x}_{(t,1)}=\mathbf{x}'_i$ и $\mathbf{x}_{(t,2)}=\mathbf{x}'_j$.< br /> для $t = 1, \dots, K$:
  2. а. Вычислить потери для обучения представлению; т. е. кросс-энтропия для задачи проверки:
    $\mathcal{L}^\text{emb}_t = \mathbf{1}_{y'_i=y'_j} \log P_t + (1 — \ mathbf{1}_{y'_i=y'_j})\log(1 — P_t)\text{, где }P_t = \sigma(\mathbf{W}\vert f_\theta(\mathbf{x}_ {(t,1)}) — f_\theta(\mathbf{x}_{(t,2)})\vert)$
  3. Вычислите быстрые веса на уровне задачи: $\theta^+ = F_w(\nabla_\theta \mathcal{L}^\text{emb}_1, \dots, \mathcal{L}^\text{emb}_T)$
  4. Затем просмотрите примеры в наборе поддержки $S$ и вычислите быстрые веса на уровне примера. Тем временем обновите память изученными представлениями.
    для $i=1, \dots, K$:
  5. а. Базовый учащийся выводит распределение вероятностей: $P(\hat{y}_i \vert \mathbf{x}_i) = g_\phi(\mathbf{x}_i)$, и потеря может быть кросс-энтропийной или MSE: $\mathcal{L}^\text{задача}_i = y'_i \log g_\phi(\mathbf{x}'_i) + (1- y'_i) \log (1 - g_\phi(\mathbf {х}'_i))$
  6. б. Извлеките метаинформацию (градиенты потерь) задачи и вычислите быстрые веса на уровне примера: $\phi_i^+ = G_v(\nabla_\phi\mathcal{L}^\text{task}_i)$
  7. в. Затем сохраните $\phi^+_i$ в $i$-ю ячейку памяти «значений» $\mathbf{M}$.
  8. д. Закодируйте образец поддержки в входное представление для конкретной задачи, используя как медленные, так и быстрые веса: $r'_i = f_{\theta, \theta^+}(\mathbf{x}'_i)$ Затем сохраните $r'_i$ в $i$-ю ячейку «ключевой» памяти $\mathbf{R}$.
  9. Обновите все параметры $(\theta, \phi, w, v)$, используя $\mathcal{L}_\text{train}$.

Модели глубокого обучения учатся посредством обратного распространения градиентов. Однако оптимизация на основе градиента не предназначена ни для работы с небольшим количеством обучающих выборок, ни для сходимости за небольшое количество шагов оптимизации. Есть ли способ настроить алгоритм оптимизации, чтобы модель хорошо обучалась на нескольких примерах? Это то, для чего предназначены алгоритмы метаобучения, основанные на оптимизации.

Алгоритм оптимизации может быть явно смоделирован. Рави и Ларошель (2017) сделали это и назвали его мета-обучаемый, в то время как исходная модель для решения задачи называется обучаемый. Цель мета-обучения состоит в том, чтобы эффективно обновлять параметры обучаемого, используя небольшой набор поддержки, чтобы обучаемый мог быстро адаптироваться к новой задаче.

Обозначим модель учащегося как $M_\theta$ с параметрами $\theta$, мета-ученик как $R_\Theta$ с параметрами $\Theta$ и функцию потерь $\mathcal{L}$.

Почему ЛСТМ?

Мета-обучение моделируется как LSTM, потому что:

  1. Существует сходство между обновлением на основе градиента при обратном распространении и обновлением состояния ячейки в LSTM.
  2. Знание истории градиентов приносит пользу обновлению градиента; подумайте о том, как работает импульс.

Обновление параметров учащегося на временном шаге t со скоростью обучения $\alpha_t$:

Он имеет ту же форму, что и обновление состояния ячейки в LSTM, если мы установим ворота для забывания $f_t=1$, ворота ввода $i_t = \alpha_t$, состояние ячейки $c_t = \theta_t$ и новое состояние ячейки $\tilde{ c}_t = -\nabla_{\theta_{t-1}}\mathcal{L}_t$:

Хотя исправление $f_t=1$ и $i_t=\alpha_t$ может быть не оптимальным, оба они могут быть изучены и адаптированы к различным наборам данных.

Настройка модели

Процесс обучения имитирует то, что происходит во время теста, так как его эффективность доказана в Matching Networks. В течение каждой эпохи обучения мы сначала отбираем набор данных $\mathcal{D} = (\mathcal{D}_\text{train}, \mathcal{D}_\text{test}) \in \hat{\mathcal{ D}}_\text{meta-train}$, а затем попробуйте мини-пакеты из $\mathcal{D}_\text{train}$, чтобы обновить $\theta$ для раундов $T$. Окончательное состояние параметра учащегося $\theta_T$ используется для обучения учащегося на тестовых данных $\mathcal{D}_\text{test}$.

Две детали реализации, на которые стоит обратить особое внимание:

  1. Как сжать пространство параметров в мета-обучателе LSTM? Поскольку мета-обучение моделирует параметры другой нейронной сети, ему нужно будет изучить сотни тысяч переменных. Следуя идее совместного использования параметров по координатам,
  2. Для упрощения процесса обучения мета-обучение предполагает, что потеря $\mathcal{L}_t$ и градиент $\nabla_{\theta_{t-1}} \mathcal{L}_t$ независимы.

МАМЛ

MAML, сокращение от Model-Agnostic Meta-Learning (Finn, et al. 2017) — довольно общий алгоритм оптимизации, совместимый с любой моделью, которая обучается посредством градиентного спуска. .

Допустим, наша модель $f_\theta$ с параметрами $\theta$. Учитывая задачу $\tau_i$ и связанный с ней набор данных $(\mathcal{D}^{(i)}_\text{train}, \mathcal{D}^{(i)}_\text{test})$ , мы можем обновить параметры модели с помощью одного или нескольких шагов градиентного спуска (следующий пример содержит только один шаг):

где $\mathcal{L}^{(0)}$ — потери, вычисленные с использованием мини-пакета данных с идентификатором (0).

Что ж, приведенная выше формула оптимизируется только для одной задачи. Чтобы добиться хорошего обобщения для множества задач, мы хотели бы найти оптимальное значение $\theta^*$, чтобы точная настройка для конкретной задачи была более эффективной. Теперь мы выбираем новый пакет данных с идентификатором (1) для обновления метацели. Потери, обозначаемые как $\mathcal{L}^{(1)}$, зависят от мини-партии (1). Верхние индексы в $\mathcal{L}^{(0)}$ и $\mathcal{L}^{(1)}$ указывают только на разные пакеты данных и относятся к одному и тому же показателю потерь для одной и той же задачи.

МАМЛ первого порядка

Шаг мета-оптимизации, описанный выше, основан на вторых производных. Чтобы сделать вычисления менее затратными, модифицированная версия MAML опускает вторые производные, что приводит к упрощенной и более дешевой реализации, известной как MAML первого порядка (FOMAML).

Рассмотрим случай выполнения $k$ шагов внутреннего градиента, $k\geq1$. Начиная с исходного параметра модели $\theta_\text{meta}$:

Затем во внешнем цикле мы отбираем новый пакет данных для обновления метацели.

Градиент MAML:

MAML первого порядка игнорирует вторую производную часть, выделенную красным цветом. Это упрощено следующим образом, эквивалентно производной последнего результата обновления внутреннего градиента.

Рептилия

Reptile (Nichol, Achiam & Schulman, 2018) — удивительно простой алгоритм оптимизации метаобучения. Он во многом похож на MAML, учитывая, что оба полагаются на мета-оптимизацию посредством градиентного спуска и оба не зависят от модели.

Рептилия многократно работает:

  1. выборка задачи,
  2. обучение на нем несколькими шагами градиентного спуска,
  3. а затем перемещать веса модели в сторону новых параметров.

См. приведенный ниже алгоритм: $\text{SGD}(\mathcal{L}_{\tau_i}, \theta, k)$ выполняет обновление стохастического градиента для k шагов при потере $\mathcal{L}_{\tau_i} $ начинается с начального параметра $\theta$ и возвращает конечный вектор параметров. Пакетная версия отбирает несколько задач вместо одной в каждой итерации. Градиент рептилии определяется как $(\theta — W)/\alpha$, где $\alpha$ — размер шага, используемый операцией SGD.

На первый взгляд алгоритм очень похож на обычный SGD. Однако, потому что оптимизация для конкретной задачи может занять более одного шага. это в конечном итоге заставляет $\text{SGD}(\mathbb{E} \tau[\mathcal{L}{\tau}], \theta, k)$ расходиться с $\mathbb{E}\tau [\text{SGD }(\mathcal{L}{\tau}, \theta, k)]$, когда k > 1.

Предположение об оптимизации

Предположим, что задача $\tau \sim p(\tau)$ имеет многообразие оптимальной сетевой конфигурации $\mathcal{W}_{\tau}^*$. Модель $f_\theta$ достигает наилучшей производительности для задачи $\tau$, когда $\theta$ лежит на поверхности $\mathcal{W}_{\tau}^*$. Чтобы найти решение, хорошее для всех задач, мы хотели бы найти параметр, близкий ко всем оптимальным многообразиям всех задач:

Будем использовать расстояние L2 как $\text{dist}(.)$, а расстояние между точкой $\theta$ и множеством $\mathcal{W}_\tau^*$ равно расстоянию между $\theta$ и точка $W_{\tau}^*(\theta)$ на многообразии, ближайшая к $\theta$:

Градиент квадрата евклидова расстояния равен:

Примечания. Согласно статье Reptile, «градиент квадрата евклидова расстояния между точкой Θ и множеством S равен вектору 2(Θ − p), где p — ближайшая точка в S к Θ «. Технически ближайшая точка в S также является функцией Θ, но я не уверен, почему градиенту не нужно беспокоиться о производной от p. (Пожалуйста, не стесняйтесь оставить мне комментарий или отправить мне электронное письмо об этом, если у вас есть идеи.)

Таким образом, правило обновления для одного шага стохастического градиента:

Ближайшая точка на многообразии оптимальной задачи $W_{\tau_i}^*(\theta)$ не может быть вычислена точно, но Reptile аппроксимирует ее с помощью $\text{SGD}(\mathcal{L}_\tau, \theta, к) $.

Рептилия против FOMAML

Чтобы продемонстрировать более глубокую связь между Reptile и MAML, давайте расширим формулу обновления на примере выполнения двух шагов градиента, k=2 в $\text{SGD}(.)$. Так же, как определено выше, $\mathcal{L}^{(0)}$ и $\mathcal{L}^{(1)}$ — это потери с использованием разных мини-пакетов данных. Для простоты чтения мы принимаем две упрощенные аннотации: $g^{(i)}_j = \nabla_{\theta} \mathcal{L}^{(i)}(\theta_j)$ и $H^{(i )}_j = \nabla²_{\theta} \mathcal{L}^{(i)}(\theta_j)$.

Согласно раннему разделу, градиент FOMAML является последним результатом обновления внутреннего градиента. Следовательно, когда k=1:

Градиент рептилий определяется как:

До сих пор у нас есть:

Далее попробуем еще расширить $g^{(1)}_1$, используя разложение Тейлора. Напомним, что разложение Тейлора функции $f(x)$, дифференцируемой в числе $a$, имеет вид:

Мы можем рассматривать $\nabla_{\theta}\mathcal{L}^{(1)}(.)$ как функцию, а $\theta_0$ как точку значения. Разложение Тейлора $g_1^{(1)}$ в точке значения $\theta_0$:

Вставьте расширенную форму $g_1^{(1)}$ в градиенты MAML с одноэтапным обновлением внутреннего градиента:

Градиент Рептилии становится:

Пока у нас есть формула трех типов градиентов:

Во время обучения мы часто усредняем несколько пакетов данных. В нашем примере мини-партии (0) и (1) взаимозаменяемы, так как обе выбираются случайным образом. Ожидание $\mathbb{E}_{\tau,0,1}$ усредняется по двум пакетам данных, идентификаторам (0) и (1), для задачи $\tau$.

Позволять,

  • $A = \mathbb{E}_{\tau,0,1} [g_0^{(0)}] = \mathbb{E}_{\tau,0,1} [g_0^{(1)}] $; это средний градиент потери задачи. Мы ожидаем улучшить параметр модели для достижения более высокой производительности задачи, следуя этому направлению, указанному $A$.
  • $B = \mathbb{E}_{\tau,0,1} [H^{(1)}_0 g_0^{(0)}] = \frac{1}{2}\mathbb{E}_{ \tau,0,1} [H^{(1)}_0 g_0^{(0)} + H^{(0)}_0 g_0^{(1)}] = \frac{1}{2}\ mathbb{E}_{\tau,0,1}[\nabla_\theta(g^{(0)}_0 g_0^{(1)})]$; это направление (градиент), которое увеличивает внутренний продукт градиентов двух разных мини-пакетов для одной и той же задачи. Мы ожидаем улучшить параметр модели, чтобы добиться лучшего обобщения различных данных, следуя этому направлению, указанному $B$.

В заключение, как MAML, так и Reptile нацелены на оптимизацию для достижения одной и той же цели, лучшей производительности задачи (на основе A) и лучшего обобщения (на основе B), когда обновление градиента аппроксимируется первыми тремя ведущими членами.

Мне не ясно, может ли игнорируемый термин $O(\alpha²)$ сильно повлиять на изучение параметра. Но учитывая, что FOMAML может получить такую ​​​​же производительность, как и полная версия MAML, можно с уверенностью сказать, что производные более высокого уровня не будут иметь решающего значения во время обновления градиентного спуска.

Первоначально опубликовано на https://tayalmanan28.github.io 4 мая 2022 г.