行人重識別的訓練需要收集大量的人體數據到一個中心服務器上,這些數據包含了個人敏感信息,因此會造成隱私泄露問題。聯邦學習是一種保護隱私的分布式訓練方法,可以應用到行人重識別上,以解決這個問題。但是在現實場景中,將聯邦學習應用到行人重識別上因為數據異構性,會導致精度下降和收斂的問題。
數據異構性:數據非獨立分布 (non-IID) 和 各端數據量不同。
這是篇來自 ACMMM20 Oral 的論文,主要通過構建一個 benchmark,并基于 benchmark 結果的深入分析,提出兩個優化方法,提升現實場景下聯邦學習在行人重識別上碰到的數據異構性問題。
論文地址:Performance Optimization for Federated Person Re-identification via Benchmark Analysis
開源代碼:https://github.com/cap-ntu/FedReID
本文主要對這篇文章的這三個方面內容做簡要介紹:
- Benchmark: 包括數據集、新的算法、場景等
- Benchmark 的結果分析
- 優化方法:知識蒸餾、權重重分配
Benchmark
數據集
數據集由9個最常用的 行人重識別 數據集構成,具體的信息如下:
這些數據集的數據量、ID數量、領域都不同,能夠有效的模擬現實情況下的數據異構性問題。
算法
傳統聯邦學習算法 Federated Averaging (FedAvg) 要求端邊全模型同步,但是 ReID 的分類層的維度由 ID數量決定,很可能是不同的。所以這篇論文提出了只同步部分的模型 Federated Partial Averaging (FedPav).
FedPav 的每一輪訓練可以通過4個步驟完成:
- Server 下發一個全局模型到每個 Client
- 每個 Client 收到全局模型后,將全局模型加上本地的分類器,用本地數據進行訓練,每個 Client 得到一個 local model
- Client 將 local model 的 backbone 上傳到 Server
- Server 對所有 client 收到的 model 進行加權平均。
完整的算法可以參考下圖:
Benchmark 結果
通過 Benchmark 的實驗,論文里描述了不少聯邦學習和行人重識別結合的洞見。這邊著重提出兩點因數據異構性導致的問題。
1. 大數據集在聯邦學習中的精度低于單個數據集訓練的精度
- FedPav: 聯邦學習總模型的精度
- FedPav Local Model: 聯邦學習各邊端模型模型上傳前在各自邊端測試的精度
- Local Training: 基準,每個數據集單獨訓練和測試的精度
Local Training 效果比聯邦學習的效果好,說明這些大數據集沒法在聯邦學習中受益。需要有更好的算法來提高精度。
2. 聯邦學習訓練不收斂
通過這兩個數據集測試曲線可以看出,因為數據異構性的影響,精度波動較大,收斂性差。
優化方法
采用知識蒸餾,提高收斂
因為數據的異構性的原因,導致參與聯邦學習多方上傳前的本地模型的性能優于云端服務器進行模型融合后的模型性能,另外數據異構性還導致了訓練的不穩定性和難收斂的問題。針對這個問題,本方案提出使用知識蒸餾的方法,將參與聯邦學習的多方的本地模型當成教師模型,云端服務器的模型作為學生模型,用知識蒸餾的方法更好的將教師模型的知識傳遞到學生模型,以此提高了模型訓練的穩定性和收斂性。完整算法可以參考下圖:
下面的實驗結果顯示,采用知識蒸餾(橙線)的訓練收斂效果能夠得到有效提高。
提出權重重分配,提高精度
原算法在 Server 上做模型整合,采用的是加權平均的方法,用每個 Client 的數據量作為權重,進行加權平均。每個 Client 的數據量差距可能非常大,有的占比 40%,有的占比不到 1%,所以該論文提出了進行權重分配。調整聯邦學習模型融合時各方模型更新的權重:給訓練效果越好的邊端,分配更大的權重,在模型融合時產生更大的影響。訓練效果的衡量是通過比較每一方本地訓練前后模型用一批數據做推理產生的特征的余弦距離,余弦距離越大,該訓練產生的變化越大,該分配的權重越大。完整算法可以參考下圖:
下表格的實驗結果顯示,權重重分配使所有邊端模型的性能都超過 Local Training,帶來普遍的性能提升。
總結
針對數據隱私問題,這篇論文將聯邦學習應用到行人重識別,并做了深入的研究分析。構建了一個 Benchmark,并基于實驗結果帶來的洞見,提出了使用<u>知識蒸餾</u>和<u>權重重分配</u>的方法來解決數據異構性帶來的性能問題。
算法細節和更多實驗結果,推薦閱讀原論文和開源代碼。