1. 程式人生 > 實用技巧 >A Little Is Enough: Circumventing Defenses For Distributed Learning(繞過對分散式學習的防禦)

A Little Is Enough: Circumventing Defenses For Distributed Learning(繞過對分散式學習的防禦)

A Little Is Enough: Circumventing Defenses For Distributed Learning(繞過對分散式學習的防禦)

0. 摘要:

分散式學習面臨安全威脅:拜占庭式的參與者可以中斷或者控制學習過程。
以前的攻擊模型和相應的防禦假設流氓參與者:

  • (a)無所不知(知道所有其他參與者的資料)

  • (b)對引數進行了較大的更改
    本文講述了一種全新的方法,微小的攻擊就可以防止模型收斂而且還可以進行模型反演。20%的腐敗工人足以將CIFAR10模型的精確度降低50%,也可以在不損害精度的情況下為MNIST和CIFAR10模型引入後門。

1. 介紹

分散式學習的定義:伺服器通過聚合在每個裝置上訓練的本地模型來利用多個裝置的算力。

經典的分散式學習演算法是 Syn-chronous Stochastic Gradient Descent (sync-SGD) 同步隨機梯度下降。單個伺服器(引數伺服器PS)和n個工作節點。實驗過程…但是萬一有個拜占庭節點,這些模型的正確性就很難保證。比如一些錯誤:傳輸錯誤,數字錯誤,裝置不線上,或者被故意設計

攻擊者要麼控制裝置本身,要麼甚至只控制參與者和PS之間的通訊,例如由中間人進行攻擊
分散式學習的關鍵就是假設所有節點的資料是獨立同分布的。也就是說可以允許對模型求平均值。現在假設存在的所有攻擊和防禦都工作於一個假設:要實現惡意目標,需要對一個或多個引數進行較大的修改。也就是說在少量隨機噪聲的情況下,SGD也能較好的收斂。

現在就證明,這個假設是錯誤的,只需要對 少數節點的多個引數進行直接的小改變能夠擊敗所有現有的防禦,並對訓練過程進行干擾或者控制。此前多說攻擊集中訓練過程中的收斂,我們有更廣泛的攻擊,引入了後門攻擊。這樣就能產生攻擊者想要的輸出。利用i,i,d假設,引入一種 non-omniscient attack(非全知攻擊),在這種攻擊中,攻擊者只能訪問被破壞節點的資料。

我們提出了一種新的攻擊分散式學習的方法,具有以下性質:

  1. 我們克服了所有現有的防禦機制。
  2. 我們計算了一個擾動範圍,在這個範圍內,甚至在i.i.d.假設的情況下,攻擊者可以改變引數而不被發現。
  3. 在這個範圍內的更改對於干擾學習過程和破壞系統都是足夠的。
  4. 我們提出了第一個適用於分散式學習的非全知攻擊,使該攻擊更加強大和實用。

2. 背景

2.1. 惡意目標

預防收斂 攻擊者干擾程序,就只是為了阻止伺服器達到良好的精度。但是莫得啥用,沒有啥好處,並且可以被伺服器預防,並採取措施減輕攻擊(主動阻止節點的子集並觀察對訓練過程的影響)。
後門攻擊:又稱Data Poisoning(資料中毒),是攻擊者在訓練模型時,對模型進行操縱,使其在評估時產生攻擊者選擇的目標。後門攻擊可以是單個樣本,如將特定的人錯誤地分類為另一個人。也可以是一類樣本,如在影象中設定特定的畫素模式可以導致惡意分類。

2.2. 存在的攻擊

分散式訓練使用同步SGD協議。會在訓練中搞破壞,用已經損壞的節點引數替換它想發給伺服器的任何值。攻擊方法可能在引數值的設定上有所不同,但防禦方法就是試圖識別損壞的的引數並丟棄。
後門攻擊攻擊者對帶有後門的模型進行優化,同時在損失上增加一項,使新引數與原始引數保持接近。攻擊只需要幾個不好的節點,並不需要知道全部資料。然而,它並不適用於分散式訓練:在聯邦學習中,每個節點使用自己的私有資料,這些資料來自不同的分佈,否定了i.i.d假設,並在分散式學習的所有現有的防禦假設下,使攻擊更容易。

  • 2018年,feng等人提出了一種針對聯邦學習後門攻擊的防禦措施,依賴於資料的非i.i.d屬性,這不適用於分散式訓練。(那麼我是不是可以認為iid是獨立同分布???)
  • 有些人提出了一些旨在檢測後門的防禦措施。但是,這些防禦假設了一種單伺服器訓練,在這種訓練中,後門被注入到伺服器能夠訪問的訓練集中,因此,通過叢集或其他技術可以發現並刪除後門。與此相反,在我們的設定中,伺服器無法控制節點選擇訓練的樣本,從而導致這些防禦措施失效。最後,(沈等,2016)演示了一種在分散式訓練中規避後門攻擊的方法。如下所述,該方法是修剪均值防禦的變體,我們成功地讓這種方法失效。。

2.3. 存在的防禦

Krum 和 Bulyan。Krum 在 m 個區域性模型中選擇一個與其他模型相似的模型作為全域性模型。Krum 的想法是即使所選擇的區域性模型來自受破壞的工作節點裝置,其能夠產生的影響也會受到限制,因為它與其他可能的正常工作節點裝置的區域性模型相似。Bulyan 本質上是 Krum 和修整均值的變體結合。Bulyan 首先迭代應用 Krum 來選擇θ(θ≤m-2c)區域性模型。然後,Bulyan 使用修整均值的變體彙總θ個區域性模型。Bulyan 在每次迭代中多次執行 Krum,並且 Krum 計算區域性模型之間的成對距離,因此,Bulyan 是不可擴充套件的。本文中重點介紹 Krum。

修整均值(Trimmed mean)。該聚集規則獨立地聚集每個模型引數。具體地,對於每個第 j 個模型引數,主裝置對 m 個區域性模型的第 j 個引數進行排序。刪除其中最大和最小的β個引數,計算其餘 m-2β個引數的平均值作為全域性模型的第 j 個引數。

中位數(Median)。在中位數聚合規則中,對於第 j 個模型引數,主裝置都會對 m 個區域性模型的第 j 個引數進行排序,並將中位數作為全域性模型的第 j 個引數。當 m 為偶數時,中位數是中間兩個引數的均值。與修整均值聚集規則一樣,當目標函式為強凸時,中位數聚集規則也能達到階優誤差率。


所有現存的防禦都是分別在每一輪上工作的,所以為了可讀性,我們將丟棄輪(t)的符號。對於本文的其餘部分,我們將使用以下符號:n是節點的總數,m是損壞節點的數量,d是模型的維數(引數)。pi是節點 i 訓練的引數向量,(pi)j是其第j維,P是{pi: i ∈ [n]},即所有節點的引數向量。
目前分散式學習最先進的防禦是Bulyan,綜合運用兩種早期方法:KrunTrimmed Mean

Trimmed Mean: 將演算法1的聚合規則更改為修剪後的平均值,分別處理每個維度
在這裡插入圖片描述

Uj 是在(p1)j,…,(pn)j}中最接近中值uj 的top-(n−m)值的索引。
與第一個變數相同,只取top-(n - 2m)值。
Uj是同一個向量{(p1)j,…,(pn)j}中元素的索引,其中去除最大的m個元素和最小的m個元素,不管它們與中值的距離如何

防禦方法(Shen et al., 2016)使用一維k-means將每個引數聚類為兩個聚類,如果聚類中心距離超過一個閾值,則丟棄組合較小聚類的值。這可以看作是平均防禦的一種變體,因為只有包含中值的較大叢集的值才會被平均,而其餘的值將被丟棄。

所有的變體都被設計用來防禦最多一半的惡意節點,因為這種防禦依賴於假定中值是從良性值的範圍中取出的。
面對我們的攻擊,所有變體的規避分析和實驗都是相似的,因此我們只考慮下面Bulyan中使用的第二種變體。

Krum:Krum努力尋找一個誠實的可能是下一輪的好選擇的參與者,拋棄其他節點的資料。所選的節點是其引數最接近另外的n - m - 2個節點,其數學表示式為:

在這裡插入圖片描述

其中i→j是pi in P中的n−m−2個鄰居節點,用歐幾里得距離度量。

與Trimmed Mean一樣,Krum被設計用來防禦最多n/2個惡意節點(m)。該方法背後的原理是,在正態分佈中,每個維度中的平均引數向量將是接近從均值分佈提取的所有引數向量。如果只考慮到最近的n−m−2個節點的距離,那麼與平均向量有顯著差異的引數集將被忽略。假定遠離原始引數的惡意引數將受到與至少一個未被腐敗的節點的長距離的影響,會對選它有一定的影響。

雖然krum證明是收斂的,但是可能收斂到無效的模型。其次由於模型的高維度,攻擊者可以對某個引數進行大的改變,而不會對歐幾里得距離產生相當大的影響,從而使模型無效。

Bulay:El Mhamdi等人(2018年)提出了上述krum提出了一種新的防禦方法,成功地反對了這種攻擊。他們提出了一個“元”聚合規則,其中另一個聚合規則A被用作是它的一部分。

在第一部分中,Bulay迭代地使用A 來建立一個可能是良性候選的SelectionSet,然後通過Trimmed Mean的第二個變數來聚合這個集合。Bulyan結合了已被證明收斂的與Lp正規化一起工作的方法,以及分別在每個維度上工作的方法的優點,例如Trimbed Mean,克服了上述Krum的缺點,因為Trimbed Mean不會讓單個惡意維度溜走。
n-4m = n’-2m = (n-2m)-2m 這麼多個值算平均。n’是SelectSet個數

在這裡插入圖片描述

不像之前的方法,Bulyan被設計用來防禦(n-3)/4的錯誤節點。錯誤節點 (m)的數量保證了A的每次執行的輸入將會有超過2m個所需的節點,並且在Trimmed Mean的輸入中也有大多數未損壞的節點。我們將跟隨該方法的作者,在本文的其餘部分使用A=Krum,包括我們的實驗。

No Defense:在實驗部分中,由於缺少異常值拒絕機制,我們將使用No Defense來平均所有工人的引數的基本方法。

3. 我們的攻擊

在之前的論文中(Blanchard et al., 2017;謝等,2018;El Mhamdi et al., 2018),為了降低模型的準確性,作者假設攻擊者會選擇遠離均值的引數,例如選擇與梯度方向相反的引數。我們的攻擊表明,通過不斷地對許多引數應用小的變化,惡意的對手可以干擾模型的收斂性或使系統後門。此外,這些防禦措施聲稱可以防禦無所不知的攻擊者,即知道所有節點的資料。我們表明,由於資料的正態分佈,如果攻擊者控制了節點的一個代表性部分,僅使用被破壞的節點的資料就足以估計分佈的平均值和標準差,並相應地操縱結果。僅通過被破壞的參與者就估計整個種群的屬性,這一觀察結果使我們的攻擊也可以用於非全知攻擊者。

如上所述,在分散式學習領域的研究中,包括所有防禦,都假設所有節點的不同引數都是i.i.d,因此用正態分佈來表示。我們遵循這一假設,因此在本文的其餘部分中,我們希望在不被注意的情況下最大化分散式學習模型的“單位”是標準差(σ)

本節的大綱如下:我們將首先分析引數變化不會被TrimmedMean檢測到的範圍,並在選擇該範圍的最大值時避免收斂。然後我們將指出Krum中會被攻擊者利用的一個弱點,聲稱TrimmedMean的攻擊者生成的相同引數也可以攻克Krum。這將導致一個結論,即相同的引數集也將繞過Bulyan,因為它的兩個方法都被欺騙了。最後,我們展示了攻擊者如何在相同的範圍內找到引數集,這將在對原始任務的準確性只有最小影響的情況下為系統引入後門。

事實上,所有防禦都使用了相同的引數集,這是這種方法的一個強大優勢:無論伺服器決定選擇哪種防禦,攻擊都不會被注意到,這再次使我們的攻擊更加實用。

3.1. 擾動範圍

在Trimmed Mean的平均防禦中,每個引數都是獨立計算的,因此可以將問題視為一個一維陣列,其中每個條目都是由不同的節點給出的值。顯然,如果我們將惡意值設定得離平均值太遠,那麼惡意值就很容易被拋棄。因此,我們尋求一個可以偏離平均值而不被發現的範圍。由於正態分佈是對稱的,相同的zmax值將為平均值周圍的適用變化設定上下限。

攻擊者可以在不被發現的情況下進行的最大更改是什麼?為了改變TrimmedMean產生的值,攻擊者需要控制中位數。這就需要大多數的節點,這可以通過找到需要“引誘”的未被破壞的節點的最小數量s來實現。然後,攻擊者將使用正態分佈的屬性,特別是累積標準正態函式(Cumulative Standard normal Function, z) φ(z),並尋找值z,因此s個未被破壞的節點可能駐留在離平均值更遠的地方。通過設定所有的惡意節點值範圍(µ−zσ,µ+ zσ),攻擊者保證有高概率這些值會變成中間值,並且許多節點報告相同的值將導致它會在TrimmedMean的第二部分的中位數附近求平均值。

找到這個範圍的確切步驟在演算法3中顯示,作為收斂預防攻擊的一部分。

3.2. 攻克Krum和Bulyan防禦

Krum流程的輸出只有一個選擇的節點,當其他節點被丟棄時,該節點的所有引數都將被使用。假設存在這樣一個節點,其每個維度的所有引數都接近期望平均值。然而在實踐中,當引數處於非常高維空間時,即使是最優秀的節點也至少會有一些遠離平均值的引數

為了利用這一缺點,可以生成一組引數,這些引數與每個引數的平均值相差很小。這些小的變化會減少Krum計算的歐氏距離,從而導致惡意設定被選中。在實驗上,對Trimmed Mean值的攻擊也能欺騙Krum。

攻擊Krum而不是Trimmed Mean值的一個優點是,只有少數被破壞的節點r需要估算出µj 和 σj,而且只有一個節點需要報告惡意引數,因為Krum最終只會從一個節點那裡選擇一組引數。

既然Bulyan=Krum+Trimmed Mean,那我們的攻擊同時避開了這兩種情況,那麼我們也可能能避開Bulyan

儘管如此,Bulyan聲稱只能對付25%的破壞節點,而不是Krum和TrimmedMean那樣50%的破壞節點。乍一看,為m = 25%得出的Zmax可能不夠,但應該注意的是,上面的擾動範圍計算的是Trimmed Mean可能的輸入,對於這個輸入,m可以達到在Bulyan第二階段聚集的SelectSet中節點的50%。事實上,我們的方法對Bulyan攻擊也是有效的。

3.3. 防止收斂

為了防止收斂,攻擊者將使用最大值z來繞過防禦。攻擊流程詳見演算法3。
在這裡插入圖片描述

例子:如果惡意節點是50個節點中的24個,攻擊者需要“引誘”2個節點floor(50/2+1)-24=2才能獲得多數並設定中位數。(50-2)/50=0.96,通過檢視z表中φ(z) < 0.96的最大z,我們得到zmax= 1.75。最後,攻擊者將所有惡意節點的值設定為v = µ + 1.75σ,每個引數獨立於引數的“µj 和 σj .大概率會有足夠多的節點值高於v,這就把v定為中位數。

在實驗部分,我們展示了即使是1σ的微小變化也能讓攻擊者控制程序。

3.4. 後門攻擊

在第3.1節中,我們為每個引數j找到了一個範圍,在這個範圍內,攻擊者可以在不被檢測到的情況下擾動引數,並且為了阻止收斂,攻擊者將這個範圍內的變化最大化。另一方面,對於後門攻擊,攻擊者在這個範圍內尋找一組引數,為後門生成所需的標籤,同時最小化對良性輸入功能的影響。為了實現這一點,類似於(Bagdasaryan等人,2018年),攻擊者將優化帶有後門的模型,同時最小化與原始引數的距離。這是通過損耗函式實現的,用引數α加權如下:
在這裡插入圖片描述

其中“lbackdoor”與常規損失相同,但在後門上訓練用的是攻擊者的內容而不是真正的內容,下文詳述的 l∆是保持新引數接近原始引數。

對於過大的α,引數將與原始引數顯著不同,從而被防禦機制丟棄。因此,攻擊者應該使用最小α,它成功地在模型中引入了後門。此外,攻擊者可以針對每個引數利用σj的知識,不是直接對 l∆使用任何Lp距離,而是對引數之間的差異進行歸一化,加速學習。
在這裡插入圖片描述
如果NewParamj-OldParamj比zmaxσj小,則新引數在有效範圍內,因此它們之間的比率將小於1,平方將減少該值,這意味著更低的懲罰。另一方面,如果NewParamj-OldParamj比zmaxσj大,則比值大於1,懲罰迅速增加。有些σj可能非常小,因此10-5以下的值被拉平,以避免被非常小的數字除。這個攻擊在演算法4中有詳細描述。

在這裡插入圖片描述

4. 實驗

研究了不同m和σ (z)數對模型的不同影響。

4.1. 防止收斂

在第3.1節中,我們分析了我們的方法zmax所能應用的最大σ數。我們在示例中顯示,當節點總數為50時,z的值可以設定為1.75,並且所有損壞的節點都會將其每個引數值更新為v = µ + 1.75 σ。此外,當節點總數大於50時,s仍可能像以前一樣等於2,但(n-s)/n增加,導致zmax值增加,並進一步偏離原始平均值。這可以直觀地解釋,當n增加時,正態分佈的遠尾出現異常值的機會增加,而這些尾就是被誘惑的尾。在接下來的實驗中,我們試圖將引數最多更改1.5σ,以便為 µj 和 σj的估計留下誤差空間。

z的要求:為了瞭解用收斂攻擊影響網路需要多少標準差,我們在分散式學習設定中訓練了MNIST和CIFAR10模型四次,每次通過z = 0(無變化)、0.5、1和1.5標準差來改變引數。我們為所有節點(m = n),在伺服器中沒有防禦的所有引數上這樣做。

該表顯示,降低CIFAR10的精度比MNIST簡單得多:MNIST是一個簡單得多的任務,因此需要更少的樣本,不同的節點將很快就正確的梯度方向達成一致,從而限制了可以應用的變化。而對於更難、更現實的CIFAR10分類任務,節點之間的分歧會更大,惡意的敵手可以利用這一點。

比較防禦:我們將我們的攻擊應用於所有防禦,並在兩個模型上檢查它們的彈性。圖2顯示了當引數改變1.5σ時,在m = 12名腐敗節點(幾乎為24%)的情況下,採用不同防禦措施的MNIST分類模型的準確性。我們還繪製了沒有攻擊時的結果,這樣就可以清楚地看到攻擊的效果。攻擊在所有情況下都有效。Krum防禦條件表現最差,因為我們的惡意引數集是在只有24%的腐敗節點的情況下選擇的。Bulyan受到的影響比TrimmedMean更大,因為即使惡意比例為24%,它也可以達到SelectSet的48%,這是Bulyan第二階段使用的TrimmedMean的比例。微調的效能比前兩個更好,因為惡意引數被來自未被破壞的節點的許多引數集合的平均所稀釋。

具有諷刺意味但出乎意料的是,針對這種攻擊的最佳防禦策略是最簡單的平均聚合規則,沒有異常值拒絕——No Defence。這是因為1.5個標準偏差在所有n個節點中是平均的,其中76%沒有被破壞,所以每次迭代的總偏移是1.5x0.24 = 0.36σ,這對精度只有很小的影響。但是很明顯,伺服器不能選擇這個聚合規則,因為它會引發嚴重的漏洞。如果希望繞過無防禦,攻擊者可以組成一個混合攻擊,其中一個節點專門用早期論文中詳細描述的攻擊來攻擊無防禦(Blanchard等人,2017;謝等,2018),其餘將用於此處提出的攻擊。

在CIFAR10上的實驗結果如圖3所示。由於更少的標準偏差會對CIFAR10產生顯著影響(見表1),我們選擇m = 20%的腐敗節點,並且只更改1σ的引數。同樣,用最簡單的聚集規則,即平均工人的引數,獲得了最佳的準確度,但是準確度仍然下降了28%。出於同樣的原因,Krum的表現再次最差,下降了66%,Bulyan下降了52%,而Trimmed Mean的表現稍好,但仍下降了45%。
惡意節點的比例:圖4顯示了攻擊CIFAR10模型培訓所需的腐敗節點的比例。由於Bulyan旨在抵禦高達25%的惡節點,我們試圖用高達該值的不同ms來訓練模型,並測試當攻擊者將所有引數更改1σ時,它如何影響準確性。可以看出,Krum即使對少量腐敗的節點也很敏感,因此即使m = 5%,準確度也會下降33%。該圖顯示,正如預期的那樣,隨著腐敗節點比例的增加,模型的準確性會降低,但即使是10%也會導致現有防禦能力的大幅下降,而不是根本不防禦,這不是一個現實的選擇。

4.2. 後門

和以前一樣,我們設定n = 51,m = 12 (24%)。由於攻擊者希望不中斷良性輸入的收斂,因此選擇了低α和z(均為0.2)。每一輪之後,攻擊者用後門訓練網路5輪。我們根據等式4設定l∆,並設定‘lbackdoor’交叉熵,就像用於原始分類的熵一樣。

同樣的後門:對於後門示例任務,我們每次從每個訓練集(MNIST和CIFAR10)中選擇前3個影象中的一個,並將其期望的後門目標設為(y+1)mod |Y |其中y是原始標籤,| Y |是類的數量。

結果如表2所示。在整個過程中,網路在超過95%的時間內產生了後門樣本的惡意目標,特別是在達到最大整體準確性的回合中。可以看出,對於像MNIST這樣網路容量足夠大的簡單任務,網路成功地合併了後門,整體精度下降不到1%。由於使用了低z,不同防禦的結果是相似的。然而,對於CIFAR10,即使沒有給定簡單體系結構的後門,融合也很困難,其影響更加明顯,效能下降高達9%。

後門模式:對於後門模式攻擊,攻擊者每輪從資料集隨機取樣1000幅影象,並將左上角的5x5畫素設定為最大強度(參見圖1中的示例)。所有這些樣本都是用target = 0訓練的。為了測試,將相同的模式應用於不同的影象子集。

表3列出了結果。與後門樣本案例的結果類似,MNIST完美地學習了後門模式,對所有防禦的良性輸入的準確性影響最小,除了“無防禦”之外,在“無防禦”中,攻擊再次被許多未被破壞的工作人員平均稀釋,然而惡意標籤被選擇用於不可忽略的36.9%的樣本。對於CIFAR10,精度比後門樣本差,分別降低了7%(Trimmed Mean)、12%(Krum)和15%(Bulyan),但良性輸入的精度下降仍然是合理的,對於一個無辜的伺服器來說,在不知道預期精度的情況下訓練新任務可能是不明智的。對於三種防禦中的每一種,80%以上帶有後門模式的樣本被惡意分類。

有趣的是,No Defence對這種攻擊完全有彈性,只有1%的最小退化,並且沒有用後門模式對樣本進行錯誤分類。然而,在MNIST的另一個實驗中,z和α值較高(分別為1和0.5),情況正好相反,良性輸入的無防禦值達到95.6,後門的無防禦值達到100%,而良性輸入的其他防禦性能則不如前者輸入。繞過No Defence的另一個選項是為伺服器正在使用No Defence的情況指定一個損壞的節點,並使用其餘的損壞的節點進行防禦規避攻擊。

5. 結論

我們提出了一種新的攻擊模式,在這種模式下,通過對許多引數進行有限的更改,惡意的對手可能會干擾或借殼分散式學習的過程。與以前的攻擊不同,攻擊者不需要知道未被破壞的工作人員的確切資料(非全知),它甚至可以在i.i.d .設定中工作,已知資料來自特定的分佈。攻擊避開了所有現存的防禦。根據我們的實驗,將在現有防禦中選擇一個TrimmedMean的變體,為融合攻擊產生最佳結果,排除了樸素平均的選擇,樸素平均顯然容易受到其他更簡單的攻擊。