3.4 联邦训练的模型效果
本节通过实验来评估联邦训练的模型效果,将分别评测模型在训练阶段和推断阶段的性能。
3.4.1 联邦训练与集中式训练的效果对比
为了对比联邦训练和集中式训练的效果,我们分别按照下面的参数来设置配置文件。
• 联邦训练配置:一共10台客户端设备(no_models=10),每一轮任意挑选其中的5台参与训练(k=5),每一次本地训练迭代次数为3次(local_epochs=3),全局迭代次数为20次(global_epochs=20)。
• 集中式训练配置:不需要单独编写集中式训练代码,只需要修改联邦学习配置便可使其等价于集中式训练。具体来说,将客户端设备no_models和每一轮挑选的参与训练设备数k都设为1即可。这样,只有1台设备参与的联邦训练等价于集中式训练。同时,将本地迭代次数设置为1(local_epochs=1)。其余参数配置信息与联邦学习训练一致。
图3-5展示了两种不同的训练方式在cifar10图像分类上的效果对比,可以看到,联邦学习的训练效果与中心化训练的效果基本一样。
图3-5 两种训练方式经过20轮迭代后的效果对比,左图是准确度对比,右图是损失函数值对比
3.4.2 联邦模型与单点训练模型的对比
比较模型在推断阶段的性能,如图3-6所示:单点训练模型指的是在某一个单一客户端Ci,利用其本地数据Di进行本地迭代训练的模型,我们分别任意挑选其中的五个客户端来单独训练;联邦训练中分别设置不同的k值,表示每一次本地迭代训练,我们会从所有客户端中挑选k个客户端来进行。在本实验中,分别设置了k=3和k=6两个值。
图3-6 联邦训练后的模型与单点训练的模型在推断阶段的性能比较
在图3-6中,我们看到单点训练的模型效果(蓝色条)明显要低于联邦训练的模型效果(绿色条和红色条),这说明仅通过单个客户端的数据,不能很好地学习到数据的全局分布特性,模型的泛化能力较差。此外,每一轮参与联邦训练的客户端数目(k值)不同,其性能也会有一定的差别,k值越大,每一轮参与训练的客户端数目越多,性能越好,但每一轮的完成时间也会相对较长。