在線點評系統中的自動眾包攻擊和防禦

《Automated Crowdturfing Attacks and Defenses in Online Review Systems 》閱讀筆記

轉載請註明:老和山修仙記

原文地址: Automated Crowdturfing Attacks and Defenses in Online Review Systems

出版源: ACM Conference on Computer and Communications Security, 2017

現如今,互聯網上的信息不再像以前那麼可靠,惡意眾包活動成了網上散播錯誤信息的罪魁禍首。而在線點評系統正是惡意眾包攻擊的重災區,這給我們現有的信譽體系造成了很大的衝擊。從某種程度來講,口碑已成為了不少企業的命脈,在我們的日常生活中,我們消費者也同樣很大程度地要依賴網上點評(如國內的大眾點評,美國Yelp等)為我們的選擇提供參考,如選擇餐館或者入住酒店。因此,不管是對於企業還是對於我們消費者來講,虛假評論的大量存在是一個令人十分頭疼的問題。如果這種惡意的眾包攻擊能由AI來完成,那麼正如趙燕斌(Ben Y. Zhao)所講,「這對整個社會是一個巨大的威脅,不但會讓依靠點評信息的用戶失望,而且會動搖人類對於真實和虛假的信念」。

1. 背景

本文主要研究的是在線評論系統中的眾包攻擊。傳統的眾包攻擊主要由人工來完成,如僱傭一些人來手動的編寫虛假評論。但這種傳統的眾包攻擊存在很大的局限性:第一,每完成一次眾包活動,我們需要付出相應的人工報酬,這就限制了這種攻擊的擴展性;第二,如果採用人工的方式,那麼在短時間內就可能會產生大量的虛假評論,而這個特徵常常被作為是一個用於檢測虛假評論的有效特徵。

隨著深度學習在NLP領域的廣泛應用,深度學習相關的技術可以使得這種攻擊更強大並且更難防禦。如今,我們可以利用DNNs產生足夠清晰正確的內容並且難以有效地與人所產生的區分開。如果將DNNs應用到這種眾包攻擊中,我們將不僅能自動地完成虛假評論的編寫從而降低攻擊的成本,而且我們還能控制評論投放的時間,並且能夠有效地規避現有的檢測。

2. 攻擊模型

作者針對傳統攻擊的局限性和DNNs的優勢,提出了自己的攻擊模型:利用現有的評論數據訓練一個RNN語言生成模型,再利用訓練好的RNN語言生成模型生成評論,完成自動眾包攻擊。要實現這種攻擊模型,我們必須的滿足以下假設:

  • 我們必須有一個很大的真實評論數據集用於訓練我們的語言生成模型
  • 我們必須要有一定的領域知識,這樣才能使我們生成的評論與我們要攻擊的領域對象相匹配
  • 我們要有足夠的計算資源用於訓練我們的神經網路。

2.1 為什麼是RNNs?

RNNs的目的是處理序列數據。在傳統的神經網路模型中,是從輸入層到隱含層再到輸出層,層與層之間是全連接的,每層之間的結點是無連接的。但這種普通的神經網路存在一個問題,它無法對時間序列上的變化進行建模,而對於自然語言處理、語音識別、手寫體識別這些領域,樣本出現的時間順序非常的重要,因此,對於這些問題,傳統的神經網路就無能為力。

RNNs之所以稱為循環神經網路,是因為一個序列當前的輸出與前面序列的輸出有關,具體的表現形式為網路會對前面的信息進行記憶並應用於當前輸出的計算中,這個時候隱含層之間的結點不再是無連接的而是互聯的。並且隱含層的輸入不僅包括輸入層的輸出還包括上一時刻隱藏層的輸出。

我們在生成評論的時候,下一時刻要產生什麼單詞我們還需要關註上一時刻的輸出,因此作者選擇使用RNNs來作為語言生成模型。

2.2 RNNs vs. Crowdsourced Authors

前面講到,傳統的眾包攻擊是採用人工的方式並且存在局限性,利用RNNs來生成評論來完成自動攻擊不僅可以達到人工方式的效果,而且還可以減小採用人工方式所需要的開銷,同時還能使我們的攻擊更強大更能被檢測到。

3. 攻擊方法

作者提出的攻擊方法思路非常清晰,大體可以分為一些三步:

  • 第一步:利用已有真實評論數據集訓練一個RNNs語言生成模型
  • 第二步:利用第一步訓練的模型產生初始評論
  • 第三步:對初始評論進行定製,替換初始評論中的一些關鍵詞,使其更貼合我們要攻擊的領域

3.1 模型訓練

第一步: 在 t 時刻,我們向記憶單元中輸入一個字元 x_{t} ,維持一個隱含狀態 h_{t} ,得到輸出 o_{t}

第二步:對比當前輸出 o_{t} 和我們想要得到的輸出,更新隱含狀態直到兩者之間的差值最小

第三步:將 o_{t} 作為下一刻的輸入,並且不斷地重複步驟一和步驟二直到訓練結束

最終,隱藏層將獲取到每一個輸入字元與在它之前的字元之間的關係,即概率分布 P(x_{t+1} | x_{1}, x_{2}, cdotcdotcdot, x_{t})

注意: 這裡作者採用的是字元級別的訓練即每次輸入一個字元,而不是單詞級別的訓練。因為在英語中,有效的字元的數量遠遠的小於單詞的數量,採用字元級別的訓練將能大大地降低我們的內存開銷和計算開銷。

3.2 生成初始評論

初始評論的生成大體也可以分成三步:

第一步:給訓練好的RNN語言生成模型一個輸入字元 	ilde{x_{0}} , 得到一個表示最有可能出現的字元的概率分布 P( 	ilde{x_{1}}| 	ilde{x_{0}})

第二步:根據概率分布選擇一個字元 	ilde{x_{1}} ,作為下一個輸入,得到新的概率分布 P( 	ilde{x_{2}}| 	ilde{x_{1}}, 	ilde{x_{0}})

第三步:重複這個過程直到產生連續的文本 	ilde{x_{0}}, 	ilde{x_{1}}, 	ilde{x_{2}}, cdotcdotcdot, 	ilde{x_{n}}

在每一時刻 t ,我們給定一個輸入,我們得到的輸出是一個N維的輸出向量 o_{t} 。如何將輸出轉換成對應的概率分布呢?作者這裡採用了 Softmax 函數,公式形式如下:

P(x_{t} | (x_{1}, cdotcdotcdot, x_{t-1})) = softmax(o_{t})

P(softmax(o_{t}) = k) = frac{e^{o_{t}^{k}/T}}{sum_{j=1}^{N}e^{o_{t}^{j}/T}}

參數說明:

  • o_{t} : N維輸出向量
  • N : 字元表的大小
  • k : 字都表中對應的類別
  • o_{t}^{k} : 時刻類別對應的輸出分量
  • T :採樣階段一個重要的參數(Temperature),控制著生成文本的新穎性。 T 越小,生成的文本多樣性越小,重複模式越多; T 越大,生成的文本越新穎同時也會導致跟高的出錯風險,如拼寫錯誤、上下文無關等

當設置不同的T值時,生成文本的語言特徵變化如下:

3.3 評論定製

我們生成的初始評論不一定能很好的貼合我們的攻擊領域,因此我們需要對初始評論進行定製。步驟如下:

第一步: 選取一個與我們攻擊對象相關的關鍵詞C,用於獲取上下文信息。比如說我們的攻擊對象是餐館,那麼我們選取的關鍵詞可能就是food

第二步:識別參考數據集中真是評論中所有與關鍵詞C相關的詞,得到一個與C詞義高度相似的辭彙集p

第三步:識別初始評論中的詞並根據詞義相似度分值從辭彙集中隨機選取單詞加以替換

4. 對基於RNN攻擊模型的評估

首先介紹一下作者評估實驗中所用到的數據集

(1)訓練集:

  • 來自1M評論者的4.1M條評論
  • 來自27K餐館的617K五星好評,其中包含57M單詞和304M字元

(2)Ground-truth:

(2)攻擊數據集 :

  • 由RNN語言生成模型生成的針對Ground-truth數據集中的9710個餐館的249,612條評論

4.1 基於現有演算法的檢測

這裡作者選取了兩種檢測演算法, ML-based Review FilterPlagiarism Detector

(1)ML-based Review Filter

基於Ground-truth數據集,利用77個語言特徵訓練出一個線性SVM分類器,用到的特徵有:

  • 相似性特徵
  • 結構特徵
  • 語義特徵

(2)Plagiarism Detector

抄襲檢測,用於檢測機器生成的評論是不是簡單的從已有的評論中抄襲得來的

利用兩種演算法的檢測效果如下:

從上圖中可以看出,這兩種演算法無法有效的檢測出由RNN生成的評論

4.2 人工檢測

作者雇了600個人進行人工的檢測。實驗setting如下:

  • 從ground-truth中選取評論最多的40家餐館
  • 每一家隨機選取20條評論,其中大概有0~5條機器生成的評論
  • T的取值為[0.1, 0.3, 0.5, 0.7, 1.0]

可以看出,雖然人工檢測的效果比現有演算法好,但機器生成的評論仍然對人很有迷惑性。

作者還做了另外一組實驗來驗證機器生成評論的有用性。最後,機器生成評論的得分為3.15,真實評論的得分為3.28,兩者得分相差很小,因此很多人認為機器生成的評論與真實評論一樣有用。所以,如果這種攻擊產生的評論將會嚴重的誤導用戶或者消費者。

5. 防禦

由於現有的演算法無法有效的檢測這種機器生成的評論,而這種評論又有很大的不良影響,因此作者提出了自己的防禦演算法。

演算法的思路很簡單,首先利用機器生成的評論數據集訓練一個RNN語言生成模型 RNN_{F} ,

再利用真實評論數據集訓練一個模型 RNN_{L} , 最後將測試評論 T 逐個字元的輸入到兩個模型並將相應的輸出轉換成對應的似然值 mathfrak{L_{mathit{F}}}mathfrak{L_{mathit{L}}} 。如果測試評論 T 是機器生成的評論,則 T 與模型 RNN_{F} 生成的評論更接近, 故 mathfrak{L_{mathit{F}}} > mathfrak{L_{mathit{L}}} , 所以最終負對數似然比 ar{mathfrak{L} } > 0

分析:

這個演算法之所以可行是因為我們在訓練模型時,記憶單元的數量有限,所以我們從數據集中學到的信息也是有限的,這就導致在訓練的過程中會存在一部分信息丟失,儘管從語言特徵的角度我們人無法看出這些信息損失,但通過對比字元級的概率分布,我們發現機器生成的評論和真實評論還是存在差異。

(1)實驗Setting

Ground-truth 數據集

  • 120K機器生成的評論
  • 120K真實的Yelp評論

防禦RNN模型的配置

  • 1024隱含單元
  • 2個隱藏層
  • 128 batch,20 epochs

Baseline

  • ML-based Review Filter

(2)演算法效果

可以看出,作者提出的防禦演算法可以有效的檢測出機器生成的評論。

6. 總結

這篇文章中作者所做的工作是一個非常完整的工作,作者不僅發現了在線評論系統可能存在的一種自動眾包攻擊,並且利用 RNN 生成虛假評論實現了這種自動攻擊。針對這種攻擊以及現有檢測演算法的不足,作者又提出了自己的防禦演算法,而且檢測效果還非常好。

推薦閱讀:

SCI論文寫作之Experimental section(一)
對科研人員,如何有效整理文獻資料?
哪些閱讀論文的好習慣讓你受益無窮?
《Scalable Semantic Matching of Queries to Ads in Sponsored Search Advertising》精讀

TAG:RNN | 信息安全 | 学术论文 |