Какие свойства взаимоисключаемости классов в многоклассовой классификации
Что проверяют
Отличаете ли вы многоклассовую задачу от многометочной и понимаете ли, как допущение о взаимоисключаемости определяет выходной слой, функцию потерь и метрики. Следом обычно спрашивают: «Что модель сделает с объектом, который не относится ни к одному классу?»
Как отвечать
Взаимоисключаемость значит, что у каждого объекта ровно одна метка из K. Отсюда свойства:
- распределение по классам: вероятности суммируются в единицу, их даёт softmax, предсказание берётся через
argmax. Рост уверенности в одном классе снижает остальные; - функция потерь: категориальная кросс-энтропия. В PyTorch
nn.CrossEntropyLossпринимает сырые логиты и сама применяет log-softmax, поэтому ставить softmax перед ней не нужно; - замкнутый набор классов: softmax всегда выбирает один из известных классов, даже для мусорного входа. Нужен класс «другое», порог отказа по уверенности или отдельная детекция выбросов;
- сведение к бинарным задачам: One-vs-Rest обучает K классификаторов, One-vs-One
K(K-1)/2. В scikit-learn этоOneVsRestClassifierиOneVsOneClassifier. Оценки OvR не обязаны давать в сумме единицу, их нормируют; - метрики: accuracy, macro- и weighted-F1, матрица ошибок. При одной метке на объект micro-F1 совпадает с accuracy, поэтому на несбалансированных данных смотрят macro.
Затем покажите противоположный случай. Если метки сочетаются (теги статьи, несколько объектов на фото), это multilabel: sigmoid на каждый класс, BCEWithLogitsLoss, свой порог для каждой метки, метрики вроде Hamming loss и F1 по меткам. Упомяните калибровку: вероятности softmax часто завышены, их поправляют, например, temperature scaling.
Где спотыкаются
Путают взаимоисключаемость меток с разделимостью классов в пространстве признаков. Классы могут сильно перекрываться, и это не отменяет того, что метка у объекта одна.
Ставят softmax на задачу с тегами. Модель вынуждена делить единицу между метками и не может ответить «да» двум классам сразу.
Забывают про иерархию: если среди классов есть «животное» и «кошка», они не взаимоисключаемы, и придётся менять разметку или постановку задачи.