Они одинаковы.
Потеря кросс-энтропии, которую вы указываете в своем вопросе, соответствует частному случаю кросс-энтропии, когда ваши метки либо 1
, либо 0
, что я предполагаю это случай, если вы выполняете базовую c классификацию.
Что касается того, почему это происходит, давайте начнем с потери кросс-энтропии для одного примера обучения x
:
Loss = - sum_j P(x_j) log(Q(x_j)) #j is the index of possible labels
, где P
- это «истинное» распределение, а «Q» - это распределение, которое изучила ваша сеть. «Истинное» распределение P
задается вашими жесткими метками, то есть, предполагая, что истинная метка - t
, у вас будет:
P(x_t) = 1
P(x_j) = 0 if j!=t
, что означает, что потеря, указанная выше, станет
Loss= - log(Q_t)
В вашем случае кажется, что распределение Q_s
вычисляется из логитов, т.е. последнего уровня перед softmax или функцией стоимости, которая выводит набор оценок для каждого label:
scores= [s_1 , ..., s_N]
если вы запустите это через softmax, вы получите:
distribution = [exp(s_1)/(sum_k exp(s_k)), ..., exp(s_N)/(sum_k exp(s_k))]
Распределение истинной метки t
, которое мы до сих пор обозначали * Таким образом, 1030 * дается как
Q(s_t)=exp(s_t)/(sum_k exp(s_k))
, и это возвращает нас к потерям, которые можно выразить как
Loss= - log(Q_t) = - log (exp(s_t)/(sum_k exp(s_k))
, которое вы указали в своей задаче. Поэтому в вашем вопросе x_y
- это оценки, которые сеть выводит для правильной метки, связанной с x
.