# Обучение классификатора Softmax: математика потерь и градиентный спуск

Источник: https://www.youtube.com/watch?v=ueO_Ph0Pyqk
Канал: DeepLearning.AI
Опубликовано: 25.08.2017

---

Обучение нейронных сетей для классификации нескольких объектов требует перехода от простых бинарных решений к работе с вероятностями. В рамках курса DeepLearning.AI основатель проекта Эндрю Ын (Andrew Ng) подробно разбирает процесс обучения Softmax-классификатора, объясняя математическую логику функции потерь и принципы обратного распространения ошибки для многоклассовых задач.

## 🧠 Природа Softmax: «мягкий» против «жесткого»
[[JUMP:0:00]]

В задачах многоклассовой классификации (где количество классов $C > 2$) выходной слой нейронной сети вычисляет вектор $Z^{[L]}$, размерность которого соответствует числу классов [0:12]. Для преобразования этих сырых значений в вероятности используется активация Softmax.

Процесс вычисления включает два этапа:

1.  **Экспоненциальное преобразование:** создание временной переменной $t$, где каждый элемент вектора $Z$ возводится в степень $e$ ($e^{z_i}$) [0:25].
2.  **Нормализация:** деление каждого полученного значения на сумму всех экспонент. В результате получается вектор активаций $a^{[L]}$, сумма элементов которого всегда равна единице [0:39].

Эндрю Ын объясняет происхождение названия через сопоставление с функцией «Hardmax» [0:52]. 

*   **Hardmax** берет вектор $Z$ и ставит 1 на место самого большого элемента, обнуляя остальные (жесткое присвоение) [1:06].
*   **Softmax** действует более гибко («мягко»), распределяя вероятности между всеми классами, при этом сохраняя лидерство за самым большим значением из $Z$ [1:20].

По утверждению Эндрю Ына, Softmax является прямым обобщением логистической регрессии на случай более чем двух классов [1:47]. Лектор отмечает, что при $C=2$ Softmax сводится к логистической регрессии, так как вычисление двух зависимых вероятностей (сумма которых равна 1) становится избыточным и математически эквивалентно вычислению одного значения в бинарной классификации [2:02].

## 📉 Математика обучения: функция потерь
[[JUMP:2:58]]

Для настройки параметров нейросети необходимо определить, насколько ее предсказания отклоняются от истины. В случае с Softmax стандартным инструментом является функция потерь (Loss Function), основанная на логарифмах [4:00].

Рассмотрим пример с классификацией изображений, где целью является определение кота (второй класс из четырех возможных).

*   **Истинная метка (Ground Truth) $y$:** $[0, 1, 0, 0]^T$ [3:13].
*   **Предсказание сети $\hat{y}$:** $[0.1, 0.2, 0.3, 0.4]^T$ [3:39].

Общая формула функции потерь выглядит как отрицательная сумма произведений истинных меток на логарифм предсказаний: $L = -\sum (y_j \cdot \log \hat{y}_j)$ [4:06]. Поскольку в векторе $y$ только один элемент равен единице (соответствующий правильному классу), а остальные — нули, формула упрощается до $L = -\log \hat{y}_2$ [4:47].

Логика минимизации этой функции, по словам Эндрю Ына, предельно проста:

*   Чтобы уменьшить потери, нужно сделать значение $-\log \hat{y}_2$ как можно меньше [5:01].
*   Это достигается путем максимизации вероятности $\hat{y}_2$ (правильного класса) [5:16].
*   Алгоритм стремится подтянуть предсказание для верного класса к 1, что интуитивно понятно: мы хотим, чтобы сеть была максимально уверена в правильном ответе [5:29].

Статистически этот подход представляет собой форму оценки максимального правдоподобия (Maximum Likelihood Estimation), хотя глубокое понимание этого термина, как считает лектор, не обязательно для практического применения [5:43].

## 📊 Векторизация и стоимость обучения
[[JUMP:5:55]]

Для обучения на всем наборе данных вводится функция стоимости (Cost Function) $J$, которая представляет собой среднее арифметическое потерь на всех обучающих примерах $M$ [6:08]. Минимизация этой функции осуществляется с помощью градиентного спуска [6:21].

При реализации алгоритма критически важна векторизация:

*   Матрица истинных меток $Y$ имеет размерность $C \times M$, где каждый столбец — это вектор (например, $[0, 1, 0, 0]^T$ для первого примера) [6:34].
*   Матрица предсказаний $\hat{Y}$ имеет ту же размерность $C \times M$ [7:13].

Такая структура позволяет эффективно проводить вычисления сразу для всего пакета данных, не прибегая к медленным циклам `for` [6:46].

## 🔄 Градиентный спуск и обратное распространение
[[JUMP:7:36]]

Ключевым моментом для реализации градиентного спуска является вычисление производных. Эндрю Ын выделяет центральное уравнение для инициализации процесса обратного распространения (backpropagation) в выходном слое $L$ [8:13]:

$$dZ^{[L]} = \hat{y} - y$$

Это элегантное выражение показывает, что ошибка на выходном слое — это просто разница между вектором предсказанных вероятностей и вектором истинных меток [8:26]. Оба вектора имеют размерность $C \times 1$ (в примере — $4 \times 1$).

Тем не менее, Эндрю Ын делает важное замечание о современной практике разработки:

1.  Если вы пишете код «с нуля», вам придется использовать эту формулу для вычисления градиентов по всей сети [8:53].
2.  При использовании современных фреймворков глубокого обучения программисту достаточно корректно реализовать только прямое распространение (Forward Prop) [9:07].
3.  Фреймворк автоматически вычислит необходимые производные и выполнит обратный проход [9:19].

В завершение лектор подчеркивает, что понимание внутренней механики Softmax позволяет эффективно классифицировать объекты по любому количеству категорий, переходя от бинарного выбора к сложным многоуровневым задачам [9:44].