Cross Entropy

对于分类问题,NN的损失函数一般会用 Cross Entropy

它的解释为:

如果我们的数据有 {1,2,...,C} { 1 , 2 , . . . , C } 这么多类别。
那么对于一条数据 x x ,我们分类正确 y y 的最大似然概率为:

p(y|x)=exp(Wyx)Cc=1exp(Wcx) p ( y | x ) = e x p ( W y x ) ∑ c = 1 C e x p ( W c x )

其中:

Wyx=i=1dWyixi=fy(x) W y x = ∑ i = 1 d W y i x i = f y ( x )

也就是说参数 W W 是一个 Cd C ∗ d 的一个矩阵,其中 d d 是 一条样本数据 x x 的维度; Wyx W y x 就是把 W W 中表示类别为 y y 的哪一行和 x x 做内积之后的数值大小。

当然,优化分类器就是最大化这个概率,那就相当于最小化 log(p(y|x)) − l o g ( p ( y | x ) )

如果我们把类别选择用一个one hot向量 p(c) p ( c ) 来表示,然后用q(c)表示模型对一个样本输出对应类别为 c c 的概率,
那么上述问题也就是最小化 Cc=1p(c)log(q(c)) − ∑ c = 1 C p ( c ) l o g ( q ( c ) )
而Cross-Entropy也就是这样的形式:

H(p,q)=c=1Cp(c)log(q(c)) H ( p , q ) = − ∑ c = 1 C p ( c ) l o g ( q ( c ) )

其实就是 log softmax 吼~

那么具体他的优势在哪里?
这里我找到一个很好的blog:
http://jackon.me/posts/why-use-cross-entropy-error-for-loss-function/

具体为什么要softmax, 这里有个知乎的回答也很赞:

Softmax 函数的特点和作用是什么? - 杨思达zzzz的回答 - 知乎
https://www.zhihu.com/question/23765351/answer/139826397

另:这个对于 KL散度 的推导也很赞:
https://blog.csdn.net/u012223913/article/details/75112246

你可能感兴趣的:(人工智能算法)