1. 程式人生 > >[優質論文]偽造共同訪問對推薦系統進行攻擊

[優質論文]偽造共同訪問對推薦系統進行攻擊

針對推薦系統的攻擊

論文原文:

論文解讀:

這篇文章寫的很清楚,所以如果真的要看就去看它好了,我記下來只是為了讓自己印象更深。

這篇文章為什麼吸引我?

  1. 因為之前知道廣告作弊,搜尋作弊等,但是從來沒有接觸過或者想過推薦也可以作弊,只知道資料清洗確實能夠剔除作弊的影響。以前的看法一直都是,阿里的運營手裡有很大的權利去做各種事情,幫特定的商戶導流量,所以經常聽到阿里運營和外面的人有某些生意上的勾搭,其實,哼哼,演算法也可以~

  2. 這裡涉及到的演算法都很簡單,看起來最複雜的帶約束的優化本身就可以用拉格朗日乘子轉換成無約束的優化問題,但是作者直接帶入了一些條件把它變成線性規劃問題了

  3. 文章把作弊方案根據實際情況分成了3個層次:

    a. 內部人員,具體的邏輯和權值等都瞭解

    b. 類似YouTube等的item 推薦,把item的熱度也標了出來

    c. 有的網站在推薦item的時候是不會把item的popularity給你的,例如Amazon

    這三個場景也被作者用看起來比較合理的方式串聯了起來,一一化解

背景

推薦系統本身是比較大的一塊內容,推薦的場景五花八門,推薦的方案也是各有千秋,還有各種模型的融合方案,甚至還有一個推薦場景,把各個推薦位分別給不同的推薦策略。但是最為通用的其實是基於I2I的協同推薦,因為I2I的推薦有個得天獨厚的優勢:好解釋。

這裡I2I的相似度可以來源於co-visitation,即共現性。其實共現性有很多維度,例如YouTube的共現可以是觀看,也可以是收藏;Amazon的共現有可能是點選、收藏、加購、下單。因為其他行為的代價有點高,所以本文也就只針對最essential的共現情況,點選(對視訊來說就是觀看)。(為啥說I2I的相似度可以是共現性呢,因為I2I還有其他方式,例如人工抽取一些知識的維度出來,參見Pandora一開始的方案)

Item的共現情況其實可以表示為一個無向圖,圖中的節點是Item及它的popularity,邊是Item之間的共現次數。那麼,我們只要有意的改動邊的權重,推薦結果就會隨之改變。I2I的推薦除了相似性,還有2個比較關鍵的值注意,第一個是item的准入門檻,即它本身是要有一定的熱度的;第二個就是top-k的推薦,我們如果想攻擊一個推薦系統,即讓我們的target_item進入推薦列表,不需要讓他排到第一名,只要進入top-k即可,即排到推薦的第K名即可。

衡量指標

UI定義:所有能夠令target_item被推薦出來的item的展示概率。例如,A、B、C、D 4個商品在一天的展示概率分別為0.1%,0.3%,0.5%,0.6%,A、B、C都能把target_item推薦出來,那麼target_item的UI就是0.9%。我們通過對co-visitation圖的擾動,使得target_item也能進入D的推薦列表,那麼新的UI就是1.5%。

所以,如果我們promote一個item,那麼就有IUI=new_UI - old_UI,如D的展示概率0.6%。

而如果我們想demote一個item,就有IUI= old_UI - new_UI,如原來target_item能進入ABC的推薦列表,在對推薦系統進行攻擊後,target_item只能進入到A的推薦列表了,則有IUI=0.9% - 0.1% = 0.8%。

攻擊方式

基本模式:

  1. 選取anchor item,即攻擊目標,因為想要promote某個target item,攻擊不同的anchor item成本和收益都不同,所以要選取ROI(這是一個廣告術語。。)最高的那個

  2. 模擬一定數量anchor item和target item的共同訪問

High Knowledge

High Knowledge的攻擊者,可以認為是專案的owner或者參與者,對相似度圖(即共現圖)、推薦准入閾值等了解的都很清楚。他的任務就可以總結成:把一定數量的fake co-visitation加入到共現圖中,使得IUI最大。

作者引入了二進位制變數a(非0即1),然後很自然的把問題可以表現成如下的形式:

優化問題

a用於標識某個item是不是anchor item,m代表插入的fake co-visitation的數量。

目標:最大化IUI

約束:

  1. 總的co-visitation次數小於m

  2. item[j]和target item的相似度大於item[j]和原推薦列表中第k個item的相似度

  3. target item的新的popularity要大於推薦的准入閾值

  4. a是非0即1的變數

到這裡為止,這是一個典型的帶約束的優化問題。

但是考慮到,我們是High Knowledge的攻擊者,那麼我們只要讓插入的fake co-visitation滿足條件2和3的最弱情況即可。根據條件2、3求出m[j][k](即k和j的fake co-visitation個數,k為target item)的最小值,把它帶入到條件1中,問題就變成了線性規劃問題。都不需要用拉格朗日乘子解帶約束的優化問題了。

Medium Knowledge

我們不是內部人士,無法知曉具體的τ或者共現圖的細節。

作者提出了一個方案,就是先使用一定的策略估計出τ以及共現圖,然後問題就可以按照High Knowledge的方案去解決了。那麼怎麼估計τ和共現圖呢。

τ:通過檢視推薦列表中最小的訪問次數(例如YouTube的觀看次數)即可

共現圖:對於一個有k個item的推薦列表,我們有 s(j,rec[k])

Low Knowledge

我們什麼都沒有,只有一個推薦列表。

有論文指出過,可以通過機器學習的方法,預測每個item的popularity。得到這個以後,方案就轉變成了Medium Knowledge的攻擊,繼而最終成為High Knowledge的攻擊。

這裡作者對他們的場景假設是popularity是item各個特徵的一個線性函式。

實驗

針對推薦系統的攻擊框架:

攻擊框架

模擬環境下生效

真實環境中也有了明顯的效果

個人總結

這年頭網際網路領域想找個靠譜的推薦的人才也不容易,基本想不被坑只能去大廠找,而大廠的人也是不一定不坑,而且還貴。。

推薦方案已經很成熟,場景的限制使得現在出盡風頭的RNN等相關深度學習的方案沒有在推薦領域(直接推薦領域,因為可能有的小模組是用了深度學習的,例如影象或者文字)大肆推廣開來。那麼推薦問題在現階段其實不是一個很高深的演算法問題,而是highly depends on資料清洗和業務本身以及推薦場景的一個典型的業務工程問題,難度在於對場景的把握,對業務的瞭解程度以及對使用者的認知程度。

針對推薦系統的攻擊研究如此少,導致黑產在這個領域其實是能賺取大量的流量和利潤的。做推薦的一定要有這個認知以及指導怎麼去應對這種問題。

內部人員的作弊防不來,主要針對Medium Knowledge的攻擊,我認為的應對方案:

  1. 資料反作弊,商品的熱度監控,如果熱度飆升,而且訪問者的賬號或者cookie等都是低質量的,要注意

  2. 引入隨機因子,例如,E&E算是隨機因子的一種,或者在排序時,不同的區塊稍微進行一點打散,例如頭部打散,中部打散,尾部打散等

  3. 推薦的深度個性化,例如對於不同的人,k值的選取也可以不同。有的人從來不會點選推薦列表10名以外的結果,那麼對他來說,k=10就夠了