以分類任務為例, 假設要將樣本分為\(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\).