赞
踩
注:图床使用的是github,所以如果图片加载不出来,请打开小飞机。
这是在B站看的一则视频。
内容是【人工智能前沿学生论坛 第十期】
清华大学博三的张家绮学长做的关于一个分布式优化算法及其应用
的分享
内容主要分四个小节
这里对前面两小节做了一个自己的记录,主要内容为分布式优化算法的背景和研究现状。
通过这篇博文可以简单的了解一下
首先来理解一下,多自主体系统(Multi-Agent System)
又可以叫做多智能体系统。
关于自主体的概念可能会比较广,例如,
TPU/CPU/服务器
可以看做一个自主体(agent)(张量处理器(英语:tensor processing unit,缩写:TPU)是Google为机器学习全定制的人工智能加速器专用集成电路,专为Google的深度学习框架TensorFlow而设计。)
自主体之间通过协作
来完成一个给定的任务
。
这里的协作
可以理解为互相之间进行通信或者交换信息。
这里的给定的任务
在机器学习中可以理解为优化神经网络的任务。它可以理解为一个分布式优化问题
。
在这个分布式优化问题中
,单个自主体智能获得局部信息,自主体需要通过相互交换信息来实现全局目标。
可以看到分布式优化算法有着许多的应用背景,比如在控制领域
:
以无人机编队举例来说,
如果一个无人机编队想要排成一个五角星队形,而他没有一个中心控制节点。
那么一架无人机想要控制自己的位置,可以通过他身边邻近的无人机的位置信息来做出决策,决定自己的位置。
分布式优化算法近年来机器学习和人工智能领域
得到了广泛的运用:
比如以这个边缘计算为例:
阿里云最近发布的这个边缘计算产品(Link Edge)被誉为物联网的下一个风口
它的每一个终端节点都不靠近数据中心,因此它的每一个终端节点都必须能够自主的做出决策
。
这就很符合分布式优化算法的应用场景。
在机器学习的训练
中,分布式优化也非常常见。
目前的神经网络,机器学习等对计算资源的消耗比较高。
单个处理器往往无法解决。我们一般会采用多个GPU或多个CPU的方式来加速计算。
可以看到用多个GPU,或多个CPU分布式并行的进行计算可以大幅的减少计算的时间。
所谓分布式优化,
我们的目的是优化。比如我们要优化一个神经网络。
但我们选择的方式是一种分布式处理方式。
为什么要采用这种方式呢?有两方面的原因:
一个是实际物理环境中的约束
这个在控制领域比较常见,比如前面所说的无人机编队。
另一个是为了加速优化过程
这个在机器学习过程中比较常见
前面所说的多自主体系统(Multi-Agent System)
就是分布式优化算法的实现载体及应用对象。
分布式优化算法的设计目标以及研究核心可以总结为四个字多 快 好 省
多:自主体个数多
比如在无人机编队中,分布式优化算法需要影响无人机编队中的每一架无人机
比如在机器学习中,我们可以用几十个,几百个甚至上千个CPU GPU来加速训练
快:优化收敛速度要快
比如在机器学习中,我们使用分布式优化算法的目的就是为了让训练速度更快
好:算法应用场景多
这个应用场景一会会介绍。这里比如说一些agent之间通信可能是多边的,或者是单向的。
省:通信等资源消耗少
因为分布式优化算法必然会涉及到许多自主体,所以单个自主不能消耗过多的资源,不然从总体上会导致不必要的资源消耗太大。
分布式优化算法主要解决这样一个形式的优化问题:类似于一些子目标函数的求和形式。
例如机器学习中,每个 f ( x ) f(x) f(x)可能对应一个样本的损失函数。
但与传统情况不同的是,我们这里的每个自主体都可能只知道其自身的子目标函数,
其中每个自主个体都有一个其自身的副本 x i x_i xi这个副本是不能全局共享的。
我们可以利用这个图来表示这个主体之间的通信拓扑:
每个自主体对应一个节点
两个自主体可以交换信息对应图中两个节点存在一条边
为什么不能两两互相通信呢?因为当网络非常大的时候,两两互相通信对资源消耗是非常大的,比如你有 n n n台处理机,
那么在来两两互相通信的时候你需要消耗 n ( n − 1 ) 2 \frac{n(n-1)}2 2n(n−1) 次资源。
为了降低这种资源消耗,我们设计每个个体只允许与它的邻居(它的相邻节点)进行通信
当前分布式优化算法主要分成以下几类:
其中左边黑色字体代表相对简单的情况,蓝色字体代表相对困难的情况。
在有中心节点的情况中:
中心节点就是可以和其他所有节点都能通信的节点。我们一般把这个中心节点叫做master
如在机器学习中,每个节点都可以将自己的梯度信息发送给中心节点,这样中心节点就可以获得所有节点的梯度信息。然后再由中心节点来修改决策变量,并将修改好的决策变量发送给各个服务器。
然后不断重复上述过程来达到加速计算的目的。
在没有中心节点的情况:
整个服务器拓扑类似于一个环状。
每个服务器智能将自己的梯度信息发送给自己的邻居,我们一般发送一个状态,状态是指自己对决策变量副本的一个估计,然后他接收邻居的状态,再根据邻居的状态和自身的梯度来更新自己的一个状态。
可以发现,无中心节点的情况每个节点只需要跟自己的邻居交互。
第一小节主要内容为背景介绍,主要从当前的一些应用场景去了解一下什么多智能体系统,以及在以多智能体系统为载体来运用分布式优化算法。写的较为通俗易懂。
第二小节涉及到一些偏专业的知识,在此并不做太过深入的了解。
总体来说第二小节了解三方面的内容,
小结
中的PPT图片);算法的应用场景与出处。小结
中的PPT图片);Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。