分类准确率(ACC)和平均交叉熵损失(ACE)之间的关系

背景:

    最近做实验的过程中发现,随着训练集的平均交叉熵损失(Average Cross Entropy,ACE)降低,验证集ACE升高时,分类模型的准确率(Accuracy,ACC)也会出现升高的情况。起初认为这是反直觉的,还以为是自己程序里有bug。经查阅发现也有人遇到相同的问题,并且对这个现象给出了解释(详情见参考链接1)。

    通过一下午的认真思考,尝试将ACC与ACE之间的关系进行整理。我理解不对的地方,或者有更加规范的证明方法,劳烦指教~


正文:

一、交叉熵损失

    如下为对应于Softmax回归的交叉熵损失函数(来自于UFLDL教程):

    

二、单个样本的ACC与ACE关系分析

    想分析一批训练数据会使ACC与ACE产生什么样的关系,需要首先了解单个样本时ACC与ACE可以有什么样的关系。

    如下为交叉熵损失函数退化为单样本时的公式:

    J(θ)=-1 *1{y=label} * logP(y=label)  

    单个样本时,ACC和CE(Cross E )会出现以下9种情况:

CE\ACC 上升 不变 下降
上升 ①:二分类时不存在,多分类时存在 ②:存在 ③:正常
不变 ④:二分类时不存在,多分类时存在 ⑤:正常 ⑥:二分类时不存在,多分类时存在
下降 ⑦:正常 ⑧:存在 ⑨:二分类时不存在,多分类时存在

    以上9种情况中,③、⑤、⑦被标记为“正常”情况,比较容易理解且符合直觉,因此不再解释。如下解释其他6种情况:

    1. 情况① & 情况⑨

        这两种情况是相对的,以情况①为例进行分析(情况⑨将前后两次迭代结果调换即可):

        情况①为CE上升,同时ACC也上升。“ACC上升”代表“该样本第一次迭代时被分错,第二次迭代时分类正确”。

        A. 二分类

        假设样本label=1,两次迭代的得到的分类概率情况如下:

迭代次数 Iter 1 Iter 2
P P(y=1)=0.49
P(y=0)=0.51
P(y=1)=0.51
P(y=0)=0.49
ACC 0/1 1/1
ACE -log0.49(大) -log0.51(小)

        由上表可以清晰看出,二分类时,该样本ACC上升,P(y=label)一定是从一个小于0.5的值,变为大于0.5的值。-log(x)在(0,1]区间内单调递减,因此这种情况下,CE一定变小,与情况①所述现象矛盾,因此该情况对于单样本、二分类来说,不存在。

        B. 多分类

        假设样本label=2,两次迭代的得到的分类概率情况如下:

迭代次数 Iter 1 Iter 2
P

P(y=2)=0.49

P(y=1)=0.5

P(y=0)=0.01

P(y=2)=0.4

P(y=1)=0.3

P(y=0l)=0.3
ACC 0/1 1/1
ACE -log0.49(小) -log0.4(大)

        多分类时,样本ACC上升,P(y=label)是从一个小值变大值,大值变为小值或者不变,都有可能的由上表可以清晰看出,ACC上升,CE也上升了。因此该情况对于单样本,多分类来说,是存在的。


    2. 情况② & 情况⑧

        这两种情况是相对的,以情况②为例进行分析(情况⑧将前后两次迭代结果调换即可)。

        二分类时(多分类时也容易举例),假设样本label=1,两次迭代的得到的分类概率情况如下:

迭代次数 Iter 1 Iter 2
P P(y=1)=0.49
P(y=0)=0.51
P(y=1)=0.01
P(y=0)=0.99
ACC 0/1 0/1
ACE -log0.49(小) -log0.01(大)

    3. 情况④ & 情况⑥

        这两种情况是相对的,以情况④为例进行分析(情况⑥将前后两次迭代结果调换即可):

        A. 二分类

        同情况①,二分类时,该样本ACC上升,P(y=label)一定是从一个小于0.5的值,变为大于0.5的值。-log(x)在(0,1]区间内单调递减,因此这种情况下,CE一定变小,与情况④所述现象矛盾,因此该情况对于单样本、二分类来说,不存在。

        B. 多分类

        假设样本label=2,两次迭代的得到的分类概率情况如下:

迭代次数 Iter 1 Iter 2
P

P(y=2)=0.4

P(y=1)=0.5

P(y=0)=0.1

P(y=2)=0.4

P(y=1)=0.3

P(y=0l)=0.3
ACC 0/1 1/1
ACE -log0.4 -log0.4

        由上表可以清晰看出,ACC上升,CE可以保持不变。因此该情况对于单样本,多分类来说,是存在的。

三、多个样本的ACC与ACE关系分析

    平均交叉熵损失考虑了多个样本的情况,因此可能性非常多。无论是二分类还是多分类,上述9种情况都有可能出现。

四、总结

    我的工作为二分类问题,在此对我这两天的思考进行如下总结:

    1. 对于单个样本CE升高,这意味着:A. 如果ACC下降,模型过拟合;B. 如果ACC不变,原本分错的数据(p(y=1)=0.49)可能会错的更离谱(p(y=1)=0.01);原本分对的数据(p(y=1)=0.99)可能会变得没有那么"确定"(p(y=1)=0.51)。不论是A还是B,CE升高都不是一个好的现象。

    2. 对于包含多个样本的训练集(验证集或测试集)来说,无论是什么现象,都可以用单样本的9种情况排列组合进行N种可能的解释。但是由1.知,无论怎么组合,ACE升高终归都不是一个好的现象,只是在多样本的情况下,这个结论变得没有那么绝对而已。



参考链接1:https://www.zhihu.com/question/65439175/answer/231303779

猜你喜欢

转载自blog.csdn.net/xxy0118/article/details/80529676