Почему CNN уступает трансформерам в некоторых задачах?

«Почему CNN уступает трансформерам в некоторых задачах?» — вопрос из категории Компьютерное зрение, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

CNN (сверточные нейронные сети) и трансформеры имеют разные индуктивные смещения, что делает их оптимальными для разных типов данных. CNN уступают трансформерам в задачах, где критически важны длинные дистанционные зависимости и глобальный контекст.

Ключевые различия:

Аспект CNN (например, ResNet) Трансформер (например, ViT, BERT)
Основная операция Свертка (локальные фильтры) Механизм внимания (self-attention)
Контекст Локальный, расширяется с глубиной сети Глобальный с первого слоя
Индуктивное смещение Локальность, трансляционная инвариантность Минимальное, модель учит зависимости из данных
Параллелизация Хорошая для изображений фиксированного размера Отличная для последовательностей любой длины

Почему attention мощнее для некоторых задач? В механизме внимания каждый элемент (пиксель, токен) может напрямую «видеть» и взвешивать влияние всех остальных элементов, независимо от расстояния.

Упрощенная суть Self-Attention (на примере NLP):

import torch
import torch.nn as nn
import torch.nn.functional as F

# Пусть x - эмбеддинги слов: [batch_size, seq_len, embedding_dim]
x = torch.randn(2, 10, 512)  # 2 предложения, 10 слов, размер эмбеддинга 512

# Линейные проекции для Query, Key, Value
W_Q = nn.Linear(512, 64)
W_K = nn.Linear(512, 64)
W_V = nn.Linear(512, 64)

Q = W_Q(x)  # [2, 10, 64]
K = W_K(x)  # [2, 10, 64]
V = W_V(x)  # [2, 10, 64]

# Вычисление весов внимания: насколько каждое слово важно для текущего
attention_scores = torch.matmul(Q, K.transpose(-2, -1))  # [2, 10, 10]
attention_scores = attention_scores / (64 ** 0.5)  # Масштабирование
attention_weights = F.softmax(attention_scores, dim=-1)  # [2, 10, 10]

# Взвешенная сумма Value векторов -> новый контекстный эмбеддинг слова
context = torch.matmul(attention_weights, V)  # [2, 10, 64]
# Теперь эмбеддинг каждого слова содержит информацию обо всех словах в предложении.

Вывод: CNN по-прежнему эффективны и быстрее для многих задач классификации изображений, особенно при ограниченных данных, благодаря своему сильному индуктивному смещению. Однако трансформеры (Vision Transformers, Swin Transformers) показывают state-of-the-art результаты на крупных датасетах, потому что могут выучить более сложные глобальные взаимодействия между частями изображения, которые CNN улавливают лишь косвенно через множество слоев.