徐夢煒,劉淵強(qiáng),黃 康,劉譞哲,黃 罡
1(北京大學(xué) 信息科學(xué)技術(shù)學(xué)院 軟件研究所,北京 100871)
2(高可信軟件技術(shù)教育部重點實驗室(北京大學(xué)),北京 100871)
3(領(lǐng)規(guī)科技 北京有限公司,北京 100094)
近些年,以神經(jīng)網(wǎng)絡(luò)(neural network)為代表的機(jī)器學(xué)習(xí)技術(shù)得到了快速的發(fā)展,提升了計算機(jī)系統(tǒng)的智能化程度,在計算機(jī)視覺、自然語言處理等多個重要研究領(lǐng)域得到了廣泛應(yīng)用.近年來,機(jī)器學(xué)習(xí)應(yīng)用的發(fā)展趨勢之一是由云端逐漸遷移到終端設(shè)備,如智能手機(jī).例如,近期的實證研究[1]發(fā)現(xiàn),Google Play 應(yīng)用商店中搭載神經(jīng)網(wǎng)絡(luò)并進(jìn)行本地計算的移動應(yīng)用數(shù)量在2018 年第三季度內(nèi)增加了27%,這些深度學(xué)習(xí)應(yīng)用擁有千萬級的用戶下載與評論量,占應(yīng)用商店中所有應(yīng)用下載評論總量超過10%.此外,各大互聯(lián)網(wǎng)廠商紛紛自研了面向移動終端的深度學(xué)習(xí)框架,包括Google 的TF Lite、Facebook 的Caffe2、蘋果的Core ML、高通的SNPE、騰訊的ncnn等,以優(yōu)化神經(jīng)網(wǎng)絡(luò)模型在這些資源受限設(shè)備上的部署.考慮到神經(jīng)網(wǎng)絡(luò)在性能上的優(yōu)勢以及部署上更具挑戰(zhàn)性,本文將以神經(jīng)網(wǎng)絡(luò)為代表研究終端設(shè)備上的機(jī)器學(xué)習(xí)部署問題.
開發(fā)面向移動終端的神經(jīng)網(wǎng)絡(luò)面臨的核心挑戰(zhàn)之一是:模型的訓(xùn)練需要大量的數(shù)據(jù),而這些數(shù)據(jù)往往來自于終端設(shè)備本身且包含大量用戶隱私信息.例如,輸入法應(yīng)用的詞預(yù)測任務(wù)中需要用戶的輸入文本作為訓(xùn)練集,其中可能包含用戶的信用卡號、聊天記錄、郵件等隱私信息.近年來,為了更加規(guī)范地保護(hù)用戶數(shù)據(jù)隱私,各個國家機(jī)構(gòu)出臺了相關(guān)的法律法規(guī).例如,歐盟于2018 年正式施行《通用數(shù)據(jù)保護(hù)條例》(GDPR)[2],其中詳細(xì)規(guī)定了公司在涉及用戶數(shù)據(jù)時需要遵循的原則;我國制訂中的《個人信息保護(hù)法》對APP 違規(guī)收集用戶信息等行為給出了法律定義,對用戶隱私保護(hù)做到有法可依.
如何在保護(hù)用戶隱私的前提下訓(xùn)練機(jī)器學(xué)習(xí)模型正在逐漸引起學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注.以聯(lián)邦學(xué)習(xí)[3]、同態(tài)加密[4]、差分隱私[5]為代表的技術(shù)在某種程度上提供了解決方案,但都存在一定的局限性.例如,聯(lián)邦學(xué)習(xí)通過將數(shù)據(jù)和訓(xùn)練分布在不同終端設(shè)備上,通過中心化的參數(shù)服務(wù)器來分發(fā)模型、聚合梯度,從而達(dá)到隱私保護(hù)的目的.但在聯(lián)邦學(xué)習(xí)過程中,依舊存在著上傳梯度被攻擊、網(wǎng)絡(luò)帶寬開銷大等問題.同態(tài)加密利用經(jīng)典的密碼學(xué)算法實現(xiàn)了數(shù)據(jù)保護(hù),但會造成大量的額外計算開銷,導(dǎo)致其在復(fù)雜神經(jīng)網(wǎng)絡(luò)上無法用于實踐.
為此,本文提出了“自治式學(xué)習(xí)”的神經(jīng)網(wǎng)絡(luò)訓(xùn)練模式:將與用戶數(shù)據(jù)相關(guān)的模型計算任務(wù)完全部署在本地終端,保證數(shù)據(jù)不會以任何形式(原始數(shù)據(jù)、加密數(shù)據(jù)、模型梯度等)傳到外部.本文主要關(guān)注其中的模型訓(xùn)練過程.與傳統(tǒng)的集中式或聯(lián)邦式學(xué)習(xí)相比,自治式學(xué)習(xí)除了能夠更大程度地保護(hù)用戶隱私之外,還具有另外兩個優(yōu)勢:(1)個性化學(xué)習(xí):自治式學(xué)習(xí)利用每個終端上產(chǎn)生的數(shù)據(jù)訓(xùn)練各自的模型,然后服務(wù)該特定的用戶,意味著該模型是為每個用戶定制化訓(xùn)練學(xué)習(xí)得到的.在很多移動場景下,用戶的行為習(xí)慣(如輸入法,語音助手)各異,定制化訓(xùn)練得到的模型相較所有用戶共享的全局模型具有更高的準(zhǔn)確率.(2)高擴(kuò)展性:傳統(tǒng)的集中式/聯(lián)邦式的學(xué)習(xí)模式所需要的硬件資源,包括計算、存儲、網(wǎng)絡(luò)帶寬等,與接入的終端設(shè)備數(shù)量呈近似線性關(guān)系,對于用戶量巨大的應(yīng)用而言,這會帶來應(yīng)用開發(fā)和維護(hù)成本的巨大增加.而自治式學(xué)習(xí)要求每一臺接入設(shè)備只通過本地的計算存儲資源進(jìn)行模型訓(xùn)練,云端無需提供更多的硬件資源,因此具有更強(qiáng)的擴(kuò)展性.
實現(xiàn)一個自治式學(xué)習(xí)系統(tǒng)面臨兩個主要挑戰(zhàn):首先,如何在終端上數(shù)據(jù)不傳到外部的前提下,訓(xùn)練出高質(zhì)量的神經(jīng)網(wǎng)絡(luò)模型?其次,每個終端設(shè)備上的硬件資源受限,如何在不影響用戶體驗的前提下,快速完成訓(xùn)練并進(jìn)行部署?為了解決這兩個問題,我們設(shè)計實現(xiàn)了第1 個面向移動終端的自治式學(xué)習(xí)系統(tǒng)AutLearn,其核心思想是采用云端協(xié)同思想,在云端服務(wù)器首先利用公共數(shù)據(jù)集訓(xùn)練一個泛化能力較強(qiáng)的模型,然后在終端利用遷移學(xué)習(xí)技術(shù)對模型進(jìn)行調(diào)整,得到一個適用于該終端設(shè)備的可用于部署的模型.云端的預(yù)訓(xùn)練使用公共的非隱私數(shù)據(jù)集,而無需用戶上傳任何數(shù)據(jù);終端的遷移學(xué)習(xí)使用了數(shù)據(jù)增強(qiáng)技術(shù),以提高訓(xùn)練的效果.為了不影響用戶在使用終端設(shè)備過程中的體驗,我們將終端遷移學(xué)習(xí)進(jìn)一步分成了兩種模式:終端離線學(xué)習(xí)與終端在線學(xué)習(xí),以適用于不同的訓(xùn)練場景與目標(biāo).此外,AutLearn 引入了一系列的優(yōu)化技術(shù),包括模型壓縮、運行時緩存優(yōu)化、神經(jīng)網(wǎng)絡(luò)編譯器等.這些技術(shù)在保證模型精度(或極少精度損失)的前提下,極大地節(jié)省了終端設(shè)備上神經(jīng)網(wǎng)絡(luò)訓(xùn)練的資源開銷.
我們基于AutLearn 實現(xiàn)了兩個自治式學(xué)習(xí)的典型應(yīng)用場景:輸入詞預(yù)測與圖像分類,并在大規(guī)模數(shù)據(jù)集和經(jīng)典神經(jīng)網(wǎng)絡(luò)模型上進(jìn)行了驗證.實驗結(jié)果表明,AutLearn 可以在保護(hù)用戶隱私的前提下,訓(xùn)練得到收斂至較高準(zhǔn)確率的神經(jīng)網(wǎng)絡(luò)模型.與集中式/聯(lián)邦式的訓(xùn)練模式相比,自治式訓(xùn)練得到的模型可以達(dá)到相近甚至更高的準(zhǔn)確率,產(chǎn)生個性化定制的效果.此外,AutLearn 的終端訓(xùn)練優(yōu)化技術(shù)可以節(jié)省最多超過80%的訓(xùn)練時間和終端設(shè)備能耗.結(jié)合我們對真實智能手機(jī)用戶使用行為的觀察分析,AutLearn 可以在一天內(nèi)完成新模型的訓(xùn)練用于部署.
以深度學(xué)習(xí)算法為代表的機(jī)器學(xué)習(xí)技術(shù)已經(jīng)得到了學(xué)術(shù)界的廣泛關(guān)注,并在工業(yè)界也進(jìn)行了大量的部署.深度學(xué)習(xí)模型的質(zhì)量依賴于訓(xùn)練數(shù)據(jù),后者的數(shù)量與質(zhì)量決定了最終訓(xùn)練得到模型的準(zhǔn)確率是否滿足要求.然而,這些數(shù)據(jù)往往需要從用戶設(shè)備中采集,并包含用戶的隱私信息.這些數(shù)據(jù)一旦離開終端設(shè)備就會帶來隱私泄露的風(fēng)險.例如,輸入法應(yīng)用的詞預(yù)測任務(wù)中需要用戶的輸入文本作為訓(xùn)練集,其中可能包含用戶的信用卡號、聊天記錄、郵件等隱私信息.當(dāng)數(shù)據(jù)被上傳至服務(wù)器后,傳統(tǒng)的信息安全技術(shù),如加密傳輸、用戶匿名處理等都無法保證用戶數(shù)據(jù)不會被泄露和惡意地使用.為了更加規(guī)范地保護(hù)用戶數(shù)據(jù),各個國家機(jī)構(gòu)出臺了相關(guān)的法律.例如,歐盟于2018 年正式施行《通用數(shù)據(jù)保護(hù)條例》[1],詳細(xì)規(guī)定了公司在涉及用戶數(shù)據(jù)時需要遵循的原則.如何在保證用戶隱私的前提下訓(xùn)練高質(zhì)量的深度學(xué)習(xí)模型是一項巨大的挑戰(zhàn).為此,相關(guān)研究人員提出了不同的解決方案.下面我們概述其中幾個主要相關(guān)工作,總結(jié)各自的不足.
聯(lián)邦學(xué)習(xí)技術(shù)最初是由Google AI 團(tuán)隊提出來的[3],其核心思想在于不直接上傳用戶數(shù)據(jù),而是將模型訓(xùn)練任務(wù)部署到終端設(shè)備,后者在訓(xùn)練結(jié)束后上傳模型的更新到云端,而云端只需要對來自不同終端設(shè)備的模型更新聚合,以及下發(fā)聚合后的模型.由于輸入數(shù)據(jù)到梯度是多對多的高維空間映射,攻擊者很難根據(jù)模型梯度獲取原始數(shù)據(jù).因此,聯(lián)邦學(xué)習(xí)在一定程度上保護(hù)了用戶隱私.后續(xù)有大量的工作關(guān)注于如何優(yōu)化聯(lián)邦學(xué)習(xí)的流程.例如,為了減小終端到服務(wù)器的通信開銷,Kone?ny 等人[5]提出了兩種優(yōu)化策略:結(jié)構(gòu)化更新與速寫式更新.前者將模型參數(shù)限制在一個相對更小的解空間里,使得模型可以使用更少的參數(shù)表示,從而減少了模型梯度的大小.后者仍舊使用原模型進(jìn)行訓(xùn)練,但在上傳之前對訓(xùn)練得到的模型梯度進(jìn)行壓縮,如量化、降采樣等;為了解決聯(lián)邦學(xué)習(xí)過程中的終端設(shè)備異構(gòu)性問題,Li 等人[6]提出的SmartPC 系統(tǒng)使用動態(tài)步調(diào)同步策略,在每一輪訓(xùn)練根據(jù)上一輪收到終端模型更新的延遲來動態(tài)調(diào)整當(dāng)前的等候期限.其次,該工作還提出了通過動態(tài)調(diào)整終端設(shè)備的CPU 運行頻率,保證梯度可以在等候期限之前被上傳,并最小化訓(xùn)練能耗;為了進(jìn)一步優(yōu)化聯(lián)邦學(xué)習(xí)過程中的數(shù)據(jù)安全,Bonawitz[7]等人提出模型的更新通過安全多方計算技術(shù)在終端進(jìn)行融合,從而保證服務(wù)器只能看到融合后的整體更新,而無法通過個體的模型更新來推斷其訓(xùn)練數(shù)據(jù).
同態(tài)加密算法允許對密文進(jìn)行特定形式的代數(shù)運算后,得到仍然是加密的結(jié)果,將其解密所得到的結(jié)果與對明文進(jìn)行同樣的運算結(jié)果一致.換言之,這項技術(shù)令人們可以在加密的數(shù)據(jù)中進(jìn)行諸如檢索、比較等操作,得出正確的結(jié)果,而在整個處理過程中無需對數(shù)據(jù)進(jìn)行解密.一些相關(guān)工作[8,9]探究了如何將同態(tài)加密運用于機(jī)器學(xué)習(xí)訓(xùn)練過程,但主要集中在一些簡單算法上,如支持向量機(jī)、決策樹等.由于深度學(xué)習(xí)運算的復(fù)雜性,為其設(shè)計同態(tài)加密算法具有更大的挑戰(zhàn).同時,在加密數(shù)據(jù)上進(jìn)行訓(xùn)練也遠(yuǎn)遠(yuǎn)比預(yù)測[10]更加復(fù)雜.Nandakumar 等人[11]初步探討并實現(xiàn)了如何利用同態(tài)加密技術(shù)在加密數(shù)據(jù)上進(jìn)行深度學(xué)習(xí)訓(xùn)練.他們使用了ciphertext packing 技術(shù)對訓(xùn)練進(jìn)行加速,但訓(xùn)練的效率依舊不高,無法支持卷積層操作,在訓(xùn)練得到模型精度上甚至還有少量的損失.
差分隱私[12]最初是針對數(shù)據(jù)庫查詢而設(shè)計的,其目的在于將用戶隱私量化,保證用戶只能夠獲取數(shù)據(jù)庫的統(tǒng)計信息,而無法獲得單獨的個體信息,同時最大化數(shù)據(jù)查詢的準(zhǔn)確性.差分隱私的具體實現(xiàn)方式主要是在查詢結(jié)果里加入隨機(jī)性,如服從Laplace 分布和指數(shù)分布的噪音.為了將差分隱私技術(shù)應(yīng)用于機(jī)器學(xué)習(xí)訓(xùn)練過程中的數(shù)據(jù)保護(hù),Abadi 等人[5]提出修改模型的訓(xùn)練算法,在每一個batch 的數(shù)據(jù)訓(xùn)練得到的梯度之上加入擾動,然后將擾動后的梯度應(yīng)用于模型訓(xùn)練.在該過程中,還可以累加擾動的數(shù)值,從而在訓(xùn)練結(jié)束之后得到整體隱私的量化度.該技術(shù)也已經(jīng)被集成到TensorFlow 的開源項目中,以幫助開發(fā)者訓(xùn)練具有隱私保護(hù)的深度學(xué)習(xí)模型.Shokri等人[13]提出部分梯度共享的策略,即在每一輪訓(xùn)練結(jié)束之后,選擇性地分享梯度中的一部分,然后將多個組織的梯度聚合,整體應(yīng)用于舊模型參數(shù)上,得到更新后的模型.這種策略能夠有效工作的主要原因在于梯度下降訓(xùn)練法本身對不可靠的帶有隨機(jī)性質(zhì)的模型梯度具有很強(qiáng)的健壯性.在這種策略之上,Shokri 等人進(jìn)一步采用差分隱私技術(shù)來量化并減少隱私泄露的風(fēng)險.
小結(jié):以上技術(shù)雖然能夠在某種程度上保護(hù)用戶隱私,但同樣存在著其局限.例如:聯(lián)邦學(xué)習(xí)技術(shù)始終要求用戶上傳數(shù)據(jù)相關(guān)信息(模型梯度或者模型本身),導(dǎo)致其依舊存在隱私泄露的風(fēng)險[14],并且聯(lián)邦學(xué)習(xí)本身會導(dǎo)致大量的網(wǎng)絡(luò)通信開銷,對帶寬的要求較高;同態(tài)加密技術(shù)會導(dǎo)致大量的計算開銷,無法被應(yīng)用于復(fù)雜的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)及實踐之中;差分隱私技術(shù)主要用于保護(hù)訓(xùn)練后得到的模型中蘊(yùn)含的數(shù)據(jù)信息,而無法保護(hù)訓(xùn)練過程中訓(xùn)練數(shù)據(jù)不被獲取以及被惡意地使用.
本文提出分布式自治學(xué)習(xí)的概念,其核心思想是:終端設(shè)備無需以任何形式上傳用戶數(shù)據(jù),與用戶數(shù)據(jù)相關(guān)的運算(模型訓(xùn)練)全部在本地進(jìn)行.在某種程度上,自治式學(xué)習(xí)可以視為集中式學(xué)習(xí)到近些年的聯(lián)邦式發(fā)展方向的一種特殊情況,即,原始數(shù)據(jù)上傳(集中式學(xué)習(xí))→訓(xùn)練結(jié)果數(shù)據(jù)上傳(聯(lián)邦學(xué)習(xí))→無數(shù)據(jù)上傳(自治式學(xué)習(xí)),其對隱私的保護(hù)程度也依次遞增.在自治式學(xué)習(xí)中,每個客戶端設(shè)備完全不依賴于任何外部的數(shù)據(jù)與計算能力,從一個初始模型出發(fā),通過本地數(shù)據(jù)和計算能力獲得一個新的部署于本地的高精度定制模型.
Fig.1 A comparison of different machine learning training paradigms圖1 多種機(jī)器學(xué)習(xí)訓(xùn)練模式的比較示意圖
這種自治式學(xué)習(xí)的計算模式也契合了近些年逐步引起重視的去中心化思想.聯(lián)邦式學(xué)習(xí)雖然在某種程度上進(jìn)行了去中心化(相較集中式學(xué)習(xí)),但是依舊存在一個中心化節(jié)點來協(xié)調(diào)各個終端的計算任務(wù),匯總這些終端上傳的模型參數(shù).而自治式學(xué)習(xí)實現(xiàn)了更加徹底的去中心化機(jī)器學(xué)習(xí)訓(xùn)練模式.
我們認(rèn)為,自治式學(xué)習(xí)的優(yōu)勢主要體現(xiàn)在以下3 個方面.
·用戶隱私保護(hù):由于終端設(shè)備沒有任何數(shù)據(jù)上傳操作,所有數(shù)據(jù)在本地終端設(shè)備上產(chǎn)生、存儲并消耗,極大地減小了隱私泄露的風(fēng)險.相對應(yīng)地,類似聯(lián)邦式的機(jī)制依舊需要上傳與用戶隱私間接相關(guān)的數(shù)據(jù)(如模型更新梯度),依舊存在隱私泄露的風(fēng)險.從最終用戶的角度出發(fā),將數(shù)據(jù)保留在本地顯然更容易讓人接受,更利于各國數(shù)據(jù)保護(hù)條例的實施.
·個性化模型:自治式學(xué)習(xí)的過程是利用每個終端上產(chǎn)生的數(shù)據(jù)訓(xùn)練各自的模型,這個模型會被部署于服務(wù)該特定的用戶,這意味著模型是為每個用戶定制化訓(xùn)練學(xué)習(xí)得到的.在很多場景下,用戶的行為習(xí)慣(如輸入法,語音助手)各異,一個全局統(tǒng)一的、由集中式或聯(lián)邦式訓(xùn)練出的全局模型無法很好地服務(wù)于不同用戶,為此需要由自治式學(xué)習(xí)獲得的個性化能力.
·更強(qiáng)的擴(kuò)展性:自治式學(xué)習(xí)意味著每一臺新接入的設(shè)備都會提供自己的計算存儲資源用于模型的訓(xùn)練,而云端無需提供更多的硬件資源,因此具有很強(qiáng)的擴(kuò)展性.而集中式/聯(lián)邦式的學(xué)習(xí)模式則要求云端為新接入的終端設(shè)備提供更多的硬件支持,包括計算、存儲、網(wǎng)絡(luò)帶寬,對于用戶量巨大的應(yīng)用而言,這會帶來極大的經(jīng)濟(jì)開銷.
事實上,傳統(tǒng)觀點認(rèn)為,用戶隱私和用戶個性化很難同時達(dá)到[15],例如推薦系統(tǒng),因為兩者在本質(zhì)上存在著矛盾.自治式學(xué)習(xí)通過充分利用終端設(shè)備本地的計算能力,在某種程度上可以解決這個問題.
挑戰(zhàn):實現(xiàn)一個自治式學(xué)習(xí)系統(tǒng)的挑戰(zhàn)主要存在于兩個方面:終端設(shè)備本地數(shù)據(jù)量不足與終端計算力不足.首先,訓(xùn)練機(jī)器學(xué)習(xí)模型,尤其是神經(jīng)網(wǎng)絡(luò)模型需要大量的數(shù)據(jù),而每個終端設(shè)備上的訓(xùn)練數(shù)據(jù)往往有限,在不足量的條件下訓(xùn)練模型可能導(dǎo)致模型無法收斂的問題,無法得到高質(zhì)量的模型.其次,模型的訓(xùn)練需要大量的計算資源,而終端設(shè)備往往計算能力有限,并且考慮到終端設(shè)備的復(fù)雜運行環(huán)境和用戶的交互,無法在任意時間用于模型訓(xùn)練.一個直接的問題是:當(dāng)一個新的模型結(jié)構(gòu)被設(shè)計出來,分發(fā)到各個終端設(shè)備后,需要多久才能完成訓(xùn)練并用于部署?
可行性分析:離線模型訓(xùn)練是一種最直接的自治學(xué)習(xí)方式,即客戶端從云端獲取一個新的模型結(jié)構(gòu)后,選擇適宜的時機(jī)對該模型進(jìn)行訓(xùn)練,完成后用于部署.這里,“適宜”的訓(xùn)練時機(jī)主要指的是不會影響用戶的使用體驗.在大部分聯(lián)邦學(xué)習(xí)系統(tǒng)中[16],模型的訓(xùn)練被要求只在滿足以下條件時才會進(jìn)行:(1)設(shè)備充電;(2)設(shè)備屏幕關(guān)閉(即沒有被用戶交互使用);(3)設(shè)備處在不計費的網(wǎng)絡(luò)環(huán)境下(如WiFi).對于自治學(xué)習(xí)而言,由于沒有模型上傳的需求,因此條件3 可以被省去.但即便如此,這些苛刻的條件仍然極大地限制了終端設(shè)備可以參與離線訓(xùn)練的時間.我們發(fā)現(xiàn),現(xiàn)有的工作缺乏相關(guān)的真實用戶數(shù)據(jù)支持這種離線的深度學(xué)習(xí)訓(xùn)練模式.為此,我們采集了近1 500 名真實用戶使用智能手機(jī)的行為數(shù)據(jù),包括這些設(shè)備上硬件狀態(tài)(網(wǎng)絡(luò)狀態(tài)、充電狀態(tài)、屏幕狀態(tài))的轉(zhuǎn)變.
圖2 展示了用戶行為數(shù)據(jù)的分析結(jié)果.其中,橫坐標(biāo)代表單個終端每天可用于模型訓(xùn)練的時間,即滿足上述系統(tǒng)狀態(tài)條件的時長;縱坐標(biāo)代表該時長在不同設(shè)備與用戶上的累積分布函數(shù)CDF.我們發(fā)現(xiàn),每個用戶每天可用于自治式訓(xùn)練的時間約為120 分鐘(中位數(shù)),而聯(lián)邦學(xué)習(xí)的時間為60 分鐘(中位數(shù)),原因是聯(lián)邦學(xué)習(xí)對設(shè)備參與訓(xùn)練所應(yīng)具備的條件要求得更加苛刻,即必須滿足設(shè)備處于不計費的網(wǎng)絡(luò)環(huán)境下這一條件.我們認(rèn)為,120 分鐘的時間通常足以完成大量的模型訓(xùn)練任務(wù),結(jié)合我們在下文提出的AutLearn 系統(tǒng)與其優(yōu)化技術(shù),足以實現(xiàn)自治式學(xué)習(xí)的目的.我們將在第4.3 節(jié)中具體介紹自治學(xué)習(xí)在終端設(shè)備上的計算開銷.
Fig.2 The trainable time per day under federated learning and autonomous learning圖2 聯(lián)邦學(xué)習(xí)與自治學(xué)習(xí)下,單個移動終端每天可用于模型訓(xùn)練的時間
我們實現(xiàn)了第1 個分布式自治學(xué)習(xí)系統(tǒng)框架AutLearn.本節(jié)介紹AutLearn 系統(tǒng)的設(shè)計和具體實現(xiàn).首先介紹該系統(tǒng)的核心思想;然后,介紹總體架構(gòu)以及系統(tǒng)中每一個功能模塊的具體實現(xiàn);最后,以輸入法和圖像處理為例介紹特定的應(yīng)用如何在該系統(tǒng)上運行,以達(dá)到自治學(xué)習(xí)的目的.
為了解決終端設(shè)備上訓(xùn)練數(shù)據(jù)不足的問題,AutLearn 采用了云端協(xié)同思想,在云端服務(wù)器上利用公共數(shù)據(jù)訓(xùn)練一個泛化能力較強(qiáng)的模型,然后在終端利用遷移學(xué)習(xí)[17]技術(shù)對模型進(jìn)行調(diào)整,得到一個適用于該終端設(shè)備的可用于部署的模型.為了保證用戶的隱私,云端服務(wù)器在預(yù)訓(xùn)練模型時不能要求用戶上傳數(shù)據(jù),而是通過數(shù)據(jù)挖掘的方式從公共數(shù)據(jù)中尋找與用戶數(shù)據(jù)分布相似的替代數(shù)據(jù),達(dá)到公私合贏的目標(biāo).這里的公共數(shù)據(jù)包括那些獲得用戶授權(quán)的數(shù)據(jù)、通過合法途徑購買的數(shù)據(jù)、利用爬蟲技術(shù)從公網(wǎng)上爬取的數(shù)據(jù)等等.此外,我們還引入了數(shù)據(jù)增強(qiáng)技術(shù)用于提高終端上用于訓(xùn)練的數(shù)據(jù)量.
為了解決終端設(shè)備計算資源及電量受限的問題,AutLearn 引入了一系列的優(yōu)化技術(shù),包括模型層壓縮、運行時緩存優(yōu)化、神經(jīng)網(wǎng)絡(luò)編譯器等.這些技術(shù)在保證模型精度(或極少精度損失)的前提下,極大地節(jié)省了終端設(shè)備上神經(jīng)網(wǎng)絡(luò)訓(xùn)練的資源開銷.
本文提出的自治學(xué)習(xí)系統(tǒng)框架AutLearn 如圖3 所示.在云端服務(wù)器,首先利用公共數(shù)據(jù)集對模型進(jìn)行預(yù)訓(xùn)練.考慮到模型需要部署在終端,AutLearn 內(nèi)置了基于奇異值分解[18]的模型剪枝算法.剪枝結(jié)束之后需對模型進(jìn)行重新訓(xùn)練以恢復(fù)模型精度.接下來,AutLearn 會利用神經(jīng)網(wǎng)絡(luò)編譯技術(shù)對剪枝后的模型進(jìn)行編譯,從而優(yōu)化其在相應(yīng)終端計算硬件(CPU、GPU 等)上的運算效率.關(guān)于編譯的具體內(nèi)容將在第3.4 節(jié)進(jìn)行介紹.
編譯后的模型被下載到各個終端設(shè)備,利用本地數(shù)據(jù)在適宜的時間段進(jìn)行遷移學(xué)習(xí),這個過程我們稱其為離線學(xué)習(xí).其中,AutLearn 會對本地數(shù)據(jù)進(jìn)行增強(qiáng)以提高數(shù)據(jù)量.訓(xùn)練結(jié)束后模型會被用于部署,執(zhí)行神經(jīng)網(wǎng)絡(luò)的前向推斷.為了讓模型可以持續(xù)學(xué)習(xí)用戶行為的改變以獲取更高的準(zhǔn)確率,AutLearn 同時實現(xiàn)了在線學(xué)習(xí),即在終端設(shè)備上生成訓(xùn)練數(shù)據(jù)之后立即進(jìn)行訓(xùn)練.相較于離線學(xué)習(xí),在線學(xué)習(xí)的優(yōu)勢是可以更快地對用戶行為改變進(jìn)行適應(yīng),從而在接下來的推斷中得到更合理的結(jié)果,且數(shù)據(jù)無需保存在本地,進(jìn)一步地減少了隱私泄露的風(fēng)險.具體地,使用離線學(xué)習(xí)還是在線學(xué)習(xí),亦或是兩者結(jié)合,需要取決于具體的應(yīng)用場景.我們將在第3.6 節(jié)中介紹如何選擇合適的訓(xùn)練模式.
Fig.3 Architecture of AutLearn圖3 AutLearn 系統(tǒng)架構(gòu)圖
云端協(xié)同訓(xùn)練的目的是在云端利用公共數(shù)據(jù)集訓(xùn)練得到一個泛化能力較強(qiáng)的模型,從而在各個終端可以利用本地數(shù)據(jù)集對該模型進(jìn)行精調(diào)(fine tune),達(dá)到收斂并個性化的目的.遷移學(xué)習(xí)技術(shù)的主要特點與優(yōu)勢在于它放寬了傳統(tǒng)機(jī)器學(xué)習(xí)中的兩個基本假設(shè):(1)用于學(xué)習(xí)的訓(xùn)練樣本與新的測試樣本滿足獨立同分布的條件;(2)必須有足夠可利用的訓(xùn)練樣本才能習(xí)得一個好的模型.在自治式學(xué)習(xí)中同樣存在這兩個問題,即預(yù)訓(xùn)練數(shù)據(jù)很難與真實用戶數(shù)據(jù)服從同樣的分布;以及每個終端上可用于訓(xùn)練的數(shù)據(jù)有限.在AutLearn 的設(shè)計中,獲取合適的公共數(shù)據(jù)集是能否讓模型在終端上收斂并得到高準(zhǔn)確率的關(guān)鍵,其數(shù)據(jù)的語義和分布需要與終端設(shè)備上的整體數(shù)據(jù)較為接近,或呈包含關(guān)系,例如在輸入法的例子中,我們用從Twitter 網(wǎng)站上爬取的語料數(shù)據(jù)集做預(yù)訓(xùn)練,終端設(shè)備上使用用戶的輸入法數(shù)據(jù)做遷移學(xué)習(xí).在現(xiàn)實中,Twitter 的數(shù)據(jù)很大一部分就是用戶通過手機(jī)上傳的,因此這些數(shù)據(jù)在分布和語義上存在著很強(qiáng)的關(guān)聯(lián)性,意味著從Twitter 數(shù)據(jù)中訓(xùn)練得到的模型往往會學(xué)習(xí)到包含用戶輸入數(shù)據(jù)的特征.此外,遷移學(xué)習(xí)的常用方式是固定前面網(wǎng)絡(luò)層的參數(shù),這些參數(shù)只參與前向推斷,而不會參與后向的訓(xùn)練,只有最后一層的參數(shù)會隨著訓(xùn)練的進(jìn)行而改變,這也是為什么遷移學(xué)習(xí)僅利用小樣本就可以完成訓(xùn)練,且對計算力要求不高的主要原因.
為了進(jìn)一步提高本地遷移學(xué)習(xí)的效果,AutLearn 還使用了數(shù)據(jù)增強(qiáng)技術(shù)以提高訓(xùn)練數(shù)據(jù)量.對于圖片數(shù)據(jù),AutLearn 使用了常用的數(shù)據(jù)增強(qiáng)方法,如翻轉(zhuǎn)(flip)、旋轉(zhuǎn)(rotation)、比例縮放(scale)、裁剪(crop)、移位(translation)、添加高斯噪聲(Gaussian noise)等.對于自然語言類數(shù)據(jù),AutLearn 使用了EDA[19]開源項目中的技術(shù),具體包含4 種主要的操作:(1)同義詞替換(synonyms replace,簡稱SR):不考慮stopwords,在句子中隨機(jī)抽取n個詞,然后從同義詞詞典中隨機(jī)抽取同義詞,并進(jìn)行替換.(2)隨機(jī)插入(randomly insert,簡稱 RI):不考慮stopwords,隨機(jī)抽取一個詞,然后在該詞的同義詞集合中隨機(jī)選擇一個,插入原句子中的隨機(jī)位置.該過程可以重復(fù)n次.(3)隨機(jī)交換(randomly swap,簡稱RS):句子中,隨機(jī)選擇兩個詞,對它們進(jìn)行位置交換操作.該過程可以重復(fù)多次.(4)隨機(jī)刪除(randomly delete,簡稱RD):將句子中的每個詞以概率p隨機(jī)刪除.具體地,使用何種數(shù)據(jù)增強(qiáng)技術(shù)或幾種技術(shù)的組合需要根據(jù)具體的應(yīng)用場景(分類任務(wù))來決定.
AutLearn 將終端設(shè)備上進(jìn)行的遷移學(xué)習(xí)按照訓(xùn)練發(fā)起的時機(jī)和訓(xùn)練數(shù)據(jù)產(chǎn)生的時間分為兩種:離線學(xué)習(xí)和在線學(xué)習(xí)(見表1).離線學(xué)習(xí)是基于歷史數(shù)據(jù),選擇適宜的時機(jī)在不影響用戶體驗(延遲、電量)的前提下進(jìn)行的訓(xùn)練,通常發(fā)生在開發(fā)者更新下發(fā)了一個新模型之后,對模型進(jìn)行遷移學(xué)習(xí),解決冷啟動問題.由于歷史數(shù)據(jù)通常較多,訓(xùn)練時間較長,無法確保在短時間(如1 天)內(nèi)完成,因此AutLearn 會存儲中間結(jié)果,將訓(xùn)練分散在多個時間窗口中.在線學(xué)習(xí)是基于設(shè)備上實時產(chǎn)生的數(shù)據(jù)進(jìn)行的訓(xùn)練,主要目的是為了對新的數(shù)據(jù)做出及時的響應(yīng),例如用戶行為改變之后,可以立即對模型進(jìn)行定制化訓(xùn)練,是一個持續(xù)強(qiáng)化的過程.雖然在線學(xué)習(xí)會產(chǎn)生相應(yīng)的計算開銷,但是由于實時產(chǎn)生的數(shù)據(jù)較為有效,因此訓(xùn)練帶來的開銷通常不易察覺.在第4 節(jié)中我們著重分析了在輸入法應(yīng)用中在線學(xué)習(xí)帶來的系統(tǒng)資源開銷問題.
Table 1 A comparison of different on-device transfer learning in AutLearn表1 AutLearn 中的兩種終端遷移學(xué)習(xí)方式比較
現(xiàn)有的在移動終端上部署神經(jīng)網(wǎng)絡(luò)的方式主要有兩種:一種是使用通用的機(jī)器學(xué)習(xí)框架,如TensorFlow,這些框架實現(xiàn)了各種算子的前向/后向運算,以第三方庫的方式加載進(jìn)內(nèi)存,然后讀入模型與數(shù)據(jù),進(jìn)行運算;另一種方式是近些年興起的以TVM[20]為代表的神經(jīng)網(wǎng)絡(luò)編譯器,這些編譯器為特定的模型和硬件平臺生成一個可執(zhí)行文件,可直接在該平臺上部署運行.例如,TVM 沿用并拓展了Halide[21]的compute-schedule 這一概念,通過定義schedule 來確定代碼的優(yōu)化過程,通過做自動代碼生成來實現(xiàn)在各種設(shè)備上的部署深度學(xué)習(xí)模型.相較于通用的機(jī)器學(xué)習(xí)框架,神經(jīng)網(wǎng)絡(luò)編譯器具有以下幾個優(yōu)點:(1)可以根據(jù)硬件和算子的描述,自動生成底層的運算代碼,具有更強(qiáng)的擴(kuò)展性;(2)可以自動搜索在特定硬件上的實現(xiàn)方式(包括memory layout,SIMD),以達(dá)到最優(yōu)的運算效率.在自治學(xué)習(xí)場景下,引入模型訓(xùn)練編譯器可以有效地減少終端設(shè)備上的計算開銷.
然而,已有的神經(jīng)網(wǎng)絡(luò)編譯器只服務(wù)于模型推斷的場景,無法用于模型訓(xùn)練.為此,我們擴(kuò)展了原有的TVM框架,以實現(xiàn)移動終端上的自治學(xué)習(xí).
如圖4 所示,為了編譯生成一個可用于訓(xùn)練的可執(zhí)行文件,我們將用戶輸入的網(wǎng)絡(luò)結(jié)構(gòu)和損失函數(shù)通過編譯得到3 個網(wǎng)絡(luò).
(1)可運行的前向網(wǎng)絡(luò),該網(wǎng)絡(luò)用于前向計算;
(2)可運行的loss 網(wǎng)絡(luò),該網(wǎng)絡(luò)與可運行的前向網(wǎng)絡(luò)的區(qū)別在于增加了損失函數(shù),通過這一個網(wǎng)絡(luò)可以得到相關(guān)的訓(xùn)練參數(shù),從而確定需要更新的參數(shù);
(3)可運行的更新網(wǎng)絡(luò),該網(wǎng)絡(luò)用于更新網(wǎng)絡(luò)的相關(guān)參數(shù),根據(jù)輸入?yún)?shù)和計算出來的相關(guān)梯度,利用SGD等算法將參數(shù)進(jìn)行更新,從而完成對計算圖的參數(shù)更新.
生成以上3 個不同功能網(wǎng)絡(luò)的目的是為了更好地利用TVM 模塊化特性,減少對TVM 代碼庫的修改.
最后,我們補(bǔ)充了TVM 中缺失的各個算子的后向傳播,從而對于任意模型結(jié)構(gòu),可以編譯得到在移動端執(zhí)行的二進(jìn)制代碼,最后在移動設(shè)備上運行更新網(wǎng)絡(luò)即可以實現(xiàn)訓(xùn)練過程.由于模型訓(xùn)練中的反向傳播與模型推斷在底層實現(xiàn)上基本類似,例如最核心的操作都是圍繞矩陣乘法展開的,因此在編譯出可執(zhí)行代碼的過程中,我們沿用了推斷過程中已有schedule 的設(shè)計思路,包括搜索空間與搜索算法.更具體地,我們針對上述第3 個可運行的更新網(wǎng)絡(luò),增加了針對反向傳播算子(如conv2d_grad、dense_grad 等)的schedule 的搜索空間,以TVM 現(xiàn)有的template 形式實現(xiàn);對于搜索算法,我們沿用了TVM 中基于機(jī)器學(xué)習(xí)的cost model 方法來預(yù)測schedule 的運行時間,并在實際編譯的過程中不斷更新這個cost model,最終使搜索過程快速達(dá)到收斂.
Fig.4 A deep learning compiler for autonomous learning圖4 面向自治學(xué)習(xí)的模型編譯框架
此外,針對不同的終端平臺,TVM 內(nèi)部實現(xiàn)了很多與硬件相關(guān)的schedule 原語,我們利用這些原語來設(shè)計不同終端平臺的代碼搜索空間,經(jīng)過自動調(diào)優(yōu)的不斷測試,最終得到針對后端硬件優(yōu)化后的代碼.本文擴(kuò)展后的TVM 框架在生成訓(xùn)練代碼時,同樣需要使用不同終端設(shè)備(或不同硬件SoC)進(jìn)行各自的調(diào)優(yōu),調(diào)優(yōu)過程中需要真實設(shè)備提供運行時服務(wù),以獲取搜索過程中遍歷節(jié)點的運行效率,作為搜索過程的反饋.對于每一臺設(shè)備或硬件(本文實驗中使用了兩種設(shè)備),都需要進(jìn)行以上搜索調(diào)優(yōu)過程,時間成本開銷較大.在未來工作中,我們將嘗試使用更加有效的cost model[22]來加速編譯過程.
模型壓縮[23]是常用的減少神經(jīng)網(wǎng)絡(luò)模型復(fù)雜度的方式,包括模型剪枝、量化、參數(shù)共享、知識蒸餾等具體方案.AutLearn 中采用了基于magnitude 的參數(shù)剪枝方案[18]:每一輪選擇一個卷積層(CONV)或者全連接層(FC),然后將L2-norm magnitude 最小的K個卷積核(FC 可視為特殊的CONV,同樣具有卷積核)去掉,這里,K的大小取決于最后想要壓縮得到模型的復(fù)雜度大小.在多次迭代之后,可以獲取一個或多個壓縮后的模型,適用于不同的終端設(shè)備.為了減少開發(fā)者負(fù)擔(dān),無需手動選擇哪些網(wǎng)絡(luò)層可以進(jìn)行剪枝,AutLearn 中內(nèi)置了一個模型自動剪枝模塊,即一種特殊形式的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)自動搜索算法(NAS),可以從一個大模型出發(fā),自動地生成一系列針對不同資源狀況的優(yōu)化后模型.如下面公式所示,這里,Accuracy 用于計算一個模型的準(zhǔn)確率,通過在驗證集上測得;Resource 用于計算一個模型資源的消耗情況(例如延遲、能耗、內(nèi)存占用等),可以通過根據(jù)模型結(jié)構(gòu)建模的方式獲得[24,25],也可以通過真機(jī)實測獲得[26,27],本文為了獲取更加真實、準(zhǔn)確的資源數(shù)據(jù)采用了后者;Budget 為用戶設(shè)定的可使用資源上限.這里,資源類型可以是模型的計算復(fù)雜度(FLOPs)、模型的推斷時間、模型的推斷能耗、模型的內(nèi)存占用等,由開發(fā)者控制.
目前,AutLearn 的剪枝是在云端完成的,主要原因是云端具有更多的數(shù)據(jù)對剪枝之后的模型進(jìn)行重新訓(xùn)練,同時減小終端的計算負(fù)載.但在終端進(jìn)行模型剪枝也有一定的優(yōu)勢,主要是可以直接利用終端的數(shù)據(jù)進(jìn)行剪枝訓(xùn)練和測試,得到更加準(zhǔn)確的剪枝方案.本文使用基于magnitude 剪枝技術(shù)的原因是這種技術(shù)已得到廣泛證明且使用,但其他類型的剪枝技術(shù)同樣與AutLearn 系統(tǒng)兼容,例如文獻(xiàn)[28]中使用的根據(jù)剪枝操作對feature map 的影響來判定最優(yōu)剪枝方案.相較于這些更加復(fù)雜的剪枝算法,基于magnitude 的剪枝方案計算復(fù)雜度更低,因此更有利于在終端設(shè)備上進(jìn)行.
此外,AutLearn 針對在線學(xué)習(xí)場景,設(shè)計了推斷-訓(xùn)練緩存復(fù)用技術(shù)以減少模型訓(xùn)練的開銷.如圖5 所示,在線學(xué)習(xí)中,模型會在實時的輸入數(shù)據(jù)上做推斷運算,根據(jù)用戶的反饋生成標(biāo)簽,與原數(shù)據(jù)組成訓(xùn)練數(shù)據(jù),用于訓(xùn)練模型.推斷與訓(xùn)練以流水線方式進(jìn)行.其中,神經(jīng)網(wǎng)絡(luò)訓(xùn)練的本質(zhì)其實就是在推斷結(jié)果的基礎(chǔ)上計算損失函數(shù),然后做后向傳播.因此,AutLearn 會將預(yù)測的結(jié)果進(jìn)行復(fù)用,直接在其基礎(chǔ)上根據(jù)用戶的反饋行為(真實標(biāo)簽)進(jìn)行模型訓(xùn)練.具體地,需要在模型推斷中進(jìn)行緩存的數(shù)據(jù)為推斷預(yù)測結(jié)果(用于生成loss)以及產(chǎn)生的中間結(jié)果(即特征圖feature map,用于反向傳播過程中的參數(shù)更新).由于自治學(xué)習(xí)中使用遷移學(xué)習(xí)技術(shù),只需要更新模型尾部少部分參數(shù),假設(shè)需要更新的網(wǎng)絡(luò)層是從第K層起至最后一層,則只需要保存第K-1 層至最后一層中產(chǎn)生的中間向量,極大地減小了運行時緩存的內(nèi)存開銷.為了進(jìn)一步減小單個數(shù)據(jù)的性能開銷,AutLearn 會等待多個數(shù)據(jù)產(chǎn)生達(dá)到一個batch 后一起訓(xùn)練(默認(rèn)的batch size 是16,可由開發(fā)者調(diào)節(jié)設(shè)置).
Fig.5 Workflow of inference results reuse in online learning圖5 在線學(xué)習(xí)中的推斷-訓(xùn)練緩存復(fù)用流程圖
我們基于AutLearn 構(gòu)建了兩個應(yīng)用實例以驗證其功能及效果.
3.6.1 輸入法中的詞預(yù)測
輸入法是移動設(shè)備上最為重要的應(yīng)用之一.輸入法應(yīng)用的主要功能之一是輸入詞預(yù)測:以英文輸入法為例,基于用戶已有的輸入序列(包括單詞和字母),預(yù)測用戶想要的輸入詞.詞預(yù)測功能在大部分主流輸入法應(yīng)用,如Gboard 中都基于神經(jīng)網(wǎng)絡(luò)實現(xiàn),是自然語言處理任務(wù)中最常見的任務(wù)之一.當(dāng)前處理該任務(wù)的主流算法之一是循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN).我們以RNN 的常見變體LSTM 網(wǎng)絡(luò)結(jié)構(gòu)為例,實現(xiàn)了一個基本的詞預(yù)測神經(jīng)網(wǎng)絡(luò)模型,如圖6 所示.
Fig.6 The LSTM model structure implemented in this work圖6 本文實現(xiàn)的用于詞預(yù)測功能的LSTM 模型
輸入法中的詞預(yù)測功能契合了AutLearn 的應(yīng)用場景:(1)數(shù)據(jù)隱私:用戶輸入數(shù)據(jù)包含聊天記錄、賬號密碼等,不應(yīng)上傳至中心化的服務(wù)器;(2)本地產(chǎn)生訓(xùn)練數(shù)據(jù),用戶的點擊輸入即為數(shù)據(jù)進(jìn)行了標(biāo)注,可直接用于訓(xùn)練;(3)用戶輸入行為具有個性化,需要對模型進(jìn)行定制以達(dá)到最佳的效果;(4)本地通常存有歷史輸入數(shù)據(jù),可用于離線的模型遷移學(xué)習(xí);(5)用戶的輸入行為不是一成不變的,可能會隨著時間而改變,需要持續(xù)不斷地進(jìn)行學(xué)習(xí)更新(在線學(xué)習(xí)).
3.6.2 圖像分類
圖片處理是神經(jīng)網(wǎng)絡(luò)最常見的應(yīng)用場景之一.例如,在iPhone 手機(jī)自帶的相冊應(yīng)用中,已有卷積神經(jīng)網(wǎng)絡(luò)用于物體、場景、人臉的識別,幫助用戶整理圖片,便于搜索查找.與輸入法中的文字輸入數(shù)據(jù)類似,用戶拍攝的圖片包含大量的隱私信息,不應(yīng)上傳至服務(wù)器進(jìn)行訓(xùn)練.
我們基于AutLearn 構(gòu)建了經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)MobileNet,以實現(xiàn)手機(jī)終端上的圖片分類.MobileNet 是專門為移動設(shè)備設(shè)計的網(wǎng)絡(luò)結(jié)構(gòu),其內(nèi)部利用了depthwise separable convolutions 結(jié)構(gòu),減少了卷積層的計算量.
本節(jié)介紹我們對AutLearn 的實驗設(shè)計與實驗結(jié)論.實驗?zāi)康闹饕譃閮蓚€方面:(1)驗證AutLearn 可以通過在移動終端上的遷移學(xué)習(xí)獲得較高的神經(jīng)網(wǎng)絡(luò)模型準(zhǔn)確率;(2)常用的移動終端平臺上的硬件資源足以支撐神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練,尤其是上文中提到的一系列優(yōu)化技術(shù)對減小神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練開銷的效果.
模型與數(shù)據(jù).針對上文提到的兩種應(yīng)用場景,我們分別使用了不同的公共數(shù)據(jù)集和模型進(jìn)行測試.
·輸入法詞預(yù)測應(yīng)用中,我們使用LSTM[29]模型,以Twitter 數(shù)據(jù)作為預(yù)訓(xùn)練數(shù)據(jù)(公共數(shù)據(jù)集),Shakespeare數(shù)據(jù)集作為各個終端設(shè)備上的本地數(shù)據(jù)集.兩份數(shù)據(jù)都來自于LEAF[30]聯(lián)邦學(xué)習(xí)基準(zhǔn)測試中的標(biāo)準(zhǔn)數(shù)據(jù)集,都預(yù)先切分好了不同的用戶,不同用戶的數(shù)據(jù)不滿足獨立同分布(non-iid).兩個數(shù)據(jù)集都用于輸入詞預(yù)測訓(xùn)練.終端遷移學(xué)習(xí)中只有最后一層全連接層參與模型更新.本文所使用的LSTM 模型具體參數(shù)為10 000 個使用頻率最高的詞組成的詞匯表大小,Step Size 為通過bucketing 技術(shù)[31]實現(xiàn)的可變長大小,2 層LSTM Cell 堆疊(2-layer stacked).
·在圖像分類應(yīng)用中,我們使用MobileNet[32]模型,以ImageNet 數(shù)據(jù)集作為預(yù)訓(xùn)練數(shù)據(jù),FEMINST 數(shù)據(jù)集作為各個終端設(shè)備上的本地數(shù)據(jù)集.其中,FEMINST 同樣來自原LEAF 的標(biāo)準(zhǔn)數(shù)據(jù)集,數(shù)據(jù)為non-iid.ImageNet 數(shù)據(jù)集用于訓(xùn)練MobileNet 的1 000 類物體識別,FEMINST 用于遷移學(xué)習(xí)至手寫體識別任務(wù),遷移學(xué)習(xí)中只有最后一層全連接層與Softmax 層會參與模型更新.兩個數(shù)據(jù)集中,我們都只挑選了數(shù)據(jù)量最大的10%用戶用于訓(xùn)練與測試,因為現(xiàn)實中用戶的歷史數(shù)據(jù)積累往往大于這些標(biāo)準(zhǔn)數(shù)據(jù)集的數(shù)據(jù)量.
基準(zhǔn)線.我們比較AutLearn 與以下方案:(1)聯(lián)邦學(xué)習(xí)是近些年興起的在分布式數(shù)據(jù)上進(jìn)行模型訓(xùn)練的技術(shù)(具體見第1 節(jié)),這里我們使用最常見的聯(lián)邦學(xué)習(xí)算法FedAvg[3].與自治學(xué)習(xí)技術(shù)相比,聯(lián)邦學(xué)習(xí)沒有對不同用戶的模型進(jìn)行定制化,且需要大量的通信開銷;(2)中心化的云端訓(xùn)練技術(shù)(CloudTrain)[33]將用戶的數(shù)據(jù)都收集到各個終端上,然后利用這些數(shù)據(jù)訓(xùn)練一個通用的模型.同樣地,CloudTrain 的方法也未對模型進(jìn)行定制化訓(xùn)練.這種集中式的訓(xùn)練模式也是現(xiàn)在工業(yè)界通用的部署方式;(3)中心化的定制訓(xùn)練技術(shù)(CloudCustomize)[34],是指在CloudTrain 獲得的模型的基礎(chǔ)上,對新模型在不同設(shè)備上的數(shù)據(jù)進(jìn)行定制化訓(xùn)練后的結(jié)果.從模型準(zhǔn)確率的角度考慮,CloudCustomize 可被認(rèn)為是最優(yōu)的情形,因為它同時使用了用戶隱私數(shù)據(jù)進(jìn)行預(yù)訓(xùn)練和遷移學(xué)習(xí).但同時,CloudCustomize 的方式在用戶隱私和可擴(kuò)展性上都有較大的缺陷.AutLearn 和所有基準(zhǔn)線都通過mini-batch 的方式進(jìn)行模型訓(xùn)練[35].
終端設(shè)備.我們使用Samsung Note 8 和Redmi Note 8 兩種設(shè)備型號測試AutLearn 在終端設(shè)備上的訓(xùn)練效率,包括訓(xùn)練時間與能耗.
圖7 總結(jié)了離線學(xué)習(xí)中,AutLearn 在不同模型下和各個基準(zhǔn)線的準(zhǔn)確率對比.實驗結(jié)果表明,AutLearn 和各個基準(zhǔn)線都可以訓(xùn)練得到收斂的模型.與CloudTrain 這種傳統(tǒng)的訓(xùn)練模式相比,FedAvg 聯(lián)邦學(xué)習(xí)訓(xùn)練模式得到的模型有少量的精度損失(約1%),而AutLearn 的精度則與CloudTrain 模式基本持平甚至更高:在LSTM 模型上,AutLearn 相較于CloudTrain 有0.9%的精度下降,而在MobileNet 模型上,則有0.8%的模型精度提升.原因是,AutLearn 采用自治式學(xué)習(xí)方式,在終端遷移學(xué)習(xí)過程中會對每個用戶的模型使用該特定用戶產(chǎn)生的數(shù)據(jù)進(jìn)行訓(xùn)練,達(dá)到了個性化學(xué)習(xí)的效果.此外,CloudCustomize 方式在兩種模型上都得到最高的準(zhǔn)確率,原因是它在CloudTrain 集中式訓(xùn)練的基礎(chǔ)上,再進(jìn)行個性化訓(xùn)練,且使用相同的用戶隱私數(shù)據(jù)集;而AutLearn 使用分布不同的數(shù)據(jù)集首先進(jìn)行云端預(yù)訓(xùn)練得到一個全局模型,然后再利用與測試數(shù)據(jù)集同源的數(shù)據(jù)集進(jìn)行遷移學(xué)習(xí).由于預(yù)訓(xùn)練與遷移學(xué)習(xí)中使用的數(shù)據(jù)集不同,難免導(dǎo)致預(yù)訓(xùn)練過程中模型學(xué)到的特征提取無法完全適用于用戶隱私數(shù)據(jù),因此效果不如 CloudCustomize 模式.需要強(qiáng)調(diào)的是:在 4 種訓(xùn)練模式中,只有 FedAvg 和AutLearn 考慮了用戶隱私保護(hù)的問題.在這一系列實驗中,我們發(fā)現(xiàn)模型定制化的效果有限,原因是數(shù)據(jù)集限制了每個設(shè)備上的數(shù)據(jù)量.
Fig.7 The accuracy of AutLearn compared with baselines圖7 AutLearn 訓(xùn)練模型準(zhǔn)確率與基準(zhǔn)線對比
我們同時驗證了數(shù)據(jù)增強(qiáng)技術(shù)對模型準(zhǔn)確率的影響.對于LSTM 模型,我們使用同義詞替換技術(shù);對于MobileNet 模型,我們使用裁剪、旋轉(zhuǎn)和移位技術(shù).需要注意的是,兩種技術(shù)都可以將訓(xùn)練數(shù)據(jù)量提升最高超過5倍,為了平衡訓(xùn)練的計算開銷,本文所做實驗都只在生成數(shù)據(jù)中采樣不超過原數(shù)據(jù)量的1 倍.實驗結(jié)果表明,數(shù)據(jù)增強(qiáng)對詞預(yù)測和圖像分類兩種任務(wù)分別有0.9%和3.1%的準(zhǔn)確率提升.后者的效果更明顯:事實上,自然語言處理中的數(shù)據(jù)增強(qiáng)比起圖片數(shù)據(jù)而言確實更加困難.
此外,我們還通過實驗探究了在線學(xué)習(xí)對模型準(zhǔn)確率的提升效果.從預(yù)訓(xùn)練的模型出發(fā),然后將數(shù)據(jù)集序列化,不斷地輸入到AutLearn 系統(tǒng)中.對于每一條數(shù)據(jù),AutLearn 會首先做出預(yù)測,然后利用該數(shù)據(jù)進(jìn)行模型的強(qiáng)化訓(xùn)練,不斷重復(fù)該過程,最后匯總預(yù)測的整體結(jié)果.這個過程即是模擬用戶在使用該模型的過程中AutLearn 對用戶當(dāng)前行為(產(chǎn)生數(shù)據(jù))做出的適應(yīng)性改變.我們發(fā)現(xiàn),對于LSTM 和MobileNet 模型而言,相比只用預(yù)訓(xùn)練模型預(yù)測所有數(shù)據(jù),在線學(xué)習(xí)可以在所有數(shù)據(jù)上平均提升5.9%和3.1%的模型準(zhǔn)確率.并且,該提升在后面輸入的數(shù)據(jù)上更加明顯,原因是隨著更多數(shù)據(jù)的輸入,模型得到了持續(xù)的學(xué)習(xí),精度上升.實驗結(jié)果表明,在線學(xué)習(xí)可以有效地根據(jù)用戶行為改變(如輸入模式)適應(yīng)性地對模型進(jìn)行調(diào)整,以達(dá)到更高的準(zhǔn)確率.
我們測試了在兩種終端設(shè)備上進(jìn)行遷移學(xué)習(xí)的性能開銷(離線學(xué)習(xí)),結(jié)果如圖8 所示.其中,AutLearn 代表離線學(xué)習(xí)的訓(xùn)練速度,w/o compression 和w/o compiler 分別代表去除前文提到的模型壓縮與編譯器加速技術(shù)后的性能,w/o cache 代表利用推斷-訓(xùn)練緩存加速后的在線訓(xùn)練時間.這里,去掉編譯器優(yōu)化即使用統(tǒng)一的深度學(xué)習(xí)計算庫進(jìn)行模型訓(xùn)練(TensorFlow 庫).其中,針對LSTM 模型,我們使用batch 大小為16 進(jìn)行訓(xùn)練,而MobileNet模型,由于內(nèi)存占用較大,在實驗終端上只能使用batch 大小為1 進(jìn)行訓(xùn)練.
Fig.8 The speedup of AutLearn on different device models (including online/offline learning)圖8 AutLearn 在不同模型和機(jī)型上的性能(包括離線學(xué)習(xí)和在線學(xué)習(xí))
實驗結(jié)果表明:(1)模型壓縮技術(shù)可以有效地縮短訓(xùn)練時間,但在不同模型上的表現(xiàn)差別較大.這里,我們默認(rèn)壓縮模型至1%的精度損失.在LSTM 模型上,模型壓縮技術(shù)可以減少超過80%的訓(xùn)練時間,但在MobileNet模型上,只能減少20%~30%.主要原因在于MobileNet 本身就是專門為低計算能力設(shè)備設(shè)計的極為精簡的模型,在其上做壓縮更難.(2)編譯器技術(shù)同樣可以有效地縮短訓(xùn)練時間,在LSTM 和MobileNet 模型上都達(dá)到了將近40%的節(jié)省.相較模型壓縮,編譯器技術(shù)基本上不依賴于模型本身的結(jié)構(gòu),且又不會造成模型精度的損失.(3)在線學(xué)習(xí)中使用推斷-訓(xùn)練緩存機(jī)制可以進(jìn)一步減小模型的訓(xùn)練時間(30%~40%),原因是節(jié)省了模型訓(xùn)練過程中的前向推斷過程,只需要進(jìn)行反向傳播.需要注意的是,緩存機(jī)制只對在線學(xué)習(xí)有效,因為離線學(xué)習(xí)中,每一個batch 訓(xùn)練之后會更新參數(shù),導(dǎo)致原來緩存的預(yù)測結(jié)果在新模型上失效,無法復(fù)用.(4)在不同終端設(shè)備上的訓(xùn)練時間有最高將近2 倍的差異,原因是,不同終端設(shè)備上計算資源存在著差異.但是,AutLearn 的優(yōu)化技術(shù)在不同的設(shè)備上都有相應(yīng)的性能提升,具有一定的普適性.
結(jié)合第2 節(jié)中提到的我們對真實用戶的行為數(shù)據(jù)所進(jìn)行的分析后發(fā)現(xiàn),超過半數(shù)的終端每天都有約120 分鐘處于可訓(xùn)練階段.這意味著LSTM 模型和MobileNet 模型都可以在1 天內(nèi)完成多輪遷移學(xué)習(xí)的訓(xùn)練,即新模型下發(fā)后的第2 天就可以用于部署,并達(dá)到定制化后的高準(zhǔn)確率.
我們還度量了AutLearn 在終端設(shè)備上的能耗狀況,這里,我們以Nexus6 型號為例.如圖9 所示,“interactive”和“powersave”代表不同的CPU 狀態(tài)調(diào)節(jié)器,其中,前者會使CPU 運行在較高頻率上(Android 設(shè)備的默認(rèn)調(diào)節(jié)器),而后者則會讓CPU 一直運行于最低頻率以節(jié)省能耗.所有結(jié)果都?xì)w一化到同樣的baseline:即不使用AutLearn 的優(yōu)化加速技術(shù)且讓CPU 處在interactive 調(diào)節(jié)器下.實驗結(jié)果表明:(1)AutLearn 的優(yōu)化技術(shù)可以極大地減少終端模型訓(xùn)練的能耗,最多超過80%(LSTM 模型),原因主要在于節(jié)省了模型訓(xùn)練的端到端時間;(2)在CPU 低頻率運行狀態(tài)下,雖然模型的訓(xùn)練需要花費更多的時間,但是整體的能耗卻有所下降,原因是,在低頻率運行狀態(tài)下單位時間內(nèi)CPU 能耗更低.這意味著在一些不需要迅速完成模型訓(xùn)練進(jìn)行部署的場景下,可以通過將CPU 頻率調(diào)低來節(jié)省設(shè)備能耗.
Fig.9 The energy consumption of AutLearn under different CPU status圖9 AutLearn 在不同CPU 狀態(tài)下的能耗
針對面向移動終端的數(shù)據(jù)隱私問題,本文提出了自治式的機(jī)器學(xué)習(xí)模式.區(qū)別于以往傳統(tǒng)的集中式和聯(lián)邦式,自治式學(xué)習(xí)將隱私數(shù)據(jù)相關(guān)的計算全都部署在本地,極大程度地提高了用戶隱私保護(hù)能力,同時提供了模型定制化效果.為了解決自治學(xué)習(xí)中終端設(shè)備上數(shù)據(jù)量不足以及計算能力不足的兩大挑戰(zhàn),我們設(shè)計實現(xiàn)了AutLearn 自治學(xué)習(xí)框架,其中包含云端協(xié)同訓(xùn)練、本地數(shù)據(jù)增強(qiáng)、模型壓縮以及緩存復(fù)用等技術(shù).我們以經(jīng)典的自然語言處理和圖像識別任務(wù)為例,在真實數(shù)據(jù)集上驗證了自治式學(xué)習(xí)的效果:AutLearn 相比傳統(tǒng)的訓(xùn)練模式,可以達(dá)到相當(dāng)甚至更高的準(zhǔn)確率,同時,其計算開銷亦在普通智能手機(jī)可承受范圍之內(nèi).