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

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

Почему люди могут делать то, что делаем мы?

В частности: во многих задачах обучения с подкреплением алгоритмам требуется поразительно много времени, чтобы изучить задачи, по сравнению с тем, сколько времени потребуется людям; при нынешнем состоянии игры в игры Atari требуется около 83 часов (или 18 миллионов кадров) игрового времени, чтобы достичь медианной производительности человека, которую большинство людей может достичь после всего лишь нескольких часов пребывания в игре.

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

  1. Выученные приоры: в этом объективе люди могут быстро осваивать новые задачи, потому что мы можем повторно использовать информацию, которую мы уже узнали в прошлых задачах, например, интуитивно понятную физику того, как объекты перемещаются в пространстве, или мета-знания, которые потеря жизни в видеоиграх приводит к снижению вознаграждения.
  2. Усвоенные стратегии. Это идея о том, что в течение нашей жизни (и, возможно, в течение эволюционного периода времени) мы не просто собираем знания о мире на уровне объектов, но и развиваем нейронную структуру, которая более эффективна. эффективно воспринимать вводимые данные и превращать их в результаты или стратегии даже в очень новых условиях.

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

Не отбрасывать мой (один) выстрел

Прежде чем углубляться в собственно метаобучение, полезно получить некоторое концептуальное обоснование в соответствующей области One Shot Learning. Если проблема метаобучения заключается в том, «как я могу построить модель, которая быстро изучает новые задачи», проблема One Shot Learning заключается в том, «как я могу построить модель, которая может научиться классифицировать класс, увидев только один пример этого. класс".

Давайте задумаемся на секунду о том, что делает проблему One Shot Learning сложной на концептуальном уровне. Если мы попытаемся обучить ванильную модель только на одном примере соответствующего класса, она почти наверняка переоборудуется. Если модель когда-либо видит только один рисунок, скажем, буквы 3, она не поймет, какие виды пиксельных вариаций может претерпеть изображение, и все равно останется по существу цифрой 3. Например, если модели показаны только первые 3 в этой линейке, как можно априори знать, что вторая тройка является примером того же вида? Может ли быть теоретически возможным, чтобы обозначение класса, которое мы интересуем для сетевого обучения, было связано с толщиной линий, составляющих букву? Нам это кажется глупым, но, имея только один пример тройственности, сеть может сделать нетривиальный вывод.

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

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

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

Если вас попросят построить рейтинг мета-параметров нейронных сетей, от наименее до наиболее абстрактного, он будет выглядеть примерно так:

  1. Сеть, обучающая представлениям, полезна для полного распределения задач с помощью гиперпараметрического градиентного спуска. MAML и Reptile - хорошие прямые примеры этого, в то время как Мета-обучение с разделяемыми иерархиями - это интригующий подход, который изучает представления как явные субполитики, контролируемые главной политикой.
  2. Сеть учится оптимизировать параметры своей собственной операции градиентного спуска. Это такие параметры, как скорость обучения, импульс и веса алгоритмов адаптивной скорости обучения. Здесь мы начинаем идти по пути изменения самого алгоритма обучения, но ограниченными, параметрическими способами. Это то, что делает Learning to Learn By Gradient Descent by Gradient Descent. Да, это настоящее название статьи.
  3. Сеть, которая изучает оптимизатор внутреннего цикла, который сам является сетью. То есть: там, где градиентный спуск используется для обновления параметров нейронной сети оптимизатора, чтобы они хорошо работали в разных задачах, но где отображение входных данных в прогнозирование выходных данных в рамках каждой отдельной задачи полностью выполняется сетью, без каких-либо явные расчеты потерь или градиентов. Так работают и RL², и Простой нейро-внимательный метаобучающийся.

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

Задача под любым другим именем

Еще одно небольшое отступление - последнее, я обещаю, - которое, я надеюсь, прояснит то, что в противном случае могло бы быть запутанной темой. Часто в обсуждениях метаобучения можно встретить упоминание об идее «распределения задач». Вы можете заметить, что это плохо определенная концепция, и были бы правы. Кажется, не существует четкого стандарта того, когда проблема - это одна задача или распределение по задачам. Например: следует ли рассматривать ImageNet как одну задачу - распознавание объектов - или как много - различать собак - это одна задача, а различать кошек - другую? Почему игра в одну игру Atari представляет собой одно задание, а не несколько заданий, составляющих отдельные уровни игры?

Что мне удалось извлечь из всего этого:

  • Понятие «задача» в значительной степени связано с тем, какие наборы данных были созданы, поскольку естественно думать об обучении на одном наборе данных как об одной задаче.
  • Для любого заданного распределения задач, насколько эти задачи отличаются друг от друга, может сильно отличаться (то есть, когда каждая задача изучает синусоидальную волну разной амплитуды, по сравнению с тем, где каждая задача играет в другую игру Atari)
  • Таким образом, не стоит сразу же говорить: «А, этот метод может быть обобщен на« этот пример распределения задач », так что это хороший показатель того, что в целом он может хорошо работать при произвольном различном распределении задач». Это, конечно, не плохое свидетельство эффективности метода, но оно требует критического мышления, чтобы понять, какую гибкость действительно должна продемонстрировать сеть, чтобы хорошо выполнять все задачи.

Те, которые необъяснимо названы в честь животных

В начале 2017 года Челси Финн и команда из Беркли выпустили методику под названием MAML: Model Agnostic Meta Learning.

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

  1. Инициализировать параметры сети, тета, случайным образом
  2. Выберите некоторую задачу t из распределения задач T. Используя k примеров (обычно ~ 10) из обучающего набора, выполните один шаг градиента в месте, указанном текущим набором параметров, что даст вам окончательный набор параметров.
  3. Оцените производительность по этим окончательным параметрам в тестовом наборе данных.
  4. Затем возьмите градиент производительности набора тестов task-t относительно ваших начальных параметров theta. Затем обновите этот параметр на основе этого градиента. Вернитесь к шагу 1, используя только что обновленную тэту в качестве начальной тэты на этом шаге.

Что это делает? На очень абстрактном уровне это поиск точки в пространстве параметров, наиболее близкой по ожиданиям к хорошей точке обобщения для многих задач в его распределении. Вы можете думать об этом как о принуждении модели поддерживать некоторый уровень неопределенности и осторожности при исследовании пространства параметров. Упрощенно: там, где сеть, которая считает, что ее градиенты полностью репрезентативны для распределения населения, может погрузиться в область с особенно низкими потерями, MAML будет более заинтересован в поиске области рядом с выступом нескольких долин, каждая из которых содержит достаточно низкие потери по всем задачам. в ожидании. Именно этот стимул к осторожности помогает предотвратить переоснащение MAML, как это обычно бывает в модели, когда приводится лишь небольшое количество примеров из новой задачи.

Более недавнее дополнение к литературе, названное Reptile, появилось в начале 2018 года. Как вы могли догадаться по его названию - игра на более раннем MAML - Reptile начал с предпосылок MAML, но нашел способ вычислить обновление начальных параметров. цикл, который был более эффективным с точки зрения вычислений. Там, где MAML явно принимает градиент потери тестового набора относительно начальных параметров theta, Reptile вместо этого просто выполняет несколько шагов обновления SGD для каждой задачи, а затем использует разницу между весами в конце обновлений и начальной weights, как «градиент», используемый для обновления начальных весов.

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

  1. Термин, приближающий результат к «потере совместных тренировок», то есть к результату, который вы получили бы, если бы вы просто тренировались, выполняя несколько разных задач, и
  2. Термин, подталкивающий инициализацию к точке, где градиенты последующих мини-батчей SGD близки друг к другу: то есть разница в градиентах между мини-партиями мала. Авторы предполагают, что именно этот термин приводит к быстрому обучению, потому что он стимулирует пребывание в более стабильной и низкой вариативности тренировочной области по каждой задаче.

Я выбрал группу MAML / Reptile как представителя «изученной априорной» цели, потому что сеть, теоретически, преуспевает в изучении внутренних представлений, которые либо полезны для классификации по полному распределению задач, либо представления, близкие по пространство параметров для широко полезных представлений.

Чтобы прояснить этот момент, взгляните на рисунок выше. Он сравнивает MAML с сетью, которая только что была предварительно обучена, когда обе были обучены на наборе регрессионных задач, состоящих из синусоидальных волн различной фазы и амплитуды. На данный момент оба «настроены» на новую конкретную задачу: кривая, показанная красным. Фиолетовые треугольники представляют собой точки данных, используемые в небольшом количестве шагов градиента. По сравнению с предварительно обученной сетью, MAML, например, узнал, что синусоидальные волны имеют периодическую структуру: при K = 5 он может гораздо быстрее перемещать левый пик в нужное место, фактически не наблюдая данных из этой области пространства. . Хотя трудно сказать, являются ли наши (несколько пошлые) объяснения идеальным механическим соответствием тому, что происходит под капотом, мы можем сделать вывод, что MAML проделал лучшую работу по выяснению двух важных способов, которыми синусоидальные волны отличаются друг от друга - фаза и амплитуда - и как узнать эти представления из предоставленных данных.

Сети на всем пути вниз

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

Это подход, принятый RL² (быстрое обучение с подкреплением через медленное обучение с подкреплением). Базовая структура этой модели - рекуррентная нейронная сеть (технически: LTSM-сеть). Поскольку RNN имеют возможность хранить информацию о состоянии и давать различные выходные данные в зависимости от этого состояния, для них теоретически возможно изучить произвольные вычислимые алгоритмы: другими словами, они потенциально могут быть полными по Тьюрингу. Используя это в качестве основы, авторы RL² структурировали RNN таким образом, что каждая последовательность, на которой была обучена RNN, на самом деле была серией эпизодов опыта с данным MDP (MDP = Марковский процесс принятия решений. Для этого объяснения вы можете просто подумайте о каждом MDP как об определении набора возможных действий и лежащих в основе вознаграждений, которые эти действия генерируют в среде). Затем RNN обучается - как это обычно бывает - RNN - по множеству последовательностей, которые в этом случае соответствуют множеству различных MDP, и параметры RNN оптимизируются для получения низкого сожаления по всем последовательностям / испытаниям в совокупности. Сожаление - это показатель, который фиксирует ваше общее вознаграждение за набор эпизодов, поэтому, помимо стимулирования сети к выработке хорошей политики к концу испытания, оно также стимулирует более быстрое обучение, так что меньше ваших исследовательских действий предпринимается в рамках плохая и, следовательно, низкая политика вознаграждения.

На каждом этапе испытания действие, предпринимаемое сетью, представляет собой функцию, параметризованную как весовой матрицей, полученной по нескольким задачам, так и содержанием скрытого состояния, которое обновляется в зависимости от данных и служит своего рода набора динамических параметров. Итак, RNN изучает веса того, как обновлять свое скрытое состояние, и веса, управляющие тем, как использовать его для нескольких задач. А затем, в данной задаче, скрытое состояние может захватывать информацию о том, насколько надежна сеть, пришло ли время исследовать, а не использовать ее и т. Д., В зависимости от данных, которые он видел по этой конкретной задаче. В этом смысле RNN изучает алгоритм, который определяет, как лучше всего исследовать пространство и обновлять свое представление о лучшей политике, и изучает этот алгоритм, чтобы он хорошо работал при распределении задач. Авторы сравнивают архитектуру RL² с алгоритмами, которые оказались асимптотически оптимальными для задач, которые они пытаются решить, и RL² работает сравнимо.

Можем ли мы масштабировать это?

Это только очень сжатое введение в область, и я уверен, что есть идеи, которые я упустил, или концепции, которые я неправильно сформулировал. Если вам нужна дополнительная (и более информированная) точка зрения, я настоятельно рекомендую этот пост в блоге Челси Финн, первого автора статьи MAML.

Несколько недель попыток концептуально сжать это распределение статей и выработать общее понимание, применимое ко всем, оставил мне ряд общих вопросов:

  • Насколько хорошо эти методы масштабируются для задач с более высоким разнообразием? В большинстве этих работ были проведены тесты для проверки концепции распределения на задачах с относительно низким уровнем разнообразия: синусоидальные кривые с разными параметрами, многорукие бандиты с другой параметр, распознавание символов с разных языков. Для меня неочевидно, что хорошее выполнение этих распределений задач обязательно обобщается, например, на задачи разного уровня сложности и из разных модальностей, таких как распознавание изображений в сочетании с ответами на вопросы в сочетании с логическими головоломками.
    И все же человеческий мозг формирует свои априорные задачи из этих весьма разнообразных наборов задач, передавая информацию о мире туда и обратно между ними. Мой главный вопрос здесь: будут ли эти методы работать, как рекламируется, с этими более разнообразными задачами, если вы добавляете больше единиц и вычисляете их? Или же в какой-то момент кривой разнообразия задач наблюдается нелинейный эффект, так что методы, работающие при таком низком разнообразии, просто не будут эффективны вообще при высоком разнообразии.
  • Насколько эти подходы зависят от огромных объемов вычислений? Одна из причин, по которой большинство этих статей работает с небольшими и простыми наборами данных, заключается в том, что каждый из ваших тренировочных прогонов включает внутренний цикл (эффективного) обучения Модель для точки данных об эффективности ваших мета-параметров, тестирование может быть очень затратным по времени и вычислениям. Учитывая, что закон Мура, похоже, в последнее время замедляется, насколько возможно будет где-нибудь за пределами Google проводить исследования полезных масштабных версий этих алгоритмов, где каждая итерация внутреннего цикла для сложной проблемы может занять сотни часов времени графического процессора ?
  • Как эти методы соотносятся с идеей поиска способов явного кодирования априорной информации о мире? Одним из невероятно ценных инструментов в арсенале человека является язык. С точки зрения машинного обучения, это в основном сильно сжатая информация, встроенная в пространство, которым мы умеем концептуально манипулировать, которое мы можем передавать от человека к человеку. Ни один человек никогда не сможет самостоятельно извлечь все эти знания из опыта, поэтому я скептически отношусь к тому, что мы когда-либо действительно решим проблему моделей, которые могут интегрировать знания о мире, если мы не выясним, как что-то сделать. аналогично для алгоритмов обучения.