聯合學習:Android去中心化的分散式機器學習

轉載請註明來源

該文章翻譯自:

Federated Learning: Collaborative Machine Learning without Centralized Training Data

原文地址

概要

標準的機器學習一般是在單機或者集群上集中處理數據、訓練模型。谷歌為了給機器學習提供更好的雲服務,已經建立了世界上最安全和魯棒性最好的雲基礎平台設置。如今,在移動設備上的基於用戶交互的模型訓練,我們推出了額外的方法:聯合學習

聯合學習使得在移動設備上的模型共享成為可能,在移動端存儲所有的訓練數據,將機器學習的模型訓練和雲端存儲解耦。這使得移動端進行模型訓練和進化成為可能,解決了以前模型只能雲端下發訓練好的模型,而無法在本地訓練的問題。類似的例子有Mobile Vision API和On-Device Smart Reply。

聯合學習的工作原理如下:手機等設備下載雲端最新的共享模型,根據手機上用戶的歷史數據來改進和訓練這個模型,然後將用戶個性化的模型抽取為一個小的更新文件。僅將模型的差異部分上傳到雲端,同時使用加密演算法保證其安全性,並在雲端和其它用戶上傳的模型差異做平均化的更新,以改善共享模型。這樣做的好處是,所有的訓練數據都在用戶的手機上,並不發送隱私信息到雲端,僅僅發送的是模型的變更部分。

關鍵詞

Federated Learning,Deep Learning,Mobile,Android,Gboard,Decentralized

聯合學習,深度學習,移動端,安卓,谷歌輸入法,去中心化

技術架構

聯合學習的架構圖

基於每個用戶的手機:

  • A.個性化的模型,聚合大量用戶的模型改進
  • B.融合為共享模型
  • C.不斷重複,完善共享模型

聯合學習能產生更聰明的模型,更低的延時和更少的功耗,同時確保用戶的隱私。還有一個額外的好處是:除了能不斷改進雲上的共享模型之外,還能夠立刻使用手機端的個性化模型,這個模型完全是根據用戶的歷史行為數據訓練,針對性更強,可以說是一個越來越懂你的模型。

我們目前正在Android系統自帶的Gboard(Google Keyboard)上進行聯合學習的效果測試。當Gboard顯示一個搜索結果時,會記錄搜索上下文以及你是否點擊了該搜索結果。基於用戶的歷史搜索數據,聯合學習可以為用戶的下一次的搜索結果提供迭代和持續改進。

Gboard聯合學習的測試場景

為了使聯合學習成為可能,我們必須解決很多演算法和技術上的難點。在經典的機器學習問題中,一般是在雲端分布均勻的大型數據集上運行諸如隨機梯度下降(SGD)的優化演算法進行訓練。這種高迭代的演算法對訓練數據集的要求是:低延遲、高吞吐。但是在「聯合學習」環境中,數據以嚴重不均衡的方式分布在數百萬台移動設備上。同時,這些設備還具有高延遲、低吞吐的特性,並且只能間歇性地進行訓練。

受限於當前移動設備的網路帶寬,谷歌研發出「Federated Averaging」演算法,和原生的SGD版本相比可以減少10-100倍的通信消耗。核心思想就是使用現代移動設備中的強大處理器晶元來計算高質量的模型更新,而非簡單的梯度迭代。取而代之的是更好的模型更新以及更少的迭代次數,同時還可以減少和服務端的通信頻率。由於網路的上傳速度通常比下載速度慢很多,谷歌還開發出一種新穎的演算法:「random rotations and quantization」,將上傳更新的通信速度提升為原來的100倍。這些演算法都聚焦在深度學習的訓練上,谷歌還不滿足於此,還針對點擊率預測的問題設計出了「high-dimensional sparse convex"模型。

將這項技術部署到數百萬個不同的手機中,是一個非常複雜的過程。在移動設備上的訓練也需要一個精簡版的TensorFlow。同時為了保證手機的流暢性,對模型的訓練僅僅發生在手機空閑時,比如充電並連接Wifi時,該場景下幾乎對手機的性能沒有影響。

參與聯合學習的場景不會影響手機用戶的體驗。

聯合學習需要以安全、高效、可擴展、容錯的方式進行模型的更新和聚合。

聯合學習並不需要將用戶的隱私數據上傳到雲端,但是谷歌更進一步,開發了一個名為「Secure Aggregation」的協議,該協議只有當100或1000個用戶都發起了模型更新時,才會嘗試解密這部分更新,在此之前無需單獨的檢查某個手機的更新,更進一步保護了用戶的隱私。伺服器只用關心多個用戶的平均更新,這樣也更安全。這個協議還可以用在其它的問題,目前我們正在試圖把這個協議用在線上的項目中,並預期在不就得將來能部署到聯合學習的應用程序中。

當然,聯合學習並不能解決所有的機器學習問題(例如,通過大量的人工表述數據識別不同的狗),以及很多模型所需要的數據已經存儲在雲端(例如,Gmail的垃圾郵件過濾器)。Google會持續推進基於雲服務的深度學習技術,同時我們也會繼續擴展聯合學習領域的研究,以擴大我們解決問題的範圍。比如Gboard希望學習到用戶真實的輸入意圖,基於用戶的輸入習慣提升本地語言模型的能力。同時,Google也希望通過聯合學習獲得用戶在手機上經常看哪些照片、分享、刪除哪些照片。

聯合學習要求機器學習從業者採用新的工具和新的思維方式:從模型設計、訓練再到評估,都可以不直接訪問原始數據,而是考慮一定的限制性開銷。我們相信聯合學習能給用戶帶來價值,也希望在機器學習的社區中看到大家對這類話題更廣泛的交流。

致謝

本文包含了Google很多同事的研究成果,包括Blaise Agüera y Arcas, Galen Andrew, Dave Bacon, Keith Bonawitz, Chris Brumme, Arlie Davis, Jac de Haan, Hubert Eichner, Wolfgang Grieskamp, Wei Huang, Vladimir Ivanov, Chloé Kiddon, Jakub Kone?ny, Nicholas Kong, Ben Kreuter, Alison Lentz, Stefano Mazzocchi, Sarvar Patel, Martin Pelikan, Aaron Segal, Karn Seth, Ananda Theertha Suresh, Iulia Turc, Felix Yu, Antonio Marcedone和Gboard團隊的合作夥伴。

個人總結

通過這篇文章可以看出,Google在移動設備AI化做了相當大的努力,也在自家的產品:Gboard、Photo、Gmail、Youtube上做了各種工程嘗試,包括2017年IO大會推出TensorFlow Lite版,野心也窺見一斑。作為移動開發者,必須跟上Google的步伐,儘早了解深度學習相關的基礎知識,快速將自己的產品AI化。


推薦閱讀:

TAG:機器學習 | Android開發 | 移動端 |