联邦学习中的原始对偶算法#
在传统的最优化方法中,原始-对偶算法 (Primal-Dual Algorithms) 也是一类求解具有显式原始-对偶结构问题的常用算法。考虑带显式全局变量约束的共识优化问题(注意它与 算子分裂 与 跳步 两节中共识集格式的细微差别),
其中 \(\Theta = \col(\theta_1, \cdots, \theta_K)\) ,\(\theta, \theta_1, \ldots, \theta_K \in \R^d\) 。约束优化问题 (1) 的* 增广拉格朗日函数* (Augmented Lagrangian, AL) 为
其中 \(\Lambda = \col(\lambda_1, \ldots, \lambda_K)\) 是* 对偶变量* (Dual Variable),亦称拉格朗日乘子 (Lagrangian Multiplier),\(s > 0\) 是罚参数。将梯度提升类的算法应用于对偶问题 \(\maximize_\Lambda \ G(\Lambda) := \inf_{\theta, \Theta} \mathcal{L}(\theta, \Theta, \Lambda)\) ,即得到求解这类问题的一般迭代格式
FedPD :联邦原始对偶算法#
基于这一迭代格式,文献 [Zhang et al.[1]] 设计了联邦原始对偶算法 FedPD ,其交替执行子节点侧的本地更新、子节点侧的对偶更新以及中心节点侧的全局平均。有两点设计值得特别注意。
** 灵活的局部求解器。 ** 对于 (3) 中的本地更新(即局部增广拉格朗日函数 \(\mathcal{L}_k\) 的极小化), FedPD 允许子节点使用任意的求解器 \(\operatorname{\mathbf{Oracle}}_k\)——可以是普通的随机梯度下降,也可以如 SCAFFOLD 那样结合方差缩减技术。这种灵活性是联邦优化的显著特点(与中心节点侧的 FedOpt 是同一思想)。在使用方差缩减时,还可以进一步将 \(f_k\) 在当前内循环迭代点 \(\theta_k^{(t, r)}\) 处* 线性化* (记局部梯度为 \(g_k^{(t, r)}\) ),此时局部增广拉格朗日函数成为二次函数,其极小点具有解析形式,
其中 \(\gamma\) 是线性化(临近)系数,\(\theta_{k, 0}^{(t)}\) 是本轮开始时局部模型的取值。
跳过全局步。 (3) 中的外层(中心节点)步仅以概率 \(1 - p\) 执行。当它被跳过时,子节点用自身的 \(\widetilde{\theta}^{(t)} = \theta_k^{(t-1)} + s \lambda_k^{(t-1)}\) 代替全局模型,
于是代价高昂的中心节点轮次——恰恰是通信瓶颈——以概率 \(p\) 被跳过。更进一步,跳步概率还可以做成* 异质感知* 的:[Zhang et al.[1]](TABLE III)给出了可达的 \(p\) 与子节点间数据分布异质程度 \(G\) (通过梯度差异有界性刻画)、(ε-)稳定点的目标精度 \(\varepsilon\) 以及 \(f, f_k\) 的 Lipschitz 常数 \(L\) 之间的关系,其中步长取 \(s = \frac{\sqrt{5}-1}{8L}\) :
子节点间的数据分布越均匀(\(G\) 越小),通信轮就可以越激进地被跳过。伪代码总结如下。
\begin{algorithm}
\caption{PseudoCode for \texttt{FedPD}}
\begin{algorithmic}
\REQUIRE step size $s = \frac{1}{\mu} > 0,$ skip probability $p \in [0, 1)$
\STATE {\bfseries Initiation:}
\STATE $\hspace{1.3em}$ {\bfseries Init server:} global parameters $\theta^{(0)} \in \mathbb{R}^d$
\STATE $\hspace{1.3em}$ {\bfseries Init clients:} local parameters$\theta_{0,k}^{(0)} \in \mathbb{R}^d,$ dual variables $\lambda_k^{(0)} \in \mathbb{R}^d,$ $\forall k \in [K]$
\FOR{each round $t = 0, 1, \cdots$}
\FOR{each client $k = 1, \cdots, K$ {\bfseries in parallel}}
\STATE $\theta_k^{(t+1)} \gets \textbf{Oracle}_k(\mathcal{L}_k(\theta_{k, 0}^{(t)}, \theta_k, \lambda_k^{(t)}), \theta_k^{(t)})$ \COMMENT{$\textbf{Oracle}_k$ can be SGD, etc.}
\STATE $\lambda_k^{(t+1)} \gets \lambda_k^{(t)} + \frac{1}{s} (\theta_k^{(t+1)} - \theta_{k, 0}^{(t)})$ \COMMENT{dual update step}
\STATE $\theta_{k, 0}^{(t+\frac{1}{2})} \gets \theta_k^{(t+1)} + s \lambda_k^{(t+1)}$
\ENDFOR
\STATE with probability $1 - p$ do global communication
\STATE $\hspace{1.3em}$ client $k$ send $\theta_{k, 0}^{(t+\frac{1}{2})}$ to server $\forall k \in [K]$
\STATE $\hspace{1.3em}$ {\bfseries Server Update:} $\theta^{(t+1)} \gets \frac{1}{K} \sum\limits_{k=1}^K \theta_{k, 0}^{(t+\frac{1}{2})}$ \COMMENT{compute global average}
\STATE $\hspace{1.3em}$ Server broadcast $\theta^{(t+1)}$ to clients $k \in [K]$
\STATE $\hspace{1.3em}$ On client $k:$ $\theta^{(t+1)}_{k,0} \gets \theta^{(t+1)}, ~ \forall k \in [K]$
\STATE with probability $p$ skip global communication:
\STATE $\hspace{1.3em}$ {\bfseries Client Update:} $\theta^{(t+1)}_{k,0} \gets \theta_{k, 0}^{(t+\frac{1}{2})}, ~ \forall k \in [K]$
\STATE $\hspace{1.3em}$ \COMMENT{On server, $\theta^{(t+1)} \gets \theta^{(t)}$}
\ENDFOR
\end{algorithmic}
\end{algorithm}参考文献