楊東寧,謝瀟睿,吉志坤,姬維維
(1.云南電網(wǎng)有限責任公司 信息中心,云南 昆明 650011;2.西南林業(yè)大學 大數(shù)據(jù)與智能工程學院,云南 昆明 650224;3.云南云電同方科技有限公司,云南 昆明 650220)
大數(shù)據(jù)時代,數(shù)據(jù)的安全性和隱私性受到了越來越多的重視和關注[1]。歐盟及我國都分別相繼通過了《一般數(shù)據(jù)法案》《歐洲數(shù)據(jù)保護通用條例》《中華人民共和國網(wǎng)絡安全法》等相關法案,以保護數(shù)據(jù)的安全和隱私。
南方電網(wǎng)公司“十四五”數(shù)字化規(guī)劃明確提出:電力智慧投資將以項目儲備庫為基礎,通過輸入約束條件和投資分配參數(shù),并結合規(guī)劃部門的配網(wǎng)規(guī)劃數(shù)據(jù)、基建部門的基建結算數(shù)據(jù)和財務部門的財務數(shù)據(jù),運用機器學習訓練生成的投資預測模型,自動生成投資計劃項目及費用估算建議。但是,目前的電力投資系統(tǒng)依賴集中式的方式訓練模型,要求訓練涉及的多方數(shù)據(jù)和訓練過程必須在數(shù)據(jù)中心。在此過程中,各部門自有數(shù)據(jù)中的隱私信息可能會被泄露。此外,各部門出于數(shù)據(jù)安全和隱私保護的需求,不可能將自有數(shù)據(jù)上傳到數(shù)據(jù)中心。因此,如何在確保各方數(shù)據(jù)安全和隱私的情況下打破數(shù)據(jù)孤島、共同訓練模型,成為了急需解決的挑戰(zhàn)。
聯(lián)邦學習使得機器學習或深度學習算法能從不同組織或部門的大量數(shù)據(jù)中獲得更好的經(jīng)驗[2]。這種技術允許多個組織或部門在數(shù)據(jù)不直接共享的情況下協(xié)作完成模型的聯(lián)合訓練[3]。具體來講,各組織或部門的私有自有數(shù)據(jù)可以不離開本地,通過本地模型參數(shù)的更新和全局模型參數(shù)的聚合,在確保各自數(shù)據(jù)隱私性和安全性的情況下,聯(lián)合訓練一個共享的全局模型。因此,聯(lián)邦學習被視為解決數(shù)據(jù)孤島和打破數(shù)據(jù)壁壘的有效可行技術[4]。
為了解決電力投資系統(tǒng)面臨的數(shù)據(jù)孤島和隱私保護問題,本文提出了一個隱私保護的聯(lián)邦學習框架,在各部門數(shù)據(jù)不出本地的情況下,聯(lián)合訓練投資預測模型。具體地,本文主要貢獻如下:
(1)提出了一種基于客戶端-服務器的聯(lián)邦學習架構。與傳統(tǒng)集中式的模型訓練方式相比,該架構支持在隱私保護的情況下,分布式地聯(lián)合訓練模型。
(2)提出了隱私保護的聯(lián)邦平均學習流程,引入同態(tài)加密技術,防止參數(shù)聚合過程實施成員推理攻擊。該流程主要包括4 個階段:局部模型訓練、參數(shù)加密、參數(shù)聚合和局部模型更新。
(3)實驗結果表明所提方法具有較好的收斂性,而且聯(lián)合訓練得到的模型具有較好的精度。
Lim 等人[5]從通信代價、資源分配、安全性和隱私性四方面對聯(lián)邦學習進行了綜述。進一步,Yang 等人[6]一方面從安全多方計算、差分隱私和同態(tài)加密三方面討論了安全的聯(lián)邦學習框架;另一方面,將安全的聯(lián)邦學習框架劃分為3 種類型:水平聯(lián)邦學習、垂直聯(lián)邦學習和遷移聯(lián)邦學習。王健宗等人[4]重點從通信負載、異步聚合等方面討論了聯(lián)邦學習的優(yōu)化算法。
此外,其他工作研究了聯(lián)邦學習在不同場景中的應用。Liu 等人[3]將聯(lián)邦學習應用于交通預測領域,提出了一種基于聯(lián)邦學習的隱私保護的交通預測方法。Ye 等人[7]將聯(lián)邦學習和邊緣計算相結合,提出了一種基于邊緣計算的優(yōu)化聯(lián)邦學習方法。Yu 等人[8]將聯(lián)邦學習應用于邊緣計算環(huán)境中的內(nèi)容緩沖,提出了一種車聯(lián)網(wǎng)環(huán)境下基于點對點聯(lián)合學習的主動式內(nèi)容緩存方法。進一步,Yu 等人[9]在考慮車輛移動性和緩存內(nèi)容的過期性的情況下,提出了一種基于聯(lián)合學習的移動感知主動邊緣緩存方案。Kim 等人[10]將聯(lián)邦學習和區(qū)塊鏈相結合,提出了一種基于區(qū)塊鏈的節(jié)點感知動態(tài)加權方法,用于提高聯(lián)邦學習的性能。
與上述工作相比,本文工作主要關注將聯(lián)邦學習應用于電力行業(yè),解決電力投資系統(tǒng)面臨的數(shù)據(jù)孤島和隱私保護問題。此外,本文將同態(tài)加密技術引入聯(lián)邦平均學習流程,用于保護上述模型參數(shù),以防止實施成員推理攻擊。
目前,聯(lián)邦式學習的架構分為兩種:客戶端-服務器架構[7]和對等網(wǎng)絡架構[11]。本文提出了一種基于客戶端和服務器的聯(lián)邦學習架構,如圖1 所示。該架構包含:多個部門及部門自有的數(shù)據(jù)庫、多個部門的局部模型、1個中心服務器和1 個全局模型。
圖1 面向電力投資系統(tǒng)的聯(lián)邦學習架構
與傳統(tǒng)集中式訓練模型相比,圖1 所示的架構允許分布式地聯(lián)合訓練模型。具體而言,首先,各部門使用自有數(shù)據(jù)庫在本地訓練自己的局部模型;其次,將局部模型的參數(shù)經(jīng)加密后上傳匯總到中心服務器進行參數(shù)聚合計算,更新全局模型;最后,各部門將更新后的全局模型參數(shù)下載到本地,并更新本地模型。直至本地模型的性能收斂并足夠好,分布式的訓練模型過程結束。
由圖1 可以看出,分布式的模型訓練方式通過聚合局部模型參數(shù)和使用全局模型參數(shù)更新局部模型,允許各部門的自有數(shù)據(jù)在不離開本地的情況下訓練模型,既保護了各部門的數(shù)據(jù),又共同聯(lián)合訓練了模型。
對于圖1 所示的聯(lián)邦學習架構,令O={O1,O2,…,On}表示部門的集合,D={D1∪D2∪…∪Dn} 表示各部門自有數(shù)據(jù)庫的并集。
定義1(集中式訓練模型)給定部門集合O 和數(shù)據(jù)集D,集中式訓練得到的模型記為Mc←f(D),其中,f(·)表示學習函數(shù)。
定義2(聯(lián)邦式訓練模型)給定部門集合O 和各部門自有數(shù)據(jù)庫(D1,D2,…,Dn),聯(lián)邦式訓練得到的模型記 為,其中wi表示權重,fi(·)表示學習函數(shù)f(·)的本地版本。
定義3(ε-精度損失)[6]令集中式模型Mc的預測精度為Pc,聯(lián)邦式模型Mf的預測精度為Pf,若滿足式(1),則稱聯(lián)邦式學習算法達到ε-精度損失。
基于圖1 所示的架構,提出了隱私保護的聯(lián)邦平均學習流程,包括4 個步驟:局部模型訓練、參數(shù)加密、參數(shù)聚合和局部模型更新。
在各部門同意聯(lián)合訓練模型會,中心服務器將向各部門發(fā)布模型的初始參數(shù)。各部門使用自有數(shù)據(jù)對初始化后的模型進行本地訓練。訓練接收后,將本地訓練計算得到的模型參數(shù)梯度進行上傳。
對于部門Oi,令{xj,yj}∈Di,其中xi∈Rd表示輸入樣本向量具有d 個特征,其中yj∈R 表示xi對應的標記輸出值。對于局部模型訓練,如果輸入樣本向量xj,則希望從Di中學習到模型參數(shù)向量ω∈Rd,使得ω 盡可能接近yj。為此,代價函數(shù)定義如下:
其中,λ∈[0,1],h(·)表示正則化函數(shù),|Di|表示部門Oi自有數(shù)據(jù)庫的條目數(shù)量。
已有研究表明[12]:在聯(lián)邦學習中,好奇的中心服務器通過共享的參數(shù)梯度,可以實施成員推理攻擊,并獲得訓練數(shù)據(jù)信息。為了防止成員推理攻擊,本文采用了同態(tài)加密技術對上傳的梯度參數(shù)進行加密。
與差分隱私保護[13]和安全多方計算[14]相比,同態(tài)加密技術分別具有數(shù)據(jù)不失真和計算復雜性小的優(yōu)點。由于參數(shù)聚合過程只涉及加法和乘法,將使用無需多項式近似的加法同態(tài)加密技術對梯度參數(shù)進行加密。其加密的基本原理如下:
其中,ω1、ω2分別表示部門1 和部門2 上傳的梯度參數(shù),ks、kp分別表示私鑰與公鑰,E()、D()分別表示加密運算和解密算,?、×分別表示明文域和密文域的運算。
中心服務器將接收到來自各個部門的局部模型參數(shù)梯度,并對這些參數(shù)梯度進行聚合。具體而言,參數(shù)的聚合過程如下:
根據(jù)式(2),式(3)可進一步重寫為:
局部模型更新是指各部門從中心服務器下載聚合后的全局模型參數(shù)梯度,并將解密后的參數(shù)梯度用于本地局部模型的更新。具體地,對于部門Oi,更新本地模型參數(shù)的計算如下:
其中,wg表示解密后得到的全局模型參數(shù)梯度。
目前,常見的聯(lián)邦學習算法是谷歌公司提出的FedAvg算 法(Federated Averaging)[15]。基于FedAvg 算法,引入同態(tài)加密算法,提出了隱私保護的聯(lián)邦平均學習算法,記為PP-FedAvg,如算法1 所示。
算法1:聯(lián)邦平均學習算法PP-FedAvg
輸入:部門k 的自有數(shù)據(jù)庫Dk,b 是本地Batch 的大小,E 表示epoch 的數(shù) 量,α 表示學習率,▽L(·,·)表示梯度優(yōu)化函數(shù);
輸出:更新后的局部模型參數(shù)ω。
其中,算法1 中第6 行調用的算法LocalUpdate(k,ωt)如算法2 所示。
算法2:LocalUpdate 局部模型更新
輸入:部門k 的自有數(shù)據(jù)庫Dk,b 是本地批次的大小(Batch),E 表示迭代周期的數(shù)量(epoch),α 表示學習率,▽L(·,·)表示梯度優(yōu)化函數(shù);
輸出:局部模型的參數(shù)ωt。
(7)輸出更新后的參數(shù)ωt
需要注意的是,在算法1 中,當每輪參數(shù)聚合后,中心服務器需要確定是否需要繼續(xù)執(zhí)行聯(lián)邦平均學習算法。
實驗環(huán)境考慮了由1 個中心服務器和10 個部門組成的聯(lián)邦學習架構。當從中心服務器下載初始模型參數(shù)后,10 個部門在本地并行訓練模型,并將訓練得到的模型參數(shù)同步發(fā)送到中心服務器進行全局聚合。這被視為一輪通信的結束。
實驗選擇開源數(shù)據(jù)集MNIST 作為數(shù)據(jù)集。該數(shù)據(jù)集包含60 000 個訓練圖像和10 000 個測試圖像。其中,每個圖像的分辨率為28×28,對應于10 個(0~9)可能數(shù)字中的1 個。為了確保每個部門數(shù)據(jù)集滿足非獨立同分布,根據(jù)數(shù)字大小,將60 000 個訓練數(shù)據(jù)排序并劃分為20 份(每份300 個圖像),并隨機地分配2 份給10 個部門。
實驗采用的編程語言為Python,使用的深度學習模型為卷積神經(jīng)網(wǎng)絡(CNN),如圖2 所示。該模型的輸入是28×28 的圖像,輸出是數(shù)字。具體地,模型由2 種類型卷積層、2 個最大池化層和1 個全連接層組成。第一種類型的卷積層包含兩層卷積(層2 和3),分別使用16 個3×3 的卷積核,步長為1。第二種類型的卷積層包含兩層卷積(層5 和6),分別使用32 個3×3 的卷積核,步長為1。兩個最大池化層均使用2×2 的卷積核。全連接層包含10 個神經(jīng)單元。
圖2 卷積神經(jīng)網(wǎng)絡的結構
為了驗證所提隱私保護聯(lián)邦學習框架的有效性,將框架分布式聯(lián)合訓練模型的方法(記為PFedAvg)與集中式訓練模型的方法(記為CTCNN)做對比。
圖3 顯示了PFedAvg 和CTCNN 訓練模型的損失。從結果來看,用PFedAvg 訓練模型的損失與用CTCNN 訓練模型的損失沒有顯著差異。這不僅表明PFedAvg 訓練的模型具有良好的收斂性,還表明PFedAvg 訓練的模型具有較好的精度。
圖3 PFedAvg 和CTCNN 訓練模型的損失
圖4 比較了在不同的批次大小和迭代周期,PFedAvg訓練模型的精度隨通信輪數(shù)的變化趨勢。從結果來看,當批次大小設置為10、迭代周期為12 時,PFedAvg 訓練得到的模型精度最高。
圖4 在不同批次大小和迭代周期下PFedAvg 模型的精度
為了解決電力投資系統(tǒng)面臨的數(shù)據(jù)孤島和隱私保護問題,本文將聯(lián)邦學習應用于電力行業(yè),提出了一種隱私保護的聯(lián)邦學習框架。實驗結果表明了該框架的有效性。