Featured image of post Why v10 fails

Why v10 fails

我们按之前的思路创造了v10并进行了实验。结果如下。

Why v10 fails

我们按之前的思路创造了v10并进行了实验。结果如下:

V9 (Adaptive Lambda) 每轮动态 Lambda 值

由于每个客户端的数据分布是固定的,因此其基于熵计算出的 lambda 在所有50轮中保持不变。

ClientData EntropyNormalized EntropyAdaptive Lambda
Client 01.90790.57435.7859
Client 11.79970.54185.4634
Client 20.60910.18341.9152
Client 31.16890.35193.5837
Client 41.72450.51915.2395

V10 (Effective Lambda) 每轮动态 Lambda 值

以下是从日志中逐轮提取的每个客户端学到的 Effective Lambda 值。

RoundClient 0Client 1Client 2Client 3Client 4
016.767022.16324.518817.347211.2946
18.22077.20439.17996.36148.9278
28.74948.76248.33747.99678.9724
38.83498.50497.92247.16628.6710
48.82618.38537.76277.38578.7035
58.53768.23307.69547.31248.6141
68.65898.19567.65177.30038.6180
78.53528.24627.61377.17128.5862
88.44558.15857.62307.51598.4968
98.64498.23367.62397.27528.4587
108.49528.18527.58567.22708.4712
……
158.52118.22227.55957.27338.4032
……
208.48138.36227.52087.31968.3464
……
308.66228.50667.49487.42508.2788
……
408.84328.36327.57897.78878.3279
……
498.96578.67777.58077.76678.2676

分析

  1. V9 (Adaptive Lambda) - 基于熵的静态策略:

    • V9 在每轮开始时为每个客户端计算一个 lambda。因为客户端的数据集在整个过程中是固定的,所以每个客户端的 lambda 值在所有50轮中都是恒定的。
    • 这是一个先验的、基于数据特征的调整。数据分布越不均衡(熵越低),lambda 值越小,给予模型更大的自由度来适应本地数据。反之,数据越均衡,lambda 值越大,施加更强的对齐约束。
    • Client 2 的数据熵最低,因此获得了最小的 lambda (1.92),而 Client 0 的数据熵最高,获得了最大的 lambda (5.79)。这种策略在实验中被证明有效。
  2. V10 (Effective Lambda) - 动态学习的策略:

    • V10 的 Effective Lambda 是在每个本地 epoch 训练后学习到的结果,反映了模型在该时间点对本地损失和对齐损失的相对置信度。
    • 这是一个动态变化的调整。理论上它应该能找到比 V9 的固定规则更优的平衡。
    • 从数据看:
      • V10 计算出的 Effective Lambda 普遍偏高,经常在 8.0 以上,甚至在初期达到 17 和 22。
      • Effective Lambda 的值在不同轮次之间剧烈波动,没有收敛到稳定值的趋势。例如,Client 0 的值从 16.7 -> 8.2 -> 8.7 -> 8.8 -> 8.5 … 持续震荡。用于学习 sigma 参数的优化过程不稳定,很可能是由于学习率设置不当导致的。

我将sigma的lr设置成了一般lr的0.01倍继续实验,结果如下:

评价指标OursV9OursV10结论
最终准确率 (第99轮)32.89%23.94%V9 胜出。V9的性能显著优于V10。
Lambda 策略基于数据熵计算从梯度中动态学习,每个客户端在每一轮都会更新。这是两种策略的根本区别
Lambda 值值域为 [13.5, 14.9]从1.0开始,缓慢增长到 [8.5, 10.3] 的范围。V9从一开始就采用了非常强的对齐。V10也在向高lambda学习,但从未达到V9的水平。
稳定性稳定(设计如此)Effective Lambda平滑增长,没有出现上次的爆炸或剧烈震荡对sigma_lr的修改解决了V10的优化不稳定性问题

详细数据节选

RoundV9 Test Acc.V10 Test Acc.V9 Lambda (Client 0/4)V10 Eff. Lambda (Client 0/4)
03.86%1.11%13.51 / 14.901.04 / 1.07
910.12%8.25%13.51 / 14.901.47 / 1.89
3017.89%13.42%13.51 / 14.905.68 / 6.19
6026.17%19.21%13.51 / 14.908.24 / 9.49
9932.89%23.94%13.51 / 14.908.53 / 10.38

这次的实验结果表明:

  1. 对比上次的日志,这次V10的Effective Lambda表现得比较稳定。它从一个无偏的初始值(约1.0)开始,随着训练的进行而平滑、稳定地增长。
  2. 然而,v10仍然落后于v9。

我们不由得怀疑:为什么 V10 会失败?

保留所有权。
comments powered by Disqus