費(fèi) 艷,繆騫云,2,劉學(xué)軍
1(南京工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,南京 211816)
2(南瑞集團(tuán)有限公司(國網(wǎng)電力科學(xué)研究院),南京 210003)
基于協(xié)同過濾的推薦已經(jīng)成為解決現(xiàn)代互聯(lián)網(wǎng)上信息過載的有效途徑之一,目前已經(jīng)被廣泛應(yīng)用于電子商務(wù)領(lǐng)域.但是,協(xié)同過濾推薦系統(tǒng)本身所具有的高度開放性,使得惡意攻擊用戶極容易利用這一點(diǎn),為攻擊系統(tǒng)而注入大量的虛假用戶概貌,一方面極力偽裝成正常用戶的鄰居用戶,另一方面?zhèn)卧煊脩魧τ陧?xiàng)目的虛假評分信息,試圖令推薦系統(tǒng)有利于攻擊用戶,產(chǎn)生虛假的推薦.
目前大多托攻擊檢測方法都是采用人工方式來提取用戶特征,認(rèn)為攻擊概貌與真實(shí)概貌在評分方式上有著顯著的差異,并將其作為特征屬性來區(qū)分出攻擊用戶并剔除,但是,人工特征往往有很大局限性:1)攻擊者為了避免被檢測出來,往往會(huì)模仿真實(shí)用戶的評分行為,使得人工特征的區(qū)分能力降低;2)不同的攻擊類型往往需要采用不同的特征指標(biāo),而構(gòu)建合適的特征指標(biāo)往往是非常困難的,而且,也需要較高的知識(shí)成本.在混合攻擊、類型未知的攻擊中,構(gòu)建人工特征就更為困難,但是,特征工程的質(zhì)量卻很大程度上決定了檢測性能.因此,采用自動(dòng)、半自動(dòng)策略提取用戶特征已經(jīng)引起人們的關(guān)注.
深度神經(jīng)網(wǎng)絡(luò)具有非常強(qiáng)的計(jì)算能力以及非線性映射等優(yōu)點(diǎn),在手寫數(shù)字識(shí)別、模式識(shí)別等分類問題中有著廣泛的應(yīng)用,同時(shí)也適用于多變的攻擊檢測環(huán)境.因此,本文引入卷積自動(dòng)編碼器從原始的評分矩陣中自動(dòng)提取特征,降低分析和設(shè)計(jì)特征指標(biāo)的難度,尤其適用于混合攻擊、類型未知的攻擊.實(shí)際上,如果能夠人工設(shè)計(jì)出有效的特征檢測指標(biāo),對于提高檢測性能會(huì)產(chǎn)生非常大的作用.因此,本文將自動(dòng)提取特征和人工設(shè)計(jì)特征指標(biāo)相結(jié)合,以提高攻擊檢測的性能.人工設(shè)計(jì)的特征指標(biāo)只考慮通用的檢測指標(biāo),不同攻擊類型的特征指標(biāo)由評分矩陣自動(dòng)提取,提高了算法的魯棒性.
本節(jié)將原始用戶評分矩陣與人工設(shè)計(jì)的特征指標(biāo)矩陣合并為新的數(shù)據(jù)矩陣,利用卷積自動(dòng)編碼器(CAE)進(jìn)行特征提取,通過全連接層的分類來實(shí)現(xiàn)攻擊檢測.本節(jié)的主要工作可歸納如下:
1)提出了一種自動(dòng)特征提取和人工設(shè)計(jì)特征相結(jié)合的攻擊檢測特征構(gòu)造方法;
2)將自動(dòng)編碼器與卷積神經(jīng)網(wǎng)絡(luò)相結(jié)合,以卷積神經(jīng)網(wǎng)絡(luò)的卷積操作完成自動(dòng)編碼器的編碼和解碼功能,形成卷積自動(dòng)編碼器神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),實(shí)現(xiàn)特征自動(dòng)提取和有效攻擊檢測的功能.
結(jié)合人工提取的特征屬性在傳統(tǒng)的托攻擊檢測方法中,Williams[1]等學(xué)者提出了一種基于逆向工程攻擊模型的屬性生成方法,結(jié)合RDMA等六種通用特征及KNN、SVM、C4.5 3種分類方法實(shí)現(xiàn)托攻擊檢測.論文驗(yàn)證了這些屬性的組合優(yōu)勢以及分類器的選擇對提高推薦系統(tǒng)的魯棒性的影響.Wu[2,3]等學(xué)者基于Williams等學(xué)者提出的特征,利用期望最大化的方法對特征進(jìn)行篩選,同時(shí)針對篩選的特征利用貝葉斯分類器實(shí)現(xiàn)托攻擊的檢測.彭飛[4]等學(xué)者提出KCI興趣峰度系數(shù)這一特征屬性用來描述用戶興趣集中程度,并與已有的用戶特征屬性相結(jié)合,提出一種特征子集的無監(jiān)督檢測方法.李文濤[5]等人提出區(qū)分正常用戶和攻擊用戶基于流行度的分類特征屬性MUD,RUD,QUD,得到基于流行度的托攻擊檢測方法.以上這些方法都需要人工從用戶的評分或者項(xiàng)目的流行度等方面,使用不同的數(shù)據(jù)分析方法特區(qū)特征,這些方法普適性不強(qiáng),因此面對新的攻擊類型時(shí)會(huì)出現(xiàn)不太理想的檢測效果.
深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)技術(shù)近年來在自然語言處理、計(jì)算機(jī)視覺、個(gè)性化推薦等領(lǐng)域都取得了巨大成功[6].目前,已有學(xué)者將這些技術(shù)應(yīng)用到推薦系統(tǒng)的攻擊檢測領(lǐng)域.Tong等人[7]等人提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)和社會(huì)感知網(wǎng)絡(luò)(SAN)的新方法CNN-SAD,由于所實(shí)現(xiàn)的深層特性能夠比人工設(shè)計(jì)的特征更準(zhǔn)確地描述用戶的評分行為,該方法能夠更有效地檢測托攻擊;Hao等人[8]從用戶評分矩陣、用戶鄰接矩陣等多個(gè)角度分析用戶的行為,利用利用堆疊的去噪自編碼器自動(dòng)提取用戶特征,在主成分分析的基礎(chǔ)上對多視圖提取的特征進(jìn)行有效的組合,利用SVM作為分類器生成檢測結(jié)果;Xu等人[9]針對誹謗性用戶在評分和評論之間給出相反評價(jià)的行為,設(shè)計(jì)了雙注意遞歸神經(jīng)網(wǎng)絡(luò)(HDAN),利用改進(jìn)的GRU網(wǎng)絡(luò)來計(jì)算評論是積極或是消極,在此基礎(chǔ)上提出了聯(lián)合過濾的方法捕捉評分與評論之間的差距從而檢測出攻擊.郝耀軍[10]等人基于用戶評分項(xiàng)目的時(shí)間偏好信息,提出了一種利用深度稀疏自編碼器自動(dòng)提取特征的托攻擊集成檢測方法.但是,總的來說,這方面的工作還剛剛開始.
本節(jié)詳細(xì)介紹了基于卷積自編碼器的推薦系統(tǒng)托攻擊檢測方法(A Attack Detection Method based on Convolutional Autoencoder,簡寫ADM-CAE),包括特征的提取、模型的構(gòu)建和算法的描述等.ADM-CAE攻擊檢測的框架結(jié)構(gòu)如圖1所示,主要分為訓(xùn)練學(xué)習(xí)以及預(yù)測分類兩部分,訓(xùn)練學(xué)習(xí)主要包括如下步驟:注入攻擊后,首先為了捕捉托攻擊用戶的潛在屬性特征以便于更好地構(gòu)造分類模型,本文首先將電影按照類型分類,將相同類型的電影分到一起,這樣分到同一個(gè)簇集的操作便于后續(xù)捕捉數(shù)據(jù)的二維相關(guān)性,然后對分類好的數(shù)據(jù)進(jìn)行分析,參考現(xiàn)有的用戶評分屬性特征從多個(gè)角度提取不同用戶的屬性特征;其次將提取到的用戶屬性以特征矩陣的形式,與原評分矩陣一起合并為最終的數(shù)據(jù)矩陣,類似于一個(gè)二維圖像的輸入,將得到的數(shù)據(jù)矩陣輸入卷積自編碼器托攻擊檢測模型,完成正常用戶與虛假用戶的分類操作.本節(jié)的最后部分會(huì)給出本文所使用的ADM-CAE算法的卷積自編碼器結(jié)構(gòu)和算法的詳細(xì)描述.
圖1 算法整體框架
在推薦系統(tǒng)領(lǐng)域,龐大的用戶行為數(shù)據(jù)可以用來描繪用戶,例如用戶對某項(xiàng)電影的評分通??梢苑磻?yīng)用戶對這部電影的喜好.但是一個(gè)用戶的行為數(shù)據(jù)可能涉及各種各樣成千上萬條信息,同時(shí)面對極其稀疏的用戶高維數(shù)據(jù),處理起來也十分復(fù)雜,這種情況加大了數(shù)據(jù)分析處理的難度,而特征提取(Feature Extration)技術(shù)的出現(xiàn)就恰恰緩解了這樣的現(xiàn)狀,它能夠通過變換將原始數(shù)據(jù)轉(zhuǎn)換為一系列具有統(tǒng)計(jì)意義的用戶特征,這些特征可以用來區(qū)分正常用戶和攻擊用戶.而正常用戶和攻擊用戶的差異性通常可以通過評分反映出來,本文根據(jù)相關(guān)研究者們提出的人工特征,從用戶之間的評分差異性角度,分析原始評分矩陣,提取5個(gè)通用的用戶屬性特性[11],包括平均評分偏離度(RDMA)、評分向量長度方差(LengthVar)、加權(quán)平均評分偏離度(WDMA)、加權(quán)評分偏離度(WDA),以及與其他用戶的評分偏離度(DAOU),進(jìn)一步結(jié)合原始評分矩陣,采用卷積自編碼器結(jié)構(gòu)實(shí)現(xiàn)攻擊檢測.
通過統(tǒng)計(jì)用戶評分?jǐn)?shù)據(jù),可以得到上述5種通用特征屬性.將5種通用特征屬性與評分矩陣組合,即在用戶-項(xiàng)目評分矩陣增加5列,每列表示一個(gè)通用特征屬性.為了后續(xù)更好地發(fā)揮卷積神經(jīng)網(wǎng)絡(luò)的作用,依據(jù)項(xiàng)目類型的不同,將相同類型的項(xiàng)目劃分到相同的簇集中,將原始的用戶-項(xiàng)目評分矩陣按簇重新排序,相同簇集的項(xiàng)目列相鄰.生成最終的數(shù)據(jù)矩陣用于神經(jīng)網(wǎng)絡(luò)的輸入,特征矩陣以及最終的數(shù)據(jù)矩陣的構(gòu)造過程如圖2所示.
圖2 特征矩陣以及最終數(shù)據(jù)矩陣構(gòu)造過程
在卷積神經(jīng)網(wǎng)絡(luò)中,卷積層是核心,同樣也是卷積自編碼器的核心.網(wǎng)絡(luò)對輸入數(shù)據(jù)利用卷積核執(zhí)行卷積計(jì)算,提取攻擊特征.卷積核相當(dāng)于一個(gè)濾波器,卷積計(jì)算就是通過將卷積核作用于輸入數(shù)據(jù)并沿著寬度方向及高度方向滑動(dòng),每次滑動(dòng)都計(jì)算卷積核與其覆蓋部分的內(nèi)積.在本文提出的模型中,用戶useru對電影itemi的評分矩陣表示為R,rui表達(dá)的是用戶u對項(xiàng)目i的評分,則rui∈R,特征矩陣用Q表示,則R、Q合并后的數(shù)據(jù)矩陣為T,大小設(shè)為(H,W),每次卷積同時(shí)還需要以下超參數(shù):filter的大小f1×f2,filter數(shù)量為k,步幅s,zero Padding的填充數(shù)為p,矩陣T作為輸入會(huì)首先經(jīng)過卷積層的特征提取,轉(zhuǎn)換為(OH,OW)大小,則:
(1)
假設(shè)有k個(gè)卷積核Wk,則輸入x經(jīng)過卷積后形成的第k個(gè)feature maphk為:
hk=F(x?Wk+bk)
(2)
其中,x代表輸入,?符號表示卷積計(jì)算,bk是偏置,是一個(gè)實(shí)數(shù).本文的零填充p設(shè)為1,步幅s設(shè)為1,則經(jīng)過公式計(jì)算后,輸出的feature maphk的大小OH=H,OW=W,則發(fā)現(xiàn)可通過卷積實(shí)現(xiàn)自動(dòng)編碼器尺寸無損的特征提取效果.卷積操作后的feature map會(huì)受到下面一層激勵(lì)層的激勵(lì)作用.該層是一種非線性的激活函數(shù),通過在模型中引入非線性因素,解決了線性模型表達(dá)能力不夠的的問題,激活函數(shù)能夠?qū)⑻卣鞅A舨⒂成涞较乱粚?通常的激活函數(shù)有Sigmoid函數(shù)函數(shù),Relu函數(shù),以及Tanh函數(shù),如式(3)所示:
Relu(x)=max(0,x)
(3)
本文所選用的激活函數(shù)是Relu函數(shù),令pk表示第k個(gè)經(jīng)過卷積操作后的特征圖的激活結(jié)果,即:
pk=max(0,x×Wk+bk)
(4)
編碼部分為3層卷積層以及2層激勵(lì)函數(shù)層的疊加.經(jīng)過編碼部分一層層地卷積提取特征以及激活函數(shù)的作用后,卷積自編碼器的編碼部分就結(jié)束.得到的數(shù)據(jù)特征的間接表示輸入解碼部分.首先進(jìn)入解碼器進(jìn)行反卷積操作,則經(jīng)過第k′個(gè)卷積核反卷積后的feature maphk′可表示為:
(5)
(6)
loss=-∑xm(x)logq(x)
(7)
網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示.
圖3 CAE網(wǎng)絡(luò)結(jié)構(gòu)
ADM-CAE托攻擊檢測算法具體描述如下:
算法.托攻擊檢測算法(ADM-CAE)
輸入:用戶評分矩陣R;特征矩陣Q;兩者合并后的數(shù)據(jù)矩陣T;所有的輸入記作x.
輸出:攻擊檢測算法的召回率(Recall)、準(zhǔn)確率(Precision)
過程:
1.data preprocessing
2.for e<=epoch do
3. for eachuserido
4.hk=F(x?Wk+bk)//卷積操作
5.pk=max(0,x*Wk+bk)//激活操作
……
8. loss=-∑xm(x)logq(x)
9. 計(jì)算損失并反向傳播更新網(wǎng)絡(luò)權(quán)值,優(yōu)化模型
10. end for
11.end for
第2步的e代表設(shè)置的迭代次數(shù),第4步和第5步是模型的編碼階段,卷積操作的目的是提取特征并通過激活函數(shù)的作用加入非線性因素,從而提高模型的表達(dá)能力.中間省略了一部分的卷積操作以及激活操作.第6步和第7步是模型的解碼階段,反卷積還原數(shù)據(jù),第8步是計(jì)算損失,通過反向傳播算法優(yōu)化模型,不斷地參數(shù)更新優(yōu)化,直至迭代數(shù)不滿足迭代條件.最終經(jīng)過不同情況下實(shí)驗(yàn)的對比,分析召回率(Recall)以及準(zhǔn)確率(Precision)的差異評價(jià)該模型.
本次實(shí)驗(yàn)采用的數(shù)據(jù)集為MovieLens100k(1)https://grouplens.org/datasets/movielens/數(shù)據(jù)集,包含了943個(gè)不同用戶對1682部不同電影的評分,評分區(qū)間為[1,5],分?jǐn)?shù)由低到高分別表示用戶對電影的喜愛程度的不同.其中,既包括普通的用戶如一般的大學(xué)生或者上班族等,也包括專業(yè)的影評用戶,且每個(gè)用戶在這1682部電影中至少有20條評分記錄,數(shù)據(jù)真實(shí)可靠,所以我們假定這數(shù)據(jù)集中的用戶全部為真實(shí)用戶.
實(shí)驗(yàn)中數(shù)據(jù)的處理、特征的提取、托攻擊檢測模型的訓(xùn)練以及測試過程均采用Python環(huán)境來實(shí)現(xiàn).具體硬件環(huán)境為:i7-6800k,16G DDR4,單路1080ti;軟件環(huán)境為Window10,pytorch1.0,Cuda9.0,Cudnn7.0.
在實(shí)驗(yàn)中,為了確定CAE的結(jié)構(gòu),對卷積核的大小,卷積層層數(shù)以及步幅等大小進(jìn)行了多次試驗(yàn)對比,最終確定設(shè)置ADM-CAE托攻擊檢測模型的參數(shù)為:filter為大小始終是3×1的一維卷積核,每一層的filter數(shù)量為分別設(shè)置為1->16->32->64->32->16->8,步幅s始終為1,zero Padding的填充數(shù)p也始終為1.實(shí)驗(yàn)中,為了驗(yàn)證該算法檢測能力的有效性,將前期經(jīng)過數(shù)據(jù)預(yù)處理后的數(shù)據(jù)矩陣T在輸入CAE模型前劃分為訓(xùn)練集與測試集,其之比為7∶3,利用訓(xùn)練集訓(xùn)練好的CAE模型作用在測試集上,并輸出測試集的檢測結(jié)果.
在機(jī)器學(xué)習(xí)、推薦系統(tǒng)或者數(shù)據(jù)挖掘完成建模后一般會(huì)需要對模型的效果進(jìn)行評價(jià),目前常常采用的評價(jià)指標(biāo)有準(zhǔn)確率(Precision)、召回率(Recall)、F值(F-Measure)等.本節(jié)采用召回率以及準(zhǔn)確率作為評價(jià)指標(biāo).
4.3.1 精確性和有效性分析
在MovieLen100k的數(shù)據(jù)集上,通過比較ADM-CAE算法在對數(shù)據(jù)集注入不同攻擊規(guī)模和不同填充規(guī)模下的檢測能力來評價(jià)模型性能,結(jié)果如圖4和圖5所示.
圖4 攻擊規(guī)模為5%時(shí)的3種攻擊對比
圖4(a)和圖4(b)為ADM-CAE托攻擊檢測模型采用注入攻擊規(guī)模為5%的同時(shí),分別注入不同填充率(3%、5%、10%和25%)的均值攻擊、流行攻擊以及隨機(jī)攻擊的攻擊檢測結(jié)果.以準(zhǔn)確率和召回率為評價(jià)準(zhǔn)則,可以看出ADM-CAE算法隨著攻擊概貌的填充規(guī)模的增大,召回率和準(zhǔn)確率會(huì)逐漸提高,檢測效果逐漸增強(qiáng).我們也可以看出較高的填充率更容易檢測出攻擊行為.
圖5(a)和圖5(b)為ADM-CAE算法對不同攻擊規(guī)模的3種攻擊在兩種評價(jià)標(biāo)準(zhǔn)下檢測效果的對比.在一般的系統(tǒng)中,注入3%的的攻擊已經(jīng)很不容易,有些攻擊的攻擊成本更是高.這里選擇的攻擊強(qiáng)度分別為1%、2%、5%以及10%,填充規(guī)模選擇5%.可以看出在較低的攻擊強(qiáng)度下,該算法依然具有較高的檢測能力,這也驗(yàn)證了算法的有效性.
圖5 填充率為5%時(shí)的3種攻擊對比
相對于流行攻擊和均值攻擊,隨機(jī)攻擊更容易被識(shí)別,這是因?yàn)殡S機(jī)攻擊所需的知識(shí)成本最低,知識(shí)成本越低越容易檢測.
4.3.2 與多種攻擊檢測算法比較
為了更好地體現(xiàn)出本文提出的檢測算法的優(yōu)越性,決定與以下算法進(jìn)行對比:
1)DSAE-EDM[10]一種深度學(xué)習(xí)托攻擊集成檢測方法,該方法則直接消除了本文前期所采用的的傳統(tǒng)的人工特征工程,采用深度學(xué)習(xí)技術(shù)深度自動(dòng)編碼器自動(dòng)提取特征以達(dá)到攻擊檢測的效果.
2)PCA VarSelect[12,13]作為典型的無監(jiān)督托攻擊檢測算法,該算法可自動(dòng)構(gòu)建用戶特征,該方法通過PLSA找到具有相似偏好的用戶群體,結(jié)合PCA VarSelect從多元統(tǒng)計(jì)學(xué)角度重新描述評分矩陣,這種方法的泛用性很好,但是需要預(yù)先知道攻擊規(guī)模.
實(shí)驗(yàn)參數(shù)設(shè)置如下:注入的攻擊規(guī)模分別是1%、2%、5%和10%;注入的填充規(guī)模分別是1%、3%、5%、10%和25%;攻擊類型分別是流行攻擊和均值攻擊.以準(zhǔn)確率為評價(jià)指標(biāo),實(shí)驗(yàn)結(jié)果如表1和表2所示.
表1 流行攻擊對比
通過表1和表2可以看出,ADM-CAE算法的攻擊檢測效果優(yōu)于PCA VarSelect方法,這是因?yàn)閭鹘y(tǒng)的攻擊檢測算法PCA VarSelect對數(shù)據(jù)的降維是線性的,在恢復(fù)數(shù)據(jù)的時(shí)候會(huì)有一定程度的失真,而ADM-CAE是非線性的,信息丟失得更少,特征學(xué)習(xí)得效果也更好,所以取得更優(yōu)的攻擊檢測的效果.且與DSAE-EDM算法相比,無論是哪種攻擊,本文的檢測算法都比DSAE-EDM表現(xiàn)地更有優(yōu)勢,這是因?yàn)锳DM-CAE算法在前期添加了DSAE-EDM算法所沒有的傳統(tǒng)的人工特征工程,達(dá)到了強(qiáng)化數(shù)據(jù)特征,增加數(shù)據(jù)分類的準(zhǔn)確性的效果,再與深度學(xué)習(xí)技術(shù)卷積自編碼器的自動(dòng)學(xué)習(xí)特征相結(jié)合,不但使得人工特征在面對不同的攻擊時(shí)所表現(xiàn)出來的普適性不強(qiáng)的特征可以忽略不計(jì),更是增加了攻擊識(shí)別的準(zhǔn)確性.
表2 均值攻擊對比
4.3.3 ADM-CAE中反卷積層的效果
此外,為了理解與評估ADM-CAE中的反卷積層給實(shí)驗(yàn)帶來的效果與影響,本文在有反卷積層作用和無反卷積層的作用下,在攻擊規(guī)模為5%,填充規(guī)模為5%的情況下進(jìn)行了對比實(shí)驗(yàn),圖6給出了在隨機(jī)攻擊,均值攻擊以及流行攻擊3種攻擊下的Precision值的對比情況.
圖6 ADM-CAE在有無反卷積層作用下的查準(zhǔn)率對比
從圖6可以看出,在3種不同類型的攻擊檢測中,沒有反卷積層的ADM-CAE查準(zhǔn)率位于92%-94%之間,而有反卷積層的ADM-CAE查準(zhǔn)率位于97%-98%之間,沒有反卷積層的檢測效果并沒有在有反卷積層進(jìn)一步學(xué)習(xí)特征的作用下效果顯著.由此可見反卷積層在ADM-CAE中的重要作用,它可以進(jìn)一步學(xué)習(xí)特征,提高整體的攻擊檢測能力.
本文結(jié)合使用了傳統(tǒng)的人工特征提取和深度神經(jīng)網(wǎng)絡(luò)方法,利用RDMA等屬性首先分析出用戶評分的顯著特征,得到用戶特征屬性數(shù)據(jù)集,再結(jié)合原始的評分構(gòu)造新的數(shù)據(jù)矩陣作為數(shù)據(jù)集輸入.利用卷積層代替全連接層,完成自動(dòng)編碼器的編碼以及解碼功能,為了實(shí)現(xiàn)自動(dòng)編碼器的輸出數(shù)據(jù)矩陣的大小與輸入相同的目標(biāo),從卷積層的卷積核尺寸、步幅、填充以及激活函數(shù)等方面選擇恰當(dāng)?shù)腃AE結(jié)構(gòu),結(jié)合了卷積神經(jīng)網(wǎng)絡(luò)權(quán)值共享以及自動(dòng)編碼器無監(jiān)督快速提取的優(yōu)點(diǎn),最后通過全連接層實(shí)現(xiàn)二分類,實(shí)現(xiàn)攻擊檢測.