Глубокое обучение
Self-Supervised Learning
Люди учатся, наблюдая за миром - без учебников с правильными ответами. Ребёнок видит тысячи кошек прежде чем слышит слово 'кошка'. Почему нейросети должны работать иначе? Self-supervised learning - это попытка обучить модели так же, как учится мозг: находя структуру в неразмеченных данных. Результат: DINOv2 превосходит ImageNet-supervised модели, не видев ни одной размеченной картинки.
- **Meta AI DINOv2** - universal backbone для computer vision задач без fine-tuning: depth estimation, сегментация, поиск по изображениям
- **GPT-4V и Gemini** используют vision encoders, предобученные self-supervised методами на миллиардах изображений из интернета
- **AlphaFold 2** применяет masked language modeling (аналог MAE) для предобучения на базах белковых последовательностей без структурных меток
- **Spotify** обучает аудио эмбеддинги через contrastive learning на парах похожих треков - без ручной разметки жанров
From word2vec to a contrastive explosion
Self-supervision сначала победил в языке. word2vec Томаса Миколова (2013) выучил значения слов чисто из предсказания контекста, без меток. Devlin с коллегами в Google обобщили это до masked language modeling в BERT (2018), и затем идея перешла в зрение. 2020 год стал переломным: SimCLR (Chen et al., Google) и MoCo (He et al., Facebook) заставили contrastive learning работать на изображениях, а BYOL (Grill et al., DeepMind) показал, что оно работает даже без негативных пар. За два года обучение без меток превратилось из курьёза в стандарт.
Предварительные знания
Contrastive Learning: SimCLR
**Идея contrastive learning:** два разных аугментирования одного изображения должны давать похожие эмбеддинги (positive pair), а эмбеддинги разных изображений - различаться (negative pairs). SimCLR (Google Brain, 2020) реализует это через InfoNCE loss на батчах размером 8192 изображений - каждый элемент батча образует 2 позитива и 16382 негатива.
Аугментации - ключевой компонент SimCLR. Комбинация random crop + color jitter + grayscale дала +10% по сравнению с отдельными аугментациями. Projection head (MLP 2048->128) после encoder критичен: представления для downstream задач берут с предпоследнего слоя, не с выхода head.
Почему SimCLR использует большие батчи (4096-8192) для contrastive learning?
Masked Autoencoders (MAE)
**MAE (He et al., Meta AI, 2022)** берёт изображение, маскирует 75% случайных патчей и обучает ViT восстанавливать пиксели замаскированных патчей. Энкодер обрабатывает только видимые патчи (25%) - это даёт 3x ускорение обучения. Лёгкий декодер восстанавливает полное изображение из sparse представлений.
75% маскирование звучит как много - но изображения высоко избыточны: соседние патчи очень похожи. 75% вынуждает модель строить высокоуровневое семантическое понимание, а не просто интерполировать. MAE ViT-H предобученный за 1600 эпох даёт 87.8% на ImageNet - лучший результат среди SSL методов на момент публикации.
Почему MAE применяет энкодер только к видимым патчам, а не ко всем включая маскированные?
BYOL: без негативных примеров
**BYOL (Bootstrap Your Own Latent, DeepMind 2020)** устранил необходимость в негативных примерах и больших батчах. Две ветки: online network и target network. Online предсказывает представление target для другой аугментации. Target обновляется как exponential moving average (EMA) online - без градиентов. Без target network коллапс (все эмбеддинги в одну точку).
Первоначально объяснение было: BN в projector неявно вводит batch statistics как implicit negative. Позже показали, что это не полное объяснение - BYOL работает и без BN при правильном weight decay. Теоретическое понимание SSL без negatives до сих пор активно исследуется.
Зачем target network в BYOL обновляется через EMA, а не через обратное распространение ошибки?
DINO: Self-Distillation с ViT
**DINO (DIstillation with NO labels, Meta AI 2021)** комбинирует идеи BYOL с ViT. Student обрабатывает локальные кропы, teacher - глобальные. Особенность: teacher видит больший контекст => student учится «думать глобально», видя локально. Результат поразительный: attention карты ViT DINO без разметки сегментируют объекты на фотографиях.
DINOv2 (2023) - production-ready SSL backbone от Meta. Используется как universal visual feature extractor: depth estimation, semantic segmentation, instance retrieval - всё через линейный слой поверх замороженных признаков. Facebook AI Research интегрировал DINOv2 в системы анализа медицинских изображений.
Self-supervised представления всегда хуже supervised - ведь нет разметки
DINOv2 и MAE на больших данных превосходят supervised baseline на многих downstream задачах, особенно при ограниченной разметке
SSL обучается на несравнимо большем объёме данных без дорогой ручной разметки. ImageNet-21k с 21M изображениями - ничто по сравнению с 142M изображений LVD-142M. Закон масштабирования побеждает: данных > разметки для богатых признаков
Student в DINO обрабатывает малые локальные кропы, teacher - большие глобальные. Какую способность это развивает у student?
Ключевые идеи
- **Contrastive (SimCLR):** два аугментирования одного изображения - позитивная пара, разные изображения - негативные; нужны большие батчи
- **MAE:** маскировать 75% патчей, восстанавливать пиксели - вынуждает строить семантическое понимание, а не интерполяцию
- **BYOL:** предсказывать представление EMA-копии себя без негативов; асимметрия через predictor предотвращает коллапс
- **DINO:** student видит локальные кропы, teacher - глобальные; ViT attention карты сегментируют объекты без разметки
Связанные темы
Self-supervised learning опирается на несколько ключевых компонентов:
- Vision Transformers (ViT) — DINO и MAE специально разработаны под ViT архитектуру - attention карты ViT проявляют семантику именно при SSL обучении
- Knowledge Distillation — BYOL и DINO используют self-distillation: online network учится у EMA-копии самой себя как teacher
- Transfer Learning — SSL - метод получения универсального backbone без разметки; downstream fine-tuning работает лучше с SSL чем с random init
Вопросы для размышления
- SimCLR требует батч 8192 для хорошего качества. MoCo решает это через memory bank с 65536 негативами без огромных батчей. Какой trade-off между memory bank и большим батчом в contrastive learning?
- MAE маскирует случайные патчи, BEiT маскирует патчи и предсказывает токены DALL-E вместо пикселей. Когда предсказание семантических токенов лучше, чем предсказание пикселей?
- DINO показывает, что ViT attention карты без разметки сегментируют объекты. Что это говорит о природе attention - он действительно 'понимает' сцену или просто находит статистические корреляции?
Связанные уроки
- dl-07 — Vision Transformers - основа для masked image modeling
- dl-11 — Предобученные представления переносятся в дообучение
- dl-13 — Автоэнкодеры разделяют с MIM цель обучения через реконструкцию
- ml-35-word-embeddings — Word2vec учит представления без меток, как контрастивное обучение
- aie-09-embeddings — Self-supervised энкодеры дают эмбеддинги для поиска
- cv-08 — Контрастивное предобучение усиливает зрение при малом числе меток
- la-01-vectors-intro