Ответ 1
Существует только одна перекрестная (Шеннон) энтропия, определяемая как:
H(P||Q) = - SUM_i P(X=i) log Q(X=i)
При использовании машинного обучения P
является фактическим (основополагающим) распределением, а Q
является прогнозируемым распределением. Все перечисленные вами функции - это просто вспомогательные функции, которые допускают различные способы представления P
и Q
.
В основном нужно учесть 3 основных момента:
Есть 2 возможных варианта (двоичная классификация) или более. Если есть только два результата, то
Q(X=1) = 1 - Q(X=0)
, поэтому одно с плавающей точкой в (0,1) идентифицирует все распределение, поэтому нейронная сеть в двоичной классификации имеет один выход (как и логистическая регрессия). Если имеется K> 2 возможных результата, необходимо определить K результатов (по одному на каждыйQ(X=...)
)каждый либо производит правильные вероятности (это означает, что
Q(X=i)>=0
иSUM_i Q(X=i) =1
), либо просто производит "оценку" и имеет некоторый фиксированный метод преобразования оценки в вероятность. Например, одно действительное число может быть "преобразовано в вероятность" путем взятия сигмоида и набор действительных чисел можно преобразовать, взяв их softmax и т.д.есть
j
такой, чтоP(X=j)=1
(есть один "истинный класс", цели "жесткие", как "это изображение представляет собой кошку") или есть "мягкие цели" (например, "мы уверены, что это на 60%") это кошка, но на 40% это на самом деле собака ").
В зависимости от этих трех аспектов, должны использоваться разные вспомогательные функции:
outcomes what is in Q targets in P
-------------------------------------------------------------------------------
binary CE 2 probability any
categorical CE >2 probability soft
sparse categorical CE >2 probability hard
sigmoid CE with logits 2 score any
softmax CE with logits >2 score soft
sparse softmax CE with logits >2 score hard
В конце концов, можно просто использовать "категориальную кросс-энтропию", так как это математически определено, однако, поскольку такие вещи, как жесткие цели или двоичная классификация, очень популярны - современные библиотеки ML предоставляют эти дополнительные вспомогательные функции, чтобы сделать вещи проще. В частности, сигмаоид "стопки" и перекрестная энтропия могут быть численно нестабильными, но если известно, что эти две операции применяются вместе - существует численно стабильная их комбинация (которая реализована в TF).
Важно отметить, что если вы применяете неправильную вспомогательную функцию, код, как правило, все еще выполняется, но результаты будут неправильными. Например, если вы примените softmax_ * помощник для двоичной классификации с одним выходом, ваша сеть всегда будет выдавать "True" на выходе.
В заключение: этот ответ рассматривает классификацию, он немного отличается, если рассматривать случай с несколькими метками (когда одна точка может иметь несколько меток), так как тогда Ps не суммируются с 1, и следует использовать sigmoid_cross_entropy_with_logits, несмотря на наличие нескольких выходных единиц.