你說的acc是測試集嗎?那可能是過擬合了
loss代表趨勢,並不代表最終的效果
或許還會有“loss下降但acc降低”、“loss上升acc也上升”等問題,實質上loss並不能代表acc
之前回答過類似的問題,你有這個疑問的原因在於,你對loss和acc的計算方式,或者說是區別不清楚,所以導致存在這個問題。
準確度是從樣本的角度來說的,比如有100個樣本,有97個預測正確,那麼你的模型的準確率就是97%。
損失是從樣本的標籤的角度來說的,比如二分類問題,樣本的標籤為y=1和y=0。現在有一個y=1的樣本,那麼模型預測它的機率值為0。97,那麼此時按照平方損失函式來說,它的損失是(1-0。97)²,也就是說即使模型預測正確了,還是會產生損失。
現在正式回答你的問題,你現在的模型的準確度已經很高了,那麼這隻能說你的100個樣本中有97個預測準確了,什麼叫做預測準確呢?對於y=1的樣本來說,預測結果為0。51和0。99都算是預測成功了,但是二者產生的損失卻不一樣,一個是(0。51-1)²,一個是(0。99-1)²。
如果你看懂上面的問題,那麼你就應該知道了,出現你這種情況的原因是,大多數樣本都已經預測準確了,但是隨著預測的進行,不斷將模型從預測0。51到0。99了,所以你會看到你的模型準確率不再提高,但是模型損失卻不斷降低。
loss和acc的變化不會嚴格負相關。
對於acc來說。只要輸出機率向量中對應正確的那個類別的probability是最大的,這個樣本分類就正確了,無論機率是0。8還是0。9。
但是對於loss來說,probability從0。8變成0。9,loss就是會下降的。
我猜,你遇到的情況可能跟上述情況差不多。不用擔心,接著訓練就好,效果達不到預期可以換個loss函式。
Loss反映的是logit計算的損失,Acc反映的是最大logit對應的類別的是否為真實標籤,兩者在趨勢上並不完全一致。
一個直觀的理解是,最大的Logit 已經可以預測正確了,但是confidence依舊在上升,從而導致loss的下降。
可以簡單理解為有過擬合的傾向,但也不能單純的理解為一個壞的情況,詳細的理論和實驗,可以關注一下分類模型的校正(Calibration)能力,也就是:
The predicted softmax scores are much better indicators of the actual likelihood of a correct prediction。
補兩張圖,橫軸表示confidence(最大的logit),縱軸表示準確率(Acc),每個點是一個mini batch獲得的(confidence,accuracy):
Well calibrated model
Poorly calibrated model (Over confidence)