Обучение нейронных сетей для классификации нескольких объектов требует перехода от простых бинарных решений к работе с вероятностями. В рамках курса DeepLearning.AI основатель проекта Эндрю Ын (Andrew Ng) подробно разбирает процесс обучения Softmax-классификатора, объясняя математическую логику функции потерь и принципы обратного распространения ошибки для многоклассовых задач.
🧠 Природа Softmax: «мягкий» против «жесткого» 0:00
В задачах многоклассовой классификации (где количество классов $C > 2$) выходной слой нейронной сети вычисляет вектор $Z^{[L]}$, размерность которого соответствует числу классов . Для преобразования этих сырых значений в вероятности используется активация Softmax.
Процесс вычисления включает два этапа:
- Экспоненциальное преобразование: создание временной переменной $t$, где каждый элемент вектора $Z$ возводится в степень $e$ ($e^{z_i}$) .
- Нормализация: деление каждого полученного значения на сумму всех экспонент. В результате получается вектор активаций $a^{[L]}$, сумма элементов которого всегда равна единице .
Эндрю Ын объясняет происхождение названия через сопоставление с функцией «Hardmax» .
- Hardmax берет вектор $Z$ и ставит 1 на место самого большого элемента, обнуляя остальные (жесткое присвоение) .
- Softmax действует более гибко («мягко»), распределяя вероятности между всеми классами, при этом сохраняя лидерство за самым большим значением из $Z$ .
По утверждению Эндрю Ына, Softmax является прямым обобщением логистической регрессии на случай более чем двух классов . Лектор отмечает, что при $C=2$ Softmax сводится к логистической регрессии, так как вычисление двух зависимых вероятностей (сумма которых равна 1) становится избыточным и математически эквивалентно вычислению одного значения в бинарной классификации .
📉 Математика обучения: функция потерь 2:58
Для настройки параметров нейросети необходимо определить, насколько ее предсказания отклоняются от истины. В случае с Softmax стандартным инструментом является функция потерь (Loss Function), основанная на логарифмах .
Рассмотрим пример с классификацией изображений, где целью является определение кота (второй класс из четырех возможных).
- Истинная метка (Ground Truth) $y$: $[0, 1, 0, 0]^T$ .
- Предсказание сети $\hat{y}$: $[0.1, 0.2, 0.3, 0.4]^T$ .
Общая формула функции потерь выглядит как отрицательная сумма произведений истинных меток на логарифм предсказаний: $L = -\sum (y_j \cdot \log \hat{y}_j)$ . Поскольку в векторе $y$ только один элемент равен единице (соответствующий правильному классу), а остальные — нули, формула упрощается до $L = -\log \hat{y}_2$ .
Логика минимизации этой функции, по словам Эндрю Ына, предельно проста:
- Чтобы уменьшить потери, нужно сделать значение $-\log \hat{y}_2$ как можно меньше .
- Это достигается путем максимизации вероятности $\hat{y}_2$ (правильного класса) .
- Алгоритм стремится подтянуть предсказание для верного класса к 1, что интуитивно понятно: мы хотим, чтобы сеть была максимально уверена в правильном ответе .
Статистически этот подход представляет собой форму оценки максимального правдоподобия (Maximum Likelihood Estimation), хотя глубокое понимание этого термина, как считает лектор, не обязательно для практического применения .
📊 Векторизация и стоимость обучения 5:55
Для обучения на всем наборе данных вводится функция стоимости (Cost Function) $J$, которая представляет собой среднее арифметическое потерь на всех обучающих примерах $M$ . Минимизация этой функции осуществляется с помощью градиентного спуска .
При реализации алгоритма критически важна векторизация:
- Матрица истинных меток $Y$ имеет размерность $C \times M$, где каждый столбец — это вектор (например, $[0, 1, 0, 0]^T$ для первого примера) .
- Матрица предсказаний $\hat{Y}$ имеет ту же размерность $C \times M$ .
Такая структура позволяет эффективно проводить вычисления сразу для всего пакета данных, не прибегая к медленным циклам for .
🔄 Градиентный спуск и обратное распространение 7:36
Ключевым моментом для реализации градиентного спуска является вычисление производных. Эндрю Ын выделяет центральное уравнение для инициализации процесса обратного распространения (backpropagation) в выходном слое $L$ :
$$dZ^{[L]} = \hat{y} - y$$
Это элегантное выражение показывает, что ошибка на выходном слое — это просто разница между вектором предсказанных вероятностей и вектором истинных меток . Оба вектора имеют размерность $C \times 1$ (в примере — $4 \times 1$).
Тем не менее, Эндрю Ын делает важное замечание о современной практике разработки:
- Если вы пишете код «с нуля», вам придется использовать эту формулу для вычисления градиентов по всей сети .
- При использовании современных фреймворков глубокого обучения программисту достаточно корректно реализовать только прямое распространение (Forward Prop) .
- Фреймворк автоматически вычислит необходимые производные и выполнит обратный проход .
В завершение лектор подчеркивает, что понимание внутренней механики Softmax позволяет эффективно классифицировать объекты по любому количеству категорий, переходя от бинарного выбора к сложным многоуровневым задачам .