# Meeting Report (2023/05/05) - Differentially Private Federated Learning: A Client Level Perspective (2023/05/15 更新 Q7 Q8) ## 問題 ### Q1 : 為什麼聯邦式學習需要防止差分攻擊 #### A : - 由於聯邦式學習只會用本地端的資料進行訓練,並將訓練好的梯度及模型參數傳給伺服端,不會有對資料做傳輸的動作,因此有隱私保護的效果 - 但根據幾篇論文 [1] [2] 表示從梯度上也能得出客戶資料的某些特性,所以一定程度上還是會洩漏客戶隱私 - 常見的預防方法有對梯度進行加密或是加上噪音(加噪音雖然會使準確度下降,但卻有防止過擬合的效果) ### Q2 : 為什麼 K=10000 時的表現會比 K=100 時來的好 #### A : - 根據演算法能得知整個訓練的停止條件為 δ 是否超出設定的可容忍範圍,而不是根據是否已訓練到了某個準確度才停止 - 至於為什麼 K=10000 時比較不容易超出可容忍範圍,這或許與資料集的數量有關 - 當 K=100 時,從 60000 筆的資料集中取 600 出來做為單個客戶所持有的資料,能保證每個客戶拿到的資料都不同,但也因此讓客戶間有了一些識別度,間接導致了隱私洩漏,所以往往在還沒收斂的情況下就結束了訓練 - 但當 K=10000 時,要讓每個客戶都拿到 600 筆資料就一定會有重複的情況,這在提升模型的準確度上或許沒有什麼幫助,但這樣能降低客戶間的辨別度,降低了隱私洩漏的機率,所以就算訓練到了 400 多個回合,準確度已達到了 97%,也還能在容忍的範圍內 ### Q3 : 是不是只要 δ 超出可容忍的範圍就會被攻擊 #### A : 不一定,應該要說這篇論文只保證在 δ 不超出可容忍範圍下能防止隱私洩漏,降低了被攻擊的風險 ### Q4 : 哪裡能看出動態適應差分隱私 #### A : 在更新權重時,會根據當時選取出的客戶集合裡的中位數作為敏感度 $S$ ,藉此來達到動調整的效果 ### Q5 : Communication Costs (CC) 的定義 #### A : - 論文中對 Communication Costs 的定義如下  - 不過一般的情況下還會需要考慮到溝通時傳輸的模型權重大小 ### Q6 : 聯邦式學習在自然語言模型上的訓練 #### A : FedNLP [3] 是一個結合了自然語言處理以及聯邦式學習的測試框架,可處理的工作如文本分類、序列標記等等,訓練時可以以下幾種資料集進行訓練 : 1. 20news : 英文新聞資料集,有 20 種類別共 20000 篇新聞報導 2. SQuAD 1.1 : 史丹佛大學蒐集的問答資料集,包含了 100,000 多題的問答題以及 500 多篇文章 ### Q7 : 每回合參與訓練的客戶數 m 是否固定 #### A : ```python= param m: If specified, a privacyAgent is not used, instead the parameter is kept constant ``` 根據程式碼可知當不使用差分隱私(privacyAgent),也就是用原本的 FedAvg 時,需要特別給定 m 的值,而且 m 會被固定住,但如果是用差分隱私的話就不用給定 m,m 也不會是定值,每回合都會改變 ### Q8 : delta 如何求得 #### A : 從 `accountant.py` 可以發現 delta 是從 `_compute_delta` 這個函式求得的,程式碼如下 ```python= def _compute_delta(self, log_moments, eps): """Compute delta for given log_moments and eps. Args: log_moments: the log moments of privacy loss, in the form of pairs of (moment_order, log_moment) eps: the target epsilon. Returns: delta """ min_delta = 1.0 for moment_order, log_moment in log_moments: if math.isinf(log_moment) or math.isnan(log_moment): sys.stderr.write("The %d-th order is inf or Nan\n" % moment_order) continue if log_moment < moment_order * eps: min_delta = min(min_delta, math.exp(log_moment - moment_order * eps)) return min_delta ``` 因為 delta 表示的是差分隱私能接受的最高機率,所以 `min_delta = min(min_delta, math.exp(log_moment - moment_order * eps))` 的結果只會在 0~1 之間,因此 delta 會是 1 和 $e^{logmoment-({momentorder}*{eps})}$ 之間的最小值 ## 參考 論文GitHub : https://github.com/SAP-samples/machine-learning-diff-private-federated-learning [1] Melis etal. Exploiting Unintended Feature Leakage in Collaborative Learning. In lEEE Symposium on Security & Privacy,2019 [2] Hitaj et al. Deep models under theGAN: information leakage from collaborative deep learning [3] https://github.com/FedML-AI/FedML/tree/master/python/app/fednlp
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up