Кросс-энтропия — это метрика из теории информации, которая количественно оценивает, насколько сильно предсказанное распределение вероятностей отличается от истинного. В контексте нейросетей это стандартная функция потерь для задач классификации: чем меньше значение кросс-энтропии, тем ближе предсказания модели к правильным ответам.
Как это работает
Формально кросс-энтропия между истинным распределением \(P\) и предсказанным \(Q\) вычисляется как \(H(P, Q) = -\sum_{i} P(i) \log Q(i)\). Для классификации с одним правильным классом истинное распределение обычно представлено one-hot вектором: вероятность правильного класса равна 1, остальных — 0. Тогда формула упрощается до \(-\log Q(\text{правильный класс})\).
Модель выдаёт логиты — необработанные числа для каждого класса. Их пропускают через Softmax, получая вероятности, сумма которых равна 1. Кросс-энтропия берёт логарифм вероятности правильного класса и меняет знак. Если модель уверена в правильном ответе (\(Q \approx 1\)), потеря близка к нулю. Если уверена в неправильном (\(Q \to 0\)), потеря резко возрастает. Градиентный спуск минимизирует эту потерю, подстраивая веса сети.
Зачем это нужно
Кросс-энтропия даёт плавный, дифференцируемый сигнал для обучения. В отличие от простой точности (доли правильных ответов), она различает «почти уверен» и «совершенно не уверен», что позволяет нейросети учиться быстрее и стабильнее. Это основная функция потерь в задачах классификации изображений, текстов, звуков — везде, где нужно выбрать одну или несколько категорий из фиксированного набора.
Примеры
- Классификация изображений (CIFAR-10). Модель предсказывает вероятности для 10 классов. Если правильный класс «кошка», а модель выдала вероятность 0.7, кросс-энтропия составит \(-\log(0.7) \approx 0.36\). Если вероятность 0.1, потеря будет \(-\log(0.1) \approx 2.3\) — почти в семь раз выше.
- Анализ тональности текста. Бинарная классификация: отзыв положительный или отрицательный. Истинная метка — 1 для положительного. Предсказание 0.9 даёт потерю около 0.105, предсказание 0.5 — около 0.693.
- Многоклассовая классификация с дисбалансом. В датасете 95% класса A и 5% класса B. Без весов модель может предсказывать только A, получая низкую кросс-энтропию, но бесполезный классификатор. Взвешенная кросс-энтропия штрафует ошибки на редком классе сильнее.
Формула или метрика
Общая формула: \(H(P, Q) = -\sum_{i=1}^{C} P(i) \log Q(i)\), где \(C\) — число классов, \(P(i)\) — истинная вероятность, \(Q(i)\) — предсказанная.
Для бинарной классификации: \(L = -[y \log(p) + (1-y) \log(1-p)]\), где \(y \in \{0, 1\}\), \(p\) — предсказанная вероятность класса 1.
Для одного примера с одним правильным классом: \(L = -\log Q(\text{правильный класс})\).
Типичные ошибки
- Использование кросс-энтропии для регрессии. Для предсказания непрерывных значений (цена, температура) нужна MSE или MAE, а не кросс-энтропия.
- Отсутствие Softmax перед кросс-энтропией. Если подать логиты напрямую в формулу с логарифмом, можно получить отрицательные значения под логарифмом или NaN. В PyTorch CrossEntropyLoss уже включает LogSoftmax.
- Игнорирование дисбаланса классов. Без весов редкие классы могут «утонуть» в потерях доминирующего класса.
- Слишком ранняя остановка по train loss. Кросс-энтропия на обучающей выборке может продолжать падать, пока модель переобучается. Контролировать нужно validation loss.
Как улучшить
- Label Smoothing. Замените one-hot метки на «мягкие»: правильный класс 0.9, остальные 0.1/(C-1). Это снижает переуверенность модели и улучшает обобщение.
- Веса классов. Передайте в CrossEntropyLoss параметр weight — обратно пропорциональный частоте классов. Особенно полезно при сильном дисбалансе.
- Focal Loss. Модификация кросс-энтропии, которая снижает вес «лёгких» примеров и фокусируется на сложных. Помогает в детекции объектов и при экстремальном дисбалансе.
- Мониторинг калибровки. Низкая кросс-энтропия не всегда означает хорошую калибровку вероятностей. Проверяйте reliability diagram и temperature scaling.
- Регуляризация. Dropout, weight decay и аугментация данных уменьшают разрыв между train и validation кросс-энтропией.