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