Классификация изображений — это фундаментальный вызов для компьютерного зрения, который служит отправной точкой для понимания работы современных нейросетей. В рамках курса Stanford CS231N (весна 2025) лекция Стэндфордского университета посвящена переходу от простейших алгоритмов к линейным классификаторам, которые являются «кирпичиками» глубокого обучения.
🖼️ Суть задачи и семантический разрыв 1:43
Image Classification заключается в присвоении одного лейбла из заранее определенного набора (например, «собака», «кошка», «грузовик») входному изображению . Для человеческого мозга это тривиальная операция, но для машины изображение — это просто тензор чисел. Например, цветная картинка 800x600 пикселей представляется как массив данных размером 800x600x3, где каждое значение (от 0 до 255) отражает интенсивность красного, зеленого и синего каналов (RGB) .
Основная сложность заключается в «семантическом разрыве» между человеческим восприятием и программным кодом. Различия в освещении, деформация объектов (особенно котов), окклюзия (перекрытие частей объекта), изменение ракурса камеры и внутриклассовая вариативность (разные породы собак) полностью меняют значения пикселей в тензоре . При этом алгоритм должен уметь распознать, что перед ним один и тот же объект.
Попытки «захардкодить» правила распознавания по краям или углам не увенчались успехом из-за плохой масштабируемости . Поэтому индустрия перешла к data-driven approach (подходу, основанному на данных), состоящему из трех шагов:
- Сбор набора данных (изображения + метки).
- Обучение классификатора.
- Оценка модели на новых (тестовых) изображениях .
📊 Алгоритм k-Nearest Neighbor (k-NN) 16:55
Самый простой метод классификации — поиск «ближайшего соседа». В процессе «обучения» алгоритм просто запоминает все тренировочные данные . На этапе предсказания он сравнивает новое изображение со всеми сохраненными и находит наиболее похожее.
Для оценки схожести используются метрики расстояния:
- L1 (Manhattan distance): сумма абсолютных разностей значений каждого пикселя .
- L2 (Euclidean distance): корень из суммы квадратов разностей .
Проблема вычислительной сложности
Главный недостаток Nearest Neighbor — асимметрия нагрузки. Обучение происходит мгновенно ($O(1)$), но предсказание требует сравнения со всеми $N$ примерами в базе ($O(N)$) . В реальных задачах, вроде ChatGPT или поиска по картинкам, это неприемлемо: мы готовы тратить недели на обучение офлайн, но предсказание должно быть быстрым .
Гиперпараметры и их настройка
В k-NN есть две переменные, которые выбирает человек: значение $k$ (число соседей) и метрика расстояния .
- Если $k=1$, модель чувствительна к шуму и аутлайрам .
- Увеличение $k$ делает границы принятия решения более плавными и устойчивыми к выбросам .
Для выбора этих параметров используется валидация. Спикер подчеркивает: никогда нельзя настраивать гиперпараметры по тестовым данным — это «читерство», так как модель не покажет реальной способности к обобщению на новых данных . Рекомендуется метод Cross-validation (кросс-валидация), при котором данные разбиваются на $F$ частей (фолдов), и модель тестируется на каждом из них по очереди .
📏 Линейные классификаторы: фундамент нейросетей 46:19
Линейная классификация — это параметрический подход, который лежит в основе почти всех архитектур глубокого обучения . В отличие от k-NN, здесь нам не нужно хранить все изображения. Мы обучаем матрицу весов $W$.
Суть метода описывается формулой $f(x, W) = Wx + b$, где:
- $x$ — входное изображение (вытянутое в вектор).
- $W$ — веса (параметры), которые определяют важность каждого пикселя для конкретного класса .
- $b$ — вектор смещения (bias), позволяющий сдвигать решающие границы без привязки к началу координат .
Визуальная и геометрическая интерпретации
С визуальной точки зрения каждая строка в матрице $W$ является «шаблоном» класса. При визуализации обученных весов датасета CIFAR-10 в строке «автомобиль» можно увидеть очертания лобового стекла и капота .
Геометрически линейный классификатор проводит гиперплоскости в многомерном пространстве, отделяя один класс от другого . Однако метод бессилен, если данные нельзя разделить прямой линией — например, если один класс окружен другим или данные расположены в шахматном порядке .
📉 Функция потерь и Softmax 55:20
Чтобы понять, насколько «плохо» работает классификатор с текущими весами $W$, вводится функция потерь (Loss function) . Один из самых популярных классификаторов — Softmax (мультиномиальная логистическая регрессия) .
Алгоритм работы Softmax следующий:
- Вычисляются «логиты» (сырые оценки классов) через $Wx+b$.
- Проводится экспоненциирование, чтобы получить положительные числа.
- Проводится нормализация, чтобы сумма всех оценок равнялась 1 .
Результатом являются вероятности принадлежности к классу. Наша цель — минимизировать отрицательный логарифм вероятности правильного класса (Negative Log Likelihood) . Это эквивалентно максимизации вероятности того, что модель выберет верный ответ. В глубоком обучении этот подход также называют кросс-энтропией (Cross Entropy) .