FedProx

可能更好的阅读体验 Jeefy's Blog: FedProx

对于联邦学习,有一个非常重要的假设:No-IID 的数据分布。所以对于 FedAvg 其实不容易收敛(泛用性很差),直接平均可能震荡不收敛。所以提出了 FedProx,引入正则化参数,其基础还是 FedAvg

其中引入的两个放缩:

  1. \(\gamma\)-inexact solution:允许设备根据算力随时停止,解决算力不均衡问题
  2. \(B\)-local dissimilarity假设:量化数据异构程度
    和部分工作分析收敛性的方法是相似的,例如 SCAFFOLD

基本定义:\(f\) 表示中心 LLM,\(F_k\) 表示边缘 SLM

在论文中,基础问题建模为:

\[\min_{\omega} f(\omega) = \sum p_k F_k(x) = {\mathbb E}_k [F_k(\omega)] \]

其中 \(p_k\) 表示边缘设备的数据占比 \(\frac {n_k} n\)

其核心就是加入了正则项的损失函数:

\[\min_\omega {\mathbb E} [F_k(\omega) + \frac \mu 2 ||\omega - \omega^*||^2] \]

利用参数正则约束偏离程度。


Definition 1:同时,为了解决算力和资源不均衡的情况(有慢设备),其引入了 \(\gamma\text{-inexact solution}\) 这个概念:\(||\nabla h_k(\omega^*;\omega_t)|| \le \gamma^t_k ||\nabla h_k(\omega_t; \omega_t)|| \implies\) \(\omega^*\) 是一个 \(\gamma^t_k\) 不精确解。即当前梯度 \(\le \gamma \times\) 初始梯度即可。需要注意的是:\(h\) 表示

\[h_k(\omega; \omega_t) = F_k(\omega) + \frac \mu 2\| \omega - \omega_t \|^2 \]

这样可以有四点好处:

  1. 自然的将正则引入其中,可以让 Client 的更新自然的更靠近原始模型。
  2. 允许 Client 根据自身算力随时停止,减少任务超时而被放弃的情况。建模了不同设备不同状态时,完成任务的判断标准。
  3. 由于 \(\gamma\) 依据设备动态计算,所以这将很多具体情况抽象成了一个独立参数,使得该建模更具鲁棒性。
  4. 合理的设置 \(\mu\) 的大小,可以将 \(F_k\) 利用后文提到的二阶梯度下有界,将 \(h_k\) 转变为一个完全的凸函数(二阶梯度 \(>0\)

Assumption 1:在分析阶段,引入了 \(B\)-local dissimilarity,用于衡量模型的相似程度。具体来说:

\[{\mathbb E}_k [||\nabla F_k(\omega)||^2] \le || \nabla f(\omega)||^2 B^2 \iff F_k \text{ is B-locally dissimilar at }\omega \]

其中 \(\mathbb E\) 部分表示每个 Client SLM 的梯度,而 \(f\) 表示聚合后的梯度。对于 IID 的数据来说,\(\mathbb E\) 部分趋近于 \(0\),对于 No-IID(越是 Heterogeneous ),\(B\) 取值就会越大。由于有限,所以可以定义 \(B(\omega)\) 表示这个放缩的界 \(\sqrt{\frac {{\mathbb E}_k [||\nabla F_k(\omega)||^2]}{|| \nabla f(\omega)||^2}}\)。也就是说 \(B(\omega)\) 可以衡量不相似的程度。如果 \(B \approx 1\),说明 Client 数据分布在共有数据集上非常接近。

\(\oplus\) 假设:\(B(\omega)\) 是有界的,具体来说,如果说 \(||\nabla f(\omega)||^2 > \epsilon\),那么总有 \(B(\omega) \le B_\epsilon\)


L-smooth Assumption:参考 L-smooth & Lipschitz 连续性假设 约束了 \(\| \nabla^2 F(x) \| \le L\) ,这里约束了二阶导的下界,也就是说 \(\nabla^2 F(x) \succeq -L_{\_} I\),这里方便,将 \(L_\_\) 直接记为 \(L\) 。也就是说,这里约束整个模型虽然可以上凸,但是不能无限上凸,上凸是有界的。

\(\bar{\mu} = \mu - L > 0\),也就是这里设置了“超参” \(\mu\),将 \(h_k(x)\) 限制为了二阶梯度 \(\succeq \bar{\mu} I\)

这里 \(\mu\) 的作用是抑制 Non-IID 数据带来的模型偏移,\(\mu\) 越高,抑制越强,但是收敛速度可能变慢。对于不同的数据集,其设计的值不同。
原文 Figure 3 展示了一种启发式策略:Loss 上升时增大 \(\mu\),Loss 连续下降时减小 \(\mu\)


证明收敛的流程大抵分为三步:

  1. 利用正则项控制凸性后,利用梯度估计误差和模型偏移
  2. 不考虑随机采样,估计理想下降
  3. 进行随机采样的偏差修正

现在,我们展开来证明模型收敛。首先参考 L-smooth & Lipschitz 连续性假设 明确根据泰勒展开,我们可以知道:

\[f(\omega^{t + 1}) \le f(\omega^t) + \langle \nabla f(\omega^t), \bar\omega^{t + 1} - \omega^t \rangle + \frac L 2 \| \bar\omega^{t + 1} - \omega^t\|^2 \]

于是我们的终极目的是通过神秘的放缩,将 \(f(\omega^t)\) 之外的项放缩为一个负数。

我们可以定义新一轮通信与上一轮的一个差距,但其实就是 \(\nabla_{\omega_k^{t + 1}} h_k(\omega_k^{t + 1}; \omega_k^t)\)

\[\begin{aligned} e^{t+1}_k = \nabla F_k(\omega_k^{t + 1}) + \mu (\omega_k^{t + 1} - \omega^t) \end{aligned} {\tag 1} \]

于是根据 \(\gamma\) 定义(这里 \(\omega_k^t - \omega_k^t\) 变成 \(0\) 了):

\[\| e_k^{t + 1} \| \le \gamma_k^t \| \nabla h_k(\omega_t;\omega_t) \| = \gamma_k^t \| \nabla F_k(\omega_k^{t + 1}) \| \]

定义平均聚合参数:\(\bar{\omega}^{t + 1} = {\mathbb E}_k[\omega_k^{t + 1}]\),对于 \((1)\) 式两边取期望:

\[\bar{\omega}^{t + 1} - \omega^t = \frac 1 {\mu} {\mathbb E}[e_k^{t + 1}] - \frac 1 {\mu} {\mathbb E} [\nabla F_k(\omega_k^{t + 1}) ] \]

对于新训练的这一轮,我们期望得到的东西是 \(\hat{\omega}_k^{t + 1} = \arg \min_\omega h_k(\omega; \omega^t)\),而实际上得到的是不精确解 \(\omega_k^{t + 1}\)

\[\| \nabla h_k(\omega_k^{t + 1}) \| \le \gamma_k^{t} \| \nabla F_k(\omega^t) \| \]

根据 \(\bar{\mu}\) 强凸性,\(h_k\) 一定存在全局最小值,并且离最小值越远,\(\| \nabla h_k \|\) 越大。也就是 \(\hat{\omega}_k^{t + 1}\) 唯一确定,并且 \(\| \nabla h_k(\hat{\omega}_k^{t + 1}) \| = 0\)。对于强凸性,其存在性质:

\[\langle \nabla h_k(x) - \nabla h_k(y), x - y \rangle \ge \bar{\mu} ||x - y||^2 \]

那么带入 \(x = \hat{\omega}_k^{t + 1}, y = \omega_k^{t + 1}\),那么有 \(\nabla h_k(x) = 0\),得:

\[\bar{\mu} \| \hat{\omega}_k^{t + 1} - \omega_k^{t + 1} \|^2 \le \langle - \nabla h_k(y), x - y \rangle \le \| \nabla h_k(\omega_k^{t + 1}) \| \cdot \| \hat{\omega}_k^{t + 1} - \omega_k^{t + 1} \| \]

就有了:

\[\| \hat{\omega}_k^{t + 1} - \omega_k^{t + 1} \| \le \frac 1 {\bar{\mu}} \| \nabla h_k(\omega_k^{t + 1}) \| \le \frac {\gamma_k^{t}}{\bar{\mu}} \| \nabla F_k(\omega^t) \| \]

根据单纯的凸性:

\[\|\omega_k^{t} - \hat{\omega}_k^{t + 1} \| \le \frac 1 {\bar{\mu}} \| \nabla h_k(\omega_k^{t}) \| = \frac 1 {\bar{\mu}} \| \nabla F_k(\omega^t) \| \]

于是利用三角不等式:

\[\| \omega_k^t - \omega_k^{t + 1} \| \le \|\omega_k^{t} - \hat{\omega}_k^{t + 1} \| + \| \hat{\omega}_k^{t + 1} - \omega_k^{t + 1} \| \le \frac {1 + \gamma_k^{t}}{\bar{\mu}} \| \nabla F_k(\omega^t) \| \]

于是继续利用三角不等式:

\[\| \omega^t - \bar\omega^{t + 1} \| \le {\mathbb E}_k[\| \omega_k^t - \omega_k^{t + 1} \|] \le \frac {1 + \gamma^{t}}{\bar{\mu}} {\mathbb E}_k[ \| \nabla F_k(\omega^t) \| ] \]

然后利用 \(B\) 以及 \(E[x^2] \ge E^2[x]\),进一步得到:

\[\| \omega_k^t - \bar\omega_k^{t + 1} \| \le \frac {1 + \gamma^{t}}{\bar{\mu}} \sqrt{{\mathbb E}_k[ \| \nabla F_k(\omega^t) \|^2 ]} \le \frac {B(1 + \gamma)}{\bar\mu} \| \nabla f(\omega^t) \| \]

现在,二阶项就可以放缩了,问题是一阶项,于是构造:

\[\bar\omega^{t + 1} - \omega^t = \frac {-1} \mu (\nabla f(\omega^t) + M_{t + 1}) \]

利用前面已经推导过的一些不等式和变量代替:

\[M^{t + 1} = {\mathbb E}_k [\nabla F_k(\omega^{t + 1}) - \nabla F_k(\omega^t) - e_k^{t + 1}] \]

于是利用三角不等式放缩,然后利用 L-smooth 的性质:

\[\| M^{t + 1} \| \le {\mathbb E}_k [\|\nabla F_k(\omega^{t + 1}) - \nabla F_k(\omega^t) \|] + {\mathbb E} [ \| e_k^{t + 1}\| ] \le {\mathbb E} [L || \omega^{t + 1} - \omega^t \|] + {\mathbb E}[\| e_k^{t + 1}\|] \]

然后就可以随便带入得:

\[\| M^{t + 1} \| \le \left(\frac {L(1 + \gamma)} {\bar\mu} + \gamma \right) B \| \nabla f(\omega^t) \| \]

于是对于一阶项,利用柯西不等式放缩(这里需要注意正负性):

\[\begin{aligned} \langle \nabla f(\omega^t), \bar\omega^{t + 1} - \omega^t \rangle &= \langle \nabla f(\omega^t), \frac {-1} \mu (\nabla f(\omega^t) + M^{t + 1}) \rangle \\ &\le \frac {-1} \mu \| \nabla f(\omega^t)\|^2 + \frac {-1} \mu \langle \nabla f(\omega^t), M^{t + 1} \rangle \\ &\le \frac {-1} \mu \| \nabla f(\omega^t)\|^2 + \frac {1} \mu \| \nabla f(\omega^t) \| \cdot \| M^{t + 1} \| \\ &\le \left(- \frac {1 + \gamma B} \mu + + \frac {L(1 + \gamma)}{\mu\bar\mu} B \right) \| \nabla f(\omega^t) \|^2 \end{aligned} \]

于是将整体带入:

\[f(\bar\omega^{t + 1}) \le f(\omega^t) + (- \frac {1 + \gamma B} \mu + + \frac {L(1 + \gamma)}{\mu\bar\mu} B + \frac {LB^2(1 + \gamma)^2} {2\bar\mu^2}) \| \nabla f(\omega^t) \|^2 \]

于是如果说,让括号内的那部分小于 \(0\),就可以期望 \(f(\bar\omega^{t + 1})\) 收敛了。

但是新的问题来了,这里 \(\bar\omega\) 是全体训练,但是实际上每一轮是随机采样训练,也就是只用了 \(K\) 个设备。所以我们使用局部 Lipschitz 连续性假设(因为这里可以认为 \(\omega\)\(\bar\omega\) 差距不大),使用 \(L_0\) 表示其一阶阶梯度的界(其实是说,感觉不是这样用的):

\[f(\omega^{t + 1}) \le f(\bar\omega^{t + 1}) + L_0 \| \omega^{t + 1} - \bar\omega^{t + 1} \| \tag 2 \]

现在考虑放缩一下 \(L_0\),利用 L-smooth & Lipschitz 连续性假设(L-smooth 的梯度是 Lipschitz 连续的),这里先绕一绕:

对于限制在 \(\omega = \lambda \omega^{t + 1} + (1 - \lambda) \bar\omega^{t + 1}\) 上的常数 \(L_0\),根据微分中值:

\[f(\omega^{t + 1}) - f(\bar\omega^{t + 1}) = \nabla f(\xi) \cdot (\omega^{t + 1} - \bar\omega^{t + 1}) \implies L_0 = \sup \|\nabla f(\xi) \| \]

这里 \(L_0\) 其实取啥都可以,我们的目的只是给 \(L_0\) 一个可控的界,并不是严格的遵循局部 Lipschitz 连续性。

\(\nabla f(\xi)\) 通过 L-smooth 展开:

\[\| \nabla f(\xi) \| \le \| \nabla f(\omega^t) \| + L \| \xi - \omega^t\| \]

注意到 \(\xi = \lambda \omega^{t + 1} + (1 - \lambda) \bar\omega^{t + 1} \implies \xi - \omega^t = \lambda (\omega^{t + 1} - \omega^t) + (1 - \lambda) (\bar\omega^{t + 1} - \omega^t)\),所以 \(\| \xi - \omega^t\| \le \max (\| \omega_k^t - \omega_k^{t + 1} \| + \| \omega^t - \bar\omega^{t + 1} \|)\)

于是

\[\begin{aligned} L_0 &\le \| \nabla f(\omega^t) \| + L \max (\| \omega_k^t - \omega_k^{t + 1} \| + \| \omega^t - \bar\omega^{t + 1} \|) \\ &\le \| \nabla f(\omega^t) \| + L (\| \omega_k^t - \omega_k^{t + 1} \| + \| \omega^t - \bar\omega^{t + 1} \|) \end{aligned} \]

那么接下来对于 \((2)\) 两边取期望:

\[\mathbb{E}_{S_t} [f(\omega^{t + 1})] \le f(\bar\omega^{t + 1}) + Q_t \]

\[\begin{aligned} Q_t &= \mathbb{E}_{S_t} [ L_0 \| \omega^{t + 1} - \bar\omega^{t + 1} \|] \\ & \le \mathbb{E}_{S_t} \Big[ {\Big (}L(\| \omega_k^t - \omega_k^{t + 1} \| + \| \omega^t - \bar\omega^{t + 1} \| ) +\| \nabla f(\omega^{t}) \| \Big) \| \omega^{t + 1} - \bar\omega^{t + 1} \| \Big] \end{aligned} \]

由于采样仅和 \(\omega^{t + 1}_k\) 有关,所以可以把无关的东西拉出来:

\[\begin{align*} Q_t &\le \mathbb{E}_{S_t} \left[ \left( \|\nabla f(w^t)\| + L(\|\bar{w}^{t+1} - w^t\| + \|w^{t+1} - w^t\|) \right) \times \|w^{t+1} - \bar{w}^{t+1}\| \right] \\ &\le \left( \|\nabla f(w^t)\| + L\|\bar{w}^{t+1} - w^t\| \right) \mathbb{E}_{S_t} [\|w^{t+1} - \bar{w}^{t+1}\|] + L \mathbb{E}_{S_t} [\|w^{t+1} - w^t\| \cdot \|w^{t+1} - \bar{w}^{t+1}\|] \\ &\le \left( \|\nabla f(w^t)\| + 2L\|\bar{w}^{t+1} - w^t\| \right) \mathbb{E}_{S_t} [\|w^{t+1} - \bar{w}^{t+1}\|] + L \mathbb{E}_{S_t} [\|w^{t+1} - \bar{w}^{t+1}\|^2] \end{align*} \]

考虑到 \(Var(X) = E[X^2] - E^2[X] \ge 0\),那么有下式:

\[\mathbb{E}_{S_t} [\|w^{t+1} - \bar{w}^{t+1}\|] \le \sqrt{\mathbb{E}_{S_t} [\|w^{t+1} - \bar{w}^{t+1}\|^2]} \]

然后就是采样方差分解,也就是将偏差转化为整体方差的 \(\frac 1 K\) 倍。其背后的核心是,两者期望相同,看作独立采样 \(K\) 个设备,那么对于每个设备,有:

\[{\mathbb E}_{S_t}[ (x - \bar x)^2] = {\mathbb E}_{S_t} \left[\frac 1 {K^2} \sum (x_k - \bar x)^2 \right] = \frac 1 {K^2} \cdot K \cdot {\mathbb E}_k[(x_k - \bar x)^2] \]

由于这里是不放回采样,所以需要乘以修正因子 \(\frac {N - K}{N - 1} \le 1\),所以可以这样放缩:

\[\begin{align*} \mathbb{E}_{S_t} [\|w^{t+1} - \bar{w}^{t+1}\|^2] &\le \frac{1}{K} \mathbb{E}_k [\|w_k^{t+1} - \bar{w}^{t+1}\|^2] \\ &\le \frac{2}{K} \mathbb{E}_k [\|w_k^{t+1} - w^t\|^2], \quad (\text{as } \bar{w}^{t+1} = \mathbb{E}_k [w_k^{t+1}]) \\ &\le \frac{2}{K} \frac{(1+\gamma)^2}{\bar{\mu}^2} \mathbb{E}_k [\|\nabla F_k(w^t)\|^2] \quad (\text{from } (6)) \\ &\le \frac{2B^2}{K} \frac{(1+\gamma)^2}{\bar{\mu}^2} \|\nabla f(w^t)\|^2, \end{align*} \]

剩下的就好办了。

posted @ 2026-04-24 16:29  jeefy  阅读(65)  评论(0)    收藏  举报