這篇文章是李宏毅老師的在線課程youtube.com/watch? 的筆記內容,推薦大家去看原視頻。

異常檢測,簡單的說,就是給定一個訓練集 {x^1, x^2,...,x^N}

我們希望可以找到一個函數,是的可以檢測Input x是否和訓練集相似。

我們找出來的內容是與訓練數據集不太一致的內容。

異常檢測的應用

異常檢測有很多應用,比如

  • 欺詐檢測:信用卡刷卡行為
  • 網路侵入檢測:哪些是正常連線,哪些是攻擊行為?
  • 癌細胞檢測

一個很直覺的想法是收集一堆異常數據,收集一堆正常數據,然後來做二分類?問題沒有那麼簡單。一般來說,收集異常的資料比較困難。比如就信用卡偵測,多數的資料都是正常的交易,而異常的數據非常難收集。針對這些問題,會有各種各樣的上採樣、下採樣方法,數據增量的策略。不過這篇文章先不涉及這些啦,之後再慢慢解釋。

異常檢測會有三種,一種是每一筆數據都有label,但是當遇到新數據時,如果說新數據不屬於之前的任何一類,分類器要能夠把這一類標註為"unknown",一個是所有的訓練數據都是正例。第三種是手上的資料都是正常的,但是有一部分是異常的混了進來。

使用分類器來做異常檢測

最常用的異常檢測方法,就是使用分類器來做異常檢測的原理是,分類器不但需要輸出類別,還會輸出一個置信度c,然後異常檢測的時候

f(x)= egin{equation}   left{                egin{array}{**lr**}                normal, &c(x)geq lambda  \               anomaly, &c(x)leq lambda.\                end{array}   
ight.   end{equation}

像下面這張圖片,這個分類器是用來判斷圖片是否是辛普森家庭的。根據最大的類別的分數,可以確定是否是異常。

那麼這就是論文Network for Confidence Estimation的內容啦,就是用分類器產出置信度

使用分類器帶來的問題

比如說我們看看下圖,雖然說貓貓和狗狗的確可以通過分類器辨別開,但是接收到一些新事物,比如說老虎,狼等具有和分類器能辨別的類別類似的對象時,可能會產生誤判。

針對這點,現在的理論說通過GAN的方式來生成一些異常的數據。

無監督學習

假設我們的數據是沒有標籤的,那麼異常檢測又怎麼做呢?

我們的做法是,假設我們的數據是從一個分佈 f_	heta(x) sample出來的,我們需要找到一組 參數	heta ,使得在這組參數下,這個分佈能夠產生出這組數據的可能性最大。也就是計算這組數據的最大似然:

L(	heta) = f_{	heta}(x^1)f_{	heta}(x^2)...f_{	heta}(x^N)

我們要找到一組 	heta ,讓上式中的 L(	heta) 最大,也就是找到 	heta^* , 使得

	heta^* = argmax_	heta L(	heta)

那麼f(x) 又長什麼樣呢?我們常用的一個是高斯分佈,也就是:

f_{mu,sum}(x) = frac{1}{(2pi)^{D/2}} frac{1}{|sum|^{1/2}}exp{-frac{1}{2}(x-mu)^TSigma^{-1}(x-mu)}

這個公式可以看成輸入一個向量x, 輸出的是該條件分佈產生x的概率。這個公式是由 mu, Sigma 這兩個參數來決定的,這兩個參數也就是上文我們說的 	heta 。也就是說,上式中的最大似然計算公式變為:

L(mu, Sigma) = f_{mu, Sigma}(x^1)f_{mu, Sigma}(x^2)...f_{mu, Sigma}(x^N)

然後我們窮舉所有找到的 mu, Sigma ,看看那一組可以使得 L(mu, Sigma) 最大,也就是:

mu^*, Sigma^* = argmax_{mu, Sigma}L(mu, Sigma)

如果是下圖,則可以看到在密集區域的 mu 的最大似然會比在稀疏區域找到的 mu 會有更大的最大似然

一般來說,其實 mu, Sigma 的計算是有公式的啦。這一塊的內容涉及概率統計,有興趣的同學可以再去看看。

mu^* = frac{1}{N} sum_{n=1}^N x^n\ Sigma^* = frac{1}{N} sum_{n=1}^N(x-mu^*)(x-mu^*)^T \

我們找到了這組參數後,就可以來做異常檢測了。 其實和有監督的異常檢測是類似的。

f(x)= egin{equation}   left{                egin{array}{**lr**}                normal, &f_{mu^*, Sigma^*}(x)geq lambda  \               anomaly, &f_{mu^*, Sigma^*}(x)leq lambda.\                end{array}   
ight.   end{equation}

其餘的辦法:Auto-Encoder

還有一些別的方法,比如說Auto-Encider等。訓練的時候,同時訓練Encoder 和Decoder,就是把輸入進行Encoder解碼成一個向量後,再通過Decoder解回來。如果是異常的圖片,還原度就會很低,如果是正常的圖片,則還原度會高。

異常檢測的評估指標

異常檢測的case中,往往數據集非常不均衡。異常的資料要遠少於正常的資料。如果用常用的分類指標accuracy來衡量的話,那麼一個把所有的內容都判別為正例的系統(其實完全沒有起作用)也能有很高的accuracy。所以一般我們會用TPRFPR的指標來看,而真正例和假正例會根據系統的不同狀況乘上不同的權重。比如說如果做癌症檢測,那麼查全率更加重要。當然還有ROC curve這樣的指標也很常用。


推薦閱讀:
相關文章