杜倫大學提出GANomaly:無需負例樣本實現異常檢測


杜倫大學提出GANomaly:無需負例樣本實現異常檢測

本期推薦的論文筆記來自 PaperWeekly 社區用戶 @TwistedW。在異常檢測模塊下,如果沒有異常(負例樣本)來訓練模型,應該如何實現異常檢測?本文提出的模型——GANomaly,便是可以實現在毫無異常樣本訓練下對異常樣本做檢測。

關於作者:武廣,合肥工業大學碩士生,研究方向為圖像生成。

■ 論文 | GANomaly: Semi-Supervised Anomaly Detection via Adversarial Training

■ 鏈接 | https://www.paperweekly.site/papers/2293

■ 源碼 | https://github.com/samet-akcay/ganomaly

異常檢測(Anomaly Detection)是計算機視覺中的一個經典問題,生活中大部分的數據是正常數據,有很少一部分屬於異常數據,在很少的異常下如何檢測出異常是一個困難的課題,甚至不知道什么是異常,只知道不屬於正常的就算異常的話又如何檢測異常呢?GANomaly 便是可以實現在毫無異常樣本訓練下對異常樣本做檢測,我們一起來讀一下。

論文引入

在計算機視覺上大部分的檢測任務的前提是需要大量的標記數據做訓練,這雖然在成本上耗費巨大,但是在實驗效果上確實有很大的突破,目前的目標檢測技術已經上升到近乎實時檢測的效果了,背后的人力和成本也是可想而知的。

在龐大的目標檢測背景下,異常檢測算是一個特立獨行的分支,雖然只是判斷正常和異常兩種情況(二分類問題),但是往往異常樣本特別的少,如果從特征提取上區分正常和異常的話,由於訓練樣本過少或者說是訓練樣本比例太不平衡(正常樣本特別多)往往會導致實驗結果上不盡如人意。 

異常檢測的發展在深度學習的浪潮下得到了很快的發展,基於 CNN,RNN、LSTM 技術上已經取得了一定的成效。隨着 GAN 的提出,對抗的思想越來越引人注意,利用 GAN 做異常檢測的文章在實驗上有了一定的突破,從 AnoGAN [1] 學習到正常樣本的分布,一旦送入異常樣本數據發生改變從而檢測出異常,這種方法的局限性很強,往往也會帶來計算成本的昂貴(需要嚴格的控制先驗分布 z)。在此基礎上,為了找到更好用作生成的先驗分布 z,在 AnoGAN 的基礎上提出了 Efficient-GAN-Anomaly [2] 同樣由於做個一次重新映射導致計算成本上也是龐大的。 

GANomaly 算是在前兩篇文章的基礎上做了一次突破,不再比較圖像分布了,而是轉眼到圖像編碼的潛在空間下進行對比。對於正常的數據,編碼解碼再編碼得到的潛在空間和第一次編碼得到的潛在空間差距不會特別大。但是,在正常樣本訓練下的 AE 用作從未見過的異常樣本編碼解碼時,再經歷兩次編碼過程下往往潛在空間差距是大的。

當兩次編碼得到的潛在空間差距大於一定閾值的時候,我們就判定樣本是異常樣本,這就是 GANomaly 的思路。我們以此對比一下以 GAN 為發展下的異常檢測模型,模型結果如下,上述已對其做了一定的分析。

GANomaly 的優勢總結一下:

  • 半監督異常檢測:編碼器-解碼器-編碼器流水線內的新型對抗自動編碼器,捕獲圖像和潛在向量空間內的訓練數據分布;

  • 功效:一種有效且新穎的異常檢測方法,可在統計和計算上提供更好的性能。

GANomaly模型

我們還是先看一下模型框架:

GANomaly 模型框架是蠻清晰的,整個框架由三部分組成:

GE(x),GD(z) 統稱為生成網絡,可以看成是第一部分。這一部分由編碼器 GE(x) 和解碼器 GD(z) 構成,對於送入數據 x 經過編碼器 GE(x) 得到潛在向量 z,z 經過解碼器 GD(z) 得到 x 的重構數據 x̂ 。

模型的第二部分就是判別器 D,對於原始圖像 x 判為真,重構圖像 x̂ 判為假,從而不斷優化重構圖像與原始圖像的差距,理想情況下重構圖像與原始圖像無異。

模型的第三部分是對重構圖像 x̂ 再做編碼的編碼器 E(x̂) 得到重構圖像編碼的潛在變量 ẑ。 

在訓練階段,整個模型均是通過正常樣本做訓練。也就是編碼器 GE(x),解碼器 GD(z) 和重構編碼器 E(x̂),都是適用於正常樣本的。

當模型在測試階段接受到一個異常樣本,此時模型的編碼器,解碼器將不適用於異常樣本,此時得到的編碼后潛在變量 z 和重構編碼器得到的潛在變量 ẑ 的差距是大的。我們規定這個差距是一個分值,通過設定閾值 ϕ,一旦 A(x)>ϕ 模型就認定送入的樣本 x 是異常數據。 

網絡損失 

對於模型的優化,全是通過正常樣本實現的,網絡損失也可分為三部分。標准 GAN 的損失大家相比都很清楚了,這里不重復寫。對於第一部分的生成網絡下,文章給定了一個重構誤差損失,用於在像素層面上減小原始圖像和重構圖像的差距。

對於第二部分判別器下,設置了一個特征匹配誤差,用於在圖像特征層方面做優化,這部分損失其實已經在很多文章中都用到過。

對於第三部分重構圖像編碼得到的潛在變量 ẑ ,這部分對於正常數據而言,希望得到的 ẑ 與原始數據直接編碼得到的 z 無差別最好,也就是對於最好的得分判斷,對於正常數據而言理想狀態下希望。當然這是最理想的狀態,但是對於正常數據還是希望 A(x) 越小越好,所以引入了一個潛在變量間的誤差優化。

訓練過程中只有正例樣本參與,模型只對正例樣本可以做到較好的編碼解碼,所以送入負例樣本在編解碼下會出現編碼得到的潛在變量差異大從而使得差距分值 A(x) 大,判斷為異常。對於模型,整個損失函數可以表示為:

這里的 ωadv,ωcon,ωenc 是調節各損失的參數,可以根據具體實驗設置。

模型測試 

模型測試過程中以正負樣例 D̂ 混合輸入,對於測試樣本下的得分 S 可記為具體的判斷異常分數進行一個歸一化處理將其整合到 [0,1] 之間。

這里的就是最終的異常得分,對於正常樣本理論上希望,對於異常樣本理論上希望。需要一個閾值 ϕ 來衡量這個標准,經過源碼分析,一般的 ϕ=0.2 可以根據實際項目需要對 ϕ 做調整。

GANomaly實驗

實驗在 MNIST,CIFAR10 上選取部分類別做正樣本,選取一些類別作異常樣本,測試模型是否能夠檢測出異常樣本並給出准確率。文章的衡量標准是以 AUC 為判斷。實驗對比了三種以 GAN 做異常檢測的模型以及 VAE 的結果,通過 AUC 分析可以看出 GANomaly 取得了不錯的優勢。

實驗還對大件行李異常數據集(University Baggage Anomaly Dataset - (UBA))做了實驗,數據集包括 230275 個圖像塊,圖像從完整的 X 射線圖像中提取,異常類別(122803)有 3 個子類 - 刀(63,496),槍(45,855)和槍組件(13,452),對於另一個數據集選擇了槍械檢測(FFOB)。

對於潛在變量的選取,以及超參的確定也通過實驗選取:

最后來看一下正常樣本和異常樣本重構的對比,可以看出異常樣本在重構上已經和原始有了較大的差別了,所以編碼得到的潛在變量自然會產生差異,從而判斷出異常。

總結

GANomaly 以編碼器-解碼器-編碼器設計模型,通過對比編碼得到的潛在變量和重構編碼得到的潛在變量差異,從而判斷是否為異常樣本。文章在無異常樣本訓練模型的情況下實現了異常檢測,對於很多場景都有很強的實際應用意義。個人感覺文章對於異常分數的計算和判斷可再進一步優化,從而實現更好的異常檢測效果。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM