基于自组织智能网络的离散序列在线预测方法
2022-08-22陈小刚董济铭
桂 剑,马 斌,陈小刚,董济铭
(中国科学院上海高等研究院,上海 200120)
1 引言
随着人工智能、物联网的发展,无人化智能系统识别外部物理环境的体系结构由过去的少量传感器、单服务器主从架构,向多传感器、分布式服务器架构发展。近年来更是有传感器矩阵化、计算架构去中心化、系统自组织自适应化的发展趋势。
传感器矩阵化,就是在环境分布设置大量的传感器,并通过态势热力图构建算法[1],可以把大量的感知数据转化为可视化的热力图,作为实时大数据融合的基础。计算架构去中心化,就是通过去中心化的架构设计和算法设计,提升系统整体抗毁能力。罗阳[2]探索了去中心化的卫星通信系统,证明去中心化对未来卫星系统组织运用模式有极大参考价值。系统自组织自适应化,是为了满足随遇接入的需要,使系统对新接入的设备、服务或计算节点动态规划组织结构、兼容新老节点,使得系统稳定性更健壮、寿命更长。唐胜景[3]提出,智能化分布式协同作战体系需要发展低成本、模块化装备研制技术,发展面向战场大数据的集群认知与云决策技术,发展自适应、去中心的集群动态组网技术。
把智能传感器、服务器都分别看作一个自主工作的智能节点,用复杂体系理论来使系统内各智能自组织成智能网络并协同工作,这样就形成了一个自组织智能网络。显然,自组织智能网络满足上文所述的三个发展趋势,当待部署节点数量巨大的情况下具备十分便利的集成优势。这与刘峰[4]提出的城市大脑模型异曲同工,本文重点研究其感知部分,与之不同之处在于将传感器群、云机器感知融合、类脑视听等感知系统当作一个整体,用自组织理论解决问题。
在自组织智能网络中,前端智能传感器可以把连续的信号量,通过滤波算法转化为由状态或事件编号组成的离散序列。自组织系统通过识别和预测离散序列,可以感知认知外界的状态和变化,从而为决策系统提供依据、关联相关事件、分类环境信息。
常见的离散序列识别预测问题,包括全年能源消耗、销售额走势、心电图、音乐、股票指数走势等。杨海民[5]等指出常用的预测方法包括:Box-Jenkins方法[6];机器学习方法,以及基于参数模型的在线时间序列预测方法ARMA-ONS[7]。冯霞[8]结合遗传算法与BP神经网络预测机场安检旅客流量。ZHANG[9]等探索了决策树、K最邻近元回归等算法预测序列以识别个人音乐情感。邓玉婧[10]等采用神经网络算法RNN预测航班客座率。这些算法大多采用离线训练,并需要大量的算力,使得在低算力高存储性能的设备上效果不佳。另一方面,当数据输入发生变化时,预测准确率(PSR)会大大降低;对于缺少在线训练能力的算法,预测准确率(PSR)无法有效提高。受此启发,思考通过将多个低算力高存储性能的设备连接起来,应用复杂体系理论构造自组织网络来解决离散序列的在线预测问题。
张维明[11]提出了一种复杂体系架构设计新范式,为如何实现一个开放的复杂体系仿真软件提供了设计指导。受复杂性科学的启发,多智能体协同的方式可以用空间复杂度换时间复杂度,用组成架构的变化应对输入数据特征的变化,实现在线学习。因此,本文采用多智能体网络构造了自组织智能网络动态预测模型,设计并实现了一种新型的多智能体仿真服务器和自组织可视化实验环境,为多智能体算法仿真和验证提供了实验平台。算法创新点在于通过预测驱动体系自组织的协同工作,适应多智能体网络部署。
2 问题描述
2.1 基于自组织智能网络的离散序列在线预测
“如何让系统自组织分析输入信号序列,使得系统有意识地‘发现’规律?”是一个难题。单靠神经网络算法,往往只能预先编译好程序应对特定的问题。自组织智能网络中,对于随机输入的信号序列,依照给定采样率对信号进行采样,通过滤波算法或者神经网络算法转将信号按状态编号转化为离散序列。这样,基于自组织智能网络可以把这个问题分解为“每个智能体节点在各自的认知维度、层级,实时输出对上级输出尽可能准确的预测值”。智能节点通过实时训练识别出具有周期性规律的序列,作为“发现规律”的依据;并将训练模型存储作为记忆供以后使用。
2.2 问题的不确定性
虽然一个有规律的输入信号,其离散序列会呈现周期特征;但是对于复杂系统,要考虑到中途输入信号被更改的情况,此时离散序列也会发生变化。仿真系统允许用户在系统运行过程中随时更改输入信号,自组织预测系统将应对变化自适应:调整组织结构、应对变化、经过实时学习再次预测出尽可能准确的结果。
3 基于自组织智能网络的离散序列预测算法
自组织网络的所有智能体初始化为空闲节点,通过工作原型信息的发布和协商使它们分化,各自执行不同的任务。其中,每个智能体节点有一个父节点接口和多个子节点接口。父节点接口由两个信号通道组成,即父节点认知出的离散序列模型的输入和向父节点返回预测值的输出。子节点接口由两个信号通道组成,即该节点认知出的离散序列模型的输出和从子节点获取的预测值输入。就像是人类的大脑内部结构,智能体节点通过对父节点的输入信号进行认知产生更高层次的信号发送给子节点,同时获取子节点的预测信号,并将其作为自己向父节点发送预测信号的依据。智能体节点通过对每个子节点在一段事件内的预测准确率(Psr)进行统计,选取最有可能的预测值,在知识库中查找对应的低层次模型并实时匹配,从而得出父节点所需的预测结果,并反馈给它。从而,多个智能体自组织组网,产生不同层次的预测值和离散序列模型,通过协同解决离散序列预测的问题。
3.1 自组织智能网络架构
3.1.1 自组织系统概述
系统内多个智能体节点(Agent)可以实现自组织,根据实际需要自动发布工作“雇佣”需求,经过协商,另一个节点可以被“雇佣”,形成能够完成复杂任务的体系结构。根据外部环境不同,体系结构可以自组织实时改变。根据任务协调算法的不同体系结构。本文所解决的问题,由于是单一agent接收输入,所以是结构呈树形结构。
3.1.2 节点(Agent)
一个自组织系统是由多个独立的智能体节点(Agent)组成。每个节点有自己的生命周期,从系统启动时就创建,具有空闲和忙碌两种工作模式。当系统启动时,节点工作模式被设置为空闲。只有空闲节点才会接受“雇佣”,只有忙碌节点才会发起“雇佣”需求。在实际应用场景中,节点是一台独立的计算主机。节点间工作协调需经过一次广播和三次握手,才能正式建立连接。
3.1.3 子链结构(Chain)
有“雇佣”关系的两个节点,按照图论原理,可以把“雇佣者”称为父节点,“被雇佣者”称为子节点。多个父、子节点协同工作产生的链式结构,称为子链结构;其中最开始的父节点称为根节点,末后的子节点称为叶子节点。往往输入数字信号在子链结构中传递,从根节点到叶子节点。每个节点会按周期将输入序列感知成新的模型序列,并传给自己的子节点。
3.1.4 多节点网络模型
图1展示了一种多节点网络模型,每个节点对输入数据感知出认知模型(model)并输出给子节点、接收所有子节点的预测数据,经过特定的选择算法(Select Algorithm)选取最有可能的解作为预测结果并输出给父节点;特别的,节点1接收来自外部的输入,输出的结果就是下一帧音符。
图1 一种简单的自组织结构
3.1.5 节点多样化
为了保证不同的分工协作、达到更高效率,自组织中的节点必须多样化,以至于能够分化成能够处理特定功能的精英节点。自然界有许多例子,比如把干细胞看作一个节点,干细胞可以分化为多种祖细胞:心肌细胞、内皮细胞和神经细胞等[12]。本文通过给子节点分配不同的质数周期,帮助子节点识别出不同的模型,使得子节点多样化。
3.1.6 激活子链(Active Chain)
任一帧内,节点会根据选择算法选择某一个子节点的预测值作为解,从根节点开始到叶子节点内所有被选中的子节点组成的子链结构(Chain)称作激活子链。激活子链的意义在于直观地表示出当前帧系统内计算出有效解的子链结构。如同大脑思考问题时,从大脑皮层开始激活的一条神经元链路。由n个节点组陈过的激活子链可以表示为[A1,A2,…,An],其中A是各节点编号。
3.2 算法概述
本文中的自组织系统内部每个Agent程式同构,根据数据交互自组织产生不同的结构、协同计算解决问题。主要算法是感知认知算法、预测算法、工作协调算法。
3.2.1 感知认知算法
如果将离散序列比作音乐,那么其周期性特征好像和弦,每个离散信号如同音符。感知认知算法目标是对输入数据进行高维度模型化的认知,模拟人类听音乐时实时地识别出音乐的和弦的功能,并把模型知识沉淀为模型库,为预测算法提供依据。有规律的离散序列,如同音乐一样会呈现周期性特征,子节点可以对父节点发来的输入模型采用质数周期来进行感知,从而发现特征。不同节点会以不同的周期感知认知输入的模型。模型库里需要新建模型称为“感知”,模型库中提取已有模型作为解的过程称为“认知”。此例中,1号节点以1为周期感知认知输入,并将结果输入给子节点2,2、3节点分别以2为相对周期感知认知上级节点的输入模型。周期模型对应的涵义是音乐和弦。选取一个包括常见音乐周期的质数表,作为招募子节点的分工依据,所形成的组织结构就有能力识别有节奏的信号。这里选取2,3,5,7作为节点识别周期分化依据。假设输入序列为3345循环,一个激活子链为 {Sinput,S1,S2,S3},认知出的模型如下
(1)
显然对于激活子链而言,节点越靠近叶子节点,识别模型的层级越高,越容易发现重复性规律。
3.2.2 预测算法
节点每帧的预测算法如下所示。
1) 节点获取一个新的输入字符s,判断并执行工作协调算法;
2) 根据节点和子节点的上一帧预测返回,统计并更新预测正确率r;
3) 若当前已有正在匹配的模型,转到4);否则转到10);
4) 如果匹配模型是新创建的模型,则返回预测值s,同时如果s是模型最后一个字符,则将新模型保存至模型库;否则转到5);
5) 若s恰好匹配模型正在匹配的字符,则匹配成功,转到6);否则匹配失败转到10);
6) 若s不是匹配模型中最后一个字符,则返回预测值为匹配模型中的下一个字符,结束;否则s恰好是匹配模型中的最后一个字符,转到7);
7) 若该节点没有子节点,则默认重新匹配当前模型,取出当前模型的第一个字符s_m,并作为预测值返回,结束。否则,转到8);
8) 等待子节点返回预测结果m_p识别模型,取出第一个字符s_p;
9) 比较各节点预测正确率,选择算法会选择正确率最高的s_p作为预测解,返回给上级节点,结束。
10) 在模型库中查找是否存在能够匹配当前模型的模型:如果存在,设置为正在匹配的模型,转到4);否则创建新的匹配模型,返回预测值为s,结束。
其中第6)步和第8)步的预测称为模型间预测,第5)步和第9)步的预测为模型内预测。
3.2.3 匹配l新模型的选择算法
考虑一条激活子链C,其中每个节点记为Ci,子链C上节点个数为n。节点n的识别周期记为Tn。则Cn的识别周期为
(2)
其中
Tk,k+1∈prime{2,3,4,5}
(3)
当Tn恰好等于输入序列的周期时,经过Tn帧的学习后该节点的模型内预测会获得最优效果。
记节点预测正确度队列为Q,第m个子节点为Qm,令Q0=Q,则有
(4)
其中qi,j代表Qi的缓冲区中第j个预测结果是否正确,取值为0或1,有
qi,j∈{0,1}
(5)
所以,对子节点i的预测正确率ri有
(6)
特别的,节点自身预测正确率r=r0
所以匹配新模型的选择算法为选择第k个子节点作为预测的新的匹配模型,使得预测率正确率rk最大
k={k|rk≥ri,i∈[1,m]∩N}
(7)
模型间预测将k节点的预测输出认知为节点自身的模型,再以第一个字符作为预测解返回给上级节点。
3.2.3 工作协调算法
节点间需要工作协调以完成任务。自然界中有许多这样的例子,比如多个细胞协同工作,完成器官功能;而器官的发育往往有一个过程:由一组细胞不断分裂,分裂的过程中不断分化,满足一定数量后才是功能完善的器官。细胞分裂就是自组织生命生长扩张的过程的一种形式化表现。一个受精卵分裂成若干胚胎干细胞,再由这些胚胎干细胞可以发育成哺乳动物,以上就是自然界中典型的生命生长规则的一个形式化例子。本文中多节点自组织的工作协调算法相当于自组织生命的生长规则的实现,本文暂不考虑“死亡”的情况。自然界生命生长规则有以下基本要素:生命到达一定岁数、生长激素和抑制激素。受此启发,如果抑制条件满足,则不会生长;如果生长条件满足,则可以生长。算法如下所示。
1)若计时器触发,goto 2);否则goto 8);
2)若不满足遗忘条件,goto 3);否则goto 7);
3)若系统最大预测准确率 r_max 小于目标值T,goto 4);否则goto 9);
4)若节点预测准确率小于生长限制r_g,goto 5);否则goto 9);
5)若节点预测正确率小于最低生长率r_mg,goto 9);
6)子链生长,广播“雇佣”公告;
7)遗忘子节点,结束;
8)计时器 - 1,结束;
9)抑制生长,结束。
显然,生长和抑制条件不能只考虑某一时刻的情况,因为经常出现当前帧自组织预测正确、下一帧自组织预测失败的情况,这是不稳定的。所以需要有个科学合理的方法评估系统稳定性。仿照自然界生命随岁数生长形成不同形态的概念,自组织系统的体系结构在动态、不断变化中,经过一段时间后,就可以对组织结构做出一个稳定性评估。
4 仿真研究
为了验证算法的可行性和实际预测准确度,本文实现了一个多智能体仿真服务器。为了方便观察体系结构内部子链激活状态随时间关系的动态变化过程,还实现了一个3D可视化系统。3D图中的节点颜色表示预测准确度,红色为0%,深绿色为100%;所以,激活子链必然是一条由绿色节点组成的子链。通过不同的序列循环输入,可以验证算法可行性和观察学习过程中多智能体网络结构的动态变化。统一设置整体目标预测率为75%,当系统预测准确率达到这个目标后,体系结构达到相对稳定状态;令单个节点的预测率低于70%时,都有“招募”子节点的能力;而低于15%的节点,被认为是预测效果差的节点,失去“招募”能力。
为了表现组织结构随输入序列的变化而变化的情况,在telnet中用命令行调用SetInput(str)函数实时改变输入序列,输入节点会自动不间断地向自组织节点循环输入序列str。仿真设计如下所示。
1) 预设输入为”abc”,等待一段时间,观察训练结果。
2) SetInput(“7156”) 等待一段时间,观察训练结果。
3) SetInput(“abc”) 等待一段时间,观察训练结果。
4) SetInput(“EXFGACDU”) 等待一段时间,观察训练结果。
5) SetInput(“100101110”) 等待一段时间,观察训练结果。
图2和图3记录了仿真各节点的预测准确度随时间帧的变化和系统组织结构的变化过程。其中节点1、2、3的识别周期分别为1、2、3。不难看出,仿真开始时,输入为abc的周期序列,节点3的预测准确度迅速上升到100%,激活子链为[0,1,3]。第二步,改变周期序列为7156,由于突然的改变,节点的预测准确率全部下滑,同时重新训练,随后节点2的预测准确率拉升至100%,激活子链为[0,1,2,6],使得最终节点1的选择节点由3改为2。第三步,输入再次改变为
图2 节点2实验数据统计
图3 最下层节点实验数据统计
abc,由于节点2的子节点7周期为6,也能完整识别abcabc;而此时节点3要经过子节点的综合评估,其训练速度比7慢;所以,激活子链为[0,1,2,7]。第四步,训练较长的周期序列EXFGACDU,激活子链为[0,1,2,6,19],节点2再次带动节点1到达100%。第五步,训练周期序列改变为100101110,激活子链为[0,1,3,10],由于训练起始数据的偏差,10有时选择24、有时选择25,导致少数几位预测不准确,预测准确率在86.9%至91.3%波动。
5 结论
实验结果显示模型库越丰富,模型内预测的准确度越高;当子节点PSR越高,模型间预测的准确度也越高。通过实验步骤2可以看出一般情况下认知周期为输入序列长度的因数的节点会优先“生长”,并获得更好的预测效果;正如大脑通过大量神经元协同工作能够快速捕捉到序列“规律”的过程。实验步骤3和实验步骤4证明有些认知周期不为输入序列长度的因数时,在前期也会因为预测较为准确而优先“生长”,但长期训练后会失去先发优势;正如一个常见的现象:许多人虽会唱歌,缺把握不准音乐节奏,经过长期反复训练可以合拍。实验图表可以看出,当激活子链的叶子节点认知周期恰好等于输入序列周期时,往往可以达到100%预测准确率,但是步骤5显示当识别起始位置有扰动时,预测准确率会下降至87%左右。当出现扰动时,需要一些额外机制来提升预测准确率,可以总结为训练深度必须达到足够深度才能获得最优解;此外,当一些“无用”的节点经过长期训练,模型库比较丰富,也能获得次优解,为提升整体预测准确率提供了一个备选方案。
以复杂体系思想为启发,本文运用现有主流生物学观点通过多智能体节点系统探索了一种模拟大脑神经元集群识别并反馈预测的模型。在实验过程中也观察到一些现象与现实具有一定的联系,对类似音乐片段的输入:比如周期为音乐长度的因数的节点更有可能优先获得高预测率,好像现实中把握音乐节奏的人能更快的学会一首歌;一些周期与音乐长度互质的同级节点在起步阶段和长期训练后也能提高预测准确率,就好像许多人明明会唱一首歌却总是不合节拍。本文的预测方法偏向于对大脑思维模式的模拟和探索,与深度神经网络不同在于每个神经元不仅仅持有简单的乘加计算,而是一个独立的虚拟计算机。本文不足之处在于遇到节点数量不足时,预测率会低于预期且不稳定,需要在多智能体节点协调过程中添加新的机制以完善预测功能。