# Стэнфордский курс CS231N: Линейные классификаторы и основы глубокого обучения

Источник: https://www.youtube.com/watch?v=pdqofxJeBN8
Канал: Stanford Online
Опубликовано: 02.09.2025

---

## Введение: от распознавания образов к нейронным сетям
[[JUMP:00:05]]

Лекция №2 курса Stanford CS231N, прочитанная в Стэнфордском университете весной 2025 года, посвящена основам классификации изображений. В ходе занятия лектор подробно разбирает фундаментальные подходы к решению этой задачи: алгоритм ближайших соседей (k-nearest neighbor) и линейные классификаторы, которые являются ключевыми «строительными блоками» современных нейронных сетей. Основной акцент делается на переходе от процедурного программирования к подходам, основанным на данных (data-driven approaches).

## Проблема классификации изображений
[[JUMP:01:43]]

Классификация изображений — это базовая задача компьютерного зрения, заключающаяся в присвоении изображению одной метки из заранее определенного набора. Хотя для человеческого мозга это естественный процесс, для компьютеров данная задача является сложной из-за принципиальной разницы в восприятии данных.

*   **Машинное восприятие:** Компьютер видит изображение как тензор данных (матрицу чисел). Например, для цветного изображения размером 800 на 600 пикселей это тензор размерностью 800×600×3 (каналы RGB), где каждый пиксель представлен 8-битным значением (от 0 до 255).

### Основные вызовы при работе с изображениями
[[JUMP:04:43]]

Лектор выделяет ряд факторов, которые делают классификацию «в лоб» невозможной:

*   **Изменение точки обзора:** Даже если объект неподвижен, при движении камеры значения всех пикселей изменятся.
*   **Освещение:** Значения RGB-пикселей зависят от источника света и свойств поверхности, поэтому один и тот же объект при разном свете выглядит как разные данные для машины.
*   **Фоновые шумы:** Объекты на заднем плане могут мешать точному распознаванию.
*   **Окклюзия (перекрытие):** Часть объекта может быть скрыта, что требует от алгоритма понимания контекста.
*   **Деформация и вариативность:** Объекты одного класса (например, кошки) могут сильно отличаться по форме, размеру и породе.

В прошлом предпринимались попытки жестко запрограммировать правила обнаружения признаков (например, поиск краев или углов), но такие методы крайне трудно масштабировать. Поэтому современная парадигма строится на трехэтапном процессе: сбор данных, обучение модели (функция `train`) и предсказание на новых данных (функция `predict`).

## Алгоритм k-ближайших соседей (k-Nearest Neighbor)
[[JUMP:16:55]]

Это самый простой пример подхода, основанного на данных. Функция `train` здесь буквально «запоминает» все обучающие данные, а функция `predict` ищет наиболее похожее изображение из обучающей выборки.

*   **Расстояние L1 (Манхэттенское расстояние):** Вычисляется как сумма абсолютных разностей между значениями пикселей двух изображений.
*   **Расстояние L2 (Евклидово расстояние):** Вычисляется через корень из суммы квадратов разностей.

### Проблемы метода
[[JUMP:23:01]]

*   **Вычислительная сложность:** Обучение происходит за время $O(1)$, но предсказание требует сравнения с каждым примером из обучающей выборки, что дает сложность $O(n)$. При больших объемах данных это неприемлемо медленно.
*   **Чувствительность к выбросам:** Использование всего одного соседа (k=1) делает алгоритм уязвимым к «шумовым» точкам в пространстве признаков.
*   **Проблема неоднозначности:** При использовании k > 1 могут возникать области, где невозможно принять решение из-за равного количества голосов соседей.

## Гиперпараметры и их настройка
[[JUMP:35:39]]

Выбор значения $k$ и функции расстояния (L1 или L2) — это настройка гиперпараметров. Использование тестовой выборки для подбора параметров недопустимо, так как это является «читерством» и не дает информации о том, как модель будет работать на новых данных.

Лучшими практиками являются:

1.  **Валидационная выборка:** Отделение части тренировочных данных для подбора параметров.
2.  **Кросс-валидация:** Разделение тренировочных данных на $N$ частей (фолдов), чтобы каждая часть по очереди была валидационной. Это обеспечивает более надежные результаты, хотя и требует больших вычислительных затрат.

## Линейные классификаторы
[[JUMP:46:19]]

Линейный классификатор — это параметрический подход, при котором обучается весовая матрица $W$. Функция предсказания $f(x, W) = Wx + b$ преобразует входной вектор изображения в набор оценок (скоров) для каждого класса.

*   **Роль смещения (bias, $b$):** Позволяет смещать границы классов, делая разделение более гибким.
*   **Геометрический взгляд:** В 2D-пространстве линейный классификатор проводит линии, разделяющие классы, а в многомерном — строит гиперплоскости.
*   **Ограничения:** Линейные классификаторы не могут разделить данные, которые не являются линейно разделимыми (например, данные типа XOR).

## Функция потерь и Softmax
[[JUMP:55:04]]

Чтобы обучить модель, необходимо определить функцию потерь (loss function), которая измеряет «неудовлетворенность» классификатора результатами предсказания на обучающей выборке.

*   **Softmax-классификатор:** Преобразует выходные скоры в вероятности (сумма всех вероятностей равна 1).
*   **Negative Log Likelihood:** В качестве функции потерь используется отрицательный логарифм вероятности правильного класса.
*   **Связь с другими понятиями:** Этот подход эквивалентен мультиномиальной логистической регрессии, минимизации дивергенции Кульбака-Лейблера (KL divergence) или кросс-энтропии.

Лектор отмечает, что при случайной инициализации весов, когда вероятности классов равны, значение функции потерь будет составлять $ln(C)$, где $C$ — количество классов.