03 替換式注入:假資料怎麼造
導航:← 02 bootstrap | 目錄 | 04 參照與檢驗 →
每題的解答都收合在題目下方:先自己作答,再點開「看解答」核對。
先認識這些詞
這一課新出現的詞如下(前面課程已解釋過的詞不重複,完整列表見 術語表)。
- 選項:一題可以選的答案,例如「贊成」「反對」。
- S 的含義:S 代表 Single(單一題目)。S-B、S-L、S-W、S-M 都只攻擊一題;C 跨多題,所以不加 S。
- 攻擊強度 γ(伽瑪):在被攻擊的每一題中,被替換掉的真票佔該題全部票數的比例。研究主要用 0.20,也就是約 20% 的票被換成假票。
目標
讀完這課,你能說明「替換式」和「加法式」的差別,並知道研究為什麼選擇替換式。
白話
我們沒有真的灌票的資料,所以要自己造。造假資料的方式有兩種:
加法式:在原本的票上多加假票。
- 問題:總票數變多了。如果只看票數,就能抓到灌票(灌票題的票一定比較多)。
替換式:把某些真票改成假票,總票數不變。
- 優點:偵測器不能靠票數作弊。
在加法式下,只看票數就能抓到假票;在替換式下,只看票數的模型失效,這就是研究選擇替換式的原因。
研究的四種攻擊
論文中的假資料由四種主要攻擊產生,另有一種用來測試的攻擊。字母代號的全名是我們根據程式命名推定的,專案文件沒有寫出全名:
| 代號 | 推定全名 | 白話 | 程式參數 |
|---|---|---|---|
| S-B | Burst(爆發) | 在投票期間中的一小段時間內,集中大量投同一方向 | 時段佔投票期間的 5% |
| S-L | Late(晚段) | 只在投票結束前的最後一段時間投,即尾段翻盤;投給排名第二的選項 | 最後 20% 的時間 |
| S-W | Wave(波) | 分三波投票,每波都是短暫的集中投入 | 3 波,每波 5% 的時段 |
| C | Campaign(活動) | 網軍:100 個帳號同時攻擊 3 到 8 題,每題在約 1 小時內投票 | 跨多題 |
| S-M | Mimic(模仿) | 時間擬態:投票時間照正常票的分布,刻意模仿正常行為;只在「沒見過的攻擊」的實驗中使用 | 沒有集中的時段 |
S 的含義:S 代表 Single(單一題目)。S-B、S-L、S-W、S-M 都只攻擊一題;C 跨多題,所以不加 S。
攻擊強度 γ = 0.20,代表在每一個被攻擊的題目中,約 20% 的票被換成假票。
看這裡
src/attacks.py第 91–92 行:set_mask,決定哪些題可以被攻擊(參照題或檢驗題)。src/attacks.py第 97 行附近:targets,決定這次實際被攻擊的題目。src/attacks.py:各攻擊的時間與選項規則(讀的時候先找攻擊名稱)。
問自己
1. 替換時,被替換的那張票是真票還是假票?替換後的新票,選項是怎麼決定的?
看解答
被替換的是真票,換成的是假票。假票的選項由攻擊規則決定:從非領先的選項中選(S-L 固定投給排名第二的選項);時間依攻擊型態決定。
2. 如果被攻擊的題目,其票數恰好和正常題相同,只看票數的模型能分辨嗎?
看解答
分不出來,因為總票數一樣。這正是替換式的設計目的。
3. 攻擊為什麼要「不改變總票數與投票期間」?
看解答
總票數不變,才能排除「票數多寡」這個捷徑;投票期間也不改,才能排除「時間長短」的捷徑。
練習
一題原本有 10 票:贊成 6、反對 4。用替換式注入,把其中 3 票改成假票(假票全部投反對)。
1. 替換後,總票數是多少?
看解答
10 票(替換不增加票數)。
2. 替換後,贊成與反對各是多少?
看解答
假設被替換的 3 票原本是贊成票(假票全部投反對),則贊成 3、反對 7。如果被替換的是反對票,假票也投反對,結果不變。
3. 只看「總票數」,這題和沒被攻擊的題有沒有差別?
看解答
沒有差別。只看總票數分不出來,這就是替換式的目的。
檢核
1. 加法式和替換式的主要差別是什麼?
看解答
加法式是在原有票上多加假票,總票數變多;替換式是把真票換成假票,總票數不變。
2. 為什麼研究要用替換式?
看解答
加法式的假票讓總票數改變,只看票數就能抓到,會洩漏答案;替換式下,只看票數的模型失效,約等於亂猜。
3. S-M 攻擊為什麼要獨立測試?
看解答
S-M(時間擬態)是刻意模仿正常時間的攻擊。它的假票時間照正常票的分布製造,所以在時間上看起來和正常票一樣。
用它來測試的問題是:攻擊者刻意模仿正常,偵測器還抓得到嗎?
- 抓得到(AUC 高)是好的。
- 抓不到(AUC 接近 0.5,等於亂猜)就是「被騙」,也就是漏抓。
研究把 S-M 當作一個需要誠實檢驗的弱點:偵測器抓不到時,它就被騙。結果以論文為準。
S-M 只在「沒見過的攻擊」的實驗中使用:訓練時不含它,所以結果反映的是偵測器能不能推廣到沒見過的攻擊。
導航
- 上一課:02 bootstrap
- 下一課:04 參照與檢驗
- 回到目錄 | 術語表
引用文獻
- Liu, K., Dou, Y., Zhao, Y., et al. (2022). BOND: Benchmarking unsupervised outlier node detection on static attributed graphs. NeurIPS Datasets and Benchmarks. [bib: liu2022bond] — 論文用它說明注入式異常容易被規模識破,因此改用替換式。
- Chandola, V., Banerjee, A., & Kumar, V. (2009). Anomaly detection: A survey. ACM Computing Surveys, 41(3). [bib: chandola2009anomaly]
- Beutel, A., Xu, W., Guruswami, V., Palow, C., & Faloutsos, C. (2013). CopyCatch: Stopping group attacks by spotting lockstep behavior in social networks. WWW. [bib: beutel2013copycatch] — 同步行為(S-B、S-W 的背景)。
- Mukherjee, A., Liu, B., & Glance, N. (2012). Spotting fake reviewer groups in consumer reviews. WWW. [bib: mukherjee2012spotting] — 網軍(C)的背景。
- 攻擊類型(S-B、S-L、S-W、C、S-M)的精確定義是本研究的設計,見
doc/runbook/v13/SUMMARY.md§3。