Компьютерное зрение
Современное компьютерное зрение — это свёрточные нейросети (CNN). Они построены из нескольких повторяющихся кирпичей: свёрточный слой извлекает признаки обучаемыми фильтрами, пулинговый слой сжимает карту признаков без обучения, а аугментация искусственно расширяет выборку. Из этих же кирпичей собраны классические архитектуры — Inception и ResNet.
Тема простая на вид, но полна ловушек, которые любят на собеседовании. Фильтр видит все входные каналы, а не один. У пулинга нет обучаемых параметров. Аугментация, меняющая метку (отражение цифры 6 в 9), портит разметку, а «дообучение на тесте» — это утечка, а не приём. Полная карта — в слоях ниже.
Карта темы
- Свёрточный слой — обучаемые фильтры, скользящие по входу и охватывающие все каналы; как из числа фильтров получается число выходных каналов.
- Пулинговый слой — сжатие max/average без обучаемых параметров, инвариантность к сдвигам и рост рецептивного поля.
- Аугментация данных — расширение выборки преобразованиями на обучении и усреднение по вариантам на инференсе (TTA).
- Архитектуры CNN — Inception-модуль с горлышком 1×1 и residual-блок ResNet против затухающего градиента.
Частые ошибки и ловушки
| Ошибка | Последствие |
|---|---|
| Считать, что фильтр видит один канал | Фильтр охватывает все входные каналы; иначе неверная механика свёртки |
| Путать свёрточный слой с полносвязным | Теряются разделяемые веса и скользящее окно — вся суть свёртки |
| Думать, что у пулинга есть обучаемые веса | Пулинг применяет фиксированную функцию, параметров нет |
| Считать, что 1×1-свёртка меняет пространственный размер | Она меняет число каналов, а не ширину и высоту |
Забыть слагаемое +x в residual-блоке | Пропадает «магистраль» для градиента — глубокая сеть не обучается |
| Дообучать на тестовой выборке ради «аугментации» | Утечка меток и завышенный, нечестный скор |
Значение для собеседований
CNN спрашивают, чтобы проверить, отличаете ли вы обучаемые механизмы от фиксированных и понимаете ли, зачем сеть устроена именно так. Кандидат, который объясняет residual-блок через «identity-проброс F(x) + x, дающий градиенту прямой путь к ранним слоям», сразу опережает «ну, там есть какие-то skip-связи».
Что обычно проверяют:
- Как работает свёртка — фильтр охватывает все каналы, скользит, разделяет веса; число фильтров = число выходных каналов.
- Чем пулинг отличается от свёртки — фиксированная функция без параметров, зачем он вообще нужен.
- Как выжать скор без переобучения (TTA) и какие аугментации безопасны.
- Как Inception и ResNet позволили сетям идти вглубь.
Типичный неверный ответ: «пулинг — это обучаемый слой, который восстанавливает детали». На самом деле пулинг уменьшает пространственный размер фиксированной функцией (max/average) и не содержит обучаемых параметров вовсе.