在現實生活中,有越來越多正負樣本不均的情況,像是瑕疵檢測、癌症預測等,這些狀況可能會是幾萬筆資料中只有幾筆資料的懸殊比例,使用目前常見的CNN Classifier會難以檢測,正負樣本過度懸殊會使分類器學習資料量多的類別來達到較高的準確率,資料量少的類別幾乎無法被檢測出。
使用Class Weight或是Focal Loss也會難以平衡正負樣本的懸殊差異,因此此篇論文單純使用正樣本訓練模型,並可以區分出正樣本及負樣本(異常檢測abnormal detection)。
Deep SVDD
上圖左方為原始數據點,有兩種資料,黑點及白點,希望做異常檢測(abnormal detection),黑點為正樣本,白點為負樣本。Deep SVDD就是希望將數據經過模型後,轉換原始數據的空間分布,最後轉換為右方圖片的狀況,使正樣本(黑點)皆位在圓心c,半徑R的圓中(高維度空間中稱為超球面),而位在球外的即為負樣本,因此此模型就可以對數據分類。
soft-boundary Deep SVDD
soft-boundary Deep SVDD對數據有設定情境,數據中可能包含異常數據(負樣本),且數據無標籤,且人為無法直接判斷哪些是異常數據。對數據假設正樣本皆非常相似,且與負樣本有一定的差異性。
優化函數
模型的目標為最小化以上公式,R為圓之半徑,c為圓心,W為神經網路之權重,ψ(xi;w)為將資料轉換之神經網路,可以分為三個部分解釋:
第一項為最小化R,其意義為最小化圓的範圍,盡量將所有正樣本集中,將負樣本遠離圓,並且可以用此半徑區分正負樣本。
第二項為懲罰項,當數據在圓外時,懲罰項會變大;數據位於圓內時,懲罰項為0,最小化懲罰項會希望將所有數據為於圓內。但數據內可能會有錯誤標註的狀況,將所有數據轉換至圓內可能有誤。
有誤的狀況為將負樣本視為正樣本,因此轉換後會位於圓內,懲罰項為0,但這樣會使懲罰項變小,因此在此項前多加1/V,加大懲罰項。V範圍為(0, 1]
第三項為權重之正則化,避免網路overfitting,λ>0,1/2在計算梯度時(一階微分)可以消除。
One-Class Deep SVDD
One-Class Deep SVDD則是所有資料皆是正樣本,較為簡單的情況,因此可以直接計算正樣本的誤差。
第一項不用像soft-boundary考慮正樣本錯誤問題,直接使所有資料盡可能接近圓心,將所有數據集中等同於最小化R,因此計算此項就好,最小化判斷邊界。
第二項則是與soft-boundary相同,正則化權重。
測試Testing
訓練玩模型後,我們可以直接計算數據到圓心的距離,即為該數據之分數,如下:
並用此距離配合閥值(圓半徑R),小於閥值為位於圓內的情況,判斷為正樣本,負樣本則相反,以此區隔正負樣本。
訓練Training
One-Class Deep SVDD直接利用SGD訓練網路;soft-boundary Deep SVDD則是需要較多步驟,先固定R,訓練網路權重,接著再根據訓練過的權重更新R,重複迭代,更新網路。
特性Properties
作者介紹了四個特性,前三個特性避免超球面無法建立的狀況:
1.所有權重Weight皆為0
當圓心位於圓點0時,會使網路輸出往0移動,而在所有資料皆為正樣本的狀態下(無負樣本),將所有權重設為0是正確解答,可以使所有資料直接位於圓心,但此網路就無作用,因此不能將圓心設於圓點。
2. 不能有偏差項Bias
這個特性與第一個特性雷同,將圓心不設置於圓點,但存在Bias時,也可能會使所有權重為0,所有資料靠Bias映射至圓心,此模型也無效。
3. 不能使用有邊界之Activation Function
假設使用有邊界的Activate Function(Sigmoid、tanh),可能會使權重將數據作用於飽和區,使該層輸出為常數,等同於Bias,即會跟第二個特性相同,造成模型無效。
4. ν-property
其證明過程目前還不太了解,而v的意義為控制所有正樣本中包含多少錯誤樣本(負樣本),允許多少樣本位於超球面外,在訓練時直接加入資料之先驗”訓練數據中異常數據的占比”。