于秋雨,盧清華,張衛(wèi)山
(中國(guó)石油大學(xué)(華東) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,青島 266580)
近幾年來(lái),物聯(lián)網(wǎng)(IoT)廣泛應(yīng)用于工業(yè),特別是制造業(yè),實(shí)現(xiàn)了智能工業(yè)物聯(lián)網(wǎng)(IIoT)應(yīng)用.據(jù)估計(jì),到2025年,全球?qū)⒂?1.6 億部物聯(lián)網(wǎng)設(shè)備,預(yù)計(jì)將產(chǎn)生79.4 ZB的數(shù)據(jù)[1].如何管理和利用這些物聯(lián)網(wǎng)數(shù)據(jù),以高效、安全、經(jīng)濟(jì)的方式實(shí)現(xiàn)智能化,成為一個(gè)重要的研究問(wèn)題.
聯(lián)邦學(xué)習(xí)是一種新興的機(jī)器學(xué)習(xí)[2,3],他可以保護(hù)數(shù)據(jù)隱私,減少模型訓(xùn)練中的偏移.每一輪聯(lián)邦學(xué)習(xí)中,被選中的客戶(如組織、數(shù)據(jù)中心,物聯(lián)網(wǎng)或移動(dòng)設(shè)備)在保證原始數(shù)據(jù)不上傳的情況下,在本地訓(xùn)練模型,并共同訓(xùn)練了全局模型.
區(qū)塊鏈技術(shù)最近一直被應(yīng)用于工業(yè)物聯(lián)網(wǎng)的聯(lián)邦學(xué)習(xí)中,用來(lái)保障數(shù)據(jù)完整性,構(gòu)造激勵(lì)機(jī)制來(lái)吸引豐富的客戶數(shù)據(jù)和計(jì)算資源加入訓(xùn)練[4,5].然而,在工業(yè)物聯(lián)網(wǎng)領(lǐng)域卻缺少一個(gè)系統(tǒng)的整體的架構(gòu)設(shè)計(jì)來(lái)支撐設(shè)備故障檢測(cè)系統(tǒng)有條不紊地開(kāi)發(fā),并高效地解決數(shù)據(jù)異質(zhì)等問(wèn)題.
因此,在本文中,我們提出了一種基于區(qū)塊鏈的聯(lián)邦學(xué)習(xí)系統(tǒng)架構(gòu).在聯(lián)邦學(xué)習(xí)的每一輪訓(xùn)練中,中心服務(wù)器會(huì)選擇一些客戶端在本地訓(xùn)練模型,并將模型更新后的參數(shù)(而不是原始數(shù)據(jù))上傳到中心服務(wù)器.然后,中心服務(wù)器將更新后的模型參數(shù)聚合以生成一個(gè)全面的、無(wú)偏的全局模型.為了確保數(shù)據(jù)的完整性并解決區(qū)塊鏈的性能問(wèn)題,在固定周期中,對(duì)客戶端數(shù)據(jù)進(jìn)行哈希計(jì)算創(chuàng)建默克爾樹(shù),并將樹(shù)的根節(jié)點(diǎn)存儲(chǔ)在區(qū)塊鏈上.我們還提出了激勵(lì)機(jī)制,根據(jù)參與本地訓(xùn)練的數(shù)據(jù)集大小,通過(guò)智能合約為客戶發(fā)放相應(yīng)的獎(jiǎng)勵(lì),以此鼓勵(lì)客戶積極參與聯(lián)邦學(xué)習(xí).最后,我們實(shí)現(xiàn)了文中所提出的架構(gòu),并且評(píng)估了系統(tǒng)架構(gòu)的可行性、模型的精度和性能.實(shí)驗(yàn)結(jié)果表明該架構(gòu)可行,并具有良好的精度和性能.
本文的貢獻(xiàn)如下:
(1)提出一個(gè)系統(tǒng)架構(gòu),展示了不同部件間的交互,為開(kāi)發(fā)基于區(qū)塊鏈的工業(yè)物聯(lián)網(wǎng)聯(lián)邦學(xué)習(xí)系統(tǒng)提供指導(dǎo).架構(gòu)包括以下設(shè)計(jì)決策:模型訓(xùn)練、客戶數(shù)據(jù)存儲(chǔ)、客戶激勵(lì)機(jī)制以及區(qū)塊鏈部署.
(2)提出區(qū)塊鏈錨定協(xié)議,確??沈?yàn)證數(shù)據(jù)的完整性.協(xié)議規(guī)定,每隔一段時(shí)間,使用客戶端邊緣設(shè)備收集到的數(shù)據(jù)創(chuàng)建默克爾樹(shù) (一個(gè)葉子節(jié)點(diǎn)代表一條客戶數(shù)據(jù)),并將根節(jié)點(diǎn)上傳到區(qū)塊鏈.
(3)提出激勵(lì)機(jī)制,通過(guò)激勵(lì)智能合約,來(lái)鼓勵(lì)客戶貢獻(xiàn)數(shù)據(jù)和計(jì)算資源參與模型訓(xùn)練,用戶會(huì)根據(jù)自己在本地訓(xùn)練模型的數(shù)據(jù)大小,收到相應(yīng)的代幣獎(jiǎng)勵(lì).
(4)在真實(shí)的工業(yè)場(chǎng)景(軸承故障檢測(cè))中,對(duì)系統(tǒng)架構(gòu)可行性,模型精度和性能進(jìn)行了評(píng)估.
本文構(gòu)造如下:第2 節(jié)提出方法,第3 節(jié)討論系統(tǒng)框架的實(shí)現(xiàn)和評(píng)估,第4 節(jié)總結(jié)文章并部署未來(lái)工作.
通過(guò)標(biāo)準(zhǔn)的需求捕獲方法,我們對(duì)基于區(qū)塊鏈的工業(yè)物聯(lián)網(wǎng)聯(lián)邦學(xué)習(xí)系統(tǒng),制定了一系列的功能需求和非功能需求.其中功能需求包括:(1)在本地服務(wù)器進(jìn)行模型訓(xùn)練;(2)在不上傳本地?cái)?shù)據(jù)的情況下,基于本地模型參數(shù)生成全局模型;(3)融合得到的全局模型可用于分類;(4)根據(jù)客戶在模型訓(xùn)練過(guò)程中的貢獻(xiàn)進(jìn)行獎(jiǎng)勵(lì).已確定的非功能需求包括:(1)保護(hù)邊緣數(shù)據(jù)隱私;(2)具有良好的模型精度;(3)確保客戶端數(shù)據(jù)的完整性;(4)維護(hù)區(qū)塊鏈基礎(chǔ)設(shè)施的可用性.
在本節(jié)中,我們提出了一個(gè)基于聯(lián)邦學(xué)習(xí)和區(qū)塊鏈的系統(tǒng)架構(gòu),以滿足上述功能與非功能性需求.2.1 節(jié)描述了系統(tǒng)整體架構(gòu),并細(xì)化了組件及其交互;2.2 節(jié)討論了主要的架構(gòu)設(shè)計(jì)決策;2.3 節(jié)介紹了聯(lián)邦加權(quán)平均算法啊;2.4 節(jié)介紹了客戶數(shù)據(jù)錨定協(xié)議以確保數(shù)據(jù)完整性.2.5 節(jié)設(shè)計(jì)了一種激勵(lì)機(jī)制,鼓勵(lì)客戶積極參與模型訓(xùn)練.
圖1展示了由兩種不同的參與組織(中心組織和客戶組織)構(gòu)成的系統(tǒng)整體架構(gòu).聯(lián)邦學(xué)習(xí)系統(tǒng)的所有者(如制造商公司)作為中心組織,它負(fù)責(zé)根據(jù)系統(tǒng)的檢測(cè)結(jié)果來(lái)維護(hù)所有工業(yè)服務(wù);而客戶組織則負(fù)責(zé)為本地模型訓(xùn)練提供數(shù)據(jù)和計(jì)算資源.
圖1 聯(lián)邦學(xué)習(xí)系統(tǒng)架構(gòu)
每個(gè)客戶組織擁有多個(gè)傳感器、一個(gè)客戶端設(shè)備、一個(gè)客戶端服務(wù)器和一個(gè)區(qū)塊鏈全節(jié)點(diǎn).而中心組織托管一個(gè)中心服務(wù)器和一個(gè)區(qū)塊鏈全節(jié)點(diǎn).每個(gè)客戶端設(shè)備(如樹(shù)莓派)通過(guò)客戶端數(shù)據(jù)收集器收集被傳感器檢測(cè)到的環(huán)境數(shù)據(jù),然后通過(guò)客戶端數(shù)據(jù)預(yù)處理器清洗數(shù)據(jù)(如降噪).所有收集到的客戶端環(huán)境數(shù)據(jù)都被存儲(chǔ)在客戶端服務(wù)器托管的客戶端數(shù)據(jù)庫(kù)中.在某一聯(lián)邦學(xué)習(xí)中,當(dāng)一個(gè)客戶組被中心服務(wù)器選中,客戶端服務(wù)器將從中心服務(wù)器下載最新版本的全局模型,通過(guò)模型訓(xùn)練器,在本地?cái)?shù)據(jù)集上進(jìn)一步訓(xùn)練模型,更新模型參數(shù).然后,更新后的模型參數(shù)被傳送到中心服務(wù)器上的融合器,融合器將從客戶端接收到的模型參數(shù)進(jìn)行融合,最終得到一個(gè)新的全局模型,再將其返回客戶端服務(wù)器和檢測(cè)器.在對(duì)設(shè)備進(jìn)行故障檢測(cè)時(shí),檢測(cè)結(jié)果被加密后發(fā)送到中心組織,操作人員通過(guò)數(shù)據(jù)解密器對(duì)接收到的檢測(cè)結(jié)果進(jìn)行解密,并做出相應(yīng)的處理決定.
每個(gè)客戶端服務(wù)器會(huì)定期創(chuàng)建默克爾樹(shù),其中一個(gè)葉子節(jié)點(diǎn)表示一條數(shù)據(jù)記錄.每一輪聯(lián)邦學(xué)習(xí)中,參與訓(xùn)練的客戶信息(包括默克爾樹(shù)根節(jié)點(diǎn)、訓(xùn)練狀態(tài)、用于模型訓(xùn)練的客戶端數(shù)據(jù)的大小)都通過(guò)客戶端數(shù)據(jù)錨定器存儲(chǔ)在預(yù)先部署在區(qū)塊鏈上的智能合約中.若不同組織之間發(fā)生了爭(zhēng)議(例如設(shè)備故障原因),中心組織和客戶組織的操作員可以使用爭(zhēng)議解決器,通過(guò)將數(shù)據(jù)與存儲(chǔ)在鏈上的默克爾樹(shù)根節(jié)點(diǎn)進(jìn)行比較,來(lái)驗(yàn)證客戶歷史數(shù)據(jù)在某一周期內(nèi)的完整性.為獎(jiǎng)勵(lì)客戶組織對(duì)模型訓(xùn)練的貢獻(xiàn),根據(jù)參與本地訓(xùn)練的客戶端數(shù)據(jù)大小,獎(jiǎng)勵(lì)客戶組織相應(yīng)數(shù)量的代幣.
(1)本地模型訓(xùn)練:為了保護(hù)客戶組織的商業(yè)敏感數(shù)據(jù)(例如,機(jī)器使用頻率和時(shí)間),架構(gòu)采用聯(lián)邦學(xué)習(xí),客戶端服務(wù)器通過(guò)模型訓(xùn)練器,在本地訓(xùn)練模型,中心服務(wù)器則負(fù)責(zé)通過(guò)融合器計(jì)算得到一個(gè)用于檢測(cè)的全局模型.
(2)錨定數(shù)據(jù)上鏈:為了解決中心組織和客戶組織之間的爭(zhēng)端(例如,故障原因),在架構(gòu)中,客戶端服務(wù)器通過(guò)數(shù)據(jù)錨定器將數(shù)據(jù)上鏈,來(lái)實(shí)現(xiàn)客戶端數(shù)據(jù)的可驗(yàn)證完整性.由于區(qū)塊鏈的存儲(chǔ)能力有限,客戶端服務(wù)器定期創(chuàng)建默克爾樹(shù)(樹(shù)中每個(gè)葉子節(jié)點(diǎn)代表傳感器收集的一條數(shù)據(jù)記錄),并通過(guò)數(shù)據(jù)錨定器,將其根節(jié)點(diǎn)存儲(chǔ)在預(yù)先部署在鏈上的智能合約(根節(jié)點(diǎn)注冊(cè)表)中.
(3)基于智能合約的激勵(lì)機(jī)制:為了鼓勵(lì)客戶組織積極參與模型訓(xùn)練,該架構(gòu)設(shè)計(jì)了基于智能合約的激勵(lì)機(jī)制.根據(jù)客戶組織用于本地訓(xùn)練的數(shù)據(jù)集大小,獎(jiǎng)勵(lì)客戶組織相應(yīng)的代幣.所獎(jiǎng)勵(lì)的代幣記錄在智能合約(獎(jiǎng)勵(lì)注冊(cè)表)中.
(4)區(qū)塊鏈部署:在區(qū)塊鏈網(wǎng)絡(luò)中,全節(jié)點(diǎn)存儲(chǔ)著所有的區(qū)塊鏈?zhǔn)聞?wù).在我們提出的架構(gòu)中,每個(gè)參與組織(包括中心組織和客戶組織) 托管一個(gè)區(qū)塊鏈全節(jié)點(diǎn).因此,每個(gè)組織都區(qū)塊鏈數(shù)據(jù)的完整副本,可以用于審計(jì),同時(shí)確保整個(gè)系統(tǒng)的可用性.
在算法1 中,對(duì)于每一輪聯(lián)邦學(xué)習(xí),中心服務(wù)器會(huì)根據(jù)一些預(yù)定義的條件(如空閑和收費(fèi))選擇特定數(shù)量的客戶端參與訓(xùn)練.對(duì)于每個(gè)客戶端服務(wù)器,設(shè)置本地最小批大小為B、學(xué)習(xí)率η、進(jìn)行E期訓(xùn)練.然后,所選客戶端服務(wù)器在數(shù)據(jù)量為B的子集上執(zhí)行E期局部隨機(jī)梯度下降(SGD),然后將更新后的wt上傳中心服務(wù)器.最后,在中心服務(wù)器上,根據(jù)訓(xùn)練數(shù)據(jù)集的大小對(duì)wt進(jìn)行加權(quán)平均.
算法1.聯(lián)邦加權(quán)平均算法1./*中心服務(wù)器*/w0 2.Initialize 3.for each round t =1,2,… do 4.Select K clients∈5.for each client kK clients do wkt 6.← UpdateClient()7.end for wt ←∑Kk=1nk×wt-1 8.9.end for 10./*客戶端服務(wù)器*/11.UpdateClient(){12.Initialize local minibatch size B,local epochs E,learning rate η∈13.for each epoch iE do S i∑Kk=1nk 14.randomly sample based on size B wi←wi-1-η?g(wi-1;S i)15.16.end for wi 17.return }
錨定協(xié)議規(guī)定客戶端定時(shí)用收集到的監(jiān)控?cái)?shù)據(jù)構(gòu)建默克爾樹(shù),并將默克爾樹(shù)根節(jié)點(diǎn)錨定到區(qū)塊鏈上,以維護(hù)客戶端數(shù)據(jù)的完整性,并支持審計(jì)(即解決中心組織和客戶組織之間的爭(zhēng)議).同時(shí),錨定協(xié)議實(shí)現(xiàn)了激勵(lì)機(jī)制,并將客戶組織的貢獻(xiàn)情況記錄在智能合約(獎(jiǎng)勵(lì)注冊(cè)表)中.
算法2 描述了錨定協(xié)議的工作原理.客戶數(shù)據(jù)錨定協(xié)議規(guī)定,在每個(gè)錨定周期pi(1 h),每個(gè)客戶組織cj查詢錨定周期內(nèi)收集的客戶數(shù)據(jù),將每條數(shù)據(jù)記錄轉(zhuǎn)換為字符串格式并進(jìn)行哈希運(yùn)算,然后將哈希值用于構(gòu)建默克爾樹(shù)(其中每個(gè)葉子節(jié)點(diǎn)表示一條數(shù)據(jù)記錄的哈希值).
算法2.錨定算法pi 1.for each period=1,2,…,do cj∈2.for C do dcpn 3.for do dcpndcpn 4.← String()dcpndcpn 5.← Hash()dcpn 6.pNodeList[0..N] ←7.end for 8.repeat 9.for (k=0;k < length(pNodeList);k+2) do 10.l ← pNodeList[k]11.if k=length(pNodeList)then 12.r ← l 13.else 14.r ← pNodeList[k + 1]15.end if 16.r ← SHA256(l + r)17.temp[j] ← r∈[d ]18.(each j [0,])19.end for 20.pNodeList[0..j] ← temp[0..j]21.until length(pNodeList)=1 22.root ← pNodeList[0]23.time ← current time 24.UpdRootSC(time,root)25.end for 26.end for 27.for each training round do 28.model training 29.UpdStaSC(rNo,dataSize)30.CalIncentiveSC()31.end for 2
在構(gòu)造默克爾樹(shù)的過(guò)程中,該協(xié)議初始創(chuàng)建pNodeList存儲(chǔ)父節(jié)點(diǎn),創(chuàng)建temp存儲(chǔ)兩個(gè)子節(jié)點(diǎn)拼接后哈希計(jì)算的結(jié)果.首先,將所有葉節(jié)點(diǎn)值存儲(chǔ)在pNodeList中,然后順序?qū)⒆笞庸?jié)點(diǎn)賦值l,右子節(jié)點(diǎn)賦值r,將兩個(gè)子節(jié)點(diǎn)值連接后進(jìn)行哈希計(jì)算得到父節(jié)點(diǎn)值,并將其插入temp.重復(fù)此步驟,直到遍歷完pNodeList中的所有元素后,將temp賦值pNodeList.循環(huán)執(zhí)行這一過(guò)程,直到pNodeList的長(zhǎng)度變?yōu)?,最終,pNodeList中的唯一值就是默克爾樹(shù)的根節(jié)點(diǎn).
UpdRootSC()將默克爾樹(shù)的根節(jié)點(diǎn)和時(shí)間戳上傳到智能合約(根節(jié)點(diǎn)注冊(cè)表)中.當(dāng)客戶端服務(wù)器完成訓(xùn)練,并將更新后的模型參數(shù)發(fā)送到中心服務(wù)器后,UpdStaSC()將聯(lián)邦學(xué)習(xí)此輪訓(xùn)練的序列號(hào)rNo、每個(gè)客戶端參與本地訓(xùn)練的數(shù)據(jù)集大小上傳到智能合約(獎(jiǎng)勵(lì)注冊(cè)表) 中.然后計(jì)算相應(yīng)的代幣獎(jiǎng)勵(lì),并通過(guò)CalIncentiveSC() 獎(jiǎng)勵(lì)給客戶組織.UpdStaSC()和CalIncentiveSC()都編碼在智能合約(獎(jiǎng)勵(lì)注冊(cè)表)中.
算法3 描述了激勵(lì)機(jī)制工作流程.該激勵(lì)機(jī)制旨在根據(jù)客戶組織的貢獻(xiàn)(用于模型訓(xùn)練的數(shù)據(jù)集大小),獎(jiǎng)勵(lì)客戶組織相應(yīng)的代幣.在聯(lián)邦學(xué)習(xí)的每一輪訓(xùn)練中,中心服務(wù)器選擇固定數(shù)量的客戶端服務(wù)器,并將它們的區(qū)塊鏈地址存儲(chǔ)在Clist中.此外,中心服務(wù)器還定義了一個(gè)結(jié)構(gòu)training,來(lái)存儲(chǔ)客戶端服務(wù)器完成的訓(xùn)練任務(wù),包括訓(xùn)練任務(wù)狀態(tài),訓(xùn)練集大小.所選的客戶端服務(wù)器在本地訓(xùn)練模型,并將相應(yīng)的信息上傳到training中,然后將這些信息另存為contri.最后,根據(jù)contri中的數(shù)據(jù),將代幣分發(fā)到Clist中的每個(gè)客戶端服務(wù)器地址.獎(jiǎng)勵(lì)代幣的數(shù)量是訓(xùn)練集大小與常數(shù)C的乘積的總和.這種激勵(lì)機(jī)制的最終目標(biāo)是鼓勵(lì)更多的客戶服務(wù)器參與聯(lián)邦學(xué)習(xí),以消除模型偏差.
算法3.激勵(lì)計(jì)算和分配算法1./*中心服務(wù)器執(zhí)行*/2.Clist ← selected clients address 3./*客戶端服務(wù)器執(zhí)行*/4.struct {finished,dataSize } training 5.for each training round do∈6.if addressClist then 7.model training 8.UpdStaSC(rNo,dataSize)9.CalIncentiveSC()10.end if 11.end for 12./*上傳訓(xùn)練任務(wù)狀態(tài) */13.UpdStaSC(rNo,dataSize){14.training.finished ← true 15.training.dataSize ← dataSize 16.contri[addr][rNo] ← training 17.}18./*計(jì)算獎(jiǎng)勵(lì)*/19.CalIncentiveSC(){∈20.if addressClist then 21.if contri[addr][rNo].finished==true then 22.token[addr]=token[addr]+ contri[addr][rNo].dataSize*C 23.end if 24.end if 25.}
實(shí)驗(yàn)將系統(tǒng)架構(gòu)應(yīng)用于一個(gè)真實(shí)的用例,并從可行性、準(zhǔn)確性和性能方面來(lái)評(píng)估架構(gòu).
工廠軸承是否故障和確定故障準(zhǔn)確位置直接影響到工廠的生產(chǎn)效率.實(shí)驗(yàn)將軸承的使用狀況作為用例,將確定軸承的故障位置作為實(shí)驗(yàn)?zāi)繕?biāo).
對(duì)于工廠來(lái)說(shuō),各種設(shè)備參數(shù)都具有一定的商業(yè)敏感性.因此,在實(shí)驗(yàn)中,大部分機(jī)器學(xué)習(xí)任務(wù)被分配給安裝在工廠的服務(wù)器,以保護(hù)工廠的數(shù)據(jù)隱私.此外,該實(shí)驗(yàn)旨在鼓勵(lì)工廠提供軸承故障數(shù)據(jù),并在本地訓(xùn)練模型,然后根據(jù)每個(gè)廠的貢獻(xiàn)來(lái)獎(jiǎng)勵(lì)他們代幣,這些代幣日后可以用來(lái)購(gòu)買新產(chǎn)品或服務(wù).
軸承作為工廠大型生產(chǎn)制造機(jī)器中的關(guān)鍵部件,僅僅知道軸承出現(xiàn)故障已不能滿足高效生產(chǎn)的要求.本研究開(kāi)發(fā)了一個(gè)軸承故障檢測(cè)系統(tǒng)架構(gòu).
圖2顯示了客戶數(shù)據(jù)錨定和激勵(lì)機(jī)制的智能合約,根節(jié)點(diǎn)注冊(cè)表用來(lái)存儲(chǔ)默克爾樹(shù)根節(jié)點(diǎn)和對(duì)應(yīng)的時(shí)間戳;獎(jiǎng)勵(lì)注冊(cè)表用來(lái)存儲(chǔ)某一聯(lián)邦學(xué)習(xí)輪數(shù),和這一輪聯(lián)邦學(xué)習(xí)中,每個(gè)客戶機(jī)的訓(xùn)練狀態(tài),客戶數(shù)據(jù)大小以及獲得的代幣數(shù)目.
圖2 鏈上數(shù)據(jù)結(jié)構(gòu)
實(shí)驗(yàn)基于聯(lián)邦學(xué)習(xí)框架Leaf[6]實(shí)現(xiàn),并進(jìn)行了相應(yīng)改進(jìn),使用以太坊作為底層區(qū)塊鏈網(wǎng)絡(luò),采用工作量共識(shí)算法(PoW),難度配置為0x4000,使用Solidity 語(yǔ)言編寫智能合約,并使用Solid Compiler 0.4.20 版本進(jìn)行編譯.客戶端數(shù)據(jù)錨定器組使用Java 1.8 開(kāi)發(fā),激勵(lì)機(jī)制使用Python3.6 實(shí)現(xiàn),選擇MySQL 5.7.25 作為客戶端數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)鏈下數(shù)據(jù).
實(shí)驗(yàn)將系統(tǒng)架構(gòu)部署在6 臺(tái)阿里巴巴云服務(wù)器(2 VCPU,8 GB RAM)上,其中1 臺(tái)云服務(wù)器作為中心服務(wù)器,5 臺(tái)云服務(wù)器作為客戶端服務(wù)器.用5 塊樹(shù)莓派3(系統(tǒng)配置Raspian 2018-11-3)模擬5 臺(tái)客戶端設(shè)備.假定每個(gè)客戶端服務(wù)器被分配到一個(gè)工廠,工廠中有軸承部件(客戶端設(shè)備).每個(gè)軸承傳感器采集8 個(gè)信號(hào).
實(shí)驗(yàn)中,我們選取轉(zhuǎn)速系統(tǒng)負(fù)載設(shè)置為20 Hz-0 V的軸承的工作狀態(tài)作為數(shù)據(jù)集[7],每條數(shù)據(jù)記錄由上述的8 個(gè)特征和1 個(gè)標(biāo)簽組成,標(biāo)簽表示故障發(fā)生位置(分別為無(wú)故障,內(nèi)環(huán)和外環(huán)有裂痕,滾珠有裂痕).一個(gè)客戶端服務(wù)器有一個(gè)分類器,它是一個(gè)4 層神經(jīng)網(wǎng)絡(luò).第1 層由8 個(gè)單元組成,對(duì)應(yīng)8 個(gè)特征,然后,有兩個(gè)隱藏層,分別包含150 個(gè)單元,使用ReLU 函數(shù)作為激活函數(shù),輸出層為Softmax 函數(shù),用于對(duì)非故障和故障位置進(jìn)行分類.學(xué)習(xí)率設(shè)置為0.005.
圖3展示了系統(tǒng)架構(gòu)中,聯(lián)邦學(xué)習(xí)和區(qū)塊鏈錨定的工作流程,實(shí)現(xiàn)了第2 節(jié)中提出的功能性和非功能性需求.功能性需求方面實(shí)現(xiàn)了:(1)架構(gòu)中,每個(gè)工廠的客戶端服務(wù)器能夠在本地訓(xùn)練模型,中心服務(wù)器將本地模型融合為全局模型,然后進(jìn)行故障檢測(cè).(2)工廠操作者通過(guò)對(duì)比存儲(chǔ)在區(qū)塊鏈上的默克爾樹(shù)根節(jié)點(diǎn),以驗(yàn)證某一時(shí)期內(nèi)客戶數(shù)據(jù)的完整性.(3)此外,通過(guò)智能合約(獎(jiǎng)勵(lì)注冊(cè)表),工廠獲得代幣獎(jiǎng)勵(lì).
圖3 聯(lián)邦學(xué)習(xí)流程和數(shù)據(jù)錨定流程
非功能性需求方面實(shí)現(xiàn)了:(1)應(yīng)用聯(lián)邦學(xué)習(xí)保護(hù)工廠數(shù)據(jù)的隱私,中心服務(wù)器只需要獲得每次更新后的模型參數(shù),不需要獲得所有的軸承使用信息.(2)在訓(xùn)練數(shù)據(jù)規(guī)模較大的情況下,在帶寬開(kāi)銷上,聯(lián)邦學(xué)習(xí)比傳統(tǒng)的模型訓(xùn)練更有優(yōu)勢(shì).(3)全局模型實(shí)現(xiàn)了良好的檢測(cè)精度.(4)通過(guò)錨定協(xié)議維護(hù)軸承數(shù)據(jù)的完整性.當(dāng)需要對(duì)數(shù)據(jù)進(jìn)行審計(jì)時(shí),可以將存儲(chǔ)在每個(gè)工廠本地的數(shù)據(jù)重新構(gòu)建為默克爾樹(shù)結(jié)構(gòu),并與存儲(chǔ)在區(qū)塊鏈上的根節(jié)點(diǎn)進(jìn)行比較來(lái)驗(yàn)證.每個(gè)工廠和軸承制造商都有一個(gè)完整的節(jié)點(diǎn),以保證區(qū)塊鏈基礎(chǔ)設(shè)施在某些節(jié)點(diǎn)可能宕機(jī)的情況下正常運(yùn)行.
在定量分析中,每個(gè)客戶端服務(wù)器存儲(chǔ)約1000 條訓(xùn)練數(shù)據(jù)和1000 條測(cè)試數(shù)據(jù).每個(gè)客戶端服務(wù)器在本地?cái)?shù)據(jù)集上訓(xùn)練模型,中心服務(wù)器通過(guò)融合本地模型參數(shù),生成全局模型.我們?cè)诿總€(gè)單獨(dú)的客戶機(jī)服務(wù)器上用本地測(cè)試集測(cè)試故障檢測(cè)全局模型的準(zhǔn)確性.此外,我們還比較了聯(lián)邦學(xué)習(xí)的全局模型與集中式學(xué)習(xí)的模型的準(zhǔn)確性.
3.4.1 區(qū)塊鏈錨定時(shí)間測(cè)量實(shí)驗(yàn)
錨定協(xié)議的執(zhí)行時(shí)間包括從數(shù)據(jù)庫(kù)查詢數(shù)據(jù),創(chuàng)建默克爾樹(shù),將默克爾樹(shù)的根節(jié)點(diǎn)和客戶端貢獻(xiàn)數(shù)據(jù)上傳區(qū)塊鏈.圖4展示了上傳默克爾樹(shù)根節(jié)點(diǎn)和客戶貢獻(xiàn)數(shù)據(jù)到區(qū)塊鏈的時(shí)間,執(zhí)行錨定協(xié)議消耗了大部分時(shí)間.我們測(cè)量了交易寫入時(shí)間,該時(shí)間用于將智能合約交易寫入塊中.錨定默克爾樹(shù)根節(jié)點(diǎn)的時(shí)間約為18 s,而錨定客戶端貢獻(xiàn)數(shù)據(jù)的平均編寫時(shí)間約為21 s.區(qū)塊鏈上的寫入延遲比傳統(tǒng)數(shù)據(jù)庫(kù)中要長(zhǎng)得多,因?yàn)閭鞑ソ灰?塊和各節(jié)點(diǎn)達(dá)成一致需要時(shí)間.由于區(qū)塊鏈用于審計(jì)和實(shí)現(xiàn)激勵(lì)機(jī)制,因此在本工作中不考慮區(qū)塊鏈的寫入延遲.我們還檢查了默克爾樹(shù)的創(chuàng)建時(shí)間,大約需要250 ms.由于默克爾樹(shù)的創(chuàng)建時(shí)間比交易寫入塊的時(shí)間少得多,因此在圖4中沒(méi)有包含它.
圖4 數(shù)據(jù)錨定時(shí)間
3.4.2 故障檢測(cè)實(shí)驗(yàn)
在100 輪訓(xùn)練中,我們分別測(cè)量了聯(lián)邦學(xué)習(xí)和集中式學(xué)習(xí)的模型精度.對(duì)于每一輪聯(lián)邦學(xué)習(xí),模型在每個(gè)客戶機(jī)上進(jìn)行40 期的本地訓(xùn)練,然后將更新后的模型參數(shù)發(fā)送到中心服務(wù)器用以生成一個(gè)全局模型.每個(gè)客戶端使用全局模型進(jìn)行故障檢測(cè).對(duì)于每一輪集中式學(xué)習(xí),一個(gè)中央服務(wù)器將模型訓(xùn)練40 期,每個(gè)客戶端使用這個(gè)模型來(lái)檢測(cè)故障.與在本地?cái)?shù)據(jù)集上訓(xùn)練的聯(lián)邦學(xué)習(xí)模型相比,集中式訓(xùn)練模型是由所有客戶端的本地?cái)?shù)據(jù)集組成的數(shù)據(jù)集上訓(xùn)練得到的.實(shí)驗(yàn)中,我們使用相同的測(cè)試集測(cè)試了集中式學(xué)習(xí)模型和聯(lián)邦學(xué)習(xí)模型.
測(cè)試結(jié)果如圖5所示.x軸表示訓(xùn)練的次數(shù),y軸表示精度.在圖5中,每個(gè)子圖包含2 條線,顯示了在不同測(cè)試集上,不同學(xué)習(xí)方法的模型精度.總體而言,從圖5可以看出,聯(lián)邦學(xué)習(xí)模型可以取得和集中式學(xué)習(xí)模型相同的的精度.
圖5 聯(lián)邦學(xué)習(xí)模型與集中式學(xué)習(xí)模型精度
3.4.3 通信開(kāi)銷測(cè)量實(shí)驗(yàn)
我們測(cè)量了聯(lián)邦學(xué)習(xí)(FL)和集中式學(xué)習(xí)(CL)的通信開(kāi)銷.采用數(shù)據(jù)集大小分別為1 KB,1 MB,1 GB.實(shí)驗(yàn)結(jié)果顯示:(1)在集中式學(xué)習(xí)中,所有的數(shù)據(jù)都需要從客戶端服務(wù)器發(fā)送到中心服務(wù)器,因此,集中式學(xué)習(xí)的通信開(kāi)銷與數(shù)據(jù)集大小一樣,通信開(kāi)銷在3 個(gè)數(shù)據(jù)集下,分別為1 KB,1 MB,1 GB.(2)在聯(lián)邦學(xué)習(xí)測(cè)量實(shí)驗(yàn)中,我們用FL(N)表示每輪隨機(jī)選擇N個(gè)客戶端來(lái)訓(xùn)練模型,測(cè)量了100 輪聯(lián)邦訓(xùn)練的通信開(kāi)銷,每輪訓(xùn)練中測(cè)量了模型參數(shù)上傳中心服務(wù)器和全局模型發(fā)送回客戶端的通信開(kāi)銷.對(duì)于不同數(shù)量客戶端,只有模型參數(shù)被發(fā)送到中央服務(wù)器,通信開(kāi)銷與數(shù)據(jù)集大小無(wú)關(guān),具體結(jié)果顯示使用聯(lián)邦學(xué)習(xí),客戶端取值N為1 至5 時(shí),通信開(kāi)銷分別為15 KB,30 KB,45 KB,60 KB及75 KB.
可以得到結(jié)論,集中式學(xué)習(xí)的通信開(kāi)銷要比聯(lián)邦學(xué)習(xí)大得多,當(dāng)數(shù)據(jù)集非常大時(shí),采用聯(lián)邦學(xué)習(xí)可以顯著降低通信開(kāi)銷.
本文提出了一種基于區(qū)塊鏈的聯(lián)邦學(xué)習(xí)系統(tǒng)架構(gòu).在架構(gòu)中,一個(gè)中心服務(wù)器協(xié)調(diào)多個(gè)客戶端服務(wù)器訓(xùn)練一個(gè)用于分類的全局模型,并將原始數(shù)據(jù)存儲(chǔ)在本地.該架構(gòu)采用區(qū)塊鏈來(lái)實(shí)現(xiàn)數(shù)據(jù)的可驗(yàn)證完整性和激勵(lì)機(jī)制.
實(shí)驗(yàn)中,我們?cè)谝粋€(gè)真實(shí)的用例中實(shí)現(xiàn)了所提出的系統(tǒng)架構(gòu),并評(píng)估了該方法的可行性、模型精度和性能.實(shí)驗(yàn)結(jié)果表明該架構(gòu)實(shí)現(xiàn)了文中提出的全部目標(biāo).
在本文中,大部分聯(lián)邦學(xué)習(xí)任務(wù)是在客戶端服務(wù)器上完成的.在接下的研究工作中,我們計(jì)劃將所有訓(xùn)練任務(wù)從客戶端服務(wù)器移到具有更強(qiáng)大計(jì)算和存儲(chǔ)能力的客戶端設(shè)備上.此外,我們計(jì)劃進(jìn)一步探討如何提高客戶端設(shè)備在模型融合過(guò)程中的可信度.再者,我們計(jì)劃在未來(lái)的研究中將激勵(lì)機(jī)制與更多的因素關(guān)聯(lián).