Categories
程式開發

利用自編碼神經網絡,檢測未標記數據集中的異常值


人工智能領域中,帶標記數據的重要性不言而喻,然而現實中的開發者們卻並不具備這樣一個帶有標記的數據集,而且未標記的數據中往往還有著異常值的存在。面對這種情況,開發者應該怎樣解決這一問題呢?本文作者Selvaratnam Lavinan 提出了一種有趣的解決方案,他利用自編碼神經網絡產生的數據,再交由“假正類Reducer”訓練,進而提高了數據的精確率和召回率,排除了數據集中的異常值。

問題與解決方案

在大多數你想用人工智能來解決的實際問題中,很可能你並沒有一個帶標記的數據集。特別是在預測異常值時,你所擁有的數據集,有可能是包含了數以百萬計的歷史數據,其中也包括異常值。如果你試圖從這樣一個未標記的數據集中檢測這些異常值 / 離群點,並且擔心沒有標記的數據集,那麼本文將為你提供一個有趣的解決方案。

一直以來,每當你遇到不均衡數據集時,訓練一個模型並使其正確擬合應該是個很大的麻煩。但現在這正是我們真正需要的。你所需要的是一個由近 1% 異常值組成的不均衡數據集。

自編碼神經網絡

利用自編碼神經網絡,檢測未標記數據集中的異常值 1

自編碼器神經網絡的架構(來源:Deep-autoencoders)

與給出多個輸入並達到一個或多個輸出的典型神經網絡不同的是,自編碼器神經網絡在輸出層和輸入層具有相同數量的神經元。這基本上意味著輸入和輸出的數量是相同的。不僅是計數,甚至它試圖預測的輸出也與輸入相同。自編碼器神經網絡的工作是將數據編碼為小代碼(壓縮),然後解碼回來,以重現輸入(解壓縮)。在上圖中,你還可以看到,輸出向量是輸入向量的近似值。這一特殊屬性使我們能夠將其用於未標記的數據庫。

自編碼神經網絡通常用於計算機視覺到自然語言處理的降維。要了解更多有關自編碼器神經網絡的知識,請參閱維基百科的“自編碼器”詞條。

未標記數據集是怎麼回事?

由於我們試圖用這個模型再現輸入,因此,最適合的損失函數是均方誤差(mean square error,MSE)。在訓練模型時,該模型試圖做的工作是將 MSE 最小化。為了將 MSE 最小化,它應該盡可能地對數據集進行擬合,也就是說,它應該盡可能地重現許多數據。在我們的案例中,由於數據集是由99% 的正常數據和只有1% 的異常數據組成,所以在訓練時模型會忽略一小部分數據,並擬合其餘99% 的數據,因此,MSE 是非常非常小的。這是背後的核心邏輯,這使得使用它來預測異常(即使是未標記的數據集)成為可能。

如何預測異常?

在訓練模型時,它將學習正常數據的特徵,並將其壓縮成一個小元素,然後將其解碼回輸入,並有一個小錯誤。當一個異常通過模型發送時,它將無法重現這個異常,因為它被訓練為僅重現正常數據,並最終會產生較大的 MSE。我們需要做的是,計算輸出與輸入的 MSE,並通過檢查輸出來正確區分異常,根據需要設置 MSE 的閾值,這樣它就有良好的預測精確率和召回率。

不止這些

在大多數情況下,通過不斷調整超參數並檢查輸出以得到最佳閾值,很難得到完全令人滿意的結果。但是,我們還有更多的選擇。

利用自編碼神經網絡,檢測未標記數據集中的異常值 2

兩個神經網絡疊加在一起,以提高精確率和召回率。

High Recaller

即使我們用成千上萬的數據來訓練它,我們得到的異常值也只有幾百個。因此,現在可以通過手動檢查異常輸出,並將其中一些標記為假正類(false positive,FP,即模型將負類別樣本錯誤地預測為正類別)是可能的。因此,我們可以讓自編碼器神經網絡模型作為 High Recaller。這意味著將閾值保持在較低的水平,這樣,幾乎所有的實際異常都能被檢測到(高召回率),同時,還有其他的假正類異常(低精度)。

譯註: 此處的 High Recaller 是作者生造詞,是指提高召回率的模型。

現在,我們有了一個小數據集,可以手動將其標記為負類(false),並保持其餘數據為正類(true)。對於這個手工標註的數據集,讓我們引入一個新的人工神經網絡模型。

假正類 Reducer

利用現有的數據集,我們可以選擇一個神經網絡,或者基於復雜性,甚至是隨機森林或任何其他典型的機器學習模型,我們都可以簡單地對其進行訓練。

譯註: 此處 Reducer 也是作者生造詞,意即減少假正類的模型或方法。

實時預測

現在我們需要做的就是,將這些模型疊加起來,以便在實時預測中,那些由高召回率模型(自編碼神經網絡)預測為異常的那些通過假正類減少模型(人工神經網絡)發送出去。這種神經網絡的結合給我們提供了一個具有高召回率和高精度的深度神經網絡模型

作者介紹:

Selvaratnam Lavinan,斯里蘭卡 Sysco 實驗室實習軟件工程師,斯里蘭卡莫拉圖瓦(Moratuwa)大學電子與通信工程系本科生。

原文鏈接:
https://towardsdatascience.com/autoencoder-neural-network-for-anomaly-detection-with-unlabeled-dataset-af9051a048