天天看點

面向開放環境的機器學習—樣本類别增加參考文獻往期回顧(與該文章相關的往期公衆号文章)

摘要

機器學習在很多領域展現出其獨特的優勢,在過去的很多年裡,我們關注更多的是封閉環境下的機器學習,即靜态地收集資料并訓練模型,但是在現實生活中越來越多地遇到開放環境下的任務,比如資料分布、樣本類别、樣本屬性、評價目标等都會發生變化,這就需要模型具有較好的魯棒性。本文重點關注流式資料中樣本類别增加的問題,并給讀者介紹一種可行的解決方法。

一、前言

傳統的機器學習研究,大部分基于封閉靜态的環境,此時在做機器學習分類任務的時候,會做一系列假設。首先假定資料分布恒定,即訓練資料和預測資料來自獨立同分布,其次假定樣本類别恒定,即能預測資料的類别不能有别于訓練集中的類别;然後假定樣本屬性恒定,即訓練好的模型隻适用于訓練集中給定的屬性空間;最後假定評價目标恒定。

但是現實生活并不是這樣,我們會遇到越來越多開放環境下的任務,在封閉環境下做的假設可能都會被推翻。我們以網絡流量為例,在不同的網絡環境中,資料分布會發生變化,用某個網絡環境下的資料訓練的模型可能并不适用于另一個網絡環境,比如随着時間的推移,惡意流量的類别會越來越多,之前訓練的固定類别的模型不能檢測新出現的惡意類别,再比如随着攻防的更新,攻擊者可能對之前暴露出來的特征進行隐藏,惡意流量的屬性空間發生變化。在這些情況下,模型的魯棒性就變得尤為重要。

在過去的很多年裡,我們關注更多的是模型的精确度,比如将模型的精度從97%提升到99%,在封閉環境下模型的表現固然重要,但在更多的現實任務中,模型的魯棒性直接決定客戶的體驗,特别是在一些高風險應用,比如自動駕駛、智慧醫療等領域,相比之下,網絡安全領域的風險雖然沒有那麼高,但是客戶對誤告的容忍度卻不那麼高,如果魯棒性差可能直接導緻模型的準确率下降到無法使用的程度。

本文關注樣本類别的增加,考慮的情況是,在資料流分類問題上,随着環境的變化,流式資料中可能會出現新類,如果使用先前訓練好的模型對資料流中未見過的類執行個體進行分類,其預測精度将嚴重降低。理想情況下,我們希望新類的執行個體在資料流中出現時就被檢測到,隻有可能屬于已知類的執行個體才被傳遞給模型進行預測。最關鍵的是,在學習新類别的同時,不能将舊類學到的東西忘掉。

二、算法介紹

本節介紹應對流式資料中出現新類的一種算法,即SENCForest[1],它由SENCTree組成,為資料流中的每一個執行個體配置設定一個類标簽,即新類或已知類的一種。對于資料流中的每個測試執行個體,檢測器作為過濾器來确定它是否屬于一個已知類,如果是,則将資料執行個體傳給分類器以産生類預測,否則,這個執行個體将被作為一個新類存儲在以前從未見過的候選類的緩沖區中,當緩沖區滿時,這些候選執行個體将被用于更新模型。在模型更新之後,上述過程在資料流中重複。

具體來說,首先,為新出現的類訓練一個檢測器,即給定已知類的初始訓練集,訓練無監督異常檢測器SENCForest;然後,使用已知的類資訊由檢測器建構分類器,并在資料流中進行部署,一旦訓練完成,訓練集将被丢棄;最後,當緩沖區滿時使用緩沖區中的執行個體對模型進行更新,将相同的樹生長過程應用于現有樹的每個葉子,即替換執行個體數量超過限定值的葉節點;此外,為了保持模型大小,在更新的過程中還使用了SENCForest引退機制。下面介紹實作細節。

2.1從流資料中檢測異常

>>>>

2.1.1 建立一個iForest

無監督異常檢測器iForest是由孤立樹iTree組成的孤立森林。建構每一個iTree是為了将每個執行個體從訓練集中孤立出來,核心思想是異常執行個體符合“少”和“不同”這兩個特點,是以比正常執行個體更容易被孤立。是以,在iTree中可以使用比正常執行個體更少的分區來孤立異常。

使用完全随機的過程建立iTree,每個iTree都使用給定訓練集中随機選擇的子樣本生成。具體做法是,給定一個大小随機的子樣本,随機選擇一個屬性并在其最小值和最大值之間随機選擇一個切分點産生一個分區。分區過程會遞歸地重複,直到子樣本中的每個執行個體都被孤立。

>>>>

2.1.2 确定路徑長度門檻值

對于新類和已知類的異常,都在iTree中路徑長度較短的區域内,我們将這類區域稱為異常區域A,以差別于路徑長度較長的正常區域K。

為了檢測新出現的類,我們首先需要确定一個路徑長度門檻值來區分A和K,然後在每個A區域内建立一個子區域B,如圖1所示,子區域B覆寫了該區域内的所有訓練執行個體,因為這些執行個體來自已知的類,是以它們是已知類的異常。

面向開放環境的機器學習—樣本類别增加參考文獻往期回顧(與該文章相關的往期公衆号文章)

圖1 離群異常分區的建構

由于iTree中的每個區域都有自己的路徑長度,而異常區域A的路徑長度預計比正常區域K的路徑長度要短。為了區分這兩類區域,确定路徑長度門檻值的方法是,将iTree中所有區域的所有路徑長度按升序排列,生成一個清單L,然後使用門檻值τ産生兩個子清單,即左子清單Ll和右子清單Lr。使用在标準差σ上的最小化差異确定最佳門檻值,具體公式如下所示:

面向開放環境的機器學習—樣本類别增加參考文獻往期回顧(與該文章相關的往期公衆号文章)

如圖2所示,使用iTree展示了清單L及其SDdiff(=|σ(Lr)−σ(Ll)|)曲線的累積分布示例,其中最小SDdiff點用于劃分正常區域和異常區域。

面向開放環境的機器學習—樣本類别增加參考文獻往期回顧(與該文章相關的往期公衆号文章)

圖2 路徑長度門檻值的确定

2.2判斷異常是否屬于新類

>>>>

2.2.1 建構“離群”異常分區

在确定後,使用樹中每個區域A的所有訓練執行個體構造球B,區域B為已知類的異常區域。當在每個SENCTree的所有A區域都建構了B,SENCForest的第一個功能是一個無監督檢測器,可以檢測新出現的類的執行個體。一個屬于A但在B之外的測試執行個體是一個“離群”的異常,即一個正在出現的新類的執行個體。

>>>>

2.2.2 由檢測器生成分類器

要使SENCForest具有分類器的功能,我們需要使用訓練子樣本在每個K或B區域記錄類的分布,這是唯一需要類标簽的步驟。一旦訓練步驟完成,SENCForest就可以部署到資料流中。

>>>>

2.2.3 在資料流中部署

給定一個測試執行個體,SENCForest會産生一個類标簽,如果測試執行個體位于A區域但不在B區域,則輸出為“NewClass”,否則輸出為已知類的一種。

值得注意的是,盡管SENCForest可以檢測任意數量的新類的執行個體,但為了更新模型,它們被分組到新類“NewClass”中。在本文的其餘部分,我們将重點關注一個時期内一個新類的模型更新(但多個新類可能出現在一個資料流的不同時期)。

如果SENCForest的輸出為“NewClass”,這個執行個體會被放在緩沖區中,當數量達到緩沖區大小時,這些執行個體用于更新分類器和檢測器。一旦這些更新完成,緩沖區将重置。

2.3更新模型

模型的更新有兩種機制,一種是在SENCTree中生長一個子樹,另一種是生長多個SENCForest。

>>>>

2.3.1 在SENCTree中生長一個子樹

用緩沖區更新SENCForest是一個簡單的過程,使用從緩沖區中随機選擇的執行個體更新每棵樹中的每個葉節點。每個節點上的更新涉及到用一個新生長的子樹進行替換,或者對類頻率進行簡單的更新,以包含新類。

如果屬于葉子節點的執行個體總數超過限定值,則需要增長一個子樹。示例如圖3所述,在左上角的圖中,三個新出現的類執行個體(綠色三角形)落在SENCTree的節點1中,一個新的子樹是通過僞執行個體(由于沒有存儲訓練集,是以對葉子節點生成僞執行個體)和新類的執行個體建構的,在左下角的圖中,節點1被替換為這個新的子樹。每個葉節點都經曆相同的過程。

面向開放環境的機器學習—樣本類别增加參考文獻往期回顧(與該文章相關的往期公衆号文章)

圖3 用經過訓練的子樹替換葉節點

更新過程保留了原始的樹結構,葉節點中的所有僞執行個體仍将被放置到新生長的子樹的單個葉節點中。是以,在模型更新過程中,對已知類的預測不會改變。

一旦每棵樹都完成了模型更新,就會重新計算。

>>>>

2.3.2 生長多個SENCForest

當SENCForest中的類數量達到一定值時,它的SENCTree将停止為任何新出現的類而生長。一個新的SENCForest是為出現的新類而生長的。在一個有多個SENCForest的模型中,隻有當所有SENCForest都預測一個執行個體屬于新類時,最終的預測才是新類。否則,最終的預測是已知的某個類。

2.4引退機制

随着資料流不斷增多,SENCForest在以下場景被引退。

(1)當SENCForest在一段時間内不用于預測已知的類時,它将被用于任何未知類的預測,即長期輸出“NewClass”的SENCForest将被淘汰;

(2)如果SENCForest的數量已經達到預設的限制,并且根據(1)沒有SENCForest可以引退,那麼選擇在最後一段時期中對已知類做出最少預測的SENCForest進行引退。

三、小結

本文介紹了一種在流式資料中解決樣本類别增加的方法,首先從流資料中檢測異常,然後判斷異常是否屬于新類,最後對模型進行更新。在初始訓練之後不需要任何标簽,也不需要存儲初始訓練集,相較其他方法,SENCForest在KDDCup99、MNIST等資料集上表現出更優的性能。該方法的優勢在于,不僅能區分已知類異常和新類執行個體,以高精度檢測出新類,而且能在記憶體有限環境下的長流中有效地運作。

參考文獻

[1] Xin M , Kai M T , Zhou Z H . Classification Under StreamingEmerging New Classes: A Solution Using Completely-Random Trees[J]. IEEETransactions on Knowledge & Data Engineering, 2017, 29(8):1605-1618.

往期回顧(與該文章相關的往期公衆号文章)

加密代理篇:

《初探加密流量識别》

加密惡意流量篇:

《基于深度學習的物聯網惡意軟體家族細粒度分類研究》

《關于惡意軟體加密流量檢測的思考》

《加密惡意流量優秀檢測思路分享》

加密webshell篇:

《【冰蠍全系列有效】針對HTTPS加密流量的webshell檢測研究》

《HTTP、HTTPS、加密型webshell一網打盡》

關于天樞實驗室

天樞實驗室聚焦安全資料、AI攻防等方面研究,以期在“資料智能”領域獲得突破。

内容編輯:天樞實驗室 王萌 責任編輯:王星凱

本公衆号原創文章僅代表作者觀點,不代表綠盟科技立場。所有原創内容版權均屬綠盟科技研究通訊。未經授權,嚴禁任何媒體以及微信公衆号複制、轉載、摘編或以其他方式使用,轉載須注明來自綠盟科技研究通訊并附上本文連結。

關于我們

綠盟科技研究通訊由綠盟科技創新中心負責營運,綠盟科技創新中心是綠盟科技的前沿技術研究部門。包括雲安全實驗室、安全大資料分析實驗室和物聯網安全實驗室。團隊成員由來自清華、北大、哈工大、中科院、北郵等多所重點院校的博士和碩士組成。

綠盟科技創新中心作為“中關村科技園區海澱園博士後工作站分站”的重要培養機關之一,與清華大學進行博士後聯合培養,科研成果已涵蓋各類國家課題項目、國家專利、國家标準、高水準學術論文、出版專業書籍等。

我們持續探索資訊安全領域的前沿學術方向,從實踐出發,結合公司資源和先進技術,實作概念級的原型系統,進而傳遞産品線孵化産品并創造巨大的經濟價值。