跳到主要内容

術語表:假設你完全沒看過這個實驗

導航:目錄 | 第 0 課

這份表列出學習資料夾裡出現的所有專業詞。每個詞都用白話解釋,不需要任何統計或機器學習背景。每一課開頭也會列出該課第一次出現的詞。

一、研究在比較什麼​

投票平台:讓人對題目投票的網站或應用程式。 題目:一個被拿來投票的問題,例如「要不要通過某個提案」。研究中也叫「提案」。程式中的欄位名稱是 q,我們舉例時也寫成 q。 票:一個人對某一題投的一次選擇。 選項:一題可以選的答案,例如「贊成」「反對」。 帳號:平台用來辨認使用者的身分,可以跨多題追蹤同一個人。 vote_token(投票憑證):每一票附帶的一組隨機字串,由使用者的助記詞與題目編號推導出來。同一人在不同題目上的 vote_token 不同,因此無法把兩題的票連到同一個人;但不是帳號,平台也不用它來登入。研究中 AVP 的每票只有這個憑證,沒有可以跨題追蹤的帳號。 來源域:用來學習的平台。研究用了三個有帳號的平台:Decentraland(DAO 治理投票)、Polis(意見調查)、YelpNYC(紐約市的店家評論)。 目標域:要應用學到的東西的平台。研究中是 AVP。 AVP(不記名投票平台):研究的目標平台。每一票都附一個 vote_token(投票憑證),不是帳號;同一人在不同題目上的 vote_token 不同,無法跨題連結。 研究問題(RQ):研究想回答的問題。RQ1、RQ2、RQ3 分別是三個問題。

二、攻擊與假資料​

灌票:為了改變結果,集中大量投票到某個方向。 注入:人工製造假的灌票資料。因為真實的灌票沒有被標記過,研究只能自己製造。 替換式注入:把一些真票改成假票,總票數不變。 加法式注入:在原有的票上多加假票,總票數會變多。 攻擊(S-B、S-L、S-W、C、S-M):研究設計的五種灌票模式的統稱。字母的全名是我們根據程式命名推定的,見下表。

代號推定全名白話程式參數
S-BBurst(爆發)在投票期間中的一小段時間內,集中大量投同一方向時段佔投票期間的 5%
S-LLate(晚段)只在投票結束前的最後一段時間投,即尾段翻盤;投給排名第二的選項最後 20% 的時間
S-WWave(波)分三波投票,每波都是短暫的集中投入3 波,每波 5% 的時段
CCampaign(活動)一群 100 個帳號同時攻擊 3 到 8 題,每題在約 1 小時內投票(網軍)跨題攻擊
S-MMimic(模仿)投票時間照正常票的分布,刻意模仿正常行為(時間擬態);偵測器抓不到就是「被騙」(漏抓),AUC 接近 0.5沒有集中的時段

S 的含義:S 代表 Single(單一題目)。S-B、S-L、S-W、S-M 都只攻擊一題;C 跨多題,所以不加 S。 網軍:一群協同行動的帳號,共同投票影響結果。 攻擊強度 γ(伽瑪):在被攻擊的每一題中,被替換掉的真票佔該題全部票數的比例。研究主要用 0.20,也就是約 20% 的票被換成假票。

三、資料怎麼切、怎麼用​

參照題:用來學習「正常長什麼樣」的題目。訓練時可以看,也可以在上面製造假灌票。 檢驗題:用來考試的題目。訓練時完全不能碰,只用來最後打分。 分層切分:切分時依票數的多寡分組,再從各組各抽一部分,讓兩邊的票數分布接近。 冷啟動:新平台只有很少題目時的情況。 n:參照題數,也就是冷啟動時用來學習的題數,例如 n = 10 表示只用 10 題參照。它不是實驗次數。 保留店家:紐約市 YelpNYC 資料中的一批店家,在研究初期就切出來、完全不讀,只在最後的確認時使用。 確認性評估:最後用保留下來的資料做一次正式檢驗,只做一次,不因結果重做。 合成資料:人工生成的假資料,用來測試程式,不是真實資料。

四、從資料算出數字​

特徵:從一題的票算出來的數字,例如選項比例、投票的時間分布。機器用特徵來判斷。 提案圖:把題目當成點,時間上重疊的題目之間連一條線,形成一張圖。圖上的點叫節點,線叫邊。 圖小波:在圖上對數字做平滑或過濾,抓出數字在圖上的起伏模式。把它想成「看圖上數字的波動」即可。 對齊:用各平台自己的參照題做標準化,讓不同平台的數字可以放在同一把尺上比較。 字典:用正常的參照題記下「正常題目長什麼樣」的一組範本。 重建誤差:用字典去還原一題,還原得越不像,代表這題越不正常。數字越大越可疑。 代理標籤:沒有真正答案時,用外部名單或規則當成「近似的答案」。例如用空投女巫名單當作可疑。

五、模型​

模型:會從資料學規則,然後對新資料給出判斷的程式。 訓練:讓模型從有答案的資料學習規則。 預測:用訓練好的模型對新資料給出分數。 分數:模型給每題的一個數字,越大代表越可疑。 梯度提升:一種模型。把很多簡單的規則一條一條加起來,每條新規則修正前面規則的錯誤。研究中當成黑箱使用即可。 超參數:模型的設定數字,例如規則的最大深度、學習速度。要在看結果之前就事先決定。 圖神經網路(GNN):一種較複雜的模型,直接在圖上學習。研究的第一輪用的是它。 第一輪 / 第二輪:研究分兩次做。第一輪用 GNN,結果沒有通過事先定的規則;第二輪改用 R2。 R2:第二輪的模型名稱,是梯度提升加上前面的特徵(時間圖、對齊、字典)。名字只是編號,不是統計上的 R²。 跨域:把在一個平台學到的模型,拿到另一個平台使用。 自我注入:目標平台(AVP)用自己的參照題,人工製造假灌票來訓練模型(第 5 階段)。 合併模型:同時用來源域的假資料與 AVP 自己的假資料一起訓練。

六、衡量好壞​

正例:被攻擊的題(灌票題)。在 AUC 中,應該被排在前面的那一類。 負例:沒有被攻擊的題(正常題)。

AUC:衡量「排序能力」的數字。隨機抓一題灌票和一題正常,模型把灌票排在前面的機率。0.5 是亂猜,1.0 是每次都正確。 排序:依分數從大到小排列題目。 區間(95% 區間):一個數字可能的範圍。例如 [0.08, 0.14] 表示我們有相當把握,真正的數字在這個範圍內。 差(d − e、借用 − 自造):兩個方法的 AUC 相減。大於 0 表示前者比較好。 標準化平均差(SMD):衡量兩組是否平衡的數字。越接近 0 越平衡。

七、估計誤差範圍​

實驗:用同一個隨機種子做一次「製造假灌票、再打分」。實驗次數(真實研究):Polis 10 次、Decentraland 12 次。每次實驗的假灌票位置不同,分數也不同。程式中的欄位名稱是 draw,我們舉例時寫成 r。論文中也稱為「抽樣」(注入抽樣)。 bootstrap(重抽樣):從手上的資料有放回地重新抽樣,重做很多次,看結果會怎麼變,藉此估計誤差範圍。注意:2,000 次是「重抽」的次數,不是實驗次數;它不會增加新的實驗。 抽樣層級 bootstrap:只重抽「實驗」,題目不動。只反映「每次實驗的假灌票不同」造成的變動,所以區間較窄。第 1 到第 4 階段(含確認性評估)的判定用這一種。 兩層 bootstrap:先重抽「實驗」,再在每次被抽到的實驗裡重抽「題目」。同時反映兩種變動,所以比抽樣層級寬。第 5 階段起的判定用這一種;第 4 階段也用它重算,但只報告,不改判定。 交叉 bootstrap:所有實驗共用同一組重抽的題目。比兩層更保守。第 8 階段(審查後、經預先登記)用它檢查結論會不會改變;判定仍以兩層為準。 分層重抽:正例與負例各自重抽,兩組的題數都不變。產生器稽核用的 boot_ci 就是這種做法。 種子(隨機種子):讓隨機結果可以重現的起始數字。同一個種子,每次跑出來的隨機數都一樣。

八、決定要不要標記​

p 值:如果這題其實是正常的,看到這麼極端的分數的機率。越小越可疑。 誤判率(FPR):正常的題目被誤標為可疑的比例。 FDR(錯誤發現率):被標為可疑的題目中,實際上是正常的比例。 BH 方法:一種決定要標記哪幾題的程序,用來控制 FDR。 Simes 檢定:判斷一整批題目裡有沒有任何一題可疑。 整批檢定:對一整批題目問「有沒有任何一題可疑」,而不是逐題判斷。 共形推論:一種用「校準集」算出每題誤判率的方法,不需要模型一定正確。 校準集:已知正常的一組題目,用來決定判斷的標準。 誤報:正常的題目被誤判為可疑。 檢定力:真的有灌票時,方法能抓到的機率。

九、確保結果可信​

預先登記:做實驗前,先把做法與判定規則寫下來並存檔,之後不能事後更改。 協定:預先登記的實驗計畫文件。 修訂紀錄:協定的修改記錄,寫明何時改、為什麼改。 資料洩漏:模型在學習時不小心看到了答案,成績會虛高。 獨立比對:用另一套獨立寫的計算結果,和原本的結果對照,確認沒有算錯。 sklearn(scikit-learn):常用的 Python 機器學習套件,研究用它做獨立比對。 加權:給每題不同的權重(次數),讓它在計算時佔不同的份量。 單元測試:自動檢查程式是否按預期運作的小測試。 程式碼審查(code review):人工逐段閱讀程式,檢查是否正確。

十、補充:資料來源、研究與其他詞​

權重:每題在計算時佔的份量。權重為 2 的題,等於算了兩次。 熱核(heat kernel):一種在圖上平滑數字的數學工具。可以想成數字在圖上「擴散」的速度,用來抓出圖上的起伏模式。 百分位:把一批數字由小到大排後,位於某個百分比位置的數字。例如第 90 百分位:有 90% 的數字比它小。 分位(分位數):把一批數字由小到大排後,位於某個比例位置的數字。例如第 2.5% 分位:有 2.5% 的數字比它小。 可達性:規則能不能被滿足的檢查。例如某個判定規則在最理想的情況下都做不到,那就不可能用它得出結論。 真值:真正的答案。研究中因為沒有真實標籤,很多時候只能用代理標籤近似。 樣本:從資料中抽出來用來計算的一部分資料。 累計投票次數:同一個人在這個平台上之前已經投過幾題(程式中的欄位叫 vvc)。它有兩個限制:可能把匿名的票串回同一個人,所以部署版本不使用;而且不是每個第三方平台都會提供,所以研究把它當作消融實驗來檢查。在目標平台上它由用戶端自行回報、無法驗證。歷史上,早期版本(v3)不用身分,它曾是少數能和其他平台對齊的行為訊號;到 v13 來源域允許用身分後,它的角色可能改變。 Hop:一個區塊鏈協議。它公布過一份「空投女巫」名單,也就是用假帳號領取免費代幣的人。 LayerZero:另一個區塊鏈協議,也公布過一份類似的女巫名單。研究用它來檢驗跨名單的結果。 XGBoost:另一種梯度提升的套件,E 課裡引用的 LayerZero 名單研究用它來偵測女巫。 Snapshot:一個常用的 DAO(去中心化自治組織)投票平台。Decentraland 的治理投票資料來自這裡。 Polis:一個意見調查平台,參與者對各種意見表示同意或不同意,研究用它的公開資料(有帳號的來源域之一)。 Yelp(YelpNYC):美國的店家評論網站。YelpNYC 是紐約市的店家與評論資料,研究用它來做來源域(有帳號的來源域之一)。 GADBench:一篇比較各種「圖異常偵測」方法的基準研究。研究引用它來說明「樹模型常勝過圖神經網路」的發現一致。 OWLEYE:一篇跨圖異常偵測的研究,用「正常型態字典」做零樣本偵測。研究的字典概念來自它。 GAD-NR:一篇用「鄰居重建」做圖異常偵測的研究。研究的重建思想來自它。 BOND:一篇無監督圖異常偵測的基準研究。研究用它說明注入式假資料容易被識破。 DAO-GCNN(DuPont 2023):一篇用圖深度學習分析匿名投票網路的研究。研究的時間圖概念來自它。 學術會議(ICLR、NeurIPS、WSDM 等):發表論文的學術會議名稱,寫在引用文獻裡表示該研究發表的地方。

十一、方法名稱(對照舊協定的代號時用)​

借用模型:只用其他來源域的資料訓練,直接拿到 AVP 上用。協定代號 (d)。 借用+字典:借用模型,再加上 AVP 自己的參照題建立的字典。協定代號 (b2)。 自造假資料:AVP 用自己的參照題,人工製造假灌票來訓練(第 5 階段)。協定代號 (e)。 自造假資料(R2 版):同上,但使用 R2 的特徵。協定代號 (e2)。 自學無監督:AVP 只用自己的資料,不用假資料訓練,例如 kNN、IF、LOF 三種方法。協定代號 (c)。 代號衝突:早期的第 2 階段協定也用 (e) 代表「只用時間重疊邊的來源模型加目標域字典」。第二輪已移除該方法,(e) 在第 5 階段才被重新用於自造假資料。讀到代號時,要先確認是哪一階段的協定。學習資料夾一律使用方法名稱。 kNN、IF、LOF:三種最基本的「找出不一樣的題目」方法。kNN 看一題和最近幾題差多遠;IF(隔離森林)看一題多容易被單獨切出來;LOF 看一題的密度是否比鄰居低。

十二、補充:比較與檢查用的詞​

產生器:製造假灌票的程式。研究中的「注入產生器」負責把真票換成假票,造出各種攻擊。 稽核(產生器稽核):檢查假資料有沒有留下不該有的痕跡。例如某個欄位只有假票才會出現,偵測器就可能學到這個痕跡,而不是灌票本身。 欄位:資料表裡的一項資訊。例如每一票的選項、投票的時間,都是欄位。 無監督(方法):不使用答案(哪題是灌票)來學習,只看資料本身的分布,找出與眾不同的題目。 基準(baseline):拿來比較的參考方法。新方法要比基準好,比較才有意義;基準太弱,比較的結論就不可靠。 對照(組):和主要方法放在一起比較、用來排除其他解釋的一組方法或設定。 真實標籤:真正知道答案(哪題是真的灌票)的標記。AVP 沒有真實標籤,所以研究只能用代理標籤近似。 重抽次數 B:bootstrap 重抽的次數,例如 B = 2000。它不是實驗次數,也不會增加新的實驗。