如何動態調整準確率與召回率?

概念

對于準確率與召回率的概念,雖然有很多文章介紹了,但是很多人還是不容易形成直覺的理解。這里不談公式,結合一個通俗的例子,幫助大家理解。

例子:有100個人,1人患有癌癥。我們對其進行預測,然后再計算每種預測的準確率與召回率。

準確率與召回率是相對于樣本來說的,也就是要先定義什么是正。我們這里將“有癌癥”定義為正,那么沒有癌癥就是負。

他們還有另一對名字,更直觀也更容易理解:

  1. 準確率也叫查準率。只管所預測為正的情況下,有多準確。
  2. 召回率也較查全率。只管真實為正的樣本中,你找出了幾個。
預測情況 準確率/查準率 召回率/查全率
將100人全部預測為有癌癥 1% (預測100個為正,結果只有1個是對的) 100%(真實結果中有1個正贗本,被找出來了)
將100人全部預測為沒有癌癥 未定義 0% (沒有找出任何真實的正樣本)
預測了2個有癌癥,其中有一個是正確的 50% (2個中有一半正確) 100% (全部找出了真實的正樣本)
全部預測正確 100% 100%
全部預測錯誤 0% 0%

動態調整模型的準確率與召回率

有什么用?

在不同的任務中,可能對準確率與召回率有不同的要求。本篇文章要討論的問題是在模型已經訓練完成后,如果在不重新訓練模型的情況下,調整其預測的準確率與召回率。也就是說,將一個模型發布后,不同的使用者可以使用同一個模型去完整不同的任務。

二分類

在二分類任務中,模型輸出一般為0到1之間的一個數值,記為p,如果大于0.5,我們預測為正,否則為負。這里的0.5代表一個閾值,記為s,則分類標準如下:
\text{class} = \begin{cases} 1, \quad p > s \\ 0, \quad \text{other} \end{cases}

要調整準確率與召回率,直接調整s就行了。增大s,準確率上升,召回率下降;減少s,準確率下降,召回率上升。

如何理解?

模型的輸出p可以代表信心(也就是模型預測樣本為正的確信程度)。閾值s增加,則表示需要更大的信心才會預測為正,這時準確率必然增加;同時,閾值的增加導致所預測正樣本的減少,找出正樣本的可能性就會降低,從而導致召回率的下降。

多分類

在多分類任務中,模型會輸出一個Category分布,比如3分類,一個可能的輸出是[0.1, 0.2, 0.7]。在深度學習模型中,我們一般使用一個softmax函數來生成中的分布。記前一層的輸出為s_1, s_2, s_3 \in \mathbb R, 最終的輸出為[p_1, p_2, p_3] \in (0, 1), 則:
p_1 = \frac {e^{s_1}}{\sum_i e^{s_i}} = \frac {e^{s_1}} {e^{s_1} + e^{s_2} + e^{s_3}}

要調整類別1所對應的準確率召回率,我們直接調整s_1就行了(增加/減少一個值)。增加s_1,類別1的的召回率增加,準確率下降;同時,類別2、類別3的召回率下降,準確率增加。

如何理解?

增加s_1,類別1所對應的概率會增加,其它類別的概率則會降低。人為提升概率,會導致其預測正樣本的概率增加,從而導致召回率的上升,其它類別的情況則相反。

序列標注

在NLP中,分詞、詞性、NER都被轉化為序列標注任務進行處理。序列標注任務也就是序列分類任務。學會了分類任務準確率召回率調整方法,調整序列標注任務也就不難了。以NER任務為例:

標簽 ...
O s_1^{(成)} s_1^{(都)}
B-LOC s_2^{(成)} s_2^{(都)}
I-LOC s_3^{(成)} s_3^{(都)}
... ... ...

現在主流的序列標注模型是BI-LSTM-CRF、BERT-CRF等,都是先使用一個神經網絡計算每個字每個類別的分數,然后再通過CRF層進行調整。我們可以通過調整進入CRF之前的分數,從而達到調整準確率與召回率的目的。(BI-LSTM-CRF和CRF的PyTorch通用實現可以參考開源庫bi-lstm-crf)

在上面的表格種,每一列對應一個字的多分類的分數,這些分數的范圍沒有經過歸一化,范圍是整個\mathbb R,但是調整的方法還是一樣的,直接修改這些分數就行了。

比如通過增加"O"標簽對應的分數,"O"標簽對應的最終概率就會提升,跟實體相關的標簽(B-LOC, I-LOC, ...)的概率則會下降,這樣NER的召回率就會下降,準確率則會上升。

如果確定調整的數值?

通過實驗法,拿一個帶標注的數據集作為測試集,使用不同的調整數值,跑完整個測試集上,并計算準確率與召回率。這樣就會得到2根曲線,一條對應準確率、一條對應召回率,橫坐標對應不同的調整數值。然后根據需要選擇對應的調整數值即可。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容