Calibration: 一个工业价值极大,学术界却鲜有研究的问题!
文 | kid丶(知乎作者)
編 | 夕小瑤
盡管深度學習給工業界帶來了一波上線春天,但是總有很多比較難的業務,模型反復迭代后準確率依然達不到預期的產品標準,難以滿足用戶期望。
以下為工業界常見討(si)論(b)場景:
R&D小哥哥一頓調參輸出,RoBERTa都用上了,終于將模型從80%準確率提升到了90%,但是PM小姐姐說,“不行!咱們必須要達到95%準確率才能上線!否則就是對用戶和產品逼格的傷害!”
怎么辦呢?
熟悉工業界上線套路的小伙伴馬上就能給出答案,那就是 提高模型決策的閾值! PM小姐姐只是根據產品標準定義了模型準確率(或者說精確率,precision),但是并不在乎召回率有多高(畢竟模型只要沒上線,就相當于召回率為0)。
那么基于上面的思路:假如模型的softmax輸出可靠,比如二分類場景,模型softmax之后1類的輸出是0.92,能表征模型有92%的把握說這是個正例,并且模型的這個把握是精準的,那么PM小姐姐說要達到95%準確率,那我們就瘋狂提高模型的決策閾值就好了,這樣把那些不確定性高的樣本砍掉了,模型準確率自然就上來了。
然而,神經網絡并不一定這么靠譜,你看模型的測試集輸出的話,卻常常發現模型要么以99.999的概率輸出來判定正例,要么0.0001的概率輸出來判定負例,基本沒有樣本落在0.1~0.9區間內。那么這時候上面的思路就失效了。
那么有沒有辦法讓模型的softmax輸出能真實的反映決策的置信度呢? 這個問題,就被稱為Calibration問題(直譯是叫“校準”)。
故事要從一篇發表于2017年的ICML頂會論文開始,目前這篇論文引用量1001。
論文標題:
On Calibration of Modern Neural Networks
鏈接:
https://arxiv.org/pdf/1706.04599.pdf
Arxiv訪問慢的小伙伴可以在【夕小瑤的賣萌屋】后臺回復關鍵詞【0106】下載論文pdf~
神經網絡的 overconfidence
首先,讓咱們來思考一個普通圖像分類任務。對于一張“koala”的圖像,在經過神經網絡后會得到 logits 輸出 ,經過 softmax 層后得到對各類別的預測的后驗概率,接著我們選擇概率最大的類別( koala)輸出為最后的預測類別。這里,最終的預測類別 ,其對應的置信度為 。在大多情況下,我們只關心類別的預測 有多準,根本不 care 置信度是怎樣的。然而,在一些實際應用場景下,置信度的度量也同樣重要。例如:
如上圖,對于自動駕駛中的目標識別任務,車輛的前方出現了一個人,神經網絡會將其識別成塑料袋,此時輸出的置信度為50%(低于閾值),則可通過其它傳感器進行二次的正確識別(識別為人)。但想想看,若神經網絡對塑料袋預測的置信度為90%會怎樣?再例如:
使用 Resnet 模型簡單的對一些圖片任務進行訓練,收斂后的模型對測試集的平均置信度高達80%-85%,然而只有將近70%的圖片能被正確分對(紅色代表分錯,綠色代表分對)。這意味著啥?訓練好的模型好像有點盲目自信,即出現 overconfidence 現象,或者可以稱為模型的準確率和置信度不匹配(miscalibration)。
預期校準誤差(ECE)
直觀的來看,模型的準確率應當和置信度相匹配。一個完美校準的模型可定義成如下所示:
即,模型置信度 等于概率 的條件下模型的預測 為真實標記 的概率同樣也為 。因此,本文提出一個新的度量方式叫做 預期校準誤差(Expected Calibrated Error, ECE) 來描述模型學習的匹配程度:
很簡單,其實就是將前面那個完美校準模型的等式寫成差的期望的形式。我們將期望進一步展開可得到:
其中:
這里的 代表著一個個根據置信度區間劃分的一個個桶(用來裝樣本的),如下圖所示:
例如,我們將置信區間平均劃分成5份,然后將樣本按照其置信度挨個送到對應的桶中,分別計算每個桶中的平均置信度和準確率,兩者的差值(Gap)的期望就是所定義的 ECE。
讀到這的讀者應該能逐步體會本文想干一件啥事了。本文首先引出這樣一個問題,深度模型在學習過程中出現準確率和置信度的嚴重不匹配問題,接著提出了一個合理的評價指標來描述模型學習的匹配程度,所以接下來,它要提出方法來想辦法最小化期望校準誤差(ECE)。
什么原因導致神經網絡出現準確率與置信度不匹配?
然而 ECE 是沒辦法直接最小化的,因此本文嘗試著做一些探索性的實驗來觀察啥因素會使得模型的 ECE 變大。本文分別從三個方面上去進行實驗:
▲網絡復雜度對ECE的影響網絡復雜度對 ECE 的影響: 首先,作者使用兩個模型(LeNet和ResNet)分別對CIFAR-100數據集進行了訓練,準確率分別為55.1%和69.4%,ResNet 在預測性能上完爆LeNet。然而,ResNet 置信度(右圖藍色+紅色部分)的分布和準確率(右圖藍色部分)出現了嚴重的不匹配,導致二者的 Gap (紅色部分)非常大。注意完美校準模型的分布應當是藍色部分剛好和對角線重合,且沒有紅色 Gap 部分。
▲網絡的寬度和深度對ECE的影響網絡寬度和深度對 ECE 的影響: 在得知模型復雜度會影響模型的 ECE 后,作者緊接著做了網絡寬度和深度對模型 ECE 和錯誤率(Error)的影響。可以看到,在控制變量前提下,單方面的增加網絡的深度和寬度均會使得模型的 Error 降低,這是我們所期望的;然而,ECE也會同樣的隨著上升。換句話來說,一昧的增加模型復雜度能有效的提高模型的預測性能,但同樣帶來的問題是模型的 overconfidence 問題愈發嚴重。
▲歸一化和權重衰減對ECE的影響normalization 和 weight decay 對 ECE 的影響: 接著的實驗也是我們為提高模型性能經常使用的 batch normalization 和 loss regularization。左圖: 使用 batch normalization 會有效的提升模型的性能,但同時也會提升模型的 ECE。右圖: weight decay 通常用來調節 L2 正則的權重衰減系數,隨著其系數的增加相當于更多的強調模型參數 w 要盡可能的小,能有效的防止模型過擬合。該現象表明,模型越不過擬合,其ECE是越小的,也就是說模型越不會 overconfidence ;換句話說,模型對樣本的擬合程度和對樣本的置信度是息息相關的,擬合得越好,置信度越高,所以 ECE 越大。(個人理解,歡迎評論區指正~)
我們該如何對模型進行校準呢?
作者接下來又做了一個很有意思的實驗,在CIFAR-100上訓練模型500個 epoch,其中在第250個 epoch 和第375個 epoch 下調節學習率,觀察測試集上的 test error 和 test NLL 的變化情況。Test NLL 的定義如圖中所示,它其實等價于測試集上的交叉熵。這個實驗啥意思呢?我調節了一下學習率后,測試性能得到了提升,但是測試集上的交叉熵卻出現了過擬合現象(出現了反常的上升現象)。有意思的點來了! 有人肯定會 argue 不是說好本文研究的是overconfidence嘛?即模型的置信度太高而準確率過低,這里對 NLL overfitting 豈不是好事,因為負對數似然上升了等價于模型的置信度的降低了。注意:這里的 是對正確類上的置信度,而前面的實驗是對預測類的置信度 !其實認真想想,是一個意思,前面之所以 confident 很高的樣本準確率很低,正是因為其在正確類別上的置信度太低導致的!!(這部分卡了很久)
該結果可以表明,模型置信度和準確率的不匹配很大可能的原因來自于模型對 NLL 的過擬合導致的。所以,咋辦呢?最小化 NLL 唄。
此時,本文提出在驗證集上對帶 temperature 參數的 softmax 函數進行校準。即我們訓練完模型后,最小化 NLL 來學習 temperature 參數,注意到對該項的優化并不會影響模型預測的準確率,只會對模型的 confidence 進行校準。最終的結果是這樣的,詳細可參考論文。
討論
上述得實驗結果我覺得對很多研究領域都是很有啟發意義的。
模型的置信度應當是和準確率匹配的,這樣的模型我覺得才是有意義的,否則以很高置信度進行很離譜的預測錯誤的模型會讓人感覺這個模型好像什么都會、又好像什么都不會。
ECE 的指標是否能反應樣本的一些性質,例如難易程度、是否為噪聲等。
該文章是間接的去優化ECE的,能否有直接優化的形式,或者主動學習里面能否考慮這一點來挑選樣本?
后臺回復關鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺回復關鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
總結
以上是生活随笔為你收集整理的Calibration: 一个工业价值极大,学术界却鲜有研究的问题!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 打破情感分类准确率 80 分天花板!更加
- 下一篇: 对话系统答非所问?快试试这篇ACL'21