持續學習安全
持續學習系統中的安全風險:災難性遺忘的利用、任務干擾攻擊、回放緩衝區投毒,以及穩定性與可塑性權衡的操縱。
持續學習(continual learning)——即模型能夠在不從頭重新訓練的情況下學習新任務或吸收新資料的能力——對於必須適應變動環境的部署中 AI 系統至關重要。然而,實現持續學習所依賴的機制也帶來了新的攻擊面。能夠影響模型在部署生命週期內學習內容的攻擊者,可以選擇性地弱化某些能力、植入在日後更新時才啟動的後門,或是利用學習新資訊與保留舊知識之間的緊張關係來製造傷害。
持續學習架構與攻擊面
常見做法
| 做法 | 機制 | 攻擊面 |
|---|---|---|
| 基於回放(Replay-based) | 儲存並回放舊訓練樣本 | 回放緩衝區投毒 |
| 基於正則化(Regularization-based) | 限制權重更新以保護舊知識 | 約束條件操縱 |
| 基於架構(Architecture-based) | 為新任務配置獨立參數 | 任務路由操縱 |
| 基於梯度(Gradient-based) | 投影梯度以避免干擾舊任務 | 梯度方向攻擊 |
| 線上微調 | 對新資料持續進行微調 | 資料流投毒 |
┌─────────────────────────────────────────────────────────┐
│ Continual Learning System │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ New Data │───▶│ Update │───▶│ Updated │ │
│ │ Stream │ │ Mechanism │ │ Model │ │
│ └──────────────┘ └──────┬───────┘ └────────────┘ │
│ ▲ │ │
│ Attack 1 Attack 2 │
│ Data poisoning Mechanism exploitation │
│ │ │
│ ┌───────▼───────┐ │
│ │ Memory / │ │
│ │ Replay Buffer │ │
│ └───────────────┘ │
│ Attack 3 │
│ Buffer poisoning │
└─────────────────────────────────────────────────────────┘攻擊 1:利用災難性遺忘
災難性遺忘 通常被視為需要解決的問題。但對攻擊者而言,它是一種武器。透過對持續學習系統餵入精心設計的資料,攻擊者可以讓模型遺忘特定能力。
鎖定目標的遺忘攻擊
攻擊者為新任務設計訓練樣本,使其在更新時最大化干擾與目標能力相關的權重。
實作上分兩階段:第一階段先對「要破壞的目標任務」資料跑一次前向與反向傳播,收集每個參數的梯度絕對值累計,藉此辨識出哪些參數對目標能力最重要;第二階段則以攻擊資料對模型進行訓練,並在反向傳播後對梯度進行重新縮放——對目標任務關鍵參數的梯度放大 (1 + 重要度 / 最大重要度) 倍,使攻擊訓練優先改寫這些權重。經過若干步驟後,模型便會在看似學習新任務的同時,專門侵蝕目標能力。
量測遺忘程度
評估方式是對每個任務比較更新前後的分數,並計算下降幅度 forgetting = score_before - score_after 與百分比。根據下降比例可將嚴重程度標記為:>50% 為 critical、>20% 為 significant、>10% 為 moderate、其餘為 minimal。這種比較能揭示哪些能力被選擇性削弱。
攻擊 2:任務干擾
當模型學習多個任務時,這些任務會共享參數。攻擊者可以設計新任務,使其與既有能力產生破壞性干擾。
跨任務衝突注入
作法是利用原有任務的資料,產生衝突版本。常見模式包括:
- 標籤翻轉(label flip):保持輸入不變,把標籤平移或反轉,例如
(target + 1) % num_classes。 - 語意衝突(semantic conflict):對輸入加上細微雜訊,搭配與原標籤矛盾的輸出,誘導模型在相近輸入上學到相反的答案。
當這類衝突資料進入持續學習管道,模型在學習新任務的同時會侵蝕既有知識。
安全性與能力的衝突
更精細的攻擊者可以在模型的安全訓練與特定任務能力之間製造任務干擾。透過訓練模型學到「當安全相關特徵(拒答樣式、謹慎標記)出現時,任務表現就變差」的關聯,模型會學到安全行為會帶來糟糕的結果——進而弱化安全護欄。
攻擊 3:回放緩衝區投毒
基於回放(replay-based)的持續學習會保存先前任務的樣本,並在訓練新任務時重播它們以防止遺忘。若攻擊者能對回放緩衝區投毒,就能控制模型「記得」什麼。
實作上至少有三種手法:
- 插入投毒:當緩衝區有寫入權時,攻擊者加入惡意樣本;若緩衝區已滿,就以 LRU(最少近期使用)方式替換掉合法樣本,讓惡意樣本長期存在並在未來每輪訓練中被回放。
- 驅逐投毒:觸發緩衝區管理邏輯,使屬於「目標任務」的樣本被全數逐出(例如
[s for s in buffer if s.get("task") != target_task]),迫使模型遺忘該任務。 - 後門回放:大部分保留乾淨樣本以維持正常回放功能,再加入約 10% 含觸發器(trigger)與目標輸出的樣本,讓後門在後續每次更新中被不斷重新植入。
攻擊 4:穩定性—可塑性操縱
持續學習系統需要平衡 穩定性與可塑性。攻擊者可操縱這種平衡。
強制過度可塑
提交需要大幅權重更新的資料,把系統推向過度可塑,提升災難性遺忘的風險。
強制過度穩定
提交與既有知識衝突的資料,觸發穩定性機制阻止模型吸收合法的新資訊。模型會「凍結」——無法適應真正的新任務。
評估方法是建立三個副本:一個跑基準新任務(baseline)、一個先喂入過度可塑攻擊資料再學基準新任務、一個先喂入過度穩定攻擊資料再學基準新任務。比較它們在新任務準確度與舊任務保留度上的差異,可量化攻擊影響。
防禦策略
資料驗證
在所有進入持續學習管道的新資料進場前進行驗證。檢查分佈異常、標籤一致性與對抗性樣式。
更新監控
每次更新後以固定驗證集量測模型表現。若既有任務的表現下降超過門檻,就回滾該更新並展開調查。
對應的監控器思路:在建立階段紀錄每個驗證任務的基準分數;每次更新後重新評估,計算 degradation = (baseline - current) / baseline;若超過 forgetting_threshold(例如 5%),產生警示;若下降超過 20%,標記為 critical 並建議回滾。
緩衝區完整性
以完整性檢查保護回放緩衝區。對緩衝區內容做雜湊並在回放前比對。限制對緩衝區的寫入權限。
梯度監控
在更新期間監控梯度統計量。異常大或具方向性偏差的梯度可能代表攻擊。
評估方法論
辨識持續學習機制
判斷目標系統是否使用持續學習、線上微調或任何形式的部署後模型更新。辨識更新機制、資料來源與更新頻率。
盤點資料攝取路徑
追蹤新資料如何進入持續學習管道。判斷外部資料來源、使用者回饋或自動化收集是否會餵入更新流程。
測試遺忘漏洞
提交專為造成特定能力遺忘而設計的資料。量測系統處理攻擊資料後,既有任務表現是否下滑。
測試回放緩衝區完整性
若系統使用回放式學習,嘗試透過合法管道影響緩衝區內容(例如針對特定領域大量產生樣本,擠掉其他回放樣本)。
評估回滾機制
測試系統是否能偵測並回滾有害更新。提交攻擊並觀察監控是否能發現退化並回復模型。
總結
持續學習在模型整個部署生命週期中都維持著一個持續存在的攻擊面。災難性遺忘可以被武器化,用以選擇性摧毀能力;任務干擾可以讓已學行為彼此對立;回放緩衝區投毒則能腐蝕模型對先前任務的記憶。有效的防禦需要持續監控、資料驗證、緩衝區完整性保護以及穩健的回滾機制。隨著越來越多 AI 系統採用持續學習以保持時效,這些攻擊面的重要性只會愈發凸顯。