A fórmula da entropia cruzada assume duas distribuições, , a distribuição verdadeira e , a distribuição estimada, definida sobre a variável discreta e é dada porp(x)q(x)x
H(p,q)=−∑∀xp(x)log(q(x))
Para uma rede neural, o cálculo é independente do seguinte:
Que tipo de camada foi usada.
Que tipo de ativação foi usada - embora muitas ativações não sejam compatíveis com o cálculo porque suas saídas não são interpretáveis como probabilidades (ou seja, suas saídas são negativas, maiores que 1 ou não somam 1). O Softmax é frequentemente usado para a classificação em várias classes porque garante uma função de distribuição de probabilidade bem comportada.
Para uma rede neural, você geralmente verá a equação escrita em uma forma em que é o vetor da verdade fundamental e (ou algum outro valor obtido diretamente da saída da última camada) é a estimativa. Para um único exemplo, seria assim:yy^
L=−y⋅log(y^)
onde é o produto de ponto vetorial.⋅
Seu exemplo de base da verdade fornece toda a probabilidade ao primeiro valor, e os outros valores são zero, para que possamos ignorá-los e apenas usar o termo correspondente de suas estimativasyy^
L=−(1×log(0.1)+0×log(0.5)+...)
L=−log(0.1)≈2.303
Um ponto importante dos comentários
Isso significa que a perda seria a mesma, independentemente de as previsões serem ou ?[0.1,0.5,0.1,0.1,0.2][0.1,0.6,0.1,0.1,0.1]
Sim, esse é um recurso importante do logloss multiclass, que recompensa / penaliza apenas probabilidades de classes corretas. O valor é independente de como a probabilidade restante é dividida entre classes incorretas.
Você verá frequentemente essa equação com a média de todos os exemplos como uma função de custo . Nem sempre é rigorosamente respeitado nas descrições, mas geralmente uma função de perda é de nível inferior e descreve como uma única instância ou componente determina um valor de erro, enquanto uma função de custo é de nível superior e descreve como um sistema completo é avaliado para otimização. Uma função de custo baseada na perda de log de várias classes para um conjunto de dados de tamanho pode se parecer com isso:N
J=−1N(∑i=1Nyi⋅log(y^i))
Muitas implementações exigirão que seus valores de verdade básicos sejam codificados com um hot hot (com uma única classe verdadeira), pois isso permite uma otimização extra. No entanto, em princípio, a perda de entropia cruzada pode ser calculada - e otimizada - quando este não for o caso.