Введение: от распознавания образов к нейронным сетям 0:05
Лекция №2 курса Stanford CS231N, прочитанная в Стэнфордском университете весной 2025 года, посвящена основам классификации изображений. В ходе занятия лектор подробно разбирает фундаментальные подходы к решению этой задачи: алгоритм ближайших соседей (k-nearest neighbor) и линейные классификаторы, которые являются ключевыми «строительными блоками» современных нейронных сетей. Основной акцент делается на переходе от процедурного программирования к подходам, основанным на данных (data-driven approaches).
Проблема классификации изображений 1:43
Классификация изображений — это базовая задача компьютерного зрения, заключающаяся в присвоении изображению одной метки из заранее определенного набора. Хотя для человеческого мозга это естественный процесс, для компьютеров данная задача является сложной из-за принципиальной разницы в восприятии данных.
- Машинное восприятие: Компьютер видит изображение как тензор данных (матрицу чисел). Например, для цветного изображения размером 800 на 600 пикселей это тензор размерностью 800×600×3 (каналы RGB), где каждый пиксель представлен 8-битным значением (от 0 до 255).
Основные вызовы при работе с изображениями 4:43
Лектор выделяет ряд факторов, которые делают классификацию «в лоб» невозможной:
- Изменение точки обзора: Даже если объект неподвижен, при движении камеры значения всех пикселей изменятся.
- Освещение: Значения RGB-пикселей зависят от источника света и свойств поверхности, поэтому один и тот же объект при разном свете выглядит как разные данные для машины.
- Фоновые шумы: Объекты на заднем плане могут мешать точному распознаванию.
- Окклюзия (перекрытие): Часть объекта может быть скрыта, что требует от алгоритма понимания контекста.
- Деформация и вариативность: Объекты одного класса (например, кошки) могут сильно отличаться по форме, размеру и породе.
В прошлом предпринимались попытки жестко запрограммировать правила обнаружения признаков (например, поиск краев или углов), но такие методы крайне трудно масштабировать. Поэтому современная парадигма строится на трехэтапном процессе: сбор данных, обучение модели (функция train) и предсказание на новых данных (функция predict).
Алгоритм k-ближайших соседей (k-Nearest Neighbor) 16:55
Это самый простой пример подхода, основанного на данных. Функция train здесь буквально «запоминает» все обучающие данные, а функция predict ищет наиболее похожее изображение из обучающей выборки.
- Расстояние L1 (Манхэттенское расстояние): Вычисляется как сумма абсолютных разностей между значениями пикселей двух изображений.
- Расстояние L2 (Евклидово расстояние): Вычисляется через корень из суммы квадратов разностей.
Проблемы метода 23:01
- Вычислительная сложность: Обучение происходит за время $O(1)$, но предсказание требует сравнения с каждым примером из обучающей выборки, что дает сложность $O(n)$. При больших объемах данных это неприемлемо медленно.
- Чувствительность к выбросам: Использование всего одного соседа (k=1) делает алгоритм уязвимым к «шумовым» точкам в пространстве признаков.
- Проблема неоднозначности: При использовании k > 1 могут возникать области, где невозможно принять решение из-за равного количества голосов соседей.
Гиперпараметры и их настройка 35:39
Выбор значения $k$ и функции расстояния (L1 или L2) — это настройка гиперпараметров. Использование тестовой выборки для подбора параметров недопустимо, так как это является «читерством» и не дает информации о том, как модель будет работать на новых данных.
Лучшими практиками являются:
- Валидационная выборка: Отделение части тренировочных данных для подбора параметров.
- Кросс-валидация: Разделение тренировочных данных на $N$ частей (фолдов), чтобы каждая часть по очереди была валидационной. Это обеспечивает более надежные результаты, хотя и требует больших вычислительных затрат.
Линейные классификаторы 46:19
Линейный классификатор — это параметрический подход, при котором обучается весовая матрица $W$. Функция предсказания $f(x, W) = Wx + b$ преобразует входной вектор изображения в набор оценок (скоров) для каждого класса.
- Роль смещения (bias, $b$): Позволяет смещать границы классов, делая разделение более гибким.
- Геометрический взгляд: В 2D-пространстве линейный классификатор проводит линии, разделяющие классы, а в многомерном — строит гиперплоскости.
- Ограничения: Линейные классификаторы не могут разделить данные, которые не являются линейно разделимыми (например, данные типа XOR).
Функция потерь и Softmax 55:04
Чтобы обучить модель, необходимо определить функцию потерь (loss function), которая измеряет «неудовлетворенность» классификатора результатами предсказания на обучающей выборке.
- Softmax-классификатор: Преобразует выходные скоры в вероятности (сумма всех вероятностей равна 1).
- Negative Log Likelihood: В качестве функции потерь используется отрицательный логарифм вероятности правильного класса.
- Связь с другими понятиями: Этот подход эквивалентен мультиномиальной логистической регрессии, минимизации дивергенции Кульбака-Лейблера (KL divergence) или кросс-энтропии.
Лектор отмечает, что при случайной инициализации весов, когда вероятности классов равны, значение функции потерь будет составлять $ln(C)$, где $C$ — количество классов.