分布式机器学习、联邦学习与多智能体有何异同及内在联系?

摘要:最近这三个方面的论文都读过,这里写一篇博客归纳一下,以方便搞这几个领域的其他童鞋入门。传统的分布式机器学习已经被研究十几年了,目前各大顶会上的分布式机器学习主要是数学味道很浓的分布式数值优化算法。而联邦学习可以看做一种特殊的分布式学习,它有
1 分布式机器学习、联邦学习、多智能体介绍 最近这三个方面的论文都读过,这里写一篇博客归纳一下,以方便搞这几个领域的其他童鞋入门。我们先来介绍以下这三种机器学习范式的基本概念。 1.1 分布式机器学习介绍 分布式机器学习(distributed machine learning),是指利用多个计算/任务节点(Worker)协同训练一个全局的机器学习/深度学习模型(由主节点(Master)调度)。需要注意的是,分布式机器学习和传统的HPC领域不太一样。传统的HPC领域主要是计算密集型,以提高加速比为主要目标。而分布式机器学习还兼具数据密集型特性,还会面临训练数据大(单机存不下)、模型规模大的问题。此外,在分布式机器学习也需要更多地关注通信问题。对于计算量大、训练数据量大、模型规模大这三个问题,分布式机器学习可以采用以下手段进行解决: 1)对于计算量大的问题,分布式多机并行运算可以基本解决。不过需要与传统HPC中的共享内存式的多线程并行运算(如OpenMP)以及CPU-GPU计算架构做区分,这两种单机的计算模式我们一般称为计算并行)。 2)对于训练数据大的问题,需要将数据进行划分,并分配到多个工作节点上进行训练,这种技巧一般被称为数据并行。每个工作节点会根据局部数据训练出一个子模型,并且会按照一定的规律和其他工作节点进行通信(通信的内容主要是子模型参数或者参数更新),以保证最终可以有效整合来自各个工作节点的训练结果并得到全局的机器学习模型。 如果是训练数据的样本量比较大,则需要对数据按照样本进行划分,我们称之为“数据样本划分”,按实现方法可分为“随机采样法”和“置乱切分法”。 如果训练数据的维度比较高,还可以对数据按照维度进行划分,我们称之为“数据维度划分”。相比于数据样本划分,数据维度划分与模型性质和优化方法的耦合度较高。 3)对于模型规模大的问题,则需要对模型进行划分,并且分配到不同的工作节点上进行训练,这种技巧一般被称为模型并行。与数据并行不同,模型并行的框架下各个子模型之间的依赖关系非常强,因为某个子模型的输出可能是另外一个子模型的输入,如果不进行中间计算结果的通信,则无法完成整个模型训练。因此,一般而言,模型并行相比数据并行对通信的要求更高。 1.2 联邦学习介绍 联邦学习是一种特殊的采用数据并行的分布式机器学习(可分为横向联邦学习(对应分布式机器学习中的数据样本划分)和纵向联邦学习(对应分布式机器学习中的数据维度划分)),除了关注传统分布式机器学习的算法、通信、收敛率等问题之外,还要关注用户的数据隐私和容错性问题(因为用户终端是用户手机或物联网设备,很可能随时挂掉)。 其设计目标是在保障大个人数据隐私、保证合法合规的前提下,在多参与方(可能是现实中的多个机构)或多计算结点之间协同学习到一个更好的全局模型。联邦学习的数据不共享,(加密后的)参数可共享,它可以基于server-client主从的中心化(centralized)结构,也可以是去中心化(decentralized)结构。 形式化地,传统联邦学习的优化目标函数可以写为[1]: \[\begin{aligned} f(w) &= \sum_{k=1}^K \frac{n_k}{n} F_k(w) \\ F_k(w) &= \frac{1}{n_k}\sum_{i = 1}^{n_k}\mathcal{l}(h(x_i; w), y_i) \end{aligned} \] 其中\(K\)为总节点个数,\(n_k\)为低\(k\)个节点的样本个数。联邦学习的训练过程中,会现将数据按照Non-IID划分到各client节点,然后再各client节点的数据划分training/validation/test数据集。而对于传统联邦学习而言,每个client都会使用全局模型\(w\)进行测试。 PS:关于联邦学习的模型评估,这里补充一下:如果按照真实场景模拟的话,确实是每个client有单独的测试集(可以参见杨强的《联邦学习》[2]4.2.3节),但是我们常常看到有论文在这里做了简化,先划分好training/valid/test数据集,然后再将training数据集拆分到各个client,而validation和test数据集放server端,这是为什么呢?原来,当采用一个全局模型对各个客户端进行评估,且当每个client评估指标的权值若按照测试集样本数设置时,二者是等价的,比如在评价指标是准确率的情况下。
阅读全文