Facebook 是怎麼做反垃圾信息的 (antispam)? 都有哪些可取之處?


Facebook 在 2011 年發過一篇論文《Facebook Immune System》,詳細描述了他們的反垃圾系統。論文作者是 Tao SteinErdong ChenKaran Mangla

以下是一點閱讀記錄,詳細內容可以查看論文。

反垃圾是一個對抗的過程。作弊者會根據反垃圾系統做針對性調整,偽裝自己,所以反垃圾系統要快速反應和優化。系統最好是能夠針對垃圾信息難以改變的特徵(改變的成本越大,則越難改變),而不應該針對垃圾信息容易改變的特徵(比如文本比 IP 更容易改變)。對抗過程如下圖所示。

可以看到這個過程類似於病毒入侵與人體的免疫過程。Facebook 把反垃圾系統命名為 Immune System 是很形象的。這個比喻突出了對抗的性質,而這個特殊性質是做反垃圾系統首先要把握好的。
在對抗的過程中,Attacker Controls 階段時,用戶都在受到垃圾信息的影響,因此,要盡量縮短 Attacker Controls 的時間,延長 Defender Controls 的時間。對於作弊者來說,一旦處於 Attacker Controls 的階段,可以爆發性地發布垃圾信息,受影響的用戶會幾何性增長。 反垃圾的最終目的是保護用戶體驗,而非幹掉垃圾信息。所以要注意避免做一個大而全的方法來處理所有垃圾信息。因為社區中有多種多樣的垃圾信息 ,使用統一方法去處理,既處理不全,還處理不準,而且反應速度非常慢。
如何縮短 Attacker Controls 階段的時間?

  1. 更好的用戶反饋通道,如舉報、刪除功能;
  2. 非監督的異常檢測:能夠快速識別新特徵,部署檢測模型。

如何延長 Defender Controls 階段的時間?

  1. 識別處理方法讓作弊者難以了解;
  2. 識別處理方法讓作弊者即使了解了難以避免。

從對抗角度來說, Immune System 處於被動應對一方。但是它也有自己的優勢:大量用戶幫助舉報反饋,全局(整個社區)的信息和知識(大量的正常行為模式和異常行為模式)。這兩個優勢一定要利用好。

Immune System 快讀識別處理的需求也對工程實現有要求:系統可以實時更新(不能經常重啟)、穩定性好、延遲小。Facebook 設計 Immune System 時主要考慮幾個方面:

  1. 快速識別與處理;
  2. 能覆蓋大量的產品功能;
  3. 產品功能之間的信息可以共享;
  4. 可以實時分類。

最後設計的框架如下圖:

主要包括:

  1. 分類器服務:可以理解為一系列介面,背後是一系列機器學習演算法。
  2. 特徵提取:Facebook 自己搞了 Feature Extraction Language(FXL) ,用於描述特徵和規則,可以在線載入到分類器服務中。(後來改用 Haskell 了。)
  3. 動態模型載入:在特徵之上訓練的模型,可以載入到分類器服務中,支持在線訓練。
  4. 規則引擎:在分類器和特徵的基礎上建立的業務邏輯,包括識別、處理以及效果評估。
  5. 特徵反饋:規則引擎等結果記錄入庫,作為後續使用的特徵。

還有一個重要的工作,就是明確「目標用戶」,即哪些帳號是系統需要處理的。論文中也介紹了 Facebook 認為的幾大威脅:被盜帳號(釣魚、木馬等)、虛假帳號(馬甲號、垃圾帳號)、濫用功能的帳號(騷擾、營銷)。這寫帳號都可能產生垃圾信息。各個產品的形態和階段不同,在這個問題上要緊密結合自身的特點。


推薦閱讀:

Facebook 的價值到底體現在哪裡?
Facebook 的「Like」功能,背後有哪幾層考慮?
你認為社交網路的核心功能是什麼?
在 Facebook 上怎樣開店?有什麼好經驗分享?
Facebook 通過另建新站的落地中國,會"非死不可"嗎?

TAG:Facebook | 反垃圾Anti-Spam | 垃圾信息 |