Автор: Дмитрий Раков Редактура: Андрей Шадриков

Введение

Фундаментальный вопрос при анализе процесса обучения людей — процесс изучения функционирования памяти. Как отмечают исследователи, люди могут достаточно быстро запоминать новые концепты и обьекты, которые они увидели лишь однажды. В отличие от человека, процесс запоминания концептов (обучения) нейронной сетью строится на процедуре с множеством итераций обучения и несопоставимо большим количеством примеров. Это несоответствие породило область исследований, которая отвечает за построение методов решения поставленных задач при обучении на малом количестве примеров. Такими задачами являются Few-shot learning, One shot learning и Zero shot learning. В статье мы разберем первую задачу и методы, которые были разработаны для ее решения.

Описание задачи

Few-shot learning — это задача обучения по нескольким размеченным примерам. Мы настраиваем параметры нейронной сети так, чтобы при использовании только К размеченных примеров мы получили модель, реализующую классификацию на С классов. Такую постановку задачи описывают как C-way K-shot классификацию. Кроме K размеченных примеров для каждого целевого класса у нас также есть набор данных **A.**Он помогает сделать процедуру предобучения нашей модели.

С точки зрения данных, как и в классическом (supervised) подходе, мы располагаем тренировочной и тестовой выборкой.

Главное отличие few-shot learning: мы представляем наши данные в виде трех основных наборов — A (auxiliary/base set), S (support set), Q (query set).

  1. A (auxiliary / base set) — тренировочный набор данных, на котором мы будем получать начальные параметры модели (знания об окружающем мире). Он может быть очень большим, но согласно постановке задачи не должен содержать классы из тестового множества.

$$ \mathcal{A} = \{\mathbf{X}_i, \mathbf{y}i\}{i=1}^{N} - набор\ базовых\ классов $$

  1. S (support set) — набор опорных примеров размером C * K. Он нам нужен для адаптации модели к новому набору классов. В ряде методов few-shot learning'а набор S выступает как набор A. Тогда задача адаптации трансформируется в задачу генерализации.

$$ \mathcal{S} = \{\mathbf{S}_1,... \mathbf{S}_n\} = \{\mathbf{x}_i, \mathbf{y}i\}{i=1}^{CK} - набор\ опорных\ примеров \\ \mathcal{C} - количество\ целевых\ классов \\ \mathcal{K} - количество\ опорных\ примеров\\ $$

  1. Q (query set) — набор тестовых данных с идентичным S набором классов. Его мы будем использовать для оценки качества адаптации/обучения на S.

$$ \mathcal{Q}=\{\mathbf{ x}_i,\mathbf{y}i\}{i=1}^{CM} - тестовый\ набор \\ \mathcal{M} - количество \ тестовых\ примеров $$

Таким образом, мы получаем разделение данных в виде следующей визуальной схемы:

Рисунок 1. Схема наборов данных: Meta-training — набор A, Meta-testing — наборы S и Q

Рисунок 1. Схема наборов данных: Meta-training — набор A, Meta-testing — наборы S и Q

Техника эпизодического обучения (episodic training) — техника, которая используется для обучения модели при подобном представлении данных. В рамках few-shot подхода мы переходим от классического обучения на наборе примеров c соответствующими метками к обучению на наборе задач. Это можно описать следующим образом:

$$ \mathcal{T} - симулируемая\ задача\\ \mathcal{A_{s}} - набор\ опорных\ примеров,\ семплированных\ из\ \mathcal{A} \\ \mathcal{A_{q}} - набор\ тестовых\ примеров\ из\ \mathcal{A} $$

Для решения задачи модель обучается на опорном наборе данных, чтобы корректно предсказывать метки тестовых примеров. В классическом варианте обучение проходит с использованием случайно сформированных минибатчей. При few-shot парадигме минибатч состоит из M задач:

$$ \{\mathcal{T} = <\mathbf{A_{S}^i}, \mathbf{A^{i}{Q}} >\}{i=1}^{M}\in \mathcal{p}(\mathcal{T}) - семплированный\ минибатч,\\ где\ \mathcal{p}(\mathcal{T}) - распределение\ задач $$

Рисунок 2. Распределение задач при few-shot подходе

Рисунок 2. Распределение задач при few-shot подходе