HART-DGD 是一个创新的分布式梯度下降算法,专门设计用于在异构多域多智能体网络中实现鲁棒的分布式优化,即使面对复杂的复合攻击场景(拜占庭攻击、漂移攻击、伪装攻击)也能保持稳定收敛。
传统分布式梯度下降(DGD)算法在面对恶意攻击时存在严重缺陷:
- ❌ 盲目信任所有邻居节点,无法识别攻击者
- ❌ 固定策略,无法适应动态变化的攻击模式
- ❌ 同质假设,无法处理异构网络的特殊性
- ❌ 防御过度,正常情况下也付出高昂计算代价
HART-DGD 融合四大创新机制,实现智能防御与高效收敛的完美平衡:
-
🎯 事件触发检测(Event-Triggered Detection)
- 实时识别攻击,按需启动防御
- 正常情况下保持快速收敛
-
🏗️ 双层共识架构(Dual-Layer Consensus)
- 域内快速共识 + 跨域保守融合
- 防止恶意信息在域间传播
-
⚖️ 自适应置信度权重(Adaptive Trust Weighting)
- 动态学习节点可靠性
- 双向更新机制(奖励+惩罚)
-
🧠 元学习学习率(Meta-Learning Learning Rate)
- 根据梯度震荡自适应调整
- 加速收敛并提高稳定性
Python >= 3.8
networkx >= 2.8
matplotlib >= 3.5
numpy >= 1.21
scipy >= 1.7# 运行完整实验(对比HART-DGD vs 传统DGD)
python main.py
# 运行快速验证实验
python basic_experiment.py在20节点网络、20%节点遭受复合攻击的场景下:
网络配置:
- 总节点数:20
- 总边数:66
- 攻击节点:4个(2个拜占庭 + 1个漂移 + 1个伪装)
- 攻击比例:20%
性能对比:
| 算法 | 平均误差 | 最大误差 | 收敛率 | 性能提升 |
|---|---|---|---|---|
| 传统DGD | ~3.0×10³⁰ | ~3.0×10³² | 0% | - |
| HART-DGD | 0.71 | 0.95 | 100% | ~10²⁹倍↑ |
✅ 算法稳定性 - HART-DGD完全收敛,传统DGD灾难性发散 ✅ 误差控制 - 最终误差仅0.71,传统DGD数值爆炸至10³⁰量级 ✅ 收敛保证 - 所有正常节点100%收敛,传统DGD完全失效 ✅ 抗攻击能力 - 在20%节点攻击下仍能稳定运行
关键发现:传统DGD在伪装攻击激活后(第30轮)立即发散,而HART-DGD始终保持稳定!
关键观察:
- 左图(HART-DGD):参数在合理范围(0-5)内稳定收敛
- 右图(传统DGD):第30轮伪装攻击激活后数值爆炸,对数坐标下参数值达到10³²量级
关键观察:
- 左图:HART-DGD误差快速下降至<1,传统DGD在第30轮后误差爆炸
- 右图:最终误差对比显示HART-DGD改进幅度达到**~10²⁹倍**(对数坐标)
关键观察:
- 左图:网络中80%节点正常,20%节点受攻击(2拜占庭+1漂移+1伪装)
- 右图:在平均误差、最大误差和收敛率三个维度,HART-DGD全面优于传统DGD
-
伪装攻击的隐蔽性
- 前30轮:攻击节点行为正常,积累信任
- 第30轮后:突然发送恶意梯度(幅度×8)
-
传统DGD的盲点
# 传统DGD的更新规则 consensus = mean([x_self] + [x_neighbor for all neighbors]) x_new = consensus - lr × gradient
- 无法识别伪装节点
- 恶意梯度被平等对待
- 误差快速传播并放大
-
数值爆炸机制
第30轮:正常收敛(误差~0.5) 第31轮:伪装激活,恶意梯度注入 第32轮:误差×10 第50轮:误差×10⁵ 第100轮:误差×10²⁰ 第150轮:误差×10³⁰(数值溢出边缘)
-
事件触发检测(第30轮立即发现异常)
deviation = |x_node - median(neighbors)| if deviation > 2.5 × MAD: # 触发防御! enable_robust_consensus()
-
双层共识隔离
- 域内:使用鲁棒平均(trim极值)
- 跨域:使用中位数(完全免疫异常值)
-
置信度惩罚
- 检测到异常后,降低该节点权重
- 防止恶意信息继续传播
HART-DGD/
│
├── README.md # 项目说明文档
├── requirements.txt # 依赖库列表
├── main.py # 主程序入口
│
├── network.py # 异构网络构建
├── attacks.py # 扩展攻击模型
│ ├── Byzantine Attack # 拜占庭攻击
│ ├── Drift Attack # 漂移攻击
│ └── Camouflage Attack # 伪装攻击
│
├── core_hybrid_algorithm.py # HART-DGD核心实现
├── core_hybrid_algorithm_enhanced.py # 增强版HART-DGD
├── baseline.py # 传统DGD基准
│
├── utils_evaluation.py # 性能评估工具
├── utils_visualization.py # 可视化工具
│
├── experiment_config.py # 实验配置
├── basic_experiment.py # 快速验证实验
│
└── results/ # 实验结果
└── figures/ # 可视化图片
├── group1_convergence_comparison.png
├── group2_error_analysis.png
└── group3_scenario_metrics.png
Algorithm: HART-DGD
Input: 网络G, 局部目标{aᵢ}, 迭代次数T
Output: 收敛解x*
1: 初始化 x⁰, confidence c⁰
2: for t = 1 to T do
3: for each node i do
4: // 【创新1】事件触发检测
5: if DetectAttack(i, t) then
6: // 【创新2】双层共识(防御模式)
7: x̃ᵢᵗ ← TwoStageConsensus(i, t)
8: αᵢᵗ ← MetaLearningLR(i, t) × 0.5
9: else
10: // 【创新3】置信度加权(快速模式)
11: x̃ᵢᵗ ← ConfidenceWeightedConsensus(i, t)
12: αᵢᵗ ← MetaLearningLR(i, t)
13: end if
14: // 参数更新
15: xᵢᵗ⁺¹ ← x̃ᵢᵗ - αᵢᵗ ∇fᵢ(xᵢᵗ)
16: // 【创新3】双向置信度更新
17: UpdateConfidence(i, t)
18: end for
19: end for基于**中位数绝对偏差(MAD)**的异常检测:
median_val = median([xⱼ for j in neighbors])
mad = median([|xⱼ - median_val| for j in neighbors])
is_attacked = |xᵢ - median_val| > 2.5 × (mad + ε)先域内鲁棒共识,再跨域保守融合:
# 阶段1:域内共识(trim 20%极值)
intra_consensus = robust_average(same_domain_neighbors)
# 阶段2:跨域融合(中位数+动态权重)
inter_consensus = median(cross_domain_neighbors)
final = (1-β) × intra + β × inter # β自适应调整动态评估节点可靠性:
deviation = |xᵢ - median(neighbors)|
if deviation < threshold:
confidence[i] *= 1.05 # 奖励
else:
confidence[i] *= exp(-0.1×deviation) # 惩罚根据梯度震荡自适应:
oscillation = mean([|∇fᵢ(t) - ∇fᵢ(t-1)| for t in recent_history])
if oscillation > 1.0: # 震荡大 → 减速
lr = base_lr × 0.5
elif oscillation < 0.1: # 稳定 → 加速
lr = base_lr × 1.2
else:
lr = base_lrfrom core_hybrid_algorithm import HybridRobustDGD
from network import create_heterogeneous_network
from attacks import simulate_advanced_attack
import numpy as np
# 1. 创建异构网络
G = create_heterogeneous_network(
num_agents=20,
domain_ratio=0.5,
intra_prob=0.5,
inter_prob=0.2
)
# 2. 设置局部目标
a_values = {n: np.random.uniform(1, 5) for n in G.nodes()}
# 3. 模拟攻击
G_attacked, attack_info = simulate_advanced_attack(
G,
node_attack_ratio=0.25,
byzantine_ratio=0.4,
drift_ratio=0.3,
camouflage_ratio=0.3
)
# 4. 运行HART-DGD
hart_algo = HybridRobustDGD(
G_attacked,
a_values,
attack_info,
lr_init=0.1,
num_iters=150
)
history, confidence = hart_algo.run()
# 5. 评估结果
from utils_evaluation import evaluate_convergence
errors, avg_errors, overall_error = evaluate_convergence(
history, a_values, G_attacked
)
print(f"最终误差: {overall_error:.4f}")python main.py预期输出:
======================================================================
混合鲁棒分布式梯度下降 - 完整实验
======================================================================
网络: 20节点, 66边
攻击: 2拜占庭, 1漂移, 1伪装
运行算法...
评估结果...
混合算法: 0.7108
传统DGD: 3017079800430312869084369256448.0000
性能提升: 100.0%
生成可视化...
✓ 图组1已保存: group1_convergence_comparison.png
✓ 图组2已保存: group2_error_analysis.png
✓ 图组3已保存: group3_scenario_metrics.png
实验完成!
| 特性 | 传统DGD | Trimmed-DGD | Median-DGD | HART-DGD |
|---|---|---|---|---|
| 攻击检测 | ❌ | ❌ | ❌ | ✅ 事件触发 |
| 异构网络 | ❌ | ❌ | ❌ | ✅ 双层共识 |
| 自适应信任 | ❌ | ❌ | ❌ | ✅ 动态置信度 |
| 学习率调整 | 固定 | 固定 | 固定 | ✅ 元学习 |
| 数值稳定性 | ❌ 发散 | 部分 | 部分 | ✅ 完全稳定 |
| 伪装攻击防御 | ❌ | ❌ | ❌ | ✅ 实时检测 |
- 扩展到非凸优化:当前理论主要针对凸函数
- 时变网络:动态拓扑下的收敛性分析
- Byzantine-resilient 最优性:是否达到理论下界?
- 隐私保护:与差分隐私的结合
本项目的开发得到了以下支持:
- 开源工具:NetworkX, Matplotlib, NumPy


