聯(lián)合學(xué)習(xí):無需集中存儲(chǔ)訓(xùn)練數(shù)據(jù)的協(xié)同機(jī)器學(xué)習(xí)
標(biāo)準(zhǔn)的機(jī)器學(xué)習(xí)方法需要將訓(xùn)練數(shù)據(jù)集中到一臺機(jī)器上或一個(gè)數(shù)據(jù)中心內(nèi)。為了處理此數(shù)據(jù),改善我們的服務(wù),Google 構(gòu)建了一套最安全、***大的云基礎(chǔ)架構(gòu)?,F(xiàn)在,對于通過用戶與移動(dòng)設(shè)備交互進(jìn)行訓(xùn)練的學(xué)習(xí)模式,我們另外引入了一種方法:聯(lián)合學(xué)習(xí)。
通過聯(lián)合學(xué)習(xí),移動(dòng)電話可以協(xié)同學(xué)習(xí)共享的預(yù)測模型,同時(shí)將所有訓(xùn)練數(shù)據(jù)保留在設(shè)備上,從而無需將數(shù)據(jù)存儲(chǔ)在云中,即可進(jìn)行機(jī)器學(xué)習(xí)。同時(shí),通過將模型訓(xùn)練引入到設(shè)備上,超越了以往使用本地模型預(yù)測移動(dòng)設(shè)備(例如 Mobile Vision API 和設(shè)備端智能回復(fù))的模式。
其工作原理如下:您的設(shè)備下載當(dāng)前模型,通過學(xué)習(xí)手機(jī)中的數(shù)據(jù)改進(jìn)模型,然后以小幅更新的形式匯總所做的變更。通過加密通信僅將此模型的更新發(fā)送至云,在云中,立即與其他用戶更新進(jìn)行平均,以改進(jìn)共享模型。所有訓(xùn)練數(shù)據(jù)仍保留在您的設(shè)備上,云中未存儲(chǔ)任何個(gè)別用戶的更新。
▲ 您的手機(jī)根據(jù)您的使用情況,在本地建立個(gè)性化模型 (A)。然后,許多用戶的更新聚合 (B) 在一起,形成對共享模型的一致更新 (C),之后不斷重復(fù)此流程。
聯(lián)合學(xué)習(xí)可建立更智能的模型,縮短延遲時(shí)間,減小功耗,同時(shí)確保隱私性。這種方法另一個(gè)直接的益處是:除了為共享模型提供更新之外,還可以即時(shí)使用手機(jī)中經(jīng)過改進(jìn)的模型,根據(jù)您使用手機(jī)的方式,提供個(gè)性化的體驗(yàn)。
我們目前正在 Android 版 Gboard(即 Google 鍵盤)中測試聯(lián)合學(xué)習(xí)。當(dāng) Gboard 顯示建議的查詢內(nèi)容時(shí),您的手機(jī)在本地存儲(chǔ)與當(dāng)前上下文以及您是否點(diǎn)擊此建議有關(guān)的信息。聯(lián)合學(xué)習(xí)處理設(shè)備上的歷史記錄,為 Gboard 的查詢建議模型的后續(xù)迭代提出改進(jìn)建議。
要實(shí)現(xiàn)聯(lián)合學(xué)習(xí),我們必須克服算法和技術(shù)上的諸多挑戰(zhàn)。在典型的機(jī)器學(xué)習(xí)系統(tǒng)中,對大型數(shù)據(jù)集執(zhí)行類似隨機(jī)梯度下降 (SGD) 這樣的優(yōu)化算法時(shí),會(huì)將數(shù)據(jù)集均勻地分散在云中的不同服務(wù)器上。這種高度迭代的算法要求與訓(xùn)練數(shù)據(jù)之間保持低延遲時(shí)間、高吞吐量的連接。而在聯(lián)合學(xué)習(xí)環(huán)境中,數(shù)據(jù)很不均勻地分散在數(shù)以百萬計(jì)的設(shè)備之間。此外,相比之下,這些設(shè)備的連接的延遲時(shí)間要長很多,而吞吐量卻低很多,并且只能間歇性用于訓(xùn)練。
這些帶寬和延遲時(shí)間上的限制促使我們設(shè)計(jì)出聯(lián)合平均算法,此算法訓(xùn)練深度網(wǎng)絡(luò)所用的通信資源不到最初 SGD 聯(lián)合版本的 1/10-1/100。關(guān)鍵在于利用現(xiàn)代移動(dòng)設(shè)備中強(qiáng)大的處理器來計(jì)算比簡單梯度方法質(zhì)量更高的更新。由于只需較少的優(yōu)質(zhì)更新迭代就可生成適當(dāng)?shù)哪P?,?xùn)練使用的通信資源大大減少。由于上傳速度通常遠(yuǎn)低于下載速度,我們還研究出了一種新方法,通過使用隨機(jī)旋轉(zhuǎn)和量化的方式壓縮更新,使上傳通信開銷最多可降至之前的 1/100。這些方法主要用于深度網(wǎng)絡(luò)訓(xùn)練,我們還為擅長解決點(diǎn)擊率預(yù)測等問題的多維稀疏凸集模型設(shè)計(jì)了多種算法。
將此技術(shù)部署到數(shù)以百萬計(jì)運(yùn)行 Gboard 的手機(jī),需要一整套成熟的技術(shù)。設(shè)備端訓(xùn)練采用了迷你版 TensorFlow。審慎地計(jì)劃,確保僅在設(shè)備處于空閑、通電狀態(tài)并使用免費(fèi)的無線連接時(shí)進(jìn)行訓(xùn)練,以便不影響手機(jī)的性能。
▲ 僅在不會(huì)影響您的體驗(yàn)的情況下,才讓您的手機(jī)參與聯(lián)合學(xué)習(xí)。
然后,系統(tǒng)需要以安全、高效、可擴(kuò)展和容錯(cuò)的方式傳輸和聚合模型更新。只有將研究與此基礎(chǔ)架構(gòu)相結(jié)合,才能從聯(lián)合學(xué)習(xí)中受益。
聯(lián)合學(xué)習(xí)的運(yùn)行無需將用戶數(shù)據(jù)存儲(chǔ)在云中,但我們并未止步于此。我們開發(fā)了一種使用加密技術(shù)的安全聚合協(xié)議,以便協(xié)調(diào)服務(wù)器僅當(dāng) 100 或 1000 個(gè)用戶參與時(shí)解密平均更新,在平均更新之前不檢查任何手機(jī)的更新。它是同類協(xié)議中***個(gè)可用于解決深度網(wǎng)絡(luò)級別問題和現(xiàn)實(shí)連接限制的協(xié)議。我們設(shè)計(jì)了聯(lián)合平均算法,使協(xié)調(diào)服務(wù)器僅僅需要進(jìn)行平均更新,因此可使用安全聚合協(xié)議;但此協(xié)議為通用協(xié)議,也可用于解決其他問題。我們正努力將此協(xié)議應(yīng)用于生產(chǎn)環(huán)境,希望能在不久的將來將它部署用于聯(lián)合學(xué)習(xí)應(yīng)用。
在探索潛在應(yīng)用領(lǐng)域方面,我們的工作目前尚在走馬觀花階段。聯(lián)合學(xué)習(xí)無法解決所有機(jī)器學(xué)習(xí)問題(例如,通過訓(xùn)練認(rèn)識仔細(xì)標(biāo)注的圖例,學(xué)習(xí)識別不同的犬類),而對于其他許多模型而言,必要的訓(xùn)練數(shù)據(jù)已存儲(chǔ)在云中(例如,Gmail 垃圾郵件過濾器訓(xùn)練)。因此,Google 將繼續(xù)推進(jìn)基于云的***機(jī)器學(xué)習(xí)技術(shù),同時(shí),我們不斷研究聯(lián)合學(xué)習(xí)技術(shù),以便解決更多的問題。例如,除了 Gboard 的查詢建議外,我們還希望改進(jìn)語言模型,根據(jù)您在手機(jī)上實(shí)際鍵入的內(nèi)容改進(jìn)鍵盤(可以定制獨(dú)有的鍵盤樣式),以及根據(jù)用戶查看、分享或刪除的照片類型,對照片進(jìn)行排名。
應(yīng)用聯(lián)合學(xué)習(xí)需要機(jī)器學(xué)習(xí)從業(yè)者采用新的工具和新的思維方式:模型開發(fā)、訓(xùn)練和評價(jià),不直接訪問或標(biāo)記原始數(shù)據(jù),而通信開銷是它們的一個(gè)制約因素。我們相信,聯(lián)合學(xué)習(xí)將讓用戶受益,值得我們?nèi)スタ思夹g(shù)上的難題,而我們發(fā)布此博文的目的是希望聯(lián)合學(xué)習(xí)能在機(jī)器學(xué)習(xí)社區(qū)得到廣泛的討論。
【本文是51CTO專欄機(jī)構(gòu)“谷歌開發(fā)者”的原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者(微信公眾號:Google_Developers)】