---
title: "Prototypical Networks for Few-shot Learning"
title_ru: "Прототипические сети для обучения с малым числом примеров"
authors: [Snell, Swersky, Zemel]
year: 2017
venue: "NeurIPS"
venue_tier: "A*"
doi: "1703.05175"
tags: [few_shot, meta_learning, metric_learning, embedding]
relevance_to_smartrep: 3
direction: "🅱"
---

# Прототипические сети для обучения с малым числом примеров

## TL;DR (≤3 предложения)

ProtoNet предлагает обучать признаковое пространство так, чтобы каждый класс представлялся одним прототипом — средним вектором embedding'ов примеров из support set. Классификация новых примеров выполняется по расстоянию до ближайшего прототипа в этом пространстве. Метод прост, стабильно воспроизводим и остаётся сильным baseline'ом для few-shot задач спустя семь лет после публикации.

## Проблема

Стандартные нейросети требуют сотен примеров на класс. При появлении нового упражнения (или нового пользователя) нельзя быстро дообучить классификатор — нет данных. Нужен метод, способный обобщаться на новые классы по 1–5 примерам без переобучения.

## Гипотеза / вклад

- **Прототип класса:** среднее embedding'ов support-примеров достаточно для описания класса.
- **Евклидово расстояние** в embedding-пространстве лучше косинусного для few-shot метрического обучения.
- **Эпизодическое обучение:** модель тренируется на задачах, имитирующих test-time few-shot сценарий (N-way K-shot эпизоды).

## Метод

Энкодер $f_\phi$ отображает примеры в $\mathbb{R}^d$. Прототип класса $k$:

$$\mathbf{c}_k = \frac{1}{|S_k|} \sum_{(\mathbf{x}_i, y_i) \in S_k} f_\phi(\mathbf{x}_i)$$

Вероятность принадлежности query-примера $\mathbf{x}$ классу $k$:

$$p(y=k \mid \mathbf{x}) = \frac{\exp(-d(f_\phi(\mathbf{x}),\, \mathbf{c}_k))}{\sum_{k'} \exp(-d(f_\phi(\mathbf{x}),\, \mathbf{c}_{k'}))}$$

где $d$ — евклидово расстояние. Loss — кросс-энтропия на query set эпизода. Архитектура энкодера не фиксирована (в оригинале — 4-слойная conv с BN для изображений).

### Архитектура (Mermaid)

```
Support Set → Encoder f_φ → Mean per class → Prototypes c_k
Query x     → Encoder f_φ → Embedding → Euclidean dist to c_k → Softmax → Loss
```

## Датасеты

| Датасет | Задача | Метрика | Результат (5-way 5-shot) |
|---|---|---|---|
| miniImageNet | Классификация изображений | Accuracy | 65.77% |
| Omniglot | Классификация символов | Accuracy | 98.8% |

## Сравнение с SOTA

На момент публикации превзошёл Matching Networks на miniImageNet 5-shot на ~2%. Остаётся сильным baseline'ом — многие последующие методы улучшают его не более чем на 5–10% в тех же условиях, используя значительно более сложные архитектуры.

## Ограничения / слабости

- Прототип как простое среднее не учитывает внутриклассовую вариативность (критично для движений: один пользователь делает присед иначе, чем другой).
- Нет механизма обработки временны́х последовательностей — метод изначально для изображений.
- Евклидово расстояние работает плохо в высокоразмерных пространствах с сильной мультимодальностью класса.
- Фиксированный прототип не адаптируется к конкретному query-пользователю.

## Релевантность SmartRep

- **Ядро направления 🅱:** архитектура "прототип на 5 эталонных повторах → оценка нового повтора по расстоянию до прототипа" — прямое применение. Скелетный embedding нового упражнения = прототип правильной техники.
- **One-class расширение:** если support set содержит только эталонные повторы, порог расстояния до прототипа = детектор аномалий (плохая техника = далеко от прототипа).
- **Edge-совместимость:** на инференсе только encoder + евклидово расстояние — крайне легко, <1 ms на любом мобильном устройстве.

## Gap для нас

ProtoNet работает на статичных изображениях. **Ниша SmartRep:** прототип последовательности повторов в темпоральном embedding-пространстве (GRU/Mamba энкодер поверх скелетных координат) — «ProtoNet для временны́х рядов суставов». Средняя внутриклассовая вариативность движений значительно выше, чем у символов Omniglot, что требует нормализации по антропометрии перед усреднением.

## Ссылки на связанные статьи

- [[Matching Networks]] — предшественник, attention вместо среднего
- [[MAML]] — альтернативная парадигма: оптимизация вместо метрики
- [[OTAM]] — ProtoNet-идеология + темпоральное выравнивание для видео

## Код / данные

- Repo: нет официального, множество репродукций (github.com/jakesnell/prototypical-networks)
- Pretrained: нет

## Цитата (BibTeX)

```bibtex
@inproceedings{snell2017prototypical,
  title={Prototypical Networks for Few-shot Learning},
  author={Snell, Jake and Swersky, Kevin and Zemel, Richard},
  booktitle={Advances in Neural Information Processing Systems},
  year={2017}
}
```
