【译】Federated Learning: Bringing Machine Learning to the edge with Kotlin and Android
采用機器學習模式需要數據。?我們越多越好。?但是,數據并不便宜,更重要的是,數據可能包含敏感的個人信息。
以新法律形式作為GDPR以及提高用戶和公民對其數據價值的認識的最新隱私發展正在產生對實施更多隱私的技術的需求
雖然匿名技術可以極大地幫助解決隱私問題,但所有數據都被發送到中央位置以訓練機器學習模型的事實始終是擔心的動機
該項目證明了如何使用Android應用程序作為邊緣設備來設置基本的聯合學習環境
代碼
如果你想直接跳到代碼中,你可以在下面的回復中找到它
Android應用程序
mccorby / PhotoLabeller聯合學習:進行圖像分類和本地培訓的客戶端應用程序。更好的與...github.com
服務器在
mccorby / PhotoLabellerServerPhotoLabellerServer - 聯合學習:參數服務器對來自客戶端的模型進行更新匯總...github.com
組件
該項目分為三個主要部分:
該模型
該模型基于Cifar-10數據集,這是一個眾所周知的數據集,可以對十種不同類別的圖像進行分類
Cifar-10中的類有一些例子為了實現雙重目的,模型的體系結構進行了調整:
a)具有不那么差的表現
b)允許它在Android應用程序中加載和訓練
所選的體系結構是一個具有一個CNN層和密集層的淺層卷積神經網絡。?這被證明足以獲得一個體面的表現,使用50個時期和10,000個樣本,同時保持模型的大小很小
有密集層的CNN(關于模型大小的說明:這個PoC的重點在于聯合學習,更好的模型可以用更多的層次進行訓練,并通過應用不同的技術進行量化或使用結構化或草圖更新來減少其尺寸。的PoC!)
用于在服務器端訓練模型的代碼位于PhotoLabellerServer項目的model模塊中
用App做出預測
該應用程序允許用戶使用嵌入在應用程序本身中的模型對照片進行基本分類,或者當連接到服務器時,可以使用最新版本的共享模型
圖像分類器正在運行該應用app模塊結構為app模塊,其中包含Android特定的類和Deeplearning4j相關類的trainer?。?base模塊包含交互器和域對象
訓練者的實現,負責使用DL4J進行預測和訓練,調用預測函數以獲得圖像的分類
聯合學習設置
聯合學習通過允許邊緣設備參與培訓來顛倒機器學習模型的更新。
代替將客戶端中的數據發送到集中位置,Federated Learning將模型發送給參與聯合的設備。?然后使用本地數據對模型進行重新訓練(使用轉移學習?)
數據和數據永遠不會離開設備,讓它成為您的手機,筆記本電腦或物聯網小工具
服務器打開一輪“培訓”,在此期間客戶可以將更新模型發送到服務器。
客戶端。?在邊緣進行訓練
我們的Android應用程序決定何時參與共享模型的培訓。?它使用已有的模型或服務器中的模型執行Transfer Learning操作(如果更新)。?然后對模型進行的更新發送到服務器
服務器端。?平均和更新模型
一旦輪次結束,服務器通過執行聯合平均來更新共享模型,如以下要點所示
服務器還實現了客戶端使用的簡單REST API。
請注意,客戶端,Android應用程序的實現方式只需要很少的努力即可轉移到其他Kotlin平臺
筆記
性能
在Android應用程序中使用圖像進行任何類型的操作始終要求設備必須執行的計算工作。?使用圖像對模型進行訓練會多次增加這種努力
這意味著在Android應用程序中完成的轉換學習階段非常短:只有幾個樣本的幾個時代。?這是應用程序在內存不足之前可以做的最多!?參數總數約為450k。?這對于應用程序可用的內存非常重要
但是,其他使用其他類型數據的模型運行平穩。?以前版本的聯合學習設置僅使用了一些功能僅有的糖尿病數據集。?這可以用更多的時代來完成(我實際上沒有找到限制,因為我在達到OOM之前獲得了期望的表現)以及更多的數據點
該應用程序的架構適合您嘗試其他模型和數據集。?隨意重復使用它進行研究,并告訴我是否可以提供幫助
謝謝閱讀!
https://proandroiddev.com/federated-learning-e79e054c33ef
總結
以上是生活随笔為你收集整理的【译】Federated Learning: Bringing Machine Learning to the edge with Kotlin and Android的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【译】The challenge of
- 下一篇: 【译】Private Image Ana