Есть только одна перекрестная энтропия (энтропия Шеннона), определяемая как:
H(P||Q) = - SUM_i P(X=i) log Q(X=i)
При использовании машинного обучения P
- это фактическое (достоверное) распределение, а Q
- это прогнозируемое распределение. Все перечисленные вами функции - это просто вспомогательные функции, которые могут по-разному представлять P
и Q
.
Есть три основных момента, которые следует учитывать:
существует либо 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
В конце концов, можно было бы просто использовать «категориальную перекрестную энтропию», поскольку именно так она определяется математически, однако, поскольку такие вещи, как жесткие цели или двоичная классификация, очень популярны - современные библиотеки машинного обучения предоставляют эти дополнительные вспомогательные функции, чтобы упростить задачу. В частности, «наложение» сигмоида и перекрестной энтропии могут быть численно нестабильными, но если кто-то знает, что эти две операции применяются вместе - существует численно стабильная их комбинированная версия (которая реализована в TF).
Важно отметить, что если вы примените неправильную вспомогательную функцию, код обычно все равно будет выполняться, но результаты будут неверными. Например, если вы примените помощник softmax_ * для двоичной классификации с одним выходом, будет считаться, что ваша сеть всегда выдает «True» на выходе.
И последнее примечание: в этом ответе рассматривается классификация, она немного отличается, если вы рассматриваете случай с несколькими метками (когда одна точка может иметь несколько меток), поскольку тогда Ps не сумма равна 1, и следует использовать sigmoid_cross_entropy_with_logits, несмотря на наличие нескольких единиц вывода.
person
lejlot
schedule
21.06.2017