---
title: "Matching Networks for One Shot Learning"
title_ru: "Сети сопоставления для обучения с одним примером"
authors: [Vinyals, Blundell, Lillicrap, Kavukcuoglu, Wierstra]
year: 2016
venue: "NeurIPS"
venue_tier: "A*"
doi: "1606.04080"
tags: [few_shot, meta_learning, attention, metric_learning, memory]
relevance_to_smartrep: 2
direction: "🅱"
---

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

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

Matching Networks вводят механизм мягкого ближайшего соседа: query-пример классифицируется как взвешенная комбинация меток support set, веса задаются attention (косинусное сходство в embedding-пространстве). Ключевое отличие от ProtoNet — используется full context embedding через bidirectional LSTM: embedding каждого support-примера обусловлен всем support set. Исторически важная работа: заложила принцип "обучай так, как будешь тестировать" (эпизодическое обучение).

## Проблема

Классические нейросети не умеют в one-shot: новый класс с одним примером требует переобучения. Нужен механизм, позволяющий использовать примеры как "память" без изменения весов модели.

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

- **Attention as classifier:** $\hat{y} = \sum_{i=1}^{k} a(\mathbf{x}, \mathbf{x}_i)\, y_i$, где $a$ — softmax по косинусному сходству.
- **Full Context Embedding (FCE):** embedding поддерживающих примеров обусловлен всем support set через bidirectional LSTM — модель видит support set как контекст.
- **Episodic training:** тренировка на N-way K-shot эпизодах воспроизводит test-time условия.

## Метод

Attention kernel:

$$a(\mathbf{x}, \mathbf{x}_i) = \frac{\exp\left(\cos(f(\mathbf{x}),\, g(\mathbf{x}_i))\right)}{\sum_j \exp\left(\cos(f(\mathbf{x}),\, g(\mathbf{x}_j))\right)}$$

где $f$ — encoder query, $g$ — encoder support (с FCE — LSTM по support set).

Предсказание:

$$\hat{y} = \sum_i a(\mathbf{x}, \mathbf{x}_i)\cdot y_i$$

Loss — кросс-энтропия. Преимущество FCE: embedding $g(\mathbf{x}_i)$ зависит от всего support — модель учитывает, что поддержка из 5 примеров формирует "контекст задачи".

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

```
Support set S → g-encoder (bidirLSTM / FCE) → g(xᵢ)
Query x       → f-encoder                    → f(x)
                                               ↓
                           cosine attention a(x, xᵢ)
                                               ↓
                           ŷ = Σ a(x,xᵢ)·yᵢ → Cross-entropy Loss
```

## Датасеты

| Датасет | Задача | Метрика | Результат (5-way 5-shot) |
|---|---|---|---|
| miniImageNet | Классификация | Accuracy | 55.31% (без FCE) / 60.0% (FCE) |
| Omniglot | Классификация | Accuracy | 98.9% |

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

На момент публикации SOTA для one-shot. Последующий ProtoNet превзошёл за счёт более простой архитектуры и евклидова расстояния. FCE добавляет сложности, но не всегда даёт выигрыш относительно ProtoNet.

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

- FCE через LSTM усложняет обучение и инференс; bidirectional LSTM над support set — дополнительная вычислительная нагрузка.
- Внешний attention не учитывает структуру временны́х последовательностей.
- Косинусное сходство хуже евклидова на многих задачах (позже показано в ProtoNet).

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

- **Историческая основа 🅱:** понимание Matching Networks обязательно для написания раздела "Related Work" по few-shot методам в публикациях SmartRep.
- **Attention-идея:** механизм attention к support set (эталонным повторам) переносится на темпоральные последовательности суставов — query-повтор сравнивается с набором эталонных повторов через attention.
- **Практическая ценность:** невысокая — ProtoNet проще и лучше на большинстве задач.

## Gap для нас

Matching Networks работают с отдельными примерами, не с последовательностями. **Ниша:** temporal Matching Network — каждый элемент support set = последовательность кадров (1 повтор упражнения), attention считается по темпорально выровненным embedding'ам (DTW-attention).

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

- [[ProtoNet]] — более простой и часто лучший наследник
- [[OTAM]] — именно такое темпоральное matching для видео

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

- Repo: нет официального
- Pretrained: нет

## Цитата (BibTeX)

```bibtex
@inproceedings{vinyals2016matching,
  title={Matching Networks for One Shot Learning},
  author={Vinyals, Oriol and Blundell, Charles and Lillicrap, Timothy and Kavukcuoglu, Koray and Wierstra, Daan},
  booktitle={Advances in Neural Information Processing Systems},
  year={2016}
}
```
