Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Meta Learning

Метаобучение обучает модель на множестве задач, чтобы она адаптировалась к новой задаче по нескольким примерам. Разбираем, как работают эпизоды, MAML и прототипические сети.

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

Как работает метаобучение#

Метаобучение проходит в эпизодах, имитирующих ситуацию, с которой модель столкнётся при тестировании. В каждом эпизоде выбирается задача, например задача классификации в режиме 5-way 1-shot, сформированная на основе пяти классов, на каждый из которых приходится одно размеченное изображение. Размеченные примеры образуют опорную выборку, а отложенные примеры тех же классов — запросную выборку. Во внутреннем цикле модель адаптируется к опорной выборке; во внешнем цикле метапараметры обновляются с учётом того, насколько хорошо адаптированная модель справляется с запросной выборкой, поэтому модель получает вознаграждение за успешную адаптацию, а не за запоминание какой-либо одной задачи. Классы, используемые для метатестирования, никогда не встречаются при метаобучении.

Основные подходы#

  • На основе оптимизации: Model-Agnostic Meta-Learning (MAML) обучается находить начальные параметры, с которых один или несколько шагов градиентного спуска по опорной выборке новой задачи дают хороший результат. Во внешнем цикле вычисляются градиенты через внутреннее обновление, для чего нужны градиенты второго порядка; варианты первого порядка, такие как Reptile от OpenAI, позволяют избежать этих затрат, сдвигая начальные параметры в сторону весов, адаптированных для каждой задачи.
  • На основе метрик: Эти методы обучают пространство эмбеддингов, в котором примеры классифицируются по расстоянию. Прототипические сети усредняют эмбеддинги опорных примеров каждого класса, получая прототип, и относят каждый запрос к ближайшему прототипу, поэтому при добавлении класса во время тестирования обучать модель не нужно.
  • На основе модели: Сеть, например рекуррентная нейронная сеть (RNN) с внешней памятью, считывает опорную выборку и напрямую предсказывает метки для запросов, обучаясь процедуре адаптации через свои активации. В статье о GPT-3 обучение в контексте больших языковых моделей (LLMs), то есть решение задачи по примерам в запросе, описывается как внутренний цикл такого метаобучения, а предварительное обучение — как внешний цикл.

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

import torch
import torch.nn.functional as F
from torch import nn
from torch.func import functional_call

torch.manual_seed(0)
net = nn.Sequential(nn.Linear(1, 40), nn.ReLU(), nn.Linear(40, 40), nn.ReLU(), nn.Linear(40, 1))
meta_optimizer = torch.optim.Adam(net.parameters(), lr=0.001)


def sine_task_losses():
    """Sample a sine-wave task, adapt on 10 points with one gradient step, and return query losses before and after."""
    amplitude, phase = torch.empty(1).uniform_(0.1, 5), torch.empty(1).uniform_(0, 3.14)
    x = torch.empty(20, 1).uniform_(-5, 5)
    y = amplitude * torch.sin(x + phase)
    params = dict(net.named_parameters())
    support_loss = F.mse_loss(functional_call(net, params, x[:10]), y[:10])
    grads = torch.autograd.grad(support_loss, list(params.values()), create_graph=True)  # inner loop
    adapted = {name: p - 0.01 * g for (name, p), g in zip(params.items(), grads)}
    before = F.mse_loss(functional_call(net, params, x[10:]), y[10:])
    after = F.mse_loss(functional_call(net, adapted, x[10:]), y[10:])
    return before, after


# Outer loop: update the shared initialization so that one inner step fits each new task
for step in range(10000):
    meta_loss = sum(sine_task_losses()[1] for _ in range(4))
    meta_optimizer.zero_grad()
    meta_loss.backward()
    meta_optimizer.step()

# On 500 unseen sine waves, compare query error before and after the one-step adaptation
losses = torch.tensor([[loss.item() for loss in sine_task_losses()] for _ in range(500)])
print(f"query MSE before adaptation: {losses[:, 0].mean():.2f}, after one step: {losses[:, 1].mean():.2f}")

В примере выводится query MSE before adaptation: 3.10, after one step: 0.70. Метаобученные начальные параметры не аппроксимируют какую-либо конкретную синусоиду, но один шаг градиентного спуска по 10 точкам снижает ошибку на новых точках ранее не встречавшейся синусоиды более чем в четыре раза.

  • Трансферное обучение: повторно использует веса, обученные на одной большой задаче, как начальную точку для другой, не оптимизируя их способность к адаптации. Дообучение детектора Ultralytics YOLO26, предварительно обученного на COCO, на пользовательском наборе данных — это трансферное обучение: начальные веса получены в результате обычного обучения на COCO, а адаптация выполняется на размеченном наборе данных в течение многих эпох, а не по нескольким примерам и нескольким шагам градиентного спуска.
  • Обучение по малому числу примеров: задача обучения по очень небольшому числу примеров. Метаобучение — один из подходов к её решению; предварительно обученные эмбеддинги с простым классификатором — другой.
  • Автоматизированное машинное обучение (AutoML): подбирает архитектуры и гиперпараметры, обычно для одного набора данных за раз. В некоторых обзорах обучение гиперпараметров сразу для нескольких задач относят к метаобучению.
  • Непрерывное обучение: обучается последовательности задач, не забывая предыдущие, тогда как метаобучение подготавливает модель к быстрому освоению новых задач.

Бенчмарки и результаты#

Большинство исследований метаобучения было посвящено бенчмаркам изображений с малым числом примеров: Omniglot содержит 1623 рукописных символа из 50 алфавитов, а miniImageNet использует 100 классов ImageNet по 600 изображений в каждом, разделённых на отдельные классы для метаобучения, валидации и тестирования. Два более поздних исследования поставили под сомнение вклад самого метаобучения. Работа «Быстрое обучение или повторное использование признаков?» показала, что успех MAML в основном обусловлен повторным использованием признаков, изученных во внешнем цикле; упрощённый вариант ANIL, адаптирующий во внутреннем цикле только последний слой, показал результат на уровне MAML. Затем работа «Переосмысление классификации изображений с малым числом примеров» обнаружила, что линейный классификатор на качественном эмбеддинге, обученном обычным методом с учителем или самостоятельным обучением на классах метаобучения, превосходил ведущие на тот момент методы метаобучения с малым числом примеров.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

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

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

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

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

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

Компьютерное зрение в сельском хозяйстве

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

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения