gpt4 book ai didi

tensorflow - 使用 tensorflowjs 进行联合学习

转载 作者:行者123 更新时间:2023-12-04 11:41:43 25 4
gpt4 key购买 nike

我正在使用 tensorflowjs 实现联邦学习。但我有点卡在联邦平均过程中。这个想法很简单:从多个客户端获取更新的权重并在服务器中对其进行平均。

我已经在浏览器上训练了一个模型,通过 model.getWeights() 方法获得了更新的权重,并将权重发送到服务器进行平均。


//get weights from multiple clients(happens i client-side)
w1 = model.getWeights(); //weights from client 1
w2 = model.getWeights(); //weights from client 2


//calculate average of the weights(server-side)
var mean_weights= [];
let length = w1.length; // length of all weights_array is same
for(var i=0; i<length; i++){
let sum = w1[i].add(w2[i]);
let mean = sum.divide(2); //got confused here, how to calculate mean of tensors ??
mean_weights.push(mean);
}

//apply updates to the model(both client-side and server-side)
model.setWeights(mean_weights);

所以我的问题是:
如何计算张量数组的平均值?
另外,这是通过 tensorflowjs 执行联合平均的正确方法吗?

最佳答案

是的,但要小心。你可以用 tf.mean 平均两个张量喜欢 https://stackoverflow.com/users/5069957/edkeveked说过。但是,请记住 axis=0应该缩短为 0在 JavaScript 中。
只是以第二种方式重写他的代码:

const x = tf.tensor([1, 2, 3, 2, 3, 4], [2, 3]);
x.mean(0).print()
然而,你问你做得是否正确,这取决于你是否在进行平均。滚动平均值存在问题。
例子:
如果你平均 (10, 20) 然后 30,你得到的数 (22.5) 与平均 (20, 30) 然后 10 (17.5),这当然不同于同时平均所有三个,这会给你20.
一旦计算出平均值,它们就不再遵循与顺序无关的原则。它是删除关联属性的除法部分。所以你需要:
答:存储所有模型权重并根据所有以前的模型计算每次的新平均值
或者
乙:为您的联合平均值添加一个加权系统,以便更新的模型不会显着影响系统。
哪个有意义?
我推荐 在您的情况下:
  • 不想或不能存储曾经提交的每个模型和重量。
  • 您知道某些模型已经看到了更多有效数据,与盲模型相比,应该适当加权。

  • 您可以计算加权平均值,调整现有模型与传入模型的分母。
    在 JavaScript 中,你可以做一些简单的事情来计算两个值之间的加权平均值:
    const modelVal1 = 0
    const modelVal2 = 1

    const weight1 = 0.5
    const weight2 = 1 - weight1


    const average = (modelVal1 * weight1) + (modelVal2 * weight2)
    上面的代码是您常用的均匀加权平均值,但是当您调整 weight1 时,您正在重新平衡比例以显着调整结果以支持 modelVal1modelVal2 .
    显然,您需要将我展示的 JavaScript 转换为张量数学函数,但这是微不足道的。
    在联邦学习中经常使用权重衰减的迭代平均(或加权平均)。见 Iterate averaging as regularization for stochastic gradient descent , 和 Server Averaging for Federated Learning .

    关于tensorflow - 使用 tensorflowjs 进行联合学习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55788696/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com