CNN-архитектуры на собеседовании Data Scientist

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — 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-варианты часто обходят на больших данных.
Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

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 раздувает параметры без выгоды.

Связанные темы

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+ вопросами для собесов.