基於energy score的out-of-distribution數據檢測,LeCun都說好 | NerulPS 2020

 論文提出用於out-of-distributions輸入檢測的energy-based方案,通過非概率的energy score區分in-distribution數據和out-of-distribution數據。不同於softmax置信度,energy score能夠對齊輸入數據的密度,提升OOD檢測的準確率,對算法的實際應用有很大的意義

來源:曉飛的算法工程筆記 公衆號

論文: Energy-based Out-of-distribution Detection

Introduction


 今天給大家分享一篇基於能量函數來區分非訓練集相關(Out-of-distribution, OOD)輸入的文章,連LeCun看了都說好。雖然文章是2020年的,但裏面的內容對算法實際應用比較有用。這篇文章提出的能量模型想法在之前分享的《OWOD:開放世界目標檢測,更貼近現實的檢測場景 | CVPR 2021 Oral》也有應用,有興趣的可以去看看。
 現實世界是開放且未知的,OOD由於與訓練集差異很大,使用通過特定訓練集訓練出來的模型進行預測的話,往往會出現不可控的結果。因此,確定輸入是否爲OOD並過濾掉,對算法在高安全要求場景下的應用是十分重要的。
 大部分OOD研究依賴softmax置信度來過濾OOD輸入,將低置信度的認定爲OOD。然而,由於網絡通常已經過擬合了輸入空間,softmax對跟訓練集差異較大的輸入時常會不穩定地返回高置信度,所以softmax並不是OOD檢測的最佳方法。還有部分OOD研究則從生成模型的角度來產生輸入的似然分數\(logp(x)\),但這種方法在實踐中難以實現而且很不穩定,因爲需要估計整個輸入空間的歸一化密度。
 爲此,論文提出energy-based方法來檢測OOD輸入,將輸入映射爲energy score,能直接應用到當前的網絡中。論文還提供了理論證明和實驗驗證,表明這種energy-based方法比softmax-based和generative-based方法更優。

Background: Energy-based Models


 EBM(energy-based model)的核心是建立一個函數\(E(x): \mathbb{R}^D\to\mathbb{R}\),將輸入\(x\)映射爲一個叫energy的常量。
 一組energy常量可以通過Gibbs分佈轉爲概率分佈\(p(x)\)

 這裏將\((x,y)\)作爲輸入,對於分類場景,\(E(x,y)\)可認爲是數據與標籤相關的energy常量。分母\(\int_{y^{'}}e^{-E(x,y^{'})/T}\)是配分函數,即所有標籤energy的整合,\(T\)是溫度係數。
 輸入數據\(x\in\mathbb{R}^D\)的Helmholtz free energy \(E(x)\)可表示爲配分函數的負對數:

 結合公式1和公式2就構建了一個跟分類模型十分類似的EBM,可以通過Gibbs分佈將多個energy輸出轉換爲概率輸出,還可以通過Helmholtz free energy得出最終的energy。
 對於分類模型,分類器\(f(x):\mathbb{R}^D\to\mathbb{R}^K\)將輸入映射爲K個值(logits),隨後通過softmax函數將其轉換爲類別分佈:

 其中\(f_y(x)\)\(f(x)\)的第\(y\)個輸出。

 通過關聯公式1和公式3,可在不改動網絡\(f(x)\)的情況下將分類網絡轉換爲EBM。定義輸入\((x,y)\)的energy爲softmax的對應輸入值\(E(x,y)=-f_y(x)\),再定義\(x\in\mathbb{R}^D\)的free energy爲:

Energy-based Out-of-distribution Detection


Energy as Inference-time OOD Score

 Out-of-distribution detection是個二分類問題,評價函數需要產生一個能夠判定ID(in-distribution)數據和OOD(out-of-distribution)數據的分數。因此,論文嘗試在分類模型上接入energy函數,通過energy進行OOD檢測。energy較小的爲ID數據,energy較大的爲OOD數據。
 實際上,通過負對數似然(negative log-likelihood,NLL))損失訓練的模型本身就傾向於拉低ID數據的energy,負對數似然損失可表示爲:

 定義energy函數\(E(x,y)=-f_y(x)\)並將\(log\)裏面的分數展開,NLL損失可轉換爲:

 從損失值越低越好的優化角度看,公式6的第一項傾向於拉低目標類別\(y\)的energy,而公式6第二項從形式來看相當於輸入數據的free energy。第二項導致整體損失函數傾向於拉低目標類別\(y\)的energy,同時拉高其它標籤的energy,可以從梯度的角度進行解釋:

 上述式子是對兩項的梯度進行整合,分爲目標類別相關的梯度和非目標相關的梯度。可以看到,目標類別相關的梯度是傾向於更小的energy,而非目標類別相關的梯度由於前面有負號,所以是傾向於更大的energy。另外,由於energy近似爲\(-f_y(x)=E(x,y)\),通常都是目標類別的值比較大,所以NLL損失整體傾向於拉低ID數據的energy。

 由於上述的energy特性,就可以基於energy函數\(E(x;f)\)進行OOD檢測:

 其中\(\tau\)爲energy閾值,energy高於該閾值的被認定爲OOD數據。在實際測試中,使用ID數據計算閾值,保證大部分的訓練數據能被\(g(x)\)正確地區分。另外,需要注意的是,這裏用了負energy分數\(-E(x;f)\),是爲了遵循正樣本有更高分數的常規定義。

Energy Score vs. Softmax Score

 論文先通過公式推導,來證明energy可以簡單又高效地在任意訓練好的模型上代替softmax置信度。將sofmax置信度進行對數展開,結合公式4以及\(T=1\)進行符號轉換:

 從上述式子可以看出,softmax置信度的對數實際上是free energy的特例,先將每個energy減去最大的energy進行偏移(shift),再進行free energy的計算,導致置信度與輸入的概率密度不匹配。隨着訓練的進行,通常\(f^{max}(x)\)會變高,而\(E(x; f)\)則變低,所以softmax是有偏評價函數,置信度也不適用於OOD檢測。

 論文也通過真實的例子來進行對比,ID數據和OOD數據的softmax置信度差別很小(1.0 vs 0.99),而負energy則更有區分度(11.19 vs. 7.11)。因此,網絡輸出的值(energy)比偏移後的值(softmax score)包含更多有用的信息。

Energy-bounded Learning for OOD Detection

 儘管energy score能夠直接應用於訓練好的模型,但ID數據和OOD數據的區分度可能還不夠明顯。爲此,論文提出energy-bounded學習目標,對訓練好的網絡進行fine-tuned訓練,顯示地擴大ID數據和OOD數據之間的energy差異:

\(F(x)\)爲softmax輸出,\(D^{train}_{in}\)爲ID數據。整體的訓練目標包含標準交叉熵損失,以及基於energy的正則損失:

\(D^{train}_{out}\)爲無標籤的輔助OOD數據集,通過兩個平方hinge損失對energy進行正則化,懲罰energy大於間隔參數\(m_{in}\)的ID數據以及energy小於間隔參數\(m_{out}\)的OOD數據。當模型fine-tuned好後,即可根據公式7進行OOD檢測。

Experiment


 ID數據集包含CIFA-10、CIFAR-100,並且分割訓練集和測試集。OOD測試數據集包含Textures、SVHN、Places365、LSUN-Crop、LSUN_Resize和iSUN。輔助用的OOD數據集則採用80 Million Tiny Images,去掉CIFAR裏面出現的類別。
 評價指標採用以下:1)在ID數據95%正確的\(\tau\)閾值下的OOD數據錯誤率。2)ROC曲線下的區域大小(AUROC)。3)PR曲線下的區域大小(AUPR)。

 從結果可以看出,energy score比softmax score的表現要好,而經過fine-tuned之後,錯誤就很低了。

 與其他OOD方法進行比較。

 可視化對比。

Conclustion


 論文提出用於out-of-distributions輸入檢測的energy-based方案,通過非概率的energy score區分in-distribution數據和out-of-distribution數據。不同於softmax置信度,energy score能夠對齊輸入數據的密度,提升OOD檢測的準確率,對算法的實際應用有很大的意義。



如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公衆號【曉飛的算法工程筆記】

work-life balance.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章