基于间接编码的形态自适应机器人神经网络控制器设计

2023-05-08 03:01孙福磊魏秉晟甘中学
计算机应用与软件 2023年4期
关键词:编码方式适应度神经元

孙福磊 魏秉晟 甘中学 李 伟

(复旦大学工程与应用技术研究院 上海 200433) (上海智能机器人工程技术研究中心 上海 200433) (智能机器人教育部工程研究中心 上海 200433)

0 引 言

机器人控制器的设计是机器人领域的核心问题之一,机器人需要感知周围环境从而产生合理的动作。常用的机器人控制方法包括PID控制[1]、滑模控制[2]和神经网络控制[3]等。进化计算[4-6]是一种受达尔文自然进化论启发的方法,常用于在神经网络控制中优化神经网络,是一组全局优化算法。从技术上讲,进化计算是一类基于群体的尝试和寻优方法,具有启发式或随机优化特性。对于控制和规划问题的优化决策、机器学习等领域内的一些非常复杂且难以解决的问题[7],进化计算展示出了较好的处理能力。

进化机器人(ER)是将进化计算应用于自主机器人设计的一个领域,进化机器人中的进化通常用于机器人行为控制[8]。ER 技术有可能使控制系统的设计自动化,而不需要研究人员手动制定所需行为规范[9]。神经网络已被证明能够代表一般的和自适应的解决方案[10],同时可以提供相对平滑的搜索空间,因此在 ER中通常使用人工神经网络作为机器人控制器,下文称为 ANN-Controller。编码是进化计算中的关键步骤,进化计算中常用的编码方式是直接编码[11],在这种方式中进化实体和进化计算中的基因型是一一对应的,直接对应了进化计算对解空间的搜索。这些特点使得在直接编码中机器人的控制器局限于特定形态。

机器人合理动作的产生不仅仅依赖于控制器,也依赖于机器人的形态,不同环境中的适用形态是不同的,例如模块化机器人在完成不同任务时的适用形态并不相同[12]。传统的控制器设计是在机器人形态固定的情况下进行的,这使得机器人控制器局限于特定形态,同时影响了优化空间。理想情况下,机器人的形态可以随着环境的变化而改变,不断适应环境。这就要求在设计控制器的过程中,将机器人的形态变化考虑进来,具备形态自适应的能力,而不仅仅是针对固定结构进行设计。

本文使用间接编码[13]设计了一种渐进式控制器生成方法。该方法基于进化计算实现,不针对特定形态设计控制器,而是寻找机器人形态和控制器之间的映射关系,当机器人的形态发生改变,控制器也会随之改变。在本文的实验中,该方法生成的控制器可以用来应对机器人传感器发生故障失效的问题,具备一定的形态自适应能力。

1 进化计算的编码

1.1 直接编码

直接编码中基因型和表现型是一一对应的,本文中使用了两种直接编码方式,它们的区别在于基因型不同。

第一种基因型只包括神经网络的权值,使用这种基因型之前需要手工设计出ANN-Controller的结构,然后使用进化算法(EA)优化神经元之间的权值。在这种方式中,神经元的数目和神经元之间的连接等信息都是固定的,无法优化。这在一定程度上影响了神经网络的优化空间。下文称这种方式为EA。

第二种基因型除了包含权值之外,还包括神经元的数目和神经元之间的连接等拓扑结构信息,这种基因型来源于神经进化的思想。传统的神经网络优化方式只是调整神经网络的权值,而在神经进化中,神经网络的结构也会发生改变。本文中采用的神经进化算法是NEAT(NeuroEvolution of Augmenting Topologies[14]),这是一种流行的神经进化方式,NEAT算法使神经网络从最小结构逐步变得复杂,同时可以对不同结构的神经网络执行交叉操作。图1和表1说明了两个亲代通过交叉产生子代的过程。在NEAT中,神经元和神经元之间的连接都有唯一的编号。图1中的数字表示神经元编号,表1中的num表示神经元之间连接的编号,pos表示该连接的起点与终点,例如num=1,pos=1,4表示1号神经元和4号神经元之间的连接编号为1。表1中的第1行代表图1中亲代1的神经网络连接信息,第2行代表亲代2的信息,第3行代表子代的信息。下面通过几种情况说明交叉操作如何进行。

图1 不同结构神经网络的交叉

表1 神经网络的连接信息

(1) 连接在两个亲代都存在,那么子代也会保留该连接,例如表1中的1号连接。

(2) 由于连接数目变异等原因,连接在两个亲代中都不存在,那么子代中也不会存在该连接,例如表1中的2号连接。

(3) 连接只在某一个亲代中存在,那么子代会保留该连接,例如表1中的8号连接。

(4) 连接在两个亲代中的结构不同,那么子代会保留较为复杂的结构。例如表1中的5号连接,在亲代1中,它连接了5号神经元和4号神经元;而在亲代2中,5号连接被6号连接和7号连接取代,原因是5号神经元和4号神经元之间增加了一个6号神经元。针对这个连接,由于亲代2的结构更为复杂,因此子代会保留亲代2的结构。

相比于传统的进化算法方式,神经进化扩大了神经网络的优化空间,拥有更高的自由度。下文称这种方式为NEAT。

1.2 间接编码

间接编码中基因型和表现型不是一一对应的,这种特性使得间接编码能将机器人控制器和机器人形态解耦。在本文使用的间接编码中,基因型不是ANN-Controller,而是复合模式生成网络(CPPN[15])的自身信息。CPPN的作用类似于一个函数,记录机器人形态和控制器之间的映射关系,从而根据机器人不同的形态信息生成对应的ANN-Controller,这个生成过程可以看作是一次编码。

HyperNEAT[16-17]是一种专门优化CPPN的算法。在HyperNEAT中基因型包含了四部分内容:神经元数目、神经元之间的连接、权值和神经元的激活函数。在优化CPPN的过程中,激活函数是可变的,这种特性使得CPPN善于发现神经网络中的模式。举例来说,神经网络可能存在卷积、重复和对称等多种模式,卷积的发现使得深度学习获得了成功,从理论上来讲,通过HyperNEAT进化得到的神经网络可以发现任何一种模式,可以学习到常规神经网络学习算法无法获得的规则[18]。对于前面提到的模块机器人[19],以及机器人在模拟环境中的行驶任务[20],都有研究者使用HyperNEAT针对固定形态的机器人进行研究并取得了良好效果。下文称这种方式为HyperNEAT。

直接编码和间接编码中基因型和表现型的关系如图2所示。

图2 两种编码方式中基因型和表现型的关系

2 基于不同编码方式的控制器设计

前面介绍了进化计算的两种编码方式。下面首先介绍仿真实验中使用的机器人,包括仿真环境等信息,然后说明如何将两种编码方式应用到机器人上,最后在机器人形态不变的前提下,针对机器人自主导航这一具体问题进行仿真实验,分析实验结果,这是进行下一个实验的基础。

2.1 机器人

实验中用到的机器人是用自主进化机器人[21](Autonomous Robot Evolution,ARE)项目中的元器件生成的,ARE项目的目的是进化和制造机器人,机器人在进化过程中不断改变形态和控制器来完成任务,且项目中的机器人都是由基本模块(传感器模型、车轮模型等)和连接框架组合起来的,可以通过重复利用基本模块和3D打印的方式制造出实体机器人。

本文中使用的机器人有四个距离传感器,三个在机器人的前方(下文分别称为左侧、前侧和右侧传感器),一个在机器人的后方,机器人还包括两个电机(车轮),外形如图3所示。实验中使用的机器人仿真平台是V-REP,版本是3.6.2,使用的操作系统是Ubuntu 18.04。

图3 实验中使用的机器人

2.2 基于直接编码的机器人控制器

对于EA,将神经网络的结构手工设定为五个输入层神经元(对应机器人的四个传感器和一个偏置)、四个隐层神经元和两个输出层神经元(对应机器人的两个电机),神经网络的五个输入来自机器人传感器的接收值和一个偏置,两个输出作为机器人电机的转速。神经网络各层之间的连接均为全连接。

对于NEAT,只指定输入层神经元的数目(5个)和输出层神经元的数目(2个),隐藏层神经元的数目和各层神经元的连接数目均通过NEAT算法进化得到。神经网络的输入和输出与第一种基因型相同。

2.3 基于间接编码的机器人控制器

为了比较两种不同的编码方式,本文设计了基于间接编码的控制器。在间接编码中,进化算法不直接优化ANN-Controller,而是优化CPPN,然后通过CPPN生成ANN-Controller。步骤如下。

本文中CPPN的输入是ANN-Controller中神经元的“坐标”,基底指的是ANN-Controller中所有神经元的坐标的集合。对于ANN-Controller的输入层神经元,使用机器人传感器的相对位置作为神经元的坐标;对于输出层神经元,使用机器人电机的相对位置作为坐标;对于隐层神经元,由于没有对应的物理实体,实验中根据经验进行了人工指定。

步骤2CPPN的输入是由ANN-Controller的基底决定的,而CPPN的输出是ANN-Controller中连接的权值。举例来说,如果CPPN要输出ANN某个输入层神经元和隐层神经元之间的权值,那么CPPN的输入就是基底中这两个神经元的“坐标”,输出其他权值时同理。

步骤3CPPN的输出还包括神经元的偏置。依次将基底中的坐标输入到CPPN中,CPPN就可以生成一个完整的ANN-Controller(表现型)。

间接编码流程如图4所示。

图4 间接编码流程

可以看出,CPPN的输出会反映到ANN-Controller的权值和偏置上。将机器人的形态看作x,ANN-Controller看作y,在理想情况中会存在映射关系f,使得f(x)=y,而CPPN起到发现和记录这种映射关系的作用。举例来说,如果CPPN某个输出神经元的激活函数是对称函数,那么反映到ANN-Controller上,ANN-Controller的某些权值就是对称的,机器人形态不同,控制器中对称权值的分布位置就会不同。

2.4 智能机器人的自主导航

自主导航是智能机器人应掌握的基本技能之一,在机器人的自主导航问题中,机器人需要在不同的场景中从初始点运动到目标点,移动过程中要躲避障碍。

随着节能降耗要求不断提高,通常的做法是,将汽封间隙调整到低于制造厂规定的下线,机组启动后,通过反复的碰磨,磨出间隙。

实验中用到的场景如图5所示,模拟时间分别是30 s(Empty Arena)、40 s(Escape Room)、60 s(Middle Wall)和120 s(Multi Maze)。场景中的空心圆代表机器人的初始位置,实心圆代表目标点位置。机器人在每个场景中都有都能选择任意路径到达目标点,黑色虚线是一些有代表性的路径。

图5 实验中使用的场景

图5中四个场景难度依次增加。Empty Arena中从初始点到目标点没有障碍物,是最简单的一个场景。Escape Room和Middle Wall中有墙壁阻挡,难度增大。Multi Maze中墙壁数目最多,对控制器性能要求最高,难度最大。

进化计算参数如表2所示。有资料表明[22],对于控制这种类型的任务,较高的权值变异率(50%或者更高)会取得更好的效果,原因可能是在控制任务中,神经网络的输入数目较少。因此实验中将进化计算的权值变异概率指定为0.9。

表2 进化计算参数

续表2

由于机器人的任务是移动到目标点,因此适应度函数中需要包含机器人模拟时间结束时的停留点与目标点之间的距离,距离越小表示控制器性能越好,然后使用场地对角线长度减去上述距离作为最终的适应度,这样适应度越大表明控制器性能越好,适应度函数形式如下:

(1)

式中:目标点位置为(xtarget,ytarget),机器人模拟时间结束时停留的位置为(xend,yend),场地的对角线长度为length。

由于本文中直接编码有两种实现方式,间接编码有一种实现方式,因此每个场景进行三组实验,测试不同编码方式的性能。每个场景对每种编码方式进行20次重复性实验,实验结果如图6所示。

(a) Empty Arena中的平均适应度变化

(b) Escape Room中的平均适应度变化

(c) Middle Wall中的平均适应度变化

(d) Multi Maze中的平均适应度变化图6 使用不同编码方式的控制器在不同场景中的性能

在这四个场景中,机器人的传感器数目均没有发生改变,形态保持不变。按照具体场景来看,间接编码在Escape Room中表现最好,直接编码在Middle Wall和Multi Maze中表现最好,不同的编码方式在多个场景中互有优劣。按照整体实验结果来看,直接编码和间接编码表现都很好,平均适应度均超过了0.95(考虑到机器人自身的大小,适应度大于等于0.95可认为机器人已经到达目标点),这表明基于直接编码和间接编码的控制器都具有优秀的控制性能。

综上所述,在机器人传感器全部正常工作的前提下,基于直接编码和间接编码的控制器均表现很好,且两者之间的差异较小,而当场景从简单到复杂时,控制器的平均适应度均有下降现象。在机器人形态不变的情况下,使用两种编码方式的控制器在性能上较为接近,这为后面的实验提供了基础。

3 形态自适应的机器人控制器设计

本文基于进化计算设计了一种渐进式学习方法,用来生成具有高鲁棒性的控制器,具备形态自适应能力。渐进式方法指的是在进化计算的过程中,机器人的传感器数目会按照设定的规则改变,在此过程中,CPPN会逐渐学习到机器人形态和控制器之间的映射关系。为了进行比较,方法分别使用了直接编码和间接编码进行实现(EA、NEAT和HyperNEAT三种方式。)

在渐进式学习方法中,总进化代数为300代,实验场景使用的是Middle Wall,每个个体的模拟时长是60秒。具体步骤如下。

步骤10~100代时使用的是缺失左侧传感器的机器人(No-Left-Robot)。EA、NEAT和HyperNEAT按照表2中的进化参数运行。对于直接编码,ANN-Controller本来有五个输入,对应四个传感器的接收值和一个偏置,即输入为(left sensor input, front sensor input, right sensor input, back sensor input, bias),现在缺少了左侧的传感器,ANN-Controller的输入需要变成(0.0, front sensor input, right sensor input, back sensor input, bias);在间接编码中,No-Left-Robot拥有自己的基底,CPPN可以通过基底生成对应的神经网络控制器。

步骤2101~200代使用的是缺失右侧传感器的机器人(No-Right-Robot)。此时进化算法中使用的种群是第100代的种群,也就是说第101代的进化是在第100代的基础上进行的。EA、NEAT和HyperNEAT按照表2中的进化参数运行。此时机器人的形态和基底都发生了改变,对于直接编码,输入需要变成(left sensor input, 0.0, front sensor input, right sensor input, back sensor input, bias)。但在间接编码中CPPN是无需改变的,因为CPPN可以通过不同的基底生成不同的神经网络来控制机器人。

步骤3201~300代使用的是正常的机器人(Normal-Robot),此时需要保留第200代的种群,第201代是在第200代的基础上进化的。EA、NEAT和HyperNEAT按照表2中的进化参数运行。直接编码和间接编码都按照常规方式进行。由于机器人传感器全部正常,直接编码和间接编码都按照正常方式进行。

步骤4从201~300代中找出最优个体,保存最优个体的控制器,直接编码保存的是ANN-Controller,间接编码保存的是CPPN。然后在No-Left-Robot和No-Right-Robot上测试控制器的控制效果。

方法流程如图7所示,图中左侧表示使用直接编码的渐进式方法,显示了ANN-Controller在不同阶段的输入;右侧表示使用间接编码的渐进式方法,显示了不同阶段的基底,基底中的非空心圆表示失效传感器的位置,在生成ANN-Controller时不再被使用。

图7 使用直接编码(左侧)和间接编码(右侧)的渐进式方法

EA、NEAT和HyperNEAT分别进行十次重复性实验,取平均适应度,结果如图8所示。可以看出,在机器人传感器数目没有变化时,不同编码方式的最高平均适应度均超过了0.95,可认为机器人到达目标点。HyperNEAT适应度上升速度略慢是因为间接编码不直接针对特定结构优化控制器,耗费时间稍长。在第101代时,机器人从缺少左侧传感器变成了缺少右侧传感器,变化幅度较大,此时HyperNEAT下降程度最小,体现出使用间接编码的控制器自适应形态变化的特性;在第201代时,机器人从缺少右侧传感器变成了不缺少传感器,此时的传感器位置的变化幅度小于第101代时的变化,HyperNEAT的优势不够明显(但下降幅度仍小于NEAT),而ANN由于使用了全部传感器,并采用了全连接的连接方式,适合传感器全部正常的情况,这使得此时适应度下降程度最小的是ANN。

图8 渐进式方法中平均适应度变化

根据渐进式方法流程中的步骤4,使用最优个体的控制器按照式(2)计算性能下降幅度。实验结果如表3所示。

表3 渐进式方法生成的控制器健壮性比较

(2)

式中:fnormal表示201~300代中最优个体的控制器应用到Normal-Robot时的适应度,fmissing表示该控制器应用到No-Left-Robot或No-Right-Robot时的适应度。

可以看出,当控制器应用到缺失传感器的机器人上时,使用直接编码的控制器性能下降幅度明显大于间接编码。使用间接编码的控制器展现出了自适应形态的能力,而使用直接编码的控制器局限于特定形态,花费大量时间优化的控制器可能只适用于单一形态。当机器人结构发生变化(例如某个传感器失效)时,控制器性能会大幅下降,健壮性较差。

图9直观地表示了实验中不同适应度对应的机器人在环境中的位置,同时标注了机器人的初始位置(空心圆)和目标点位置(实心圆),适应度越高表明机器人越接近目标点。从表3中的数据中可以知道,将使用间接编码的控制器应用到No-Left-Robot上时,机器人平均适应度为0.637,应用到No-Right-Robot上时,平均适应度为0.625,在这两个值中取较低值,在图9中标注出f=0.625时机器人所处的位置。可以看到,当某个传感器发生故障时,采用了间接编码的机器人有较强的朝向目标点移动的趋势(即便是平均适应度较低的情况),机器人最终停留位置更接近目标点,控制器体现出了较强的形态自适应能力;而使用直接编码的机器人的最终位置与初始点差距不大,控制器的性能下滑较为严重。

图9 平均适应度与机器人位置的对照关系

综上所述,间接编码体现出了两点优势:第一,机器人传感器数目发生改变时,间接编码中使用的CPPN无需改变自身结构,只需要利用机器人自身的基底信息;而在直接编码中,ANN-Controller需要改变结构(方法中通过缺失传感器的对应神经元输入变为0.0来实现)。第二,从渐进式方法最终生成的最优个体控制器(表3)来看,使用间接编码的控制器在面对不同形态的机器人时表现更好,相比于常规的直接编码损失的适应度较少,体现出了较强的形态自适应能力。

4 结 语

针对控制器局限于机器人的特定形态这一问题,本文提出一种基于间接编码的渐进式学习方法,该方法生成的控制器能够自适应形态变化。本文首先在机器人传感器全部正常(形态不变)的情况下,通过仿真实验在多个场景中比较了基于两种编码方式的控制器性能,结果表明两种方式表现都很好。在这一实验结果的基础上,基于进化计算设计了一种渐进式学习方法,方法分别使用直接编码和间接编码来实现,该方法的执行过程中机器人传感器数目会按规则改变,用来生成具有高鲁棒性的控制器。经过实验可知,相比于直接编码,使用间接编码的渐进式方法可以产生健壮性较好的控制器,在缺失传感器的情况下(形态改变)表现更好,自适应形态变化的能力较强。

目前的实验对象形态较为简单,但是间接编码的渐进式设计方法可以拓展到更为复杂的控制器设计场景,例如传感器更为丰富的机器人上。对于较复杂机器人控制器的研究将会在未来的工作中进行实验与分析。

猜你喜欢
编码方式适应度神经元
改进的自适应复制、交叉和突变遗传算法
《从光子到神经元》书评
跃动的神经元——波兰Brain Embassy联合办公
GCOA算法
可穿戴式多通道传感系统功能需求分析及设计
混合编码方式自适应差分进化算法优化设计宽带天线
基于空调导风板成型工艺的Kriging模型适应度研究
基于二次型单神经元PID的MPPT控制
毫米波导引头预定回路改进单神经元控制
少数民族大学生文化适应度调查