为什么在训练神经网络时候比较适合使用交叉熵错误率,而不是分类错误率或是均方差

原文:Why You Should Use Cross-Entropy Error Instead Of Classification Error Or Mean Squared Error For Neural Network Classifier Training

在训练神经网络中,使用分类错误率或是均方差往往会丢掉很多有用的信息。
这篇文章的作者就举了一个简单的例子来说明这个问题,我觉得写得还不错。
下面我把这篇文章讲的主要内容翻译一下。

作者观点

在使用神经网络做分类和预测的工作的时候,使用交叉熵模型来评估分类性能,往往要比分类错误率或是均方差模型更好。

实例

下面举个预测一个人属于哪个党派的例子。(来描述这个从的特征有很多,像年龄、性别、收入等。这里不讨论。)
将这个人的特征数据输入我们的分类模型,得到一组向量,来表示他/她属于哪个党派的概率。

模型一

预测结果目标正确吗?
0.3 0.3 0.40 0 1 (democrat)yes
0.3 0.4 0.30 1 0 (republican)yes
0.1 0.2 0.71 0 0 (other)no

稍微解释一下,第一行0.3 0.3 0.4 | 0 0 1 (democrat) | yes的意思是:预测是other的概率是0.3;预测为republican的概率是0.3;预测是democrat的概率是0.4;而目标是democrat。
此时,
分类错误率:1/3 = 0.33
错误率

模型二

我们再看一个模型的分类结果。

预测结果目标正确吗?
0.1 0.2 0.70 0 1 (democrat)yes
0.1 0.7 0.20 1 0 (republican)yes
0.3 0.4 0.31 0 0 (other)no

分类错误率:1/3 = 0.33

但是,我们可以观察到,前两项的分类结果有明显不同,所以直观上讲,第二个模型要比第一个模型更可靠。

交叉熵错误率模型的效果

仍然通过上面两个例子,我们看一下交叉熵的表现如何。(有关「熵」的计算,可以参考《统计学习方法》的5.2.2节)

  1. 模型一
    计算第一行的熵,二、三行同理。

    -( (ln(0.3)*0) + (ln(0.3)*0) + (ln(0.4)*1) ) = -ln(0.4)

    然后得到平均交叉熵错误率(average cross-entropy error, ACE)

        -(ln(0.4) + ln(0.4) + ln(0.1)) / 3 = 1.38

    第一行的均方差

        (0.3 - 0)^2 + (0.3 - 0)^2 + (0.4 - 1)^2 = 0.09 + 0.09 + 0.36 = 0.54

    然后得到

    (0.54 + 0.54 + 1.34) / 3 = 0.81

  2. 模型二
    ACE: -(ln(0.7) + ln(0.7) + ln(0.3)) / 3 = 0.64
    均方差:(0.14 + 0.14 + 0.74) / 3 = 0.34

对比

项目模型一模型二
ACE1.380.64
分类错误率0.330.33
均方差0.810.34

这样看起来ACE和均方差明显优于分类错误率,同时ACE和均方差相比差别不大。但是,考虑到均方差计算量要稍大于ACE。

总结

所以在应用上面三种方式评估结果的时候,要看你想做什么。
比如,你只想看在特定样本集上的结果的准确性,那就用分类错误率来评估。因为,此时你不需要知道得到每个结果的概率,这些对最终结果没有任何辅助说明意义。
但是,在训练分类模型,和长期评估的时候,ACE和均方差就会更远好一些。

个人理解

有时候,给出准确的结果反而会损失掉大量的信息。给出一个比较可信的概率值,反而会保留对结果更有帮助的信息。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值