CNN-архитектуры на собеседовании Data Scientist
Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.
Содержание:
Зачем разбирать на собесе
CV-компетенции спрашивают на собесе DS почти всегда. На уровне junior — что такое convolution, pooling, классификация. На middle/senior — почему ResNet, как работает skip connection, в чём смысл compound scaling, когда ViT. Без знания эволюции архитектур ответ «использую ResNet» звучит как заученный.
Главная боль без понимания — DS берёт VGG16 или AlexNet в 2026 году, не понимая, что это давно устарело.
Convolution и pooling
Convolution. Скользящее окно (kernel) проходит по входу, считает поэлементное произведение и сумму. Параметры:
- kernel_size — обычно 3×3 или 5×5.
- stride — шаг сдвига (1 — без пропусков, 2 — даунсэмплинг).
- padding — расширение по краям (
same— выход того же размера). - dilation — разреженный kernel (для dilated convs).
Output size:
H_out = (H_in + 2*padding - kernel_size) / stride + 1Параметры conv-слоя: (C_in × kernel_h × kernel_w + 1) × C_out.
Pooling. Уменьшение размерности без обучаемых параметров.
- Max pooling — берёт max в окне. Сохраняет «активные» признаки.
- Average pooling — среднее. Сглаживает.
- Global average pooling — в самом конце вместо FC layer (ResNet).
Receptive field — какой кусок входа влияет на нейрон. С глубиной растёт. Дорогой dilated conv увеличивает receptive field без увеличения параметров.
Классические архитектуры: AlexNet, VGG, Inception
AlexNet (2012) — первый прорыв на ImageNet. 5 conv + 3 FC, ReLU, dropout, GPU. Сейчас — исторический референс, не используется.
VGG-16/19 (2014) — однородная архитектура: только 3×3 conv + 2×2 max-pool. Доказала, что глубина важнее экзотики. Минус — много параметров (138M).
Inception / GoogLeNet (2014) — Inception module: параллельно 1×1, 3×3, 5×5 conv + max-pool, конкатенация. 1×1 conv — для bottleneck (снижение каналов). 22 слоя, всего 7M параметров.
Inception v3 — factorized conv (5×5 = 3×3 + 3×3), label smoothing, batch norm. До сих пор иногда используется как baseline.
ResNet и residual connections
Проблема глубоких сетей. При 50+ слоях градиент затухает, обучение деградирует. Не оверфитом, а тренировочной ошибкой.
Идея ResNet (He, 2015): добавить skip connection — пропустить вход через +.
y = F(x) + xГде F — пара conv + BN + ReLU. Сеть учит «остаток» (residual), который проще, чем полное преобразование.
Bottleneck блок (для глубоких ResNet-50/101/152):
1×1 conv (уменьшить C) → 3×3 conv → 1×1 conv (восстановить C) + skipСнижает параметры без потери глубины.
Свойства:
- ResNet-50/101 — стандартный baseline для CV-задач.
- Pre-trained на ImageNet, легко fine-tune.
- Stable обучение даже на 100+ слоях.
- Skip connections появились во множестве последующих архитектур (DenseNet, U-Net, Transformer).
EfficientNet и compound scaling
Идея (Tan, 2019): масштабировать depth, width и resolution согласованно (compound scaling), а не каждый отдельно.
depth: d = α^φ
width: w = β^φ
resolution: r = γ^φ
α·β²·γ² ≈ 2φ — единый параметр, который контролирует масштаб. EfficientNet-B0 → B7 — последовательность по φ.
Backbone — MBConv (mobile inverted bottleneck из MobileNetV2): depthwise separable convs, squeeze-and-excitation.
Свойства:
- Точнее ResNet-50 при том же или меньшем FLOPS.
- B0 — лёгкий, для мобилок и edge.
- B5/B7 — для серверного inference.
- В 2026 — частый default, но ViT-варианты часто обходят на больших данных.
ViT и Swin Transformer
Vision Transformer (Google, 2020) — взяли Transformer encoder из NLP и применили к изображениям. Картинку режут на патчи (16×16), линейно эмбеддят, добавляют positional encoding, запихивают в Transformer.
Свойства ViT:
- Не имеет inductive bias на локальность (как у CNN с conv).
- Требует много данных для обучения с нуля (JFT-300M в оригинале).
- На fine-tune после большого претрена — обходит CNN.
- Параллелится лучше CNN (нет последовательной свёртки).
Swin Transformer (2021) — гибрид: иерархия с pooling (как CNN), self-attention в локальных окнах (для масштабируемости). Стандартный backbone в современном CV (2024-2026).
ConvNeXt (2022) — «современный CNN»: дизайн в стиле Swin (большие kernels, layer norm, GELU), но без attention. Догнал ViT по точности на ImageNet.
Когда что выбирать
Маленький датасет (< 50k):
- Pre-trained ResNet-50, fine-tune последних слоёв.
- EfficientNet-B0/B3 — лёгкая альтернатива.
- ViT с нуля — не вариант, но ViT pre-trained — отлично.
Средний датасет (100k-1M):
- EfficientNet-B3/B5 для accuracy/cost trade-off.
- ResNet-50 как safe baseline.
- Swin-T / Swin-B при наличии GPU.
Большой датасет / много данных (1M+):
- ViT-Large, Swin-Large, ConvNeXt — обходят классику.
- Self-supervised pre-training (DINO, MAE) — почти всегда даёт буст.
Mobile / edge inference:
- MobileNetV3, EfficientNet-B0, MobileViT.
- Quantization (INT8) обязательна.
Real-time detection:
- YOLOv8/v9 — backbone обычно CSPDarknet или EfficientNet.
- DETR-варианты — ViT-style.
Частые ошибки
Брать VGG в 2026. Огромная сеть, медленная, заменяется ResNet-50 при лучшем результате.
Тренировать ViT с нуля на маленьких данных. Inductive bias CNN важнее на маленьких выборках. Fine-tune pre-trained ViT — нормально, with-scratch — нет.
Не использовать pre-trained. ImageNet-предобученная сеть — must-have для CV-задач, кроме совсем уникальных доменов.
Не делать augmentation. Random crop, flip, color jitter, RandAugment, MixUp — стандартный набор.
Игнорировать batch norm специфику. В fine-tune часто фиксируют BN-статистику или включают eval() для слоев.
Считать parameter count главной метрикой. На GPU важнее FLOPS и сильно — memory bandwidth. EfficientNet с 5M параметров иногда медленнее ResNet с 25M из-за depthwise convs.
Использовать FC layer в конце. Global average pooling + linear — стандарт. FC раздувает параметры без выгоды.
Связанные темы
- Deep Learning на собесе DS
- Loss функции на собесе DS
- Регуляризация L1 и L2 на собесе DS
- Hyperparameter tuning на собесе DS
- Подготовка к собесу Data Scientist
FAQ
Что такое 1×1 convolution?
Свёртка с kernel 1×1. Не «смотрит» на пространство, но микширует каналы. Используется для bottleneck (снижение C) и cross-channel mixing.
Чем отличается batch norm от layer norm?
BN нормализует по batch dimension (среднее и std в батче). LN — по feature dimension (внутри одного объекта). BN — для CNN, LN — для NLP/Transformer.
Как выбрать learning rate для CNN?
Linear warmup → cosine decay — стандарт. На fine-tune — порядок 1e-4 ÷ 1e-5 (меньше, чем на pretrain).
Когда replicate, когда reflect padding?
Reflect padding — для signal/image где нужны «нативные» края (zero padding создаёт артефакты по краям). На большинстве задач zero padding достаточен.
ResNet-50 или EfficientNet-B0 для production?
EfficientNet-B0 при равной accuracy в 5× меньше FLOPS — лучше для мобилок и edge. На сервере с GPU разница не критична, ResNet чаще и стабильнее.
Это официальная информация?
Нет. Статья основана на оригинальных статьях (He 2015 ResNet, Tan 2019 EfficientNet, Dosovitskiy 2020 ViT, Liu 2021 Swin).
Тренируйте Data Science — откройте тренажёр с 1500+ вопросами для собесов.