雷 瑩,紀(jì) 娟,陳桂芳
(1.四川華新現(xiàn)代職業(yè)學(xué)院 信息工程學(xué)院,成都 610107;2.四川開放大學(xué) 高職院,成都 610073)
目前,混合教學(xué)模式是高職院校普遍采用的一種教學(xué)模式,該模式結(jié)合了傳統(tǒng)面授課和在線教學(xué)的優(yōu)勢,切實提高了教學(xué)效率[1]。依托超星學(xué)習(xí)通平臺等進(jìn)行教學(xué)改革,創(chuàng)建了豐富的在線教學(xué)資源,經(jīng)過一段時間的教學(xué)積累,平臺上也形成了學(xué)生的學(xué)習(xí)數(shù)據(jù),結(jié)合線下學(xué)習(xí)情況,描繪出了學(xué)生的學(xué)習(xí)行為畫像。隨著人工智能和深度學(xué)習(xí)的發(fā)展,基于大數(shù)據(jù)的分析和運(yùn)用可以發(fā)揮巨大的價值,但是僅僅使用本校的數(shù)據(jù)存在數(shù)據(jù)量不足的問題,預(yù)測結(jié)果不夠準(zhǔn)確。然而,不同學(xué)校的數(shù)據(jù)融合應(yīng)用存在一定的難度,出于對學(xué)生隱私數(shù)據(jù)的保護(hù),也增加了校際數(shù)據(jù)共享的難度。如何在保護(hù)好隱私的基礎(chǔ)上,安全、可靠地融合多方教育數(shù)據(jù),進(jìn)行聯(lián)合建模,發(fā)揮其蘊(yùn)藏的價值是一個值得研究的問題。
隱私計算是指在提供隱私保護(hù)的前提下對數(shù)據(jù)的價值進(jìn)行充分挖掘的技術(shù)體系,多個參與方在不泄露各自數(shù)據(jù)的前提下,通過聯(lián)合計算技術(shù)對所擁有的數(shù)據(jù)進(jìn)行聯(lián)合機(jī)器學(xué)習(xí)和聯(lián)合分析。隱私計算的參與方既可以是同一機(jī)構(gòu)的不同部門,也可以是不同的機(jī)構(gòu)。在隱私計算框架下,參與方的數(shù)據(jù)明文不出本地,在保護(hù)數(shù)據(jù)安全的同時實現(xiàn)多源數(shù)據(jù)跨域合作,可以破解數(shù)據(jù)保護(hù)與融合應(yīng)用難題[2]。隱私計算體系架構(gòu)如圖1所示。
圖1 隱私計算體系架構(gòu)
1.2.1 防范數(shù)據(jù)泄露
隨著云計算、物聯(lián)網(wǎng)與大數(shù)據(jù)等技術(shù)的快速發(fā)展,各種平臺及服務(wù)基于用戶的操作習(xí)慣和行為偏好對數(shù)據(jù)進(jìn)行收集與分析,并提供個性化服務(wù)。在提供了便利的同時,個人信息遭泄露的事件也頻頻發(fā)生。
由于數(shù)據(jù)存在分散性,數(shù)據(jù)通過各種途徑在不同的組織機(jī)構(gòu)和信息系統(tǒng)中產(chǎn)生,同時,數(shù)據(jù)的可復(fù)制性也使得數(shù)據(jù)一旦分享出去就失去了對數(shù)據(jù)的所有權(quán)和控制權(quán)。因此,數(shù)據(jù)的擁有方往往無法、也不能夠通過安全可信的方式進(jìn)行分享,造成數(shù)據(jù)難以共享應(yīng)用,存在“數(shù)據(jù)孤島”的問題。隱私計算在很多應(yīng)用場景,通過密碼學(xué)算法、明文不出本地等手段,可以有效地提升信息的保護(hù)水平,降低個人信息在應(yīng)用過程中泄露的風(fēng)險。
1.2.2 提高數(shù)據(jù)協(xié)作的效率
借助隱私計算技術(shù),能夠有效保護(hù)自身的數(shù)據(jù),實現(xiàn)數(shù)據(jù)可用不可見,從而促進(jìn)行業(yè)企業(yè)的跨界數(shù)據(jù)合作。隱私計算在無需共享明文數(shù)據(jù)的前提下,能夠幫助不同企業(yè)和機(jī)構(gòu)進(jìn)行聯(lián)合分析,實現(xiàn)數(shù)據(jù)融合應(yīng)用,同時在數(shù)據(jù)協(xié)作的過程中履行數(shù)據(jù)安全和合規(guī)義務(wù),實現(xiàn)生態(tài)系統(tǒng)內(nèi)的數(shù)據(jù)融合,推動企業(yè)自身、產(chǎn)業(yè)層面的數(shù)據(jù)價值最大化。
隱私計算技術(shù)體系分為差分隱私、同態(tài)加密、多方安全計算、零知識證明、可信執(zhí)行環(huán)境、聯(lián)邦學(xué)習(xí)等技術(shù)。各方向技術(shù)特點(diǎn)不同,適用于不同場景,其中聯(lián)邦學(xué)習(xí)更適用于保密性要求不高但數(shù)據(jù)量大的模型訓(xùn)練。在本課題中,將對學(xué)生學(xué)習(xí)數(shù)據(jù)及畢業(yè)后的就業(yè)數(shù)據(jù)進(jìn)行分析,要求的數(shù)據(jù)量較大,因此選擇聯(lián)邦學(xué)習(xí)技術(shù)。
聯(lián)邦學(xué)習(xí)的本質(zhì)是一種機(jī)器學(xué)習(xí)技術(shù)與框架,它是以一個中央服務(wù)器為中心節(jié)點(diǎn),在數(shù)據(jù)不出本地的情況下,聯(lián)合多方數(shù)據(jù)源建模,提供人工智能模型推理、更新及服務(wù)(如圖2所示)。中央服務(wù)器首先生成一個通用神經(jīng)網(wǎng)絡(luò)模型,各參與方將這個通用模型下載至本地,并利用本地數(shù)據(jù)訓(xùn)練模型,將訓(xùn)練后的模型更新上傳到中央服務(wù)器,通過將多個參與方的更新內(nèi)容進(jìn)行融合來優(yōu)化初始通用模型,再由各個參與方下載更新后的通用模型進(jìn)行上述處理,這個過程不斷重復(fù)直至達(dá)到某一個既定的標(biāo)準(zhǔn)。
圖2 聯(lián)邦學(xué)習(xí)框架
根據(jù)參與方之間數(shù)據(jù)分布的不同,聯(lián)邦學(xué)習(xí)可分為三類:橫向聯(lián)邦學(xué)習(xí)、縱向聯(lián)邦學(xué)習(xí)和聯(lián)邦遷移學(xué)習(xí)[3]。
1.3.1 橫向聯(lián)邦學(xué)習(xí)
橫向聯(lián)邦學(xué)習(xí)的本質(zhì)是樣本的聯(lián)合,適合各參與方的業(yè)務(wù)邏輯相同或相似,但用戶重疊較少的場景,即樣本數(shù)據(jù)的特征重合較多而數(shù)據(jù)量較少。例如,銀行行業(yè)與保險行業(yè)中,同企業(yè)或不同地區(qū)的同行業(yè)的業(yè)務(wù)是相同的,但是用戶不重合。故橫向聯(lián)邦學(xué)習(xí)是以樣本聯(lián)合為基本思想來進(jìn)行模型訓(xùn)練的,如圖3所示。
圖3 橫向聯(lián)邦學(xué)習(xí)
1.3.2 縱向聯(lián)邦學(xué)習(xí)
縱向聯(lián)邦學(xué)習(xí)的本質(zhì)是特征的聯(lián)合,適合各參與方的樣本數(shù)據(jù)重疊多,但是特征重疊較少的場景,即各個參與方的用戶相似而業(yè)務(wù)邏輯不同。例如,同一地區(qū)的銀行行業(yè)和零售行業(yè),本質(zhì)上各自的用戶都是該地區(qū)的居民,但他們的業(yè)務(wù)邏輯不同。故縱向聯(lián)邦學(xué)習(xí)是以重疊用戶在不同業(yè)務(wù)邏輯下的特征聯(lián)合為基本思想來進(jìn)行訓(xùn)練的,如圖4所示。
圖4 縱向聯(lián)邦學(xué)習(xí)
1.3.3 聯(lián)邦遷移學(xué)習(xí)
聯(lián)邦遷移學(xué)習(xí)適合各參與方的樣本數(shù)據(jù)和樣本數(shù)據(jù)特征重疊都較少的場景,即各個參與方的用戶重疊較少,業(yè)務(wù)邏輯也不同的情況,主要適用于以深度神經(jīng)網(wǎng)絡(luò)為基模型的場景。
聯(lián)邦遷移學(xué)習(xí)要求各參與方在樣本加密對齊的基礎(chǔ)上對各自的梯度、權(quán)重及損失進(jìn)行計算,通過加密上傳至中心服務(wù)器,中心服務(wù)器基于上傳的數(shù)據(jù)進(jìn)行聚合并調(diào)整通用訓(xùn)練模型,各參與方下載并解密進(jìn)行訓(xùn)練,如圖5所示。
圖5 聯(lián)邦遷移學(xué)習(xí)
PaddleFL是一個百度開發(fā)的基于PaddlePaddle的開源聯(lián)邦學(xué)習(xí)框架。研究人員可以很輕松地用PaddleFL復(fù)制和比較不同的聯(lián)邦學(xué)習(xí)算法。PaddleFL可提供很多聯(lián)邦學(xué)習(xí)策略及其在計算機(jī)視覺、自然語言處理、推薦算法等領(lǐng)域的應(yīng)用。此外,PaddleFL還將提供傳統(tǒng)機(jī)器學(xué)習(xí)訓(xùn)練策略的應(yīng)用,如多任務(wù)學(xué)習(xí)、聯(lián)邦學(xué)習(xí)環(huán)境下的遷移學(xué)習(xí)。
2.2.1 PaddleFL解決方案
PaddleFL主要提供兩種解決方案:Data Parallel和Federated Learning with MPC(PFM)。通過Data Parallel,各數(shù)據(jù)方可以基于經(jīng)典的橫向聯(lián)邦學(xué)習(xí)策略(如FedAvg,DPSGD等)完成模型訓(xùn)練。PFM是基于多方安全計算(MPC)實現(xiàn)的聯(lián)邦學(xué)習(xí)方案。作為PaddleFL的一個重要組成部分,PFM可以很好地支持聯(lián)邦學(xué)習(xí),包括橫向、縱向及聯(lián)邦遷移學(xué)習(xí)等多個場景[4]。既提供了可靠的安全性,也擁有可觀的性能。
2.2.2 PFM訓(xùn)練和推理任務(wù)
(1)編譯時
確定MPC環(huán)境:指定MPC協(xié)議,并配置網(wǎng)絡(luò)環(huán)境。這里使用的是ABY3[5]協(xié)議。
用戶定義訓(xùn)練任務(wù):根據(jù)PFM提供的安全接口,定義集齊學(xué)習(xí)網(wǎng)絡(luò)以及訓(xùn)練策略。
(2)運(yùn)行時
運(yùn)算節(jié)點(diǎn):計算節(jié)點(diǎn)是與計算方相對應(yīng)的實體。在實際部署中,它可以是裸機(jī)、云虛擬機(jī)、docker甚至進(jìn)程。PFM在每次運(yùn)行中只需要3個計算節(jié)點(diǎn),這由底層ABY3協(xié)議決定。Paddle Encrypted程序?qū)⒃谒?個計算節(jié)點(diǎn)上并行部署和運(yùn)行。
基于MPC的算子:PFM為操作加密數(shù)據(jù)提供了特殊的算子,這些算子在PaddlePaddle框架中實現(xiàn),基于像ABY3一樣的MPC協(xié)議,在運(yùn)行時PFM的算子將被創(chuàng)建并按照順序執(zhí)行。
本課題選取了2021年參加實習(xí)的高職院校計算機(jī)專業(yè)群的3個專業(yè),15個教學(xué)班,共679名學(xué)生作為研究對象,共兩個學(xué)期的數(shù)據(jù)(如表1所示),主要根據(jù)學(xué)生的學(xué)習(xí)數(shù)據(jù)對畢業(yè)后的情況進(jìn)行預(yù)測,從而在學(xué)習(xí)過程中對學(xué)生的學(xué)習(xí)行為進(jìn)行預(yù)警與干預(yù)。。
表1 在校學(xué)習(xí)數(shù)據(jù)
所選取數(shù)據(jù)中,學(xué)習(xí)通數(shù)據(jù)包括課程視頻、章節(jié)測驗、章節(jié)學(xué)習(xí)次數(shù)、討論、作業(yè)、考試、簽到、課堂互動、分組任務(wù)等,其中章節(jié)測驗、作業(yè)、考試等反映學(xué)生“知識輸出”能力,占比為50%,在一定程度上反映了學(xué)生的專業(yè)技能素養(yǎng);課堂互動、分組任務(wù)、討論等反映“互動交流”的能力,與畢業(yè)后學(xué)生的溝通協(xié)調(diào)能力有較大的關(guān)系,屬于企業(yè)所需要的軟素質(zhì),占比為35%;而課程視頻、章節(jié)學(xué)習(xí)次數(shù)、簽到等反映學(xué)生“知識輸入”的指標(biāo)所占比重較小,僅為15%。
期末成績?yōu)閷W(xué)生總成績的平均分,其中既包括“職業(yè)英語”“大學(xué)體育”等公共基礎(chǔ)課,也包括素質(zhì)拓展選修課,以及專業(yè)通識課、專業(yè)技能必修課、專業(yè)技能選修課等,反應(yīng)了學(xué)生在本學(xué)期的整體學(xué)習(xí)情況。
素質(zhì)學(xué)分在學(xué)生的學(xué)習(xí)過程中進(jìn)行統(tǒng)計,包括學(xué)生技能競賽得分、社會實踐、集體活動等,每項根據(jù)等級名次確定分值,從學(xué)校的素質(zhì)學(xué)分統(tǒng)計表中獲得。
就業(yè)數(shù)據(jù)主要包括入職公司類型、公司規(guī)模、生產(chǎn)類崗位、薪資等,因為數(shù)據(jù)集數(shù)量較少,本文僅對畢業(yè)后的薪資進(jìn)行預(yù)測,其余指標(biāo)可在獲取更多的數(shù)據(jù)后再進(jìn)行訓(xùn)練。
由于學(xué)生數(shù)據(jù)一般以學(xué)校為單位進(jìn)行留存,單個學(xué)校的數(shù)據(jù)量有限,且每年的就業(yè)環(huán)境不同,不適合收集多年的數(shù)據(jù)進(jìn)行分析。結(jié)合上述場景的特點(diǎn),學(xué)生的數(shù)據(jù)特征較為固定,即樣本特征重合度較高,但是用戶不重合。綜合考慮聯(lián)邦學(xué)習(xí)的三種分類及特點(diǎn),應(yīng)選用橫向聯(lián)邦學(xué)習(xí)模型進(jìn)行學(xué)習(xí)。
3.2.1 數(shù)據(jù)集劃分
將數(shù)據(jù)分為訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集,其中訓(xùn)練數(shù)據(jù)占80%,測試數(shù)據(jù)占20%。
3.2.2 多方計算party劃分
本例模擬多機(jī)運(yùn)行,參與方可分為輸入方、計算方和結(jié)果方,輸入方為訓(xùn)練數(shù)據(jù)及模型的持有方,負(fù)責(zé)加密數(shù)據(jù)和模型,并將其發(fā)送到計算方。計算方為訓(xùn)練的執(zhí)行方,基于特定的多方安全計算協(xié)議完成訓(xùn)練任務(wù)。計算方只能得到加密后的數(shù)據(jù)及模型,以保證數(shù)據(jù)隱私。在本例中每個節(jié)點(diǎn)充當(dāng)兩個角色,既是數(shù)據(jù)擁有方,也作為計算方參與訓(xùn)練,節(jié)點(diǎn)配置如表2所示。
表2 節(jié)點(diǎn)配置
3.2.3 私有數(shù)據(jù)對齊
在不泄露自身數(shù)據(jù)的情況下,數(shù)據(jù)方找到各方共有的樣本集合進(jìn)行訓(xùn)練前的數(shù)據(jù)對齊,這里使用的是本校的數(shù)據(jù),將其劃分為幾部分以模擬不同的數(shù)據(jù)方,因此無需進(jìn)行對齊,只需先刪除無用的數(shù)據(jù),如準(zhǔn)備參加專升本、入伍等學(xué)生的數(shù)據(jù),將其他數(shù)據(jù)進(jìn)行整理,保留學(xué)習(xí)通數(shù)據(jù)、期末成績、技能競賽、社會實踐、集體活動、薪資等字段。
3.2.4 數(shù)據(jù)加密及分發(fā)
運(yùn)行Paddle Encrypted程序?qū)?shù)據(jù)進(jìn)行加密,產(chǎn)生加密訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù),并運(yùn)行python process_data.py在指定目錄下生成對應(yīng)于3個計算party的feature和label的加密數(shù)據(jù)文件,以后綴名區(qū)分屬于不同party的數(shù)據(jù),如第一個feature.party0表示屬于party0的feature數(shù)據(jù)。
按照后綴名,使用scp命令生成的feature和label的加密文件分別發(fā)送到對應(yīng)的計算party,比如,將后綴為Part0的加密數(shù)據(jù)發(fā)送到Party0的./mpc_data/目錄下。
將加密后的數(shù)據(jù)和模型傳送給計算方。每個計算方只會拿到數(shù)據(jù)的一部分,因此計算方無法還原真實的數(shù)據(jù),不用擔(dān)心數(shù)據(jù)隱私的問題。
3.3.1 定義MPC協(xié)議
使用多方計算協(xié)議ABY3,并根據(jù)各計算party的機(jī)器環(huán)境,將localhost修改為三個節(jié)點(diǎn)各自的IP地址:
pfl_mpc.init("aby3",int(role),"localhost",server,int(port))
3.3.2 搭建網(wǎng)絡(luò)
使用自己的數(shù)據(jù)搭建網(wǎng)絡(luò),定義損失函數(shù),這里使用均方誤差(MSE),MSE通常用作回歸問題的損失函數(shù)。
MSE用來計算模型的預(yù)測值Y^和Y真實標(biāo)簽的接近程度。
定義優(yōu)化算法,這里使用隨機(jī)梯度下降算法SGD,學(xué)習(xí)率設(shè)置為0.0.1。SGD是一種簡單而有效的方法,多用于支持向量機(jī)、邏輯回歸等凸損失函數(shù)下的線性分類器的學(xué)習(xí)。通過優(yōu)化算法對損失函數(shù)進(jìn)行優(yōu)化,以便尋找到最優(yōu)的參數(shù),使得損失函數(shù)的值最小。
3.3.3 模型訓(xùn)練
完成配置后進(jìn)行模型訓(xùn)練,通過迭代器將數(shù)據(jù)集分batch進(jìn)行預(yù)測值和實際值比較,以求得到最小的loss。
每個迭代中都需要進(jìn)行前向計算損失函數(shù)計算和梯度反向傳播,執(zhí)行梯度反向傳播函數(shù)將從后向前逐層計算每一層的梯度,并根據(jù)設(shè)置的優(yōu)化算法更新參數(shù)。最后,使用克隆出的主程序進(jìn)行預(yù)測。
3.4.1 解密預(yù)測數(shù)據(jù)
計算party并將loss.party和prediction.part文件發(fā)送到數(shù)據(jù)方的目錄下,數(shù)據(jù)方使用load_decrypt_data()解密恢復(fù)出loss數(shù)據(jù)和prediction數(shù)據(jù)。
3.4.2 結(jié)果重構(gòu)
訓(xùn)練和推理工作完成后,模型(或預(yù)測結(jié)果)由計算方以加密形式輸出。結(jié)果方收集加密的結(jié)果,使用PFM中的工具對其進(jìn)行解密,并將明文結(jié)果傳遞給用戶。
得到明文模型后,使用明文模型進(jìn)行再訓(xùn)練/預(yù)測。
預(yù)測結(jié)束后,使用process_data.py腳本中的decrypt_data_to_file(),將保存的密文預(yù)測結(jié)果進(jìn)行解密,并將解密得到的明文預(yù)測結(jié)果保存到指定文件中。然后,再調(diào)用腳本evaluate_metrics.py中的evaluate_accuracy接口統(tǒng)計預(yù)測的準(zhǔn)確率。
本文將學(xué)生學(xué)習(xí)過程數(shù)據(jù)使用聯(lián)邦學(xué)習(xí)框架進(jìn)行訓(xùn)練和預(yù)測,各個參與方只共享模型的更新參數(shù)而無需共享本地的實際數(shù)據(jù),達(dá)到數(shù)據(jù)不出本地進(jìn)行聯(lián)合訓(xùn)練的目的。將數(shù)據(jù)集中20%的測試數(shù)據(jù)與實際數(shù)據(jù)進(jìn)行比較,存在一定的誤差,但是總體曲線和實際值保持較大的相關(guān)性。
將基于橫向聯(lián)邦學(xué)習(xí)的多方測試數(shù)據(jù)與普通的集中預(yù)測結(jié)果進(jìn)行比較,發(fā)現(xiàn)預(yù)測精度與集中測試基本相符,說明使用橫向聯(lián)邦學(xué)習(xí)進(jìn)行訓(xùn)練及預(yù)測,在預(yù)測精度上沒有明顯損失,但很好地保護(hù)了用戶的隱私數(shù)據(jù),可以促進(jìn)數(shù)據(jù)聯(lián)合使用。
河北軟件職業(yè)技術(shù)學(xué)院學(xué)報2022年4期