Можно ли использовать кросс-энтропию для двух классов и почему это не рекомендуется?
Answer from AI
sobes.tech AI
Что хотят услышать интервьюеры:
Да, кросс-энтропию можно применять и для бинарной классификации, но обычно используют специальный бинарный вариант. Это удобнее, стабильнее и проще в реализации. Для двух классов чаще рекомендуют binary cross-entropy или BCEWithLogitsLoss, а не softmax + categorical cross-entropy.
Определение:
Кросс-энтропия — это функция потерь, которая измеряет, насколько предсказанное распределение вероятностей отличается от истинного.
Для двух классов есть два близких подхода: либо один выход с сигмоидой и бинарная кросс-энтропия, либо два выхода с softmax и многоклассовая кросс-энтропия.
На практике для бинарной задачи первый вариант обычно предпочтительнее, потому что он проще и численно устойчивее.
Пример использования:
Допустим, модель определяет, есть ли у клиента отток: 0 — не уйдёт, 1 — уйдёт.
В этом случае достаточно одного логита на выходе и бинарной кросс-энтропии.
import torch
import torch.nn as nn
logits = torch.tensor([2.0, -1.0, 0.5]) # выходы модели до sigmoid
targets = torch.tensor([1.0, 0.0, 1.0]) # истинные метки
loss_fn = nn.BCEWithLogitsLoss()
loss = loss_fn(logits, targets)
print(loss.item())
Пояснение кода:
Код показывает типичный и рекомендуемый способ обучения бинарного классификатора.
logits— это сырые выходы модели, не вероятности.targets— истинные метки 0/1 в форматеfloat.BCEWithLogitsLossвнутри себя объединяетsigmoidи binary cross-entropy, поэтому вычисления стабильнее.- Если бы использовались
softmaxи два выхода, это тоже работало бы, но было бы избыточно для двух классов.
Ключевые моменты:
- Для двух классов кросс-энтропию использовать можно, но обычно в бинарной форме.
softmax + categorical cross-entropyдля бинарной задачи — лишняя сложность.- Основная причина отказа от “обычной” кросс-энтропии — избыточность и меньшая численная устойчивость.
BCEWithLogitsLossпредпочтительнее, потому что объединяет sigmoid и loss в одном стабильном вычислении.- Если классы сильно несбалансированы, дополнительно могут понадобиться веса классов или другие техники балансировки.