1. 程式人生 > 其它 >A Simple Unified Framework for Detecting Out-of-Distribution Samples and Adversarial Attacks

A Simple Unified Framework for Detecting Out-of-Distribution Samples and Adversarial Attacks


發表時間:2018(NeurIPS 2018)
文章要點:這篇文章提出了一個對分類任務檢測異常點的方法。文章首先說異常點可以有兩類,一類是OOD(out-of-distribution),一類是對抗樣本(adversarial samples)。很多方式只能檢測一種,不能兩種一起。作者這種方法對這兩類異常點都適用,並且更加穩健,取得了SOTA的效果。具體的,作者通過神經網路最後一層隱藏層構造特徵向量,然後用高斯判別分析(Gaussian discriminant analysis)建立各個類別的均值和協方差

有了這個,就相當於有了一個分類器,並且對每個類的聚類中心和協方差都有了一定估計。
然後基於馬氏距離(Mahalanobis distance)計算一個得分

判別一個點是不是異常點就是先找這個點最近的那個分類,然後根據上式計算得分,然後根據得分閾值判斷是不是異常點。閾值具體咋設的,文章沒說。
此外,還可以把ensemble加上,就是說不僅僅用神經網路的最後一層,中間層也可以用來做高斯判別,然後計算得分,然後所有得分加權。
最後作者還說了,可以用在class-incremental learning問題上面,就是預訓練的模型只有一部分分類任務,後面新來了新的類,可以直接用這個網路提取特徵向量,用高斯判別生成這個新類的均值和協方差,和之前的類的均值和協方差放到一起,接下來檢測異常值就和之前一樣了。

總結:

感覺主要的點就是基於已經訓好的神經網路再新訓練一個基於高斯分佈的分類器,這樣就相當於把神經網路無法解釋的東西弄成了一個多元高斯分佈,有了這個分佈的假設,用距離的方式判別異常值就變的可以做了。挺有道理的。
疑問:為啥對樣本做預處理的時候要加個噪聲,會不會有作弊的嫌疑?整個程式碼隨機種子都只用了一個,如果實驗結果是基於這個隨機種子調參得出來的,那改個種子大概率不能復現了。另外,從程式碼上看,閾值是訓邏輯迴歸做的,訓的時候還用了OOD的樣本作為負樣本,這感覺有點明著作弊了啊。