Кросс-энтропия К

Метрика из теории информации, измеряющая различие между двумя распределениями вероятностей. В машинном обучении используется как функция потерь для задач классификации.

English cross-entropy, cross entropy loss, log loss
Синонимы перекрёстная энтропия, кросс-энтропийная потеря, логистическая потеря, log loss, CE

Кросс-энтропия — это метрика из теории информации, которая количественно оценивает, насколько сильно предсказанное распределение вероятностей отличается от истинного. В контексте нейросетей это стандартная функция потерь для задач классификации: чем меньше значение кросс-энтропии, тем ближе предсказания модели к правильным ответам.

Как это работает

Формально кросс-энтропия между истинным распределением \(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 кросс-энтропией.

Источники

Goodfellow I., Bengio Y., Courville A. Deep Learning — MIT Press, 2016 (ISBN 978-0-262-03561-3)

Cover T. M., Thomas J. A. Elements of Information Theory — Wiley-Interscience, 2006 (ISBN 0-471-06259-6)

Bishop C. M. Pattern Recognition and Machine Learning — Springer, 2006 (ISBN 978-0387310732)

PyTorch Documentation — torch.nn.CrossEntropyLoss (https://pytorch.org/docs/stable/generated/torch.nn.CrossEntropyLoss.html)