準確率Accuracy與損失函式Loss的關係

2021-10-03 13:44:01 字數 1790 閱讀 1882

在進行一項分類任務訓練時,觀察到驗證集上的accuracy增加的同時,loss也在增加,因此產生了一些疑惑,對accuracy和loss之間的關係進行探索。

在理解他們的關係之前,先來回顧一下什麼是交叉熵損失和準確率。交叉熵損失函式:交叉熵輸出的是正確標籤的似然對數,和準確率有一定的關係,但是取值範圍更大。交叉熵損失公式:

其中y ^(

i)\widehat^

y​(i

)為**值,y(i

)y^y(i)

為真實標籤,可以看出交叉熵損失只關心對正確類別的**概率。(在這裡為簡化討論,我們假設乙個樣本裡只要乙個標籤,即簡單的0-1二分類問題。)

當訓練樣本為n時,交叉熵損失函式為:

準確率:在分類問題中,準確率的定義簡單粗暴,就是看**的類別是否和真實的類別一致。在分類任務中,對於乙個n類任務,輸出就是乙個n維的向量,向量每乙個位置就代表了一種類別,對應位置的值就代表**的目標屬於該類的概率,比如貓狗的分類,輸出向量為[0.3, 0.7],就表示輸入的圖屬於貓的概率為0.3,屬於狗的為0.7。在輸出**結果時,我們是取概率最大的索引所對應的的標籤作為最終**的結果標籤,比如在上個例子中,**輸出:輸入的影象類別為狗。

清楚了定義之後,仔細思考就會發現其中的問題,因為準確率是輸出最大的概率,因此0.9的概率值和0.5的概率值效果是等價的,只要保證他們是最大概率即可!請看下面的例子:

比如我們現在**貓和狗的類別,

有乙個樣本**輸出是[0.1, 0.9], 它的交叉熵損失為loss = -1* log(0.9) = 0.046, **結果為:狗

另乙個樣本的**輸出是[0.4, 0.6], 它的交叉熵損失為loss = -1 * log(0.6) = 0.222, **結果為:狗

可以看出兩個樣本都**的為狗,但是他們的交叉熵損失差別很大。因此我們在訓練時,可能會出現準確率和交叉熵同時上公升的情況。

那麼問題來了:

既然準確率和損失都是評價模型好壞的,那麼用乙個不行嗎?為什麼要用兩個並不完全等價的評價指標呢?

這是因為,在分類問題中,可能準確率更加的直觀,也更具有可解釋性,更重要,但是它不可微,無法直接用於網路訓練,因為反向傳播演算法要求損失函式是可微的。而損失函式乙個很好的性質就是可微,可以求梯度,運用反向傳播更新引數。即首選損失不能直接優化(比如準確率)時,可以使用與真實度量類似的損失函式。 損失函式的可微性,使得可以採用多種方式進行優化求解,例如牛頓法、梯度下降法、極大似然估計等。另外在分類任務中,使用accuracy可以,但是在回歸任務中,accuracy便不再可用,只能使用loss。

總結準確度和交叉熵會出現以下情況:

如果正確標籤的概率降低,但這個標籤依然是概率最高的,會出現損失增加單準確度不變的結果。

如果資料集的標籤很不平均,比如90%是類別a,那麼模型一味增加**a的比例,可能會讓準確度上公升,但loss可能也會以更大幅度上公升(cross entropy的幅度可以很大)

如果模型非常自信,大多數正確標籤的概率都接近1,那如果出現乙個錯誤,準確率可能只會降低很少,但交叉熵可能會非常高。

參考:

召回率與準確率

召回率和準確率是資料探勘中 網際網路中的搜尋引擎等經常涉及的兩個概念和指標。召回率 recall,又稱 查全率 還是查全率好記,也更能體現其實質意義。準確率 precision,又稱 精度 正確率 以檢索為例,可以把搜尋情況用下圖表示 相關 不相關 檢索到 a b 未檢索到 c d a 檢索到的,相...

召回率與準確率

召回率和準確率是資料探勘中 網際網路中的搜尋引擎等經常涉及的兩個概念和指標。召回率 recall,又稱 查全率 還是查全率好記,也更能體現其實質意義。準確率 precision,又稱 精度 正確率 以檢索為例,可以把搜尋情況用下圖表示 相關 不相關 檢索到 a b 未檢索到 c d a 檢索到的,相...

召回率與準確率

召回率與準確率 fleetyang 召回率和準確率是資料探勘中 網際網路中的搜尋引擎等經常涉及的兩個概念和指標。召回率 recall,又稱 查全率 還是查全率好記,也更能體現其實質意義。準確率 precision,又稱 精度 正確率 以檢索為例,可以把搜尋情況用下圖表示 相關不相關 檢索到 a b ...