---
# System prepended metadata

title: 'Differentially Private Federated Learning: A Client Level Perspective (2023/05/06 更新)'

---

# Differentially Private Federated Learning: A Client Level Perspective (2023/05/06 更新)

## Introduction
- 行動裝置能不斷產生新的資料(如照片、聲音)，但將這些私有資料集中訓練可能有隱私疑慮，為了解決此問題，聯邦式學習 (Federated Learning) 便被提了出來
- 然而，訓練過程中客戶端所傳遞的梯度及模型參數可能會遭受到差分攻擊 (differential attacks) ，因而導致資料洩漏
- 為了解決這個問題，差分隱私 (differential privacy, dp) 的概念便被提了出來
- 本篇提出了一個演算法，希望將差分隱私保護機制 (dp-preserving mechanism) 引入聯邦學習中，主要貢獻有兩點 :
   (1) 在客戶端的參與被隱藏的狀況下，降低了差分隱私對模型表現的影響
   (2) 在去中心化訓練過程中動態適應差分隱私的保護機制

## Background
### Federated Learning
在 FedAvg 演算法中，伺服端每回合會隨機選擇客戶加入訓練，被選中的客戶會從伺服端拿到模型參數，客戶在本地端用自己的資料進行訓練，再將訓練好的模型參數回傳給伺服端，伺服器在做聚合時會根據各個客戶所擁有的資料量去給予不同的權重，直到達到目標準確度或訓練回合數

![](https://hackmd.io/_uploads/Byu4Ax8Nh.png)

### Learning with differential privacy

定義 : 
![](https://hackmd.io/_uploads/HkZUCl842.png)

## Method
- 在 FedAvg 演算法中，伺服端會將客戶回傳的參數做加權平均
- 本篇則是用隨機機制 (randomized mechanism) 來取近似平均，隱藏單個客戶的貢獻，這裡分成兩步驟
   (1) Random sub-sampling(隨機子抽樣)
   (2) Distorting(失真)

### Random sub-sampling
   (1) 假設共有 𝐾 個客戶，每回合會抽大小為 $𝑚_𝑡$ 的子集 $𝑍_𝑡$

   (2) 伺服端向客戶發送模型 $𝑤_𝑡$ ，這些客戶會用自己的資料訓練，訓練完後會得到一組用不同資料集訓練的模型權重

   (3) 計算訓練好的本地模型和伺服端的差異 $∆𝑤^𝑘=𝑤^𝑘−𝑤_𝑡$
   
### Distorting
![](https://hackmd.io/_uploads/SkoDEzL42.png)
用高斯機制 (Gaussian mechanism) 對更新的值失真，這裡可以分成兩個部分來看

1. ![](https://hackmd.io/_uploads/ryVEHf8Vh.png)
- 這裡的 $S$ 由中位數來決定，分母的部分因為是取最大值，而且有 1 在所以不會因為除小數而放大，所以只會有縮小或是維持原狀兩種可能，如下圖所示 
![](https://hackmd.io/_uploads/HkWHRfLVh.png)

2. ![](https://hackmd.io/_uploads/BJIxwGL4n.png)
σ 可以表示資料的離散程度，σ 越大表示資料越分散，這裡的作用相當於是將整組資料保持之前的分布狀況再重新分布一次

## Experiments
- Task : 影像分類 (Image classification)
- Dataset : MNIST
- 每個客戶會分到兩個分片 (shard)，每個分片有 300 張且都是同一種數字，共 600 張

![](https://hackmd.io/_uploads/ry3ZxZUV2.png)

- 參數 :
    - K : 客戶總數 (這裡有 100, 1000, 10000 三種)
    - B : 客戶端訓練時的 batch 大小
    - E : 每次訓練在客戶端上跑多少 epochs
    - m : 每回合有多少客戶參與
    - σ : 高斯隨機參數
    - ε : 隱私預算，根據 [1] 設為 8
    - δ : 客戶總數為 (100, 1000, 10000) 時 => 設為 (e-3, e-5, e-6)

- 模型架構
![](https://hackmd.io/_uploads/HJLsebU42.png)

- 演算法 :
![](https://i.imgur.com/GvZFraZ.png)

## Results
- 評估參數 : 
    - ACC (accuracy) : 準確度
    - CR (communication rounds) : 溝通回合數
    - CC (communication costs) : 溝通花費 
    
- 實驗結果
![](https://hackmd.io/_uploads/SJgu--INh.png)
    - 客戶總數是模型表現的主要影響
    - 當 K = 100 和 K = 1000 時，準確度分別為 78% 和 92%
    - 當 K = 10000 時，準確度則可達到 96%


## Conclusion
- 客戶端級的差分隱私是可行的，且當有足夠多的客戶參與時可使模型達到高準確度
- 對資料和更新分布的仔細分析可以優化隱私預算 𝜀

