Zero-shot и Few-shot Learning в NLP
Определения
Zero-shot Learning (ZSL) — это способность модели выполнять задачи без каких-либо примеров обучения. Она делает это за счёт обобщённых знаний, полученных во время предобучения.
Few-shot Learning (FSL) — это метод, при котором модели предоставляется всего несколько примеров (обычно от 1 до 5), чтобы лучше понять структуру задачи.
Архитектура
Zero-shot и Few-shot Learning реализуются в трансформерных архитектурах (GPT, Mistral, LLaMA и тд.) за счёт трех основных внутренних механизмов:
Предобученные эмбеддинги: модель уже имеет какие либо знания.
Контекстное внимание (Self-Attention): позволяет адаптироваться к входным данным.
Обучение без градиентного спуска: модель не обновляет веса, а работает с внутренними представлениями.
Как это работает в трансформерах?
Трансформер работаетавто-регрессионно (последовательно предсказывает каждый следующий токен):

Где:
ɯ_t — следующее слово, предыдущие же слова задают контекст.
ɯ_i (i ∊ [1, t-1]) — предыдущие токены.
P (ɯ_t) — вероятность появления токена.
После обработки входных токенов через self-attention и FFN-слои, модель подаёт выходные представления в линейный слой + softmax, который превращает их в вероятности.
Финальная формула:

Где:
h_t — представление скрытого состояния на шаге ttt.
W — матрица весов, сопоставляющая скрытые состояния с токенами словаря.
Softmax преобразует сырые логиты в вероятности.
Zero-shot в архитектуре
Модель получает только запрос (промпт) и вычисляет вероятности возможных токенов.
Она полагается на латентные представления из предобученного корпуса.
Процесс основан на знаниях, встроенных в веса модели.
Few-shot в архитектуре
Входная последовательность включает несколько примеров (input-label pairs).
Модель сравнивает паттерны в примерах и адаптирует вероятностное распределение.
Это создаёт динамическую адаптацию к новой задаче без дообучения.
Компоненты архитектуры
Токенизация и эмбеддинги
Перед подачей в трансформер текст проходит через токенизатор (например, Byte-Pair Encoding или SentencePiece).
Zero-shot: промпт сразу конвертируется в токены.
Few-shot: примеры и запрос объединяются в единый контекстный блок.
Многоголовое внимание (Multi-Head Attention)
Позволяет учитывать сразу несколько интерпретаций входного текста.
Zero-shot: внимание распределяется только по входному запросу.
Few-shot: внимание анализирует как примеры, так и новый вход.
Feedforward-слои и нормализация
После self-attention модель проходит через нелинейные преобразования (MLP-слои) и нормализуется.
Это помогает выявлять скрытые закономерности в примерах few-shot.
Выходной слой (Softmax over Vocabulary)
Модель предсказывает токены, вычисляя вероятности для каждого слова в словаре.
Zero-shot: softmax основан на общем знании модели.
Few-shot: softmax сдвигается в сторону примеров, которые были в контексте.
Математика адаптации к контексту (Few-shot)
Few-shot работает за счёт байесовского обновления вероятностей. Если x — входной текст, а y — ожидаемый ответ, то:

D — дополнительные примеры (few-shot).
P (D∣y, x)— насколько данные соответствуют известным примерам.
P (y∣x) — базовая вероятность ответа без примеров (zero-shot).
P (D∣x) — нормализующий член.
Что объясняет, почему добавление примеров сужает распределение вероятностей и повышает точность.
Почему это работает без обновления весов?
Трансформеры обучены так, что могут использовать контекст как временную память. Когда мы даём примеры в промпте:
Self-attention «вычисляет» правило из входных данных.
Feedforward-слои экстраполируют это правило на новый вход.
Модель имитирует обучение, хотя веса остаются неизменными.
Такой механизм называют in-context learning (ICL) — «обучение в контексте».
Разница между Zero-shot, Few-shot и Fine-tuning в продакшене.

Zero-shot и Few-shot не требуют обучения, но имеют более высокие затраты на обработку запроса (из-за длинных промптов в Few-shot).
Fine-tuning требует значительных затрат на обучение, но затем дешев в использовании.
Zero-shot Learning
Использует внутренние знания модели без примеров.
Хорошо работает на обобщенных задачах (классификация, генерация, перевод).
Ограниченная точность, особенно в узкоспециализированных доменах.
Низкие вычислительные затраты: 0.3 — 1 teraFLOPs на запрос.
Few-shot Learning
Позволяет модели лучше понять контекст задачи за счёт нескольких примеров.
Требует продуманного выбора примеров (prompt engineering).
Эффективен в случаях, когда доступно мало размеченных данных.
Средние вычислительные затраты: 0.5 — 2 teraFLOPs на запрос.
Fine-tuning
Требует большого количества размеченных данных.
Позволяет модели адаптироваться под конкретный домен.
Долгое обучение, высокая стоимость вычислений, но максимальная точность.
Очень высокие затраты на обучение: 100 — 500+ teraFLOPs.
Выбор подхода зависит от задачи: если требуется быстро протестировать модель на новой задаче, Zero-shot или Few-shot — оптимальный вариант. Если же необходима максимальная точность и стабильность, Fine-tuning остаётся лучшим решением.