Я пытался оценить свои модели классификации с метрикой логарифмических потерь, используя модуль mxnet.metric.
Я столкнулся с двумя классами: CrossEntropy
и NegativeLogLikelihood
которые имеют одно и то же определение и очень похожую реализацию. Оба имеют один и тот же базовый код для вычисления значения показателя:
self.sum_metric += (-numpy.log(prob + self.eps)).sum()
Если они по сути являются одними и теми же метриками, какова цель сохранения обеих функций в библиотеке? Какая метрика предпочтительнее для бинарной и многоклассовой классификации?
На самом деле разница между этими вещами не очень велика не только в MXNet, но и в целом. Прочтите эту Quora для большей интуиции: https://www.quora.com/What-are-the-differences-between-maximum-likelihood-and-cross-entropy-as-a-loss-function
Что касается того, что используется для классификации нескольких классов в MXNet, то в большинстве примеров я видел, как люди используют SoftmaxCrossEntropyLoss. См. Пример здесь: https://gluon.mxnet.io/chapter02_supervised-learning/softmax-regression-gluon.html