Я начал с изучения нейронных сетей с помощью учебника по нейронным сетям и углублённому изучению точек. В частности, в 3-й главе есть раздел о функции кросс-энтропии, который определяет потерю кросс-энтропии как:
Однако, читая введение Tensorflow , потеря перекрестной энтропии определяется как:
(при использовании тех же символов, что и выше)
Затем, отыскивая, что происходит, я нашел другой набор заметок: ( https://cs231n.github.io/linear-classify/#softmax-classifier ), который использует совершенно другое определение перекрестной потери энтропии, хотя это время для классификатора softmax, а не для нейронной сети.
Может кто-нибудь объяснить мне, что здесь происходит? Почему есть расхождения между прочим. как люди определяют потерю кросс-энтропии? Есть ли какой-то всеобъемлющий принцип?
источник
Ответы:
Эти три определения по сути одинаковы.
источник
В третьей главе уравнение (63) представляет собой кросс-энтропию, применяемую к нескольким сигмоидам (которая может не равняться 1), в то время как во введении Tensoflow кросс-энтропия вычисляется на выходном слое softmax.
Как объясняет dontloo, обе формулы по существу эквивалентны для двух классов, но это не так, когда рассматриваются более двух классов. Softmax имеет смысл для мультикласса с эксклюзивными классами ( т. Е. Когда имеется только одна метка на выборку, которая допускает горячее кодирование меток), в то время как (множественные) сигмоиды могут использоваться для описания проблемы с несколькими метками (т. Е. С выборками, которые, возможно, являются положительными). для нескольких классов).
Смотрите также этот другой ответ .
источник