mirror of
https://github.com/zoo-apps/papers.git
synced 2026-10-30 14:56:54 +00:00
111 lines
3.8 KiB
TeX
111 lines
3.8 KiB
TeX
\section{Byzantine-Robust Aggregation}
|
|
|
|
|
|
\subsection{Threat Model}
|
|
|
|
In decentralized DSO, up to $f < \frac{n}{2}$ nodes may be Byzantine (arbitrary malicious behavior):
|
|
\begin{itemize}
|
|
\item \textbf{Data poisoning:} Submit adversarially crafted embeddings
|
|
\item \textbf{Sybil attacks:} Multiple identities to amplify influence
|
|
\item \textbf{Gradient inversion:} Attempt to infer private training data
|
|
\end{itemize}
|
|
|
|
\textbf{Assumption:} Honest majority ($f < \frac{n}{2}$), which holds under proof-of-stake with slashing~\cite{buterin2017casper}.
|
|
|
|
\subsection{Median Aggregation}
|
|
|
|
Dimension-wise median provides optimal Byzantine resilience~\cite{yin2018median}:
|
|
|
|
\begin{equation}
|
|
\mathbf{e}_{\text{agg}}[d] = \text{Median}(\{\mathbf{e}_1[d], \ldots, \mathbf{e}_n[d]\}), \quad \forall d \in [1, 7680]
|
|
\end{equation}
|
|
|
|
\textbf{Theorem (Byzantine Tolerance):} If $f < \frac{n}{2}$ nodes are Byzantine, median aggregation guarantees:
|
|
\begin{equation}
|
|
||\mathbf{e}_{\text{agg}} - \mathbf{e}_{\text{honest-avg}}||_2 \leq O\left(\frac{f}{n}\right) \cdot \text{diam}(\mathcal{E})
|
|
\end{equation}
|
|
|
|
where $\text{diam}(\mathcal{E})$ is maximum distance between embeddings (bounded by $2\sqrt{2}$ for unit sphere).
|
|
|
|
\textbf{Proof Sketch:} For each dimension, at most $f$ values are adversarial. When $f < \frac{n}{2}$, median selects from honest values. Worst case: adversarial values push median toward boundary, but distance is bounded by diameter.
|
|
|
|
\subsection{Implementation}
|
|
|
|
\textbf{Rust Implementation (Hanzo Network):}
|
|
|
|
\begin{lstlisting}[language=Rust, caption=Byzantine-robust median aggregation, basicstyle=\small\ttfamily]
|
|
pub fn aggregate_experiences(
|
|
node_embeddings: Vec<Vec<f32>>, // N x 7680
|
|
) -> Vec<f32> {
|
|
let n = node_embeddings.len();
|
|
let dim = 7680;
|
|
|
|
let mut aggregated = vec![0.0; dim];
|
|
|
|
for d in 0..dim {
|
|
let mut values: Vec<f32> = node_embeddings
|
|
.iter()
|
|
.map(|emb| emb[d])
|
|
.collect();
|
|
|
|
// Sort O(n log n) per dimension
|
|
values.sort_by(|a, b| a.partial_cmp(b).unwrap());
|
|
|
|
// Compute median
|
|
let median = if n % 2 == 0 {
|
|
(values[n/2 - 1] + values[n/2]) / 2.0
|
|
} else {
|
|
values[n/2]
|
|
};
|
|
|
|
aggregated[d] = median;
|
|
}
|
|
|
|
// L2 normalize to unit sphere
|
|
let norm: f32 = aggregated.iter()
|
|
.map(|x| x * x)
|
|
.sum::<f32>()
|
|
.sqrt();
|
|
aggregated.iter_mut().for_each(|x| *x /= norm);
|
|
|
|
aggregated
|
|
}
|
|
\end{lstlisting}
|
|
|
|
\textbf{Complexity Analysis:}
|
|
\begin{itemize}
|
|
\item \textbf{Time:} $O(d \cdot n \log n) = O(7680 \cdot n \log n)$
|
|
\item \textbf{Space:} $O(n \cdot d) = O(n \cdot 7680)$ for storing embeddings
|
|
\end{itemize}
|
|
|
|
For typical $n=100$ nodes: $7680 \times 100 \times \log_2(100) \approx 5.1M$ operations, executing in $<50$ms on modern CPU.
|
|
|
|
\subsection{Robustness Evaluation}
|
|
|
|
We simulate Byzantine attacks with varying adversarial fractions $\alpha = \frac{f}{n}$:
|
|
|
|
\begin{table}[h]
|
|
\centering
|
|
\caption{Accuracy under Byzantine attacks (n=100 nodes)}
|
|
\begin{tabular}{lrrr}
|
|
\toprule
|
|
\textbf{Attack Strength ($\alpha$)} & \textbf{Clean Acc.} & \textbf{Attacked Acc.} & \textbf{Retention} \\
|
|
\midrule
|
|
0\% (no attack) & 94.7\% & 94.7\% & 100\% \\
|
|
10\% Byzantine & 94.7\% & 94.1\% & 99.4\% \\
|
|
20\% Byzantine & 94.7\% & 93.5\% & 98.7\% \\
|
|
30\% Byzantine & 94.7\% & 92.1\% & 97.3\% \\
|
|
40\% Byzantine & 94.7\% & 89.7\% & 94.7\% \\
|
|
\textbf{49\% Byzantine} & \textbf{94.7\%} & \textbf{87.3\%} & \textbf{92.2\%} \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\end{table}
|
|
|
|
\textbf{Key Findings:}
|
|
\begin{itemize}
|
|
\item Median aggregation maintains $>90\%$ accuracy up to 40\% attack
|
|
\item Even at theoretical limit (49\% Byzantine), retains 92\% of clean performance
|
|
\item Superior to mean aggregation (70\% retention at 30\% attack)
|
|
\end{itemize}
|
|
|