許多社群媒體平台(如 Facebook、LinkedIn、Twitter)都制定了社群守則,以維護平台安全。這些守則禁止對社群有害的使用者行為、活動與內容。因此,建立能辨識有害內容與惡意行為者的技術至關重要。

平台誠信執行可分為兩大類:

  • 有害內容:包含暴力、裸露、自殘、仇恨言論等的貼文
  • 惡意行為/惡意行為者:假帳號、垃圾訊息、釣魚攻擊、有組織的不道德活動等

本章聚焦於偵測可能包含有害內容的貼文。我們設計一個系統,主動監控新貼文、偵測有害內容,並在違反平台守則時移除或降級。實務上企業如何建構此類系統,可參考。

有害內容偵測系統

釐清需求#

以下是候選人與面試官之間的典型對話。

候選人: 系統是否同時偵測有害內容與惡意行為者?

面試官: 兩者同樣重要。為求簡化,我們只聚焦於偵測有害內容。

候選人: 貼文只包含文字,還是也允許圖片和影片?

面試官: 貼文內容可以是文字、圖片、影片,或上述任意組合。

候選人: 支援哪些語言?只有英文嗎?

面試官: 系統應能偵測多種語言的有害內容。為求簡化,假設我們可以使用預訓練的多語言模型來嵌入文字內容。

候選人: 我們要辨識哪些特定類別的有害內容?我想到暴力、裸露、仇恨言論、不實資訊等,還有其他需要考慮的類別嗎?

面試官: 很好,你提到了主要的類別。不實資訊(misinformation)較為複雜且具爭議性,我們暫不討論。

候選人: 是否有人工標註員可手動標記貼文?

面試官: 平台每天收到超過 5 億則貼文,全部由人工標記既昂貴又耗時。不過,你可以假設每天有人工標註能力處理約 10,000 則貼文。

候選人: 允許使用者檢舉有害內容,有助於瞭解系統的不足之處。我可以假設系統具備此功能嗎?

面試官: 好觀點。是的,使用者可以檢舉有害貼文。

候選人: 是否應向使用者解釋貼文被判定為有害並移除的原因?

面試官: 是的。向使用者解釋移除原因很重要,有助於他們未來遵循守則發布內容。

候選人: 系統的延遲需求是什麼?是否需要即時預測(偵測後立即封鎖),還是可以依賴批次預測(每小時或每天離線偵測)?

面試官: 這是非常重要的問題。你有什麼想法?

候選人: 我認為不同類型的有害內容可能有不同需求。例如暴力內容可能需要即時處理,而其他類型則可接受延遲偵測。

面試官: 這些假設合理。

問題總結:設計一個有害內容偵測系統,辨識有害貼文後刪除或降級,並告知使用者原因。貼文可包含文字、圖片、影片或其組合,且支援多種語言。使用者可檢舉有害貼文。

將問題框架為 ML 任務#

定義 ML 目標#

ML 目標為準確預測有害貼文。若能準確偵測有害貼文,便能移除或降級這些內容,使平台更安全。

指定系統的輸入與輸出#

  • 輸入:一則貼文
  • 輸出:該貼文為有害內容的機率

有害內容偵測系統的輸入輸出

貼文可以是異質性(heterogeneous)且多模態(multimodal)的資料,如下圖所示。

異質性貼文資料

為了做出準確預測,系統應考慮所有模態。以下討論兩種常用的融合方法:Late FusionEarly Fusion

Late Fusion#

Late Fusion 讓各 ML 模型獨立處理不同模態,再結合各自的預測做出最終判斷。

Late Fusion

優點:

  • 可獨立訓練、評估與改進每個模型

缺點:

  • 需要為每種模態分別準備訓練資料,既耗時又昂貴
  • 當各模態單獨看是無害的,但組合後具有害性時(常見於迷因圖文),Late Fusion 會判斷失誤——因為每個模型分別預測為無害,融合層的輸出也會是無害

Early Fusion#

Early Fusion 先結合所有模態,再由模型做出預測。

Early Fusion

優點:

  • 不需為每種模態分別收集訓練資料,只需為單一模型準備資料
  • 模型同時考慮所有模態,能捕捉到單一模態無害但組合後有害的情況

缺點:

  • 因模態間的複雜關係,學習難度較高
  • 在訓練資料不足的情況下,模型難以學習複雜關係

選擇融合方法#

採用 Early Fusion,原因如下:

  • 能捕捉到各模態單獨無害但整體有害的貼文
  • 每天約有 5 億則貼文發布,模型有充足的資料來學習

選擇 ML 類別#

以下檢視四種 ML 類別選項:

  • 單一二元分類器(Single binary classifier)
  • 每個有害類別一個二元分類器(One binary classifier per harmful class)
  • 多標籤分類器(Multi-label classifier)
  • 多任務分類器(Multi-task classifier)

單一二元分類器#

模型以融合特徵為輸入,預測貼文為有害的機率。

單一二元分類器

缺點:

  • 無法判斷貼文屬於哪種有害類別(如暴力)
  • 難以告知使用者移除原因,因為系統僅輸出「是否有害」的二元值
  • 難以辨識系統表現不佳的有害類別,無法針對性改進

由於需要向使用者解釋移除原因,單一二元分類器並非理想選項。

每個有害類別一個二元分類器#

為每個有害類別各配置一個二元分類器,每個模型判斷貼文是否屬於特定有害類別。

每個有害類別一個二元分類器

優點:

  • 可向使用者解釋貼文被移除的原因
  • 可獨立監控與改進各模型

缺點:

  • 多個模型需分別訓練與維護,既耗時又昂貴

多標籤分類器#

在多標籤分類中,資料點可屬於任意數量的類別。使用單一模型作為多標籤分類器,輸入為融合特徵,輸出各有害類別的機率。

多標籤分類器

  • 使用共享模型處理所有有害類別,訓練與維護成本較低
  • 若想深入瞭解此方法,可參考 WPIE

缺點:

  • 使用共享模型預測各有害類別的機率並非最佳,因為輸入特徵可能需要針對不同任務做不同的轉換

多任務分類器#

Multi-task learning 讓模型同時學習多個任務,從而學習任務間的相似性,避免不必要的重複計算。

在本例中,我們將不同有害類別(如暴力、裸露)視為不同任務,使用多任務分類模型。如下圖所示,多任務分類包含兩個階段:共享層任務專屬層

多任務分類概覽

共享層(Shared Layers)

共享層是一組隱藏層,將輸入特徵轉換為新特徵,供各有害類別的預測使用。

共享層

任務專屬層(Task-specific Layers)

任務專屬層是一組獨立的 ML 層(也稱為 classification heads),各自以最適合其任務的方式轉換特徵。

任務專屬層

多任務分類的優點:

  • 訓練與維護成本低:使用單一模型
  • 計算效率高:共享層以對各任務有益的方式轉換特徵,避免冗餘計算
  • 任務間知識共享:各任務的訓練資料有助於其他任務的學習,特別是在某任務資料有限時

基於上述優勢,我們採用多任務分類方法。

將問題框架為 ML 任務

資料準備#

資料工程#

可用的資料來源:

  • 使用者資料(Users)
  • 貼文資料(Posts)
  • 使用者與貼文的互動資料(User-post interactions)

使用者資料#

IDUsernameAgeGenderCityCountryEmail

Table 5.1: 使用者資料結構

貼文資料#

貼文資料包含作者、上傳時間等欄位。下表列出部分重要屬性,實務上每則貼文通常有數百個屬性。

Post IDAuthor IDOn-deviceTimestampTextual contentImages or videosLinks
1173.93.220.2401658469431Today, I am starting my diet.http: //cdn.mysite.com/u1.jpg-
21189.42.110.2501658471428The video amazed me! Please donatehttp: //cdn.mysite.com/t3.mp4gofundme.com/f/3u1njd32
3439.55.180.0201658489233What is a good restaurant in the Bay area?http: //cdn.mysite.com/t5.jpg-

Table 5.2: 貼文資料

使用者與貼文互動資料#

使用者互動資料主要包含對貼文的反應,例如按讚、留言、收藏、分享等。使用者也可以檢舉貼文或提出申訴。

User IDPost IDInteraction typeInteraction valueTimestamp
116Impression-1658450539
420Like-1658451341
117CommentThis is disgusting1658451365
420Share-1658435948
117Reportviolence1658451849

Table 5.3: 使用者與貼文互動資料

特徵工程#

在前一節中,我們將問題框架為多任務分類,輸入為貼文。本節探討可從貼文中衍生的預測特徵。

貼文可能包含以下元素:

  • 文字內容
  • 圖片或影片
  • 使用者對貼文的反應
  • 作者資訊
  • 情境資訊

文字內容#

貼文的文字內容可用於判斷是否有害。如第 4 章所述,文字資料通常經過兩個步驟準備:

  • 文字前處理:正規化(normalization)、分詞(tokenization)等
  • 向量化:將前處理後的文字轉換為有意義的特徵向量

向量化部分是本章重點。可使用統計方法或 ML 方法:

  • 統計方法(如 BoW、TF-IDF):易於實作且計算快速,但無法編碼文字的語義
  • ML 方法:由於判斷有害性需要理解語義,我們採用 ML 方法,使用預訓練的 Transformer 語言模型(如 BERT)將文字轉換為特徵向量

然而,原始 BERT 有兩個問題:

  • 由於模型規模大,生成文字嵌入耗時長,不適合用於線上預測
  • BERT 僅以英文資料訓練,無法為其他語言生成有意義的嵌入

DistilmBERT 是 BERT 的高效變體,解決了上述兩個問題。若兩句話具有相同含義但使用不同語言,其嵌入會非常相似。更多關於多語言語言模型的資訊可參考。

圖片或影片#

通常可透過貼文中的圖片或影片來判斷其內容。非結構化資料的準備通常包含兩個步驟:

  • 前處理:解碼、調整大小、正規化
  • 特徵擷取:使用預訓練模型將非結構化資料轉換為特徵向量
    • 圖片:可使用 CLIP 的視覺編碼器 或 SimCLR
    • 影片:可使用 VideoMoCo

使用者對貼文的反應#

當內容模糊不清時,使用者反應也能幫助判斷貼文是否有害。如下圖所示,隨著留言增加,愈來愈明顯該貼文包含自殘相關內容。

包含自殘疑慮的貼文

由於使用者反應對判斷有害內容至關重要,以下是可工程化的特徵:

按讚、分享、留言與檢舉次數

  • 通常對這些數值進行縮放(scaling),以加速模型訓練的收斂

留言內容

  • 使用先前的預訓練模型取得每則留言的嵌入
  • 聚合(如取平均)所有嵌入,得到最終的嵌入向量

反應與內容的特徵工程

作者特徵#

作者過往的互動紀錄可用於判斷貼文是否有害。

作者的違規歷史

  • 違規次數:作者過去違反守則的次數
  • 被檢舉總次數:使用者檢舉該作者貼文的次數
  • 不雅用詞比率:作者過往貼文與留言中使用不雅詞彙的比率(使用預定義的不雅詞彙清單判定)

作者人口統計資訊

  • 年齡:最重要的預測特徵之一
  • 性別:使用 one-hot encoding 表示
  • 城市與國家:由於可能的值非常多,使用 embedding layer 將其轉換為特徵向量(one-hot encoding 會產生過長且稀疏的表示,效率不佳)

帳號資訊

  • 追蹤者與追蹤中人數
  • 帳號年齡:較新的帳號更可能是垃圾帳號或違規帳號

情境資訊#

  • 發文時間:將時間分桶(bucketize)為早晨、中午、下午、傍晚、夜間等類別,使用 one-hot encoding 表示
  • 裝置類型:如智慧型手機或桌上型電腦,使用 one-hot encoding 表示

特徵工程總結

模型開發#

模型選擇#

神經網路是多任務學習最常用的模型。在選擇神經網路時,需決定:

  • 網路架構設計
  • 最佳超參數(hidden layers、activation function、learning rate 等)

最佳超參數通常透過 hyperparameter tuning 決定。常用方法為 grid search:對每組超參數組合訓練一個模型,評估後選出表現最佳的超參數。更多資訊可參考。

模型訓練#

建構資料集#

資料集包含模型的輸入(特徵)輸出(標籤)

  • 輸入:離線批次處理貼文,計算融合特徵,儲存於 feature store
  • 標籤:有兩種方式取得
    • 人工標註(Hand labeling):準確但昂貴且耗時
    • 自然標註(Natural labeling):依據使用者檢舉自動標記,較快但雜訊較多

評估資料集使用人工標註以優先確保標籤準確性;訓練資料集使用自然標註以優先確保標記速度。

已建構的資料點

選擇損失函數#

多任務神經網路的訓練流程與一般神經網路類似:

  • 前向傳播(forward propagation):進行計算以產生預測
  • 損失函數(loss function):衡量預測的正確性
  • 反向傳播(backward propagation):優化模型參數以降低損失

在多任務訓練中,每個任務被指定一個損失函數。由於各任務皆為二元分類,我們採用標準的 cross-entropy loss。整體損失為各任務損失的組合。

模型訓練

多模態系統訓練的常見挑戰是 overfitting。例如,不同模態的學習速度不一致時,某一模態(如圖片)可能主導學習過程。可使用 gradient blendingfocal loss 來解決此問題。

評估#

離線指標#

評估二元分類模型常用的離線指標包括 precisionrecallF1 score。但單獨使用 precision 或 recall 不足以全面理解模型表現(例如高 precision 的模型可能 recall 極低)。

PR 曲線(Precision-Recall Curve)

  • 呈現 precision 與 recall 之間的取捨
  • 以不同機率門檻(0 到 1)繪製模型的 precision
  • PR-AUC:PR 曲線下面積,數值越高表示模型越準確

PR 曲線

ROC 曲線(Receiver Operating Characteristic Curve)

  • 呈現 true positive rate(recall)與 false positive rate 之間的取捨
  • ROC-AUC:ROC 曲線下面積

ROC 與 PR 曲線是兩種不同的分類模型效能摘要方式。兩者差異可參考。本系統同時使用 ROC-AUC 與 PR-AUC 作為離線指標。

線上指標#

以下是衡量平台安全性的重要指標:

Prevalence(有害內容比率)

$\text { Prevalence }=\frac{\text { Number of harmful posts we didn’t prevent }}{\text { Total number of posts on the platform }}$

  • 缺點:未考慮貼文的影響範圍——一則有 10 萬次瀏覽的有害貼文,危害遠大於兩則各 10 次瀏覽的貼文

Harmful Impressions(有害曝光次數)

  • 優於 prevalence,因為它捕捉到有多少人受到有害貼文的影響

Valid Appeals(有效申訴率)

$\text { Appeals }=\frac{\text { Number of reversed appeals }}{\text { Number of harmful posts detected by the system }}$

  • 衡量被判定為有害但經申訴後撤銷的貼文比例

Proactive Rate(主動偵測率)

$\text { Proactive rate }=\frac{\text { Number of harmful posts detected by the system }}{\text { Number of harmful posts detected by the system }+\text { reported by users }}$

  • 衡量系統在使用者檢舉前主動發現並刪除的有害貼文比例

User Reports per Harmful Class(各有害類別的使用者檢舉數)

  • 分析各有害類別的使用者檢舉情況,衡量系統在各類別的表現

系統服務架構#

下圖為高層級的 ML 系統設計,以下逐一說明各元件。

ML 系統設計

有害內容偵測服務#

針對新貼文,此服務預測其有害機率。根據需求,某些高敏感度的有害類型需立即處理,此時由違規執行服務直接移除貼文。

違規執行服務#

當有害內容偵測服務以高信心度預測貼文有害時,違規執行服務會:

  • 立即下架該貼文
  • 通知使用者移除原因

降級服務#

當有害內容偵測服務以低信心度預測貼文有害時,降級服務會:

  • 暫時降低該貼文的曝光度,減少其傳播機會
  • 將貼文存入儲存區,供人工審核團隊審查
  • 審核團隊手動為貼文指定有害類別標籤,這些標記可用於未來的模型訓練迭代

其他討論主題#

  • 處理人工標註引入的偏差
  • 調整系統以偵測趨勢性有害類別(如 COVID-19、選舉)
  • 如何建構利用時序資訊(如使用者行為序列)的有害內容偵測系統
  • 如何有效選取貼文樣本進行人工審核
  • 如何偵測真實與虛假帳號
  • 如何處理邊界內容(borderline contents)——未違反守則但接近紅線的內容
  • 如何提升偵測系統效率以部署在裝置端
  • 如何以 Linear Transformer 替代傳統 Transformer 架構以提升效率