自我學習是種半監督式學習的方式,從自我訓練的方法延伸而來,希望藉由 大量的未標籤樣本,配合原先利用訓練樣本所建立出的模型及演算法,增進模型 的完整性及能力,以求訓練出更好的分類器作為未知攻擊偵測之用。
3.1.1 半監督式學習(Semi-Supervised Learning)
在機器學習的演算法中,依據訓練資料集當中資料的標籤有無,可將演 算法分為監督式學習(Supervised Learning)與非監督式學習(Unsuperv-
ised Learning),監督式學習即是依據已標籤的資料,將此作為訓練學習之用,
建立辨識分類的模型,常見的如單純貝氏(Naïve Bayes)、決策樹(Decision Tree)演算法;相反的,非監督式學習則是以不具有標籤的資料,單單以資
7
已標籤資料,以及通常較為大量的未標籤資料,配合不同的半監督式學習演 算法,來建立模型並進行辨識工作,就是種相當實用的方式。
圖 2 Supervised and Semi-Supervised Learning
3.1.2 自我訓練與協同訓練(Self-Training and Co-Training)
在半監督式的機器學習演算法中,有所謂的 Co-Training 以及 Self- Training 演算法。A.Blum[13] 等人提出了 Co-Training 的方法,利用同樣一 群擁有不同特徵集的已標籤樣本,即每個樣本都有兩種不同類型的特徵集,
分別訓練出兩個分類器,再由此兩個分類器對未知標籤的樣本進行辨識,依 照設定的係數從這些被辨識的未知樣本中挑出特定數量的自行標籤樣本,將 其加入到訓練樣本中,並重新訓練出新的分類器。[13] 也證明了此方法在 網頁內容的辨識上有非常好的成果。
V.Ng[14] 等人則透過類似 Co-Training 的概念,並加以利用 Bagging 及 Majority Voting 的方法,實作了 Self-Training,最大的差異在於所使用的 是同樣的特徵值集合,而非如 Co-Training 是以不同的特徵集訓練出不同的 分類器。Self-Training 最普遍的方式,是利用已標籤的訓練樣本建構出一個 或多個分類器,再依這些分類器對尚未標籤的樣本進行標籤的動作,並依照 所訂定的規則,例如投票機制、門檻值的設定,來決定要將哪些擁有較高信 心權值標籤的未知樣本加入到訓練樣本當中,增加訓練集中的樣本數後,再 對分類器重新進行訓練,以建立更完善的機器學習模型。
8
圖 3 Self-Training
3.1.3 自我學習(Self-Learning)
而本研究中所指的自我學習機制,則是由 J.Zhang[16] 等人,在對未知 服務的流量辨識上所採用的方法,可視為由 Self-Training 的精神所延伸發展 而成,其概念在於藉由重複對未標籤樣本集做辨識,來增加訓練集當中的惡 意樣本數目。首先利用已標籤的訓練樣本訓練出分類器,以此分類器對未標 籤樣本進行辨識且標籤,並將被辨識為惡意樣本的資料加到訓練樣本中,重 訓練新的分類器後,再以新的分類器對上一輪被辨識為普通樣本的資料加以 辨識及加上標籤,接著同樣將這些樣本中被標籤為惡意樣本的資料加到訓練 樣本,重複這樣的程序,直到沒有樣本被辨識為惡意,或是到達設定的執行 上限門檻為止。此作法的意義便在於增加原本已標籤的訓練資料中較少的惡 意樣本數,並藉由不斷重複的過程來辨識可能為惡意的樣本,以獲得更多與 惡意樣本有關的特徵與行為資訊,詳細的演算法如下。
Self-Learning Algorithm
Input
: Positive(anomaly) training setT
A、Negative(normal) training setT
N、Unlabeled data setU
、Iteration limitL
Output
: New training setT,
New classifierC
T
0 ←T
A ∪T
NCreate classifier
C
0 fromT
0Classify
U
byC
0Put positive samples classified by
C
0 intoA
19
Put negative samples classified by
C
0 intoN
1i
= 1While ( (
A
i!=∅
) && (i
<L
) )T
A ←T
A ∪A
iT
i←T
A ∪T
NCreate classifier
C
i fromT
iClassify
N
ibyC
iPut positive samples classified by
C
i intoA
i+1Put negative samples classified by
C
i intoN
i+1i
=i
+ 1return
T
i,C
i圖 4 Self-Learning 示意圖
而將此方法套用在對惡意、未知攻擊的偵測上,由第六章的實驗結果可以看 到,對於辨識結果同樣有著相當程度的改進。