IT评测·应用市场-qidao123.com

标题: 联邦学习:去中心化数据下的深度网络优化 [打印本页]

作者: 小秦哥    时间: 2025-3-13 19:20
标题: 联邦学习:去中心化数据下的深度网络优化
摘要:本文分析《Communication-Efficient Learning of Deep Networks from Decentralized Data》,聚焦联邦学习在去中心化数据中的通讯优化,探讨高效练习深度网络与数据隐私掩护的方法。这不仅为AI与安全应用奠基,还为将来与区块链的融合提供潜力,建立去中心化的安全模型。
关键字:联邦学习,通讯效率,去中心化数据,深度网络,AI,数据隐私,安全性,区块链
引言:数据安全与去中心化挑战

区块链安全挑战

AI安全挑战

现在AI全赛道在快速发展阶段,AI安全作为潜伏大课题即将伴随发生。现在可预估的安全事故范例包括:

然而,除传统网络安全范畴以外,AI安全还包括AI伦理、自主性、数据主权、社会风险等。

安全视角下的联邦学习需求

一句话解释:联邦学习试图在海量个人装备以及语言、图像等富和种类数据下,通过去中心化本地实行计算、集成模型和接收更新,来办理用户个人数据隐私问题和数据会集处理能效问题。
去中心化

去中心化可同时办理用户个人数据隐私问题和数据会集处理能效问题。每台装备都是一个客户端,用户可以选择参与到这个松散自由的联盟组织,通过一个中心化服务器进行统一管理和调理。
每个客户端都有一个永不上传的本地数据集,成千上万个客户端与全局大模型将会有同步拉取、本地计算和更新推送三个动作,其中同步拉取和更新推送才会涉及到与中心化服务器通讯。解耦模型练习需求与直连原始数据。
数据最小化原则,即网络和存储的数据应仅限于必要的部门。源自2012年消费者数据隐私白宫陈诉。
数据要求

使命示例

(1)图像分类,猜测哪些图片在将来最有可能被多次查看或分享。
(2)语言建模,改进语音识别、触屏键盘的文字输入、下一个词猜测、猜测整段回复。
这些使命的练习数据,明显必要大量用户隐私数据,包括用户持有的所有照片,以及他们通过手机键盘输入的所有文字,包括密码、网址、短信等等。
这些数据的分散性远大于轻易得到的代理数据集。比方:
此外,用户交互的数据是自带标签的,这些标签是天然客观的定义,远比二手代理数据的标签更具多样性。
以上解释了AI智能搜刮与传统搜刮(Baidu、Google)的区别,前者是通过大量天然数据标签进行猜测,后者是二手代理数据标签进行索引。前者是可思考的智能大脑,后者是图书馆索引头脑。
这两个使命都非常适合神经网络学习。对于图像分类而言,前馈深度网络尤其是卷积网络可提供最先进的结果。对于语言建模使命的递归神经网络,尤其是LSTM(Long Short-Term Memory,长短时记忆网络)取得了最先进的成果。
隐私掩护

比数据中心良好

更新的隐私影响

词袋模型是一种忽略词序、仅统计词频的文本向量化方法。
CNN通过卷积操作提取特征,再用池化和全毗连层进行分类,尤其善于处理图像。
梯度是模型参数的变化方向,非零梯度指这些变化中不为零的部门,可能泄露用户输入的详细词。
在词袋模型中,每个词对应一个特征位置,如果用户输入某个词,模型更新时只有这些词的梯度会变成非零,攻击者通过观察非零梯度就能推测出详细输入的词。
联邦优化:通讯效率的核心

1、联邦优化的特质:

由于每个客户端的练习数据通常基于特定用户的装备使用,数据集通常不会代表整个群体的分布。
有些用户会比其他用户更频繁地使用服务或应用,从而导致本地练习数据量的差异。
参与优化的客户端数目通常远远大于每个客户端的平均数据点数。
移动装备经常处于离线状态,大概毗连速度慢且通讯费用高。
2、联邦优化的实践问题

为了应对这些问题,实行中使用了一个受控环境,专注于客户端的可用性以及不平衡和非IID数据的挑战。
3、同步更新机制说明

我们假设一个同步更新机制,该机制以多轮通讯进行:
4、非凸目标函数公式剖析

①有限和目标函数形式

尽管我们关注的是非凸神经网络目标(即损失函数或优化目标是非凸的),但是我们考虑的算法实用于任何具有以下形式的有限和目标函数:
“非凸”指的是一个函数或聚集不是凸的,意思是它没有一个唯一的最小点,可能有多个局部最小点或鞍点。简单来说,就是函数图像不出现单一的“山谷”形状,可能有多个低谷。
这是总目标函数的形式:

\[\min_{w \in \mathbb{R}^d} f(w)\]
这个公式表示要最小化一个目标函数 f(w),其中 w 是优化参数向量,位于 \mathbb{R}^d 空间中,表示一个 d-维的参数空间。优化问题的目标是找到一个最优的 w,使得 f(w) 达到最小值。
这是目标函数的定义:

\[f(w) = \frac{1}{n} \sum_{i=1}^n f_i(w)\]
这个公式定义了目标函数 f(w) 为多个子目标函数 f_i(w) 的平均值。详细来说,f_i(w) 是第 i 个子目标函数,通常代表一个数据点或使命的损失函数。这里,总目标函数是所有 f_i(w) 的平均值,因此优化问题变成了最小化这些子目标的平均损失。
②机器学习中的损失函数

在机器学习中,损失函数f_i(w)通常表示模型在给定输入 x_i 和真实标签 y_i 下的猜测偏差,记作

\[\ell(x_i, y_i; w)\]
,其中 w 是模型的参数。
也就是说,对于每一个练习样本 (x_i, y_i),我们计算损失函数 f_i(w),它反映了模型在该样本上的猜测偏差。整个目标是通过优化这些损失函数的平均值 f(w) 来最小化模型的整体偏差。
③客户端数据分布

在该算法中,假设数据集被分配到 K 个客户端上,客户端 k 上的数据集索引为 P_k,其中 n_k = |P_k| 是客户端 k 上的数据量。这样,我们可以将目标函数 f(w) 重写为:

\[f(w) = \sum_{k=1}^{K} \frac{n_k}{n} F_k(w)\]
表示全局目标函数 f(w) 是由每个客户端 k 的局部目标函数 F_k(w) 加权平均得到的,其中 n_k 是客户端 k 上的数据点数目,n 是总的数据点数目。
其中 F_k(w) 表示客户端 k 上的局部目标函数,定义为:

\[F_k(w) = \frac{1}{n_k} \sum_{i \in P_k} f_i(w)\]
换句话说,F_k(w) 是客户端 k 上的数据的损失函数的平均值。目标函数 f(w) 是这些局部目标函数的加权平均。
表示客户端 k 上的局部目标函数 F_k(w),它是客户端 k 上所有数据点 i 的损失函数 f_i(w) 的平均值,其中 n_k 是客户端 k 上的数据点数目,P_k 是客户端 k 上数据点的索引聚集。
④IID假设

IID(独立同分布)指的是数据中的每个样本既相互独立,又遵循相同的概率分布。
接下来,假设数据 P_k 是通过将练习样本匀称随机地分配到各个客户端上形成的。在这种环境下,每个客户端上的局部目标函数 F_k(w) 的期望值应当与全局目标函数 f(w) 相称,即:

\[E_{P_k}[F_k(w)] = f(w)\]
这里的期望是对分配给固定客户端 k 的数据进行计算的。换句话说,在IID(独立同分布)假设下,每个客户端上的数据分布是相同的,因此每个客户端计算的损失函数期望值与全局损失函数同等。
表示当数据匀称随机地分配到各个客户端 k 时,客户端 k 上的局部目标函数 F_k(w) 的期望值等于全局目标函数 f(w),即每个客户端的数据分布是独立同分布(IID)的环境下,局部目标函数的期望与全局目标函数相称。
⑤非IID设置

然而,在实际的联邦学习设置中,数据往往不满足IID假设。也就是说,客户端上的数据分布可能不同,这会导致每个客户端上的局部目标函数 F_k(w) 与全局目标函数 f(w) 之间存在偏差。对于非IID的环境,我们称 F_k(w) 可能是对全局目标函数 f(w) 的一个非常不正确的近似。
如果数据在客户端之间分布不均或存在偏差(即数据不再是IID的),那么每个客户端的局部目标函数可能与全局目标函数的关系会变得不那么精确。这种环境被称为非IID设置,它是联邦学习中必须考虑的一个重要因素。
5、联邦优化的核心挑战

在联邦学习中,通讯本钱成为了瓶颈,因为每个客户端的数据集相对于整个体系来说较小,并且每个客户端的带宽通常受限,上传速度可能低至1MB/s或更低。此外,客户端参与优化的条件较为严格,通常只有在电池充足、毗连Wi-Fi且不计流量费用时才会参与。因此,通讯的频繁交换增加了本钱,并限制了优化的效率。
与数据中心环境不同,现代智能手机的计算能力较强(包括内置的GPU),并且计算的本钱相对较低。因此,相比于通讯,计算本钱险些可以忽略不计。这意味着,增加计算量比增加通讯回合数更具上风。
通过适当的计算量增加和并行化,减少联邦学习所需的通讯轮次,从而提高整体优化效率,降低通讯本钱。
技术细节:联邦平均算法(FedAvg)

FederatedAveraging (FedAvg) 算法是一种用于联邦学习(Federated Learning, FL)的优化方法。它通过在多个客户端上进行本地练习,并在服务器端进行参数聚合,以提高计算效率并减少通讯本钱。
1、配景

传统深度学习依靠 随机梯度下降(SGD)全局性质】 进行优化,但在 联邦学习 场景下,数据是去中心化的,存储在不同的客户端上,不能直接访问所有数据进行全局优化。
FedSGD(Federated SGD) 是一种直接在联邦学习环境中应用 SGD 的方法,但每轮练习都必要所有选定客户端上传梯度,通讯开销较大。
FedAvg 通过让客户端实行 多步本地梯度更新 再聚合,提高了计算效率,减少了通讯轮数。
SGD 通过每次随机挑选一个样本计算梯度(偏差)并更新模型参数,来逐步逼近损失函数的最优解。
2、算法思路

FedAvg 通过 三个关键参数 控制练习过程:
核心思想:
3、FedAvg代码实现
  1. import random
  2. import numpy as np
  3. def compute_loss(model, data):
  4.     """计算模型在给定数据上的损失值(这里使用简单的均方误差)"""
  5.     # 假设数据的最后一列是标签
  6.     X = data[:, :-1]
  7.     y = data[:, -1]
  8.     predictions = np.dot(X, model)
  9.     loss = np.mean((predictions - y) ** 2)
  10.     return loss
  11. def initialize_model():
  12.     """初始化全局模型参数"""
  13.     return np.random.rand(9)  # 改为9维,因为最后一列是标签
  14. def client_update(model, data, epochs, lr):
  15.     """客户端本地训练"""
  16.     losses = []
  17.     for _ in range(epochs):
  18.         gradient = compute_gradient(model, data)
  19.         model -= lr * gradient
  20.         loss = compute_loss(model, data)
  21.         losses.append(loss)
  22.     return model, np.mean(losses)
  23. def compute_gradient(model, data):
  24.     """计算梯度(使用均方误差的梯度)"""
  25.     X = data[:, :-1]
  26.     y = data[:, -1]
  27.     predictions = np.dot(X, model)
  28.     gradient = -2 * np.dot(X.T, (y - predictions)) / len(data)
  29.     return gradient
  30. def aggregate_models(client_models, num_samples):
  31.     """聚合客户端模型参数(加权平均)"""
  32.     total_samples = sum(num_samples)
  33.     weights = [n / total_samples for n in num_samples]
  34.     new_global_model = np.zeros_like(client_models[0])
  35.     for model, weight in zip(client_models, weights):
  36.         new_global_model += model * weight
  37.     return new_global_model
  38. def federated_training(num_rounds, num_clients, fraction, local_epochs, lr):
  39.     """联邦训练过程"""
  40.     global_model = initialize_model()
  41.     # 生成模拟数据:每个客户端100条数据,每条数据9个特征和1个标签
  42.     client_data = {
  43.         i: np.concatenate([
  44.             np.random.rand(100, 9),  # 特征
  45.             np.random.rand(100, 1)   # 标签
  46.         ], axis=1)
  47.         for i in range(num_clients)
  48.     }
  49.    
  50.     global_losses = []
  51.    
  52.     for round in range(num_rounds):
  53.         selected_clients = random.sample(range(num_clients), max(1, int(fraction * num_clients)))
  54.         client_models = []
  55.         client_losses = []
  56.         num_samples = []
  57.         
  58.         for client in selected_clients:
  59.             local_model = global_model.copy()
  60.             updated_model, local_loss = client_update(local_model, client_data[client], local_epochs, lr)
  61.             client_models.append(updated_model)
  62.             client_losses.append(local_loss)
  63.             num_samples.append(len(client_data[client]))
  64.         
  65.         # 计算这一轮的平均损失
  66.         avg_loss = np.mean(client_losses)
  67.         global_losses.append(avg_loss)
  68.         
  69.         global_model = aggregate_models(client_models, num_samples)
  70.         print(f"Round {round+1}: Average Loss = {avg_loss:.6f}")
  71.    
  72.     print("\n训练完成!")
  73.     print(f"初始损失值: {global_losses[0]:.6f}")
  74.     print(f"最终损失值: {global_losses[-1]:.6f}")
  75.     print(f"损失下降率: {((global_losses[0] - global_losses[-1]) / global_losses[0] * 100):.2f}%")
  76.    
  77.     return global_model, global_losses
  78. # 运行联邦学习
  79. final_model, losses = federated_training(num_rounds=10, num_clients=5, fraction=0.6, local_epochs=5, lr=0.1)
复制代码
4、FedAvg VS. FedSGD

特性FedSGD (Federated SGD)FedAvg (Federated Averaging)优化方式服务器端聚合单次梯度更新服务器端聚合多轮本地练习后的模型计算频率每轮通讯时,每个选中客户端计算一次梯度每轮通讯时,每个选中客户端进行多次本地练习通讯开销高,每次迭代都必要通讯低,本地练习多轮后才通讯客户端计算量低,每次只进行一个 mini-batch 的计算高,每轮进行多个 epoch 的本地练习全局模型更新直接聚合所有客户端梯度更新先在本地练习多次,再进行模型参数平均实用场景实用于高通讯带宽、计算资源受限的装备实用于计算能力较强、通讯受限的场景收敛速度必要更多轮通讯才气收敛收敛更快,减少通讯轮次5、关键长处

练习剖析:联邦学习实行分析

目标:通过选取适当规模的数据集,以便深入研究FedAvg的超参数,从而提高移动装备上的模型可用性,主要研究图像分类语言建模使命。
实行筹划

1、数据集和模型

2、数据分布方式

3、实行变量

实行结果

1、MNIST实行

2、CIFAR-10实行

进一步分析:通过对比不同批量大小(B = 50)下的SGD和FedAvg实行,FedAvg在每个小批量计算中取得了类似的进展。进一步,增加客户端数目有助于平滑精度波动,减少尺度SGD和FedAvg中仅有一个客户端时的波动。
3、大规模LSTM实行

主要结论

这个实行验证了FedAvg在去中心化数据场景(如移动装备)下的高效性,尤其实用于真实天下数据分布不均的环境。
联邦学习:提高通讯效率与隐私掩护的将来方向

模型实用性

实行表明,联邦学习(Federated Learning)可以通过较少的通讯轮次练习出高质量的模型,实行结果在多种模型架构上都有表现,包括:
联邦学习的上风:这些实行结果证明白FedAvg算法(联邦学习中的一种常用算法)能够在较少的通讯轮次下,练习出效果较好的模型,表明联邦学习具有实用性,尤其是在分布式、隐私掩护和大规模数据处理方面。
隐私掩护和安全性

同步算法的实用性

上述隐私掩护技术(差分隐私、安全多方计算)最天然地应用于同步算法,如FedAvg。这是因为同步算法的练习过程依靠于各客户端的更新结果的汇聚,而隐私掩护方法通常必要在全局聚合时引入噪声或加密技术,适合在同步框架下实行。
参考资料

Communication-Efficient Learning of Deep Networks from Decentralized Data
FedAvg Github
更多文章请转到一面千人的博客园


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4