楊昊,吳愛華,屈青英
(上海海事大學(xué)信息工程學(xué)院,上海201306)
隨著互聯(lián)網(wǎng)的發(fā)展迅速以及普及,直接帶動(dòng)了在線社交網(wǎng)絡(luò)的急速發(fā)展,使得用戶可以通過像新浪微博等這樣的社交網(wǎng)絡(luò)平臺(tái)發(fā)布信息、傳播信息、接受信息等,這使得網(wǎng)絡(luò)平臺(tái)聚集了大量的極具價(jià)值的用戶信息,在重大新聞迅速傳播、網(wǎng)民交流溝通便利等方面表現(xiàn)出了積極作用。但與此同時(shí)也衍生出了網(wǎng)絡(luò)水軍,網(wǎng)絡(luò)水軍是一群在特定時(shí)間發(fā)布特定內(nèi)容被雇傭的網(wǎng)絡(luò)寫手,網(wǎng)絡(luò)水軍的出現(xiàn)導(dǎo)致了網(wǎng)絡(luò)平臺(tái)謠言盛行、引導(dǎo)輿論走向,詐騙恐嚇猖獗,給國(guó)家政治經(jīng)濟(jì)文化活動(dòng)帶來不可估量的損失,并使得社會(huì)輿情不可控制,虛假信息泛濫,甚至引發(fā)了多個(gè)層次的社會(huì)事件,如百姓對(duì)抗政府,醫(yī)患、警民、軍民關(guān)系惡化。所以水軍識(shí)別是一個(gè)非常有意義非常有價(jià)值也亟待解決的問題。
目前,國(guó)內(nèi)一些學(xué)者針對(duì)微博水軍事件進(jìn)行分析。莫倩等人[1]總結(jié)了目前的水軍識(shí)別研究現(xiàn)狀,網(wǎng)絡(luò)水軍檢測(cè)選取的特征屬性主要包括:微博內(nèi)容、用戶行為和網(wǎng)絡(luò)環(huán)境。相關(guān)研究多關(guān)注基于特定類型的網(wǎng)絡(luò)水軍的特征,例如基于內(nèi)容、行為以及網(wǎng)絡(luò)環(huán)境等單個(gè)類型,這些方法無法全面分析網(wǎng)絡(luò)水軍行為,因此其識(shí)別準(zhǔn)確率具有瓶頸。在此基礎(chǔ)上,綜合多種特定類型的網(wǎng)絡(luò)水軍識(shí)別方法對(duì)于各個(gè)目標(biāo)領(lǐng)域的網(wǎng)絡(luò)水軍都具有較高的識(shí)別準(zhǔn)確率。本文提出一種基于Tensor-Flow 深度神經(jīng)網(wǎng)絡(luò)的水軍檢測(cè)模型,將內(nèi)容特征、行為特征和網(wǎng)絡(luò)特征于一體,獲取相對(duì)應(yīng)的特征目標(biāo)作為模型的輸入。
對(duì)于如何快速識(shí)別網(wǎng)絡(luò)水軍的研究,相關(guān)科學(xué)家取得了不少結(jié)果.這些成果主要是從用戶內(nèi)容特征、用戶靜態(tài)特征以及網(wǎng)絡(luò)特征三個(gè)方面進(jìn)行網(wǎng)絡(luò)水軍的識(shí)別。
Gao 等人[4]提出了一種在臉書平臺(tái)上通過分析照片墻帖子中包含的常見URL 和相似文本,從而識(shí)別水軍活動(dòng)。Yang 等人[6]分析了Twitter 中網(wǎng)絡(luò)水軍的隱藏方法,并提出基于鄰節(jié)點(diǎn)特征去識(shí)別Twitter 中網(wǎng)絡(luò)水軍的方法。但此方法從網(wǎng)絡(luò)水軍的鄰節(jié)點(diǎn)入手,可能會(huì)將非水軍用戶節(jié)點(diǎn)誤判為水軍用戶,導(dǎo)致識(shí)別準(zhǔn)確率不高。本文提出的模型避免了從單特征出發(fā)檢測(cè)網(wǎng)絡(luò)水軍的片面性,降低錯(cuò)判的概率,本實(shí)驗(yàn)選取十四個(gè)對(duì)識(shí)別水軍有影響的特征屬性,同時(shí)利用TensorFlow框架[8],結(jié)合深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法,大大提高了迭代的速度,提高了準(zhǔn)確率,為網(wǎng)絡(luò)水軍識(shí)別研究提供了有力的技術(shù)支持。
由于目標(biāo)對(duì)象的不同,水軍用戶從本質(zhì)上和正常用戶有很大的區(qū)別,因此導(dǎo)致了其行為特征、發(fā)布內(nèi)容以及用戶關(guān)系等有很大差異。換言之,針對(duì)某用戶而言,其行為表現(xiàn)為和水軍用戶相似或和正常用戶相似兩種形式。所以我們就將水軍識(shí)別問題轉(zhuǎn)化成一個(gè)二分類問題。
簡(jiǎn)化后的目標(biāo)函數(shù)即為U →{ }0,1 的映射。其中0 表示正常用戶,1 表示水軍用戶。
(1)數(shù)據(jù)集的獲取
實(shí)驗(yàn)數(shù)據(jù)集采集自中國(guó)最大的在線社交網(wǎng)站新浪微博。新浪微博的信息內(nèi)容被限定在140 個(gè)漢字以內(nèi),對(duì)于博主的博文允許陌生人評(píng)論、轉(zhuǎn)發(fā)以及點(diǎn)贊,其中博文內(nèi)容以及評(píng)論轉(zhuǎn)發(fā)內(nèi)容可以包括圖片和視頻鏈接。
本文選取熱門話題及博文萬達(dá)地產(chǎn)債今天被砸得很慘,通過內(nèi)部渠道獲取了413 個(gè)水軍用戶以及2102個(gè)非水軍用戶,然后通過Python 的Scrapy 爬蟲框架對(duì)用戶特征信息進(jìn)行爬取。同時(shí)利用Scrapyd 技術(shù),定時(shí)將獲得用戶的所有特征信息存入到MongoDB 數(shù)據(jù)庫(kù)中。
(2)特征選取
本文選取除了Regression[11]和NavieBayes[12]等其他論文選取的基本特征外(如粉絲數(shù)(followers_count)、關(guān)注數(shù)(follow_count)、微博總條數(shù)(statuses_count)、微博原創(chuàng)數(shù)(original_count)、微博轉(zhuǎn)發(fā)數(shù)(forward_count)),還加了其他相關(guān)特征作為輸入進(jìn)行深度神經(jīng)網(wǎng)絡(luò)(DNN)的訓(xùn)練,具體全部特征選取如表1。
表1 輸入特征
部分解釋如下:
①粉絲數(shù)Nfollowers
粉絲數(shù)反映用戶的受歡迎的程度,正常用戶的粉絲數(shù)相對(duì)來說比較穩(wěn)定,而水軍用戶為了偽裝自己的身份,大都會(huì)關(guān)注大量正常用戶,然而得到對(duì)方回粉的比例就很小,所有水軍用戶粉絲數(shù)占比就相對(duì)很少。
②關(guān)注數(shù)Nfollows
關(guān)注數(shù),顧名思義為用戶所關(guān)注的對(duì)象,一般反映的是直接的社交圈。正常用戶大都只會(huì)對(duì)自己親朋好友或者感興趣的領(lǐng)域博主進(jìn)行關(guān)注,因此用戶的關(guān)注數(shù)的數(shù)量相對(duì)比較合理,而水軍用戶為了完成自己的任務(wù),會(huì)關(guān)注大量不同領(lǐng)域的博主。由此可以得出,水軍用戶的關(guān)注數(shù)比正常用戶的關(guān)注數(shù)要高很多。
③粉絲/關(guān)注比Rff
其中,Nfollowers 是關(guān)注數(shù),Nfollows 是粉絲數(shù)。由于為了完成上級(jí)派發(fā)的任務(wù),水軍用戶會(huì)大量關(guān)注正常用戶,而獲取對(duì)方回粉的機(jī)率較低,因此從圖的狀態(tài)特征來說,就會(huì)呈現(xiàn)出高出度和低入度。
④微博轉(zhuǎn)發(fā)Nforward
水軍用戶為了完成任務(wù),通常要轉(zhuǎn)發(fā)大量微博,而正常用戶通常轉(zhuǎn)發(fā)量相對(duì)較少。
⑤原創(chuàng)/轉(zhuǎn)發(fā)比Rof
其中,Norigin 為用戶微博原創(chuàng)的數(shù)量,Nforward為用戶微博轉(zhuǎn)發(fā)的數(shù)量,水軍通常會(huì)轉(zhuǎn)發(fā)大量微博來完成任務(wù),所以水軍用戶通常會(huì)呈現(xiàn)出高轉(zhuǎn)發(fā),低原創(chuàng)的狀態(tài)。
⑥陽光信用Sun sh ine Credit
陽光信用是微博2016 年新加入的屬性,分?jǐn)?shù)是結(jié)合用戶的注冊(cè)時(shí)間、微博等級(jí)、違規(guī)與否、所發(fā)微博質(zhì)量、活躍程度、實(shí)名與否以及微博互動(dòng)等行為,分為極低、較低、一般、較高、極高共5 個(gè)不同的等級(jí),在本實(shí)驗(yàn)進(jìn)行預(yù)處理時(shí)將級(jí)別設(shè)置數(shù)值1~5 作為訓(xùn)練集的輸入。
⑦賬戶注冊(cè)時(shí)間Re gis tr ation Date
以往的相關(guān)工作,很少注意到注冊(cè)時(shí)間的這一屬性,其實(shí)在互聯(lián)網(wǎng)平臺(tái)尤其是新浪微博,可以通過其注冊(cè)時(shí)間來判斷是否是水軍,非水軍用戶通常注冊(cè)時(shí)間年限很久,大量的水軍用戶通常注冊(cè)時(shí)間比較新,加上轉(zhuǎn)發(fā)的微博數(shù)量,作為深度學(xué)習(xí)的輸入,更能準(zhǔn)確識(shí)別水軍用戶。
⑧微博等級(jí)Urank
微博等級(jí)是根據(jù)用戶活躍天數(shù)確定的,是用戶使用微博時(shí)間長(zhǎng)短及活躍情況等綜合體現(xiàn),用戶只需每天登錄并使用微博,積累在線時(shí)長(zhǎng),就可以獲得活躍天數(shù),從而獲取等級(jí)。等級(jí)越高。水軍用戶普遍等級(jí)不高。
(1)模型總體框架
TDN 模型旨在利用TensorFlow 的深度神經(jīng)網(wǎng)絡(luò)的準(zhǔn)確性,加上重要特征屬性的選取,從而提高檢測(cè)出網(wǎng)絡(luò)謠言水軍的準(zhǔn)確率,其TensorFlow 模型運(yùn)行流程框架如圖1 所示。基本步驟大致分為四步:①初始化變量。②構(gòu)建session 會(huì)話。③訓(xùn)練算法。④實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)。其中包括ReLU 函數(shù)(激活函數(shù))和Loss(損失函數(shù))的選取。其中Identity 為激活函數(shù)設(shè)置為全等映射,目的是暫且不使用Softmax,會(huì)放在之后的損失函數(shù)中一起計(jì)算,并且identity 是返回一個(gè)一模一樣新的tensor 的op,這會(huì)增加一個(gè)新節(jié)點(diǎn)到gragh 中。global_step 在滑動(dòng)平均、優(yōu)化器、指數(shù)衰減學(xué)習(xí)率等方面都有用到,代表著全局步數(shù),類似于一個(gè)鐘表,管理者全局迭代次數(shù)。其中圖2 為圖1 中DNN 的展開。里面包含了輸入輸出、隱層,以及各種函數(shù)之間的關(guān)系。
圖1 TDN處理流程
圖2 DNN內(nèi)部關(guān)系
(2)激活函數(shù)的選取
在深度神經(jīng)網(wǎng)絡(luò)中激活函數(shù)對(duì)實(shí)驗(yàn)結(jié)果有著直接的影響,本文使用的是一種叫修正線性單元(Rectified Linear Unit,ReLU)9]作為神經(jīng)網(wǎng)絡(luò)的激活函數(shù)。ReLU函數(shù)其實(shí)是一種簡(jiǎn)單的分段線性函數(shù),把所有小于零的值都變?yōu)?,正值不變,這種操作被業(yè)界成為單側(cè)抑制,單側(cè)抑制有著它不可替代的優(yōu)勢(shì),因?yàn)閱蝹?cè)抑制使得神經(jīng)網(wǎng)絡(luò)中的神經(jīng)元具有稀疏激活性。對(duì)比其他的激活函數(shù)來說,ReLU 激活函數(shù)的不僅在深度神經(jīng)網(wǎng)絡(luò)中表達(dá)能力強(qiáng),而且對(duì)于非線性的函數(shù)而言,ReLU 函數(shù)由于非負(fù)區(qū)間為常數(shù),因此不存在梯度逐漸消失問題,使得算法模型的收斂速度維持在一個(gè)穩(wěn)定狀態(tài)。
實(shí)驗(yàn)運(yùn)行環(huán)境為:Windows 7 操作系統(tǒng),1.80GHz 4核處理器,8GB 內(nèi)存,模型的框架為TensorFlow,編寫語言為Python。
實(shí)驗(yàn)數(shù)據(jù):實(shí)驗(yàn)選取了五組數(shù)據(jù),是通過特殊渠道購(gòu)買來的真實(shí)數(shù)據(jù),共包含413 個(gè)水軍用戶和2102 個(gè)正常用戶,14 個(gè)特征屬性,實(shí)驗(yàn)將這些用戶等比例分成五組,在同一條件下,進(jìn)行三種算法模型準(zhǔn)確性的比較。
本文對(duì)比了以下3 種方法:基于邏輯回歸的方法(簡(jiǎn)稱Regression)[11]、基于樸素貝葉斯的方法(簡(jiǎn)稱Naive Bayes)[12]以及本文算法TDN。其中Regression 由謝忠紅等人提出,他選取了用戶的行為特征、內(nèi)容特征等,實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)水軍的檢測(cè),NaiveBayes 則是張艷梅等人設(shè)計(jì)的微博水軍識(shí)別分類器,它選取了6 個(gè)特征屬性作為分類依據(jù)。本組實(shí)驗(yàn)比較各個(gè)模型之間的準(zhǔn)確度,以及不同參數(shù)對(duì)本模型準(zhǔn)確度的影響,如圖4 所示,圖中每一組實(shí)驗(yàn)中的左邊為Regression 算法的準(zhǔn)確率,中間為TDN 的準(zhǔn)確度,右邊為Naive Bayes 的準(zhǔn)確度。由于深度神經(jīng)網(wǎng)絡(luò)的核心是利用了反向傳播算法,加上梯度下降算法對(duì)神經(jīng)網(wǎng)絡(luò)做進(jìn)一步優(yōu)化,使得TDN 無論從準(zhǔn)確性還是穩(wěn)定性都由于其他兩種算法。
圖3 三組不同算法的準(zhǔn)確度
TensorFlow 深度神經(jīng)網(wǎng)絡(luò)[13]主要分為三個(gè)層次,輸入層、隱層以及輸出層,其中隱層又可以分為不同的層數(shù),不同層數(shù)又可以設(shè)置不同的結(jié)點(diǎn)數(shù),得到的準(zhǔn)確率會(huì)有很大的差異。一般來說,增加隱層的層數(shù)雖然可以使誤差變小和提高結(jié)果的精度,但與此同時(shí)也使得深度神經(jīng)網(wǎng)絡(luò)變得很復(fù)雜,進(jìn)而使網(wǎng)絡(luò)的迭代訓(xùn)練時(shí)間增加,甚至?xí)霈F(xiàn)過擬合的現(xiàn)象。所以一般來說,設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)應(yīng)將3 層隱層網(wǎng)絡(luò)作為首選。為了實(shí)驗(yàn)更加準(zhǔn)確,本文采用試湊法來確定隱層的節(jié)點(diǎn)數(shù),試湊法的核心思想是在得知隱層節(jié)點(diǎn)數(shù)的上界和下界的前提下,構(gòu)造出三層深度神經(jīng)網(wǎng)絡(luò)并且對(duì)設(shè)置不同隱層節(jié)點(diǎn)數(shù)分別進(jìn)行訓(xùn)練迭代,然后按照統(tǒng)一指標(biāo)對(duì)每一個(gè)網(wǎng)絡(luò)的性能進(jìn)行評(píng)估,最后選擇最滿意的節(jié)點(diǎn)數(shù)。
設(shè)函數(shù)P 為性能函數(shù),P(Mhid)代表隱層節(jié)點(diǎn)數(shù)為Phid時(shí)的網(wǎng)絡(luò)性能,P(Mhid)值越大,代表網(wǎng)絡(luò)性能越好。隱層節(jié)點(diǎn)數(shù)的上界為Mh,下界為M1,那么由試湊法得 到 的隱 層 節(jié)點(diǎn) 數(shù) 為Mhid=argmaxMl≤Mhid≤MhP(Mhid) 。利用試湊法以及仿真實(shí)驗(yàn)得到的結(jié)果如圖5 所示,三層隱層的節(jié)點(diǎn)數(shù)分別為10,20,15 得到的準(zhǔn)確率最高。
圖4 三層隱層不同節(jié)點(diǎn)數(shù)對(duì)算法的影響
不同的訓(xùn)練迭代次數(shù)對(duì)實(shí)驗(yàn)結(jié)果的準(zhǔn)確率也有很大的影響,本實(shí)驗(yàn)在相同實(shí)驗(yàn)下,共包含413 個(gè)水軍用戶和2102 個(gè)正常用戶,層數(shù)為3 層,每層節(jié)點(diǎn)分別為:10,20,10。分別測(cè)試了不同迭代次數(shù)對(duì)應(yīng)的準(zhǔn)確率,從圖5 中可以看出,訓(xùn)練次數(shù)達(dá)到10000 次時(shí)到達(dá)一個(gè)峰值,隨后準(zhǔn)確率逐漸降低,次數(shù)小于10000 次,實(shí)驗(yàn)結(jié)果會(huì)出現(xiàn)欠擬合現(xiàn)象,也就是訓(xùn)練的不夠,沒有盡可能擬合數(shù)據(jù),然而超過1 萬次準(zhǔn)確率出現(xiàn)下降的原因就是出現(xiàn)了過擬合的現(xiàn)象。
圖5 迭代次數(shù)對(duì)算法的影響
圖6 噪聲對(duì)算法的影響
眾所周知,神經(jīng)網(wǎng)絡(luò)的不同層數(shù)對(duì)實(shí)驗(yàn)準(zhǔn)確度以及時(shí)間性能也有很大的影響[15],本實(shí)驗(yàn)對(duì)于隱層的1 到8 層分別做了5 組實(shí)驗(yàn),實(shí)驗(yàn)數(shù)據(jù)集取3.2 節(jié)的數(shù)據(jù)集,為了統(tǒng)一變量,對(duì)每一層的節(jié)點(diǎn)取相同節(jié)點(diǎn)數(shù)10,對(duì)實(shí)驗(yàn)結(jié)果取其平均值,得到如圖9 兩組折線,其中系列一為準(zhǔn)確度,系列二為時(shí)間。此圖可以看出對(duì)于準(zhǔn)確度來說三層隱層為最佳層數(shù),而隨著層數(shù)的增加,TensorFlow 的計(jì)算復(fù)雜度提高,進(jìn)而導(dǎo)致需要更多的時(shí)間來對(duì)數(shù)據(jù)進(jìn)行反向反饋。
本文主要介紹了一種基于TensorFlow 的深度神經(jīng)網(wǎng)絡(luò)的水軍檢測(cè)模型,選取了三個(gè)維度的14 個(gè)特征參數(shù),對(duì)每一維度選取的特征都進(jìn)行了必要的分析,并且證明了基于這些特征的判定方法可行性。利用新浪微博API 以及Python 的Scrapy 框架對(duì)微博數(shù)據(jù)進(jìn)行實(shí)時(shí)爬取和處理,得到實(shí)驗(yàn)所用數(shù)據(jù)集,對(duì)文章中提到的TDN 識(shí)別模型進(jìn)行了準(zhǔn)確度對(duì)比和性能測(cè)試。在同一條件下比較了TDN 和其他模型以及影響模型性能的因素都做了一一分析,TDN 模型具有準(zhǔn)確度較高,迭代速度快,能夠大規(guī)模處理數(shù)據(jù)等特性,特別適合應(yīng)用于水軍識(shí)別的二分類問題。但由于不均衡數(shù)據(jù)的輸入,深度神經(jīng)網(wǎng)絡(luò)算法還是容易出現(xiàn)欠抽樣,從正常用戶訓(xùn)練的很充分,而水軍用戶就訓(xùn)練不足,從而導(dǎo)致精度下降,如何在正負(fù)樣本不均衡情況下充分利用現(xiàn)有的正負(fù)樣本,進(jìn)一步提高準(zhǔn)確度,是接下來我們繼續(xù)深入研究的方向。與此同時(shí),統(tǒng)計(jì)機(jī)器學(xué)習(xí)中很多其他的監(jiān)督學(xué)習(xí)模型,如支持向量機(jī),Xgboost 分類器等是值得我們進(jìn)一步深入研究的識(shí)別方法。
圖7 不同層數(shù)對(duì)時(shí)間和精確度的影響