Глава 12. ViT

Глава 12. Видение через квадраты: Vision Transformer (ViT)

Что будет, если разрезать картинку на патчи,
сделать вид, что это «токены»,
и скормить их трансформеру как текст?

К концу Части I свёртка казалась почти «законом природы» для изображений.
ViT задаёт неприятный вопрос: а вдруг это был сильный prior для мира небольших данных — и на большом масштабе выгоднее другой обмен?


12.1. Патчи вместо пикселей

Прямой self-attention по всем пикселям Full HD нереален: N слишком огромный для N².

Поэтому ViT делает грубый, но рабочий ход:

Пайплайн ViT

Патчи ViT

Свёрточного стека как обязательного хребта больше нет.
Локальность не уничтожена полностью — она спрятана в том, что патч уже локален. Но дальше связи между патчами строит attention.


12.2. Столкновение философий

CNN ViT
Базовый prior Локальность, сдвиг, иерархия Минимальный prior, больше гибкости
Как растёт контекст Глубина / downsampling Сразу потенциально глобально
Данные Силён на малых/средних Раскрывается на больших
Индуктивное смещение Много Мало (плюс патч и позиции)

Формула спора:

Свёртка встраивает знание о мире в архитектуру.
ViT покупает гибкость и требует, чтобы знание пришло из данных и масштаба.

Поэтому ранние ViT без огромного претрейна часто выглядели скромно против ResNet.
На большом претрейне картина менялась: prior можно «оплатить» данными.

Это один из самых важных мета-уроков книги:

сильный prior     = меньше данных, меньше гибкости
слабый prior      = больше данных, больше потолок

Нет универсального победителя — есть режим задачи.


12.3. Зачем тогда вообще остались свёртки

Потому что мир продуктов — не только «есть 400M картинок».

На практике побеждают гибриды и возвращения prior’а:

  • convolutional stem перед патчами;
  • window attention (Swin) — вернуть локальность и иерархию стадий;
  • CNN backbones с transformer-шеями/головами в детекции;
  • эффективные мобильные CNN там, где нет трансформерного бюджета.
flowchart TD
    A[Зрительная модель] --> B[Сильный prior: CNN]
    A --> C[Слабый prior: ViT]
    A --> D[Гибриды: stem/window/hierarchy]
    B --> B1[Эффективны на малых данных / edge]
    C --> C1[Сильны при большом претрейне]
    D --> D1[Частый промышленный компромисс]

Даже в детекции (Часть III) attention появляется точечно: не обязательно выкидывать YOLO, чтобы взять полезную идею динамической маршрутизации.


12.4. Что ViT меняет в голове архитектора

После этой главы нельзя честно сказать «изображения = всегда CNN».
Можно сказать жёстче и полезнее:

Архитектура — это ставка на то,
какое знание мы встраиваем заранее
и какое оставляем данным.

Свёртка ставит на локальную корреляцию.
Attention ставит на обучаемые связи.
Residual/Norm ставят на обучаемость глубины.
YOLO ставит на latency.
ViT ставит на масштаб данных.

Часть IV — итог

Подход Суть
RNN Естественное время, плохой parallel
Attention Динамический контекст, O(N²), parallel OK
ViT Vision без обязательного CNN-prior

Общий паттерн: меняем маршрут информации → меняем счёт.

Дальше книга уходит в генерацию: не «понять, что на картинке», а «создать картинку». Там обмен станет ещё страннее — иногда чтобы научиться собирать, полезно сначала научиться разрушать.


Если бы вы были автором статьи…

  1. Одинаковый бюджет параметров: ResNet vs ViT на 10k и на 10M картинок.
    Какой график качества вы ожидаете? Где пересечение?

  2. Патч 8×8 vs 32×32 при фиксированном compute.
    Что случится с мелкими объектами, если перенести ViT-идею в детекцию без FPN-иерархий?

  3. Добавьте один свёрточный prior обратно в ViT (stem или локальные окна).
    Какую боль вы лечите — данные, память или геометрию?

Часть IV закрыта. В Части V разберём GAN как обучение через конфликт и диффузию как порядок, рождённый из шума.