Cross-Entropy Loss 与Accuracy的数值关系

以分类任务为例, 假设要将样本分为\(n\)个类别.

先考虑单个样本\((X, z)\).

将标题\(z\)转化为一个\(n\)维列向量\(y = (y_1, \dots y_k, \dots, y_n)^T\):

\[y_k= \begin{cases} 0& k \neq z \\ 1& k = z \end{cases} \]

\(p_z\)是模型将此样本分到类别\(z\)的概率, 即正确分类的概率\(p_{correct}\). 在这个样本上的Cross-Entropy Loss为:

\[loss = -ln p_z = -ln p_{correct} \]

再考虑由\(m\)个样本组成的batch. 在整个batch上的loss:

\[loss = \frac 1m \sum_{i}^{m} - ln p^{(i)}_{correct} \]

\(- ln p^{(i)}_{correct}\)看作一个随机变量\(C_i\). 当\(m \rightarrow \infty\)时:

\[loss = E(C) = E(-ln p_{correct}) \]

\(p_{correct}\)对单个样本来说是被正确分类的概率, 对一个batch来说则是准确率 accuracy.
当一个batch中包含无穷多个样本时:

\[loss = E(-ln accuracy) \]

\(m \rightarrow \infty\)时,

\[accuracy = e^{-loss} \]

这就是ce loss与accuracy之间的数值关系.

也就是说,**用batch-based + Cross-Entropy loss训练机器学习算法时, 根据loss可大致计算出accuracy, 并且误差随 batch size 增大而减小. **我常用batch size = 100, 此时\(e^{-loss}\)\(accuracy\)之间已经很接近了, 误差通常小于\(0.01\).

posted @ 2016-12-05 11:13  宁静是一种习惯  阅读(15157)  评论(3编辑  收藏  举报