余慧瑾 方勇纯
随着机器人技术以及人工智能的飞速发展,神经网络因具有分布信息存储、自适应和自学习功能强等优点,被广泛应用于机器人领域.另一方面,人类具有很强的场景感知和理解能力,可以从复杂的背景中迅速分析并准确提取出场景包含的信息,在此基础上实现对场景的准确认知.如何使机器人具有类似的认知能力,使其能实现对陌生场景的准确识别,近年来逐渐发展成为国内外机器人领域的一个研究热点问题.
视觉传感器由于具有信息丰富,采集方便等优点而在各类智能系统中得到广泛应用,与之相对应的图像分类等问题也得到了研究人员的广泛关注.早期,基于图像的场景分类一般都是基于整体模型开展,即利用从图像里提取的颜色、纹理、形状等底层特征,通过监督学习等方法将场景分为几个类别.例如,刘畅提出将输入场景转换为无向带权图,并使用表面凹凸度进行特征提取场景识别[1].牛杰等利用分段判别策略对BoW(Bag-of-words) 及BDBN(Bilinear deep belief network)两个模型的结果进行融合,并在此基础上得到室内场景识别结果[2].严晗等提出了一种将显著性区域检测算法与稀疏表示相结合的方法[3].在数据集内部,上述方法具有很好的分类性能,但同时存在一个严重问题,即很难将其推广应用到训练集之外的数据集中.另一方面,为了消除场景的底层特征与高层语义内容间的鸿沟,研究人员提出了利用中间层语义描述,使场景模型化的方法.这种描述在一定程度上类似于人类所拥有的对场景的感知.例如,Luo 等通过级联多个特征来提取子地图描述符,并通过学习距离度量提高识别精度,进而实现机器人室内场景识别[4].Li 等提出了通过无监督学习将局部区域与码字(Codewords)相结合,利用贝叶斯层次模型对自然场景进行分类的方法[5].值得指出的是,以上方法都是在特定任务的基础上,基于提取到的场景图像底层特征,利用传统的机器学习方法进行场景识别,正确率容易受到特征提取结果以及传统机器学习算法参数选择的影响.当将其应用到机器人平台时,即使面对熟悉的场景时都需要进行重新计算,原有的经验对当前判断的帮助不大.
考虑到传统神经网络方法存在的问题与局限性,研究人员提出了一种基于自主发育网络的机器人认知方法[6−7],这种具有自主发育功能的机器人随之成为当前国内外学者的研究热点,其目的是使机器人可以模仿人类的思维方式并且综合运用各种能力对信息进行处理,在此基础上实现其智能不断发育.受生物脑进化与发育的启发影响,Weng 等首先提出了机器人自主发育的思想[6−7],并指出自主发育机器人的任务是相对独立的,因此只需要预先为机器人编制一套可发育程序,而不用针对固定任务进行编程,使其通过后期自主学习以获得各种能力.王作为等对自主发育智能机器人的体系结构进行了研究,从认知角度对机器人范式做出了分类[8].陈祥章等提出一种将自主发育机器人分为物理层、信号处理层以及发育层的模型结构[9].陈洋等利用发育模型,通过IHDR(增量分层判别回归)算法和k-D 树建立了路径规划知识库,实现对于无人机的三维路径规划[10].虽然上述方法运用了自主发育算法去完成任务,但并没有提出通用的脑智模型.实际上,当智能系统与环境进行交互时,若能充分利用脑智模型,通过它对所获取的知识进行学习与积累,便可使系统具有自主感知和认知功能,从而无需人工干预便能自主完成各类任务.基于这种思路,钱夔等提出将机器视觉与自主发育算法相结合,通过建立自主发育神经网络,使机器人实现识别室内场景的方法[11−12],而王东署等提出利用自主发育网络完成人脸朝向识别任务[13],Castro-Garcia 等训练自主发育网络以识别英语和法语句子[14],Zheng 等将自主发育网络用于室外导航任务[15].
另一方面,在人类或者动物的发育过程中,除了不断总结成功经验进行正向学习之外,同样会利用失败的教训来进行负向学习.例如,不小心被热水壶烫到的幼儿会尽量避开热水壶等.具体而言,正向学习基于对“好”数据的学习来不断逼近最优解,如婴儿学习走路的姿态等;而负向学习则利用“坏”数据来远离错误解,如婴儿避免摔跤等.正向学习和负向学习互为补充,两者共同作用,促进个体发育.
钱夔等提出的基于LCA 的自主发育神经网络算法将学习结果以“知识”的形式储存在系统神经元中,可以使机器人具有类人思维并自主执行任务,因此具有良好的发展前景.但值得指出的是,尽管这种方法在理想情况下可以取得较好的效果,然而当将其真正应用于机器人场景识别时,仍存在神经元利用率低,学习效果欠佳,识别准确率不高等问题.考虑到以上不足,本文针对机器人场景识别任务的具体特点,提出了一种改进型的自主发育网络.这种方法采用多优胜神经元进行权重更新,并对其突触权重更新方程进行修改,以提高系统的学习效率;同时,通过负向学习快速纠正错误知识并在学习过程中增加人类知识引导;进一步,根据机器人的工作特点,采用基于连续型样本的加强型学习,以提高识别的准确率.将所提出的改进型自主发育网络应用于机器人场景识别任务,并进行了实验测试,结果表明,这种改进型自主发育神经网络相比原有方法具有更高的识别正确率,可以使机器人很好地完成场景识别任务.
本文其他部分组织如下:第1 节提出了一种基于改进型自主发育网络的场景识别方法,重点针对原有算法提出了具体改进措施,并完成了整个发育流程的设计;第2 节是本文的实验部分,通过对比原有算法与改进型算法Y层神经元的激活率以及识别结果,验证了所提出的改进型自主发育网络在场景识别方面的优良性能;第3 节是本文的总结与展望.
如前所述,钱夔等尝试将基于LCA 的自主发育神经网络应用于机器人场景识别[11],其主要思路如下:搭建三层自主发育神经网络{X,Y,Z},其中,X层、Y层、Z层分别为感知输入层、决策分析层、效应输出层.X层通过与外界环境接触,利用机器人携带的视觉等传感器获取外部信息,之后将这些信息传入Y层进行处理分析,最后通过Z层输出对应的场景类型.为此,需要预先对神经网络进行学习训练,即同时将X层的外部信息和Z层的场景识别结果作为输入,通过竞争机制来优化神经元的权值,从而对神经网络进行发育训练,使其能学习并记忆场景识别方面的知识.这种方法由于具有较好的自主发育能力,因此应用前景突出.然而当其应用于机器人上进行场景识别时,仍然存在如下不足:首先,在竞争机制中由于只有唯一的获胜神经元被激活,而其余的神经元均被抑制,导致Y层大量的神经元没有得到有效利用,神经元的低利用率影响了场景识别的准确率;其次,由于仅仅采用正确识别结果进行正向学习,且没有充分考虑人类知识的引导,难以快速纠正错误的记忆结果,学习效果和识别准确度均有待进一步提高;此外,这种方法没有考虑到机器人工作的特点,仅仅针对单一图像判断其所处场景类别,因此其识别结果容易受到噪声和光照等条件影响,方法的鲁棒性较差.
针对上述不足,本文提出了一系列的改进方法,形成了一种改进型的自主发育网络:在迭代学习阶段,考虑增加更新突触权重向量的Y层神经元数目,并针对排序位次的先后采取不同的学习速率进行新知识的学习;在指导学习过程中,加入负向学习阶段,针对识别输出场景与人为指导输入不符,即出现识别错误的情况,弱化处理导致错误输出结果效应器对应的突触权值向量;在测试阶段,考虑传感器噪声等影响,结合机器人在实际环境中的工作特点,利用连续型输入样本进行测试,综合分析前后多幅样本并引入统计的思想来获得最终结果;同时,当系统应用于陌生环境等难以识别的复杂情况时,适当进行人类知识的引导加强.综上所述,改进型自主发育网络基本框架如图1 所示.通过实验验证,结果表明这种改进型方法可以提高场景识别方法的效率和准确性.
图1 改进型自主发育网络框架Fig.1 Improved autonomous developmental network framework
1.1.1 基于多优胜神经元的竞争机制
在当前的发育网络中,通常采用单优胜神经元竞争机制,仅更新响应最大的神经元的突触权重向量,导致网络Y层被激活的神经元个数太少,大量神经元未能得到有效利用,在一定程度上影响了系统的识别正确率.
实际上,对于应用于场景识别的移动机器人而言,由于实际环境中存在各类噪声的影响,对于输出值相差较小的两个输入,实质上难以判断其优劣,若仅仅选择最优的单个神经元进行更新很容易出现错误.基于以上分析,本文提出了基于多优胜神经元的竞争机制.具体过程如下:
首先,计算出Y层所有神经元的预响应向量值,确定其中的最大值,挑选出所有预响应向量值接近该最大值的神经元组成优胜神经元集合.此外,根据不同的识别任务和计算资源预先确定允许更新的神经元个数k.若优胜神经元集合中元素的个数不多于k个,则更新集合中所有神经元的突触权重向量,否则仅更新其中k个预响应向量值相对更大的神经元的突触权重向量.
值得指出的是,在优胜神经元的突触权重向量进行更新的过程中,不仅受到来自输入向量新知识的影响,同时也会受到原有旧知识的影响.预响应向量值最大的神经元受到来自旧知识与基于输入向量的新知识的影响相同.随着预响应向量值不断减小,不断调整权重更新方程,降低来自输入向量的新知识对于突触权重更新时的影响比例,增加旧知识对于突触权重向量更新时的影响比例,从而模拟人脑对知识的接收以及记忆功能.按照预响应向量值对神经元进行排序,相邻位次神经元之间新旧知识影响比例差值为 1/k,即第一位神经元突触权重向量更新时来自输入向量的新知识的影响比例为1,则第二位神经元突触权重向量更新时来自输入向量的新知识的影响比例为 (k −1)/k.因此第k+1 个优胜神经元的突触权重向量更新时,来自于输入向量的新知识的影响比例为0,故此时只有来自于旧知识的更新.可见,受突触权重向量更新的神经元数量最大为k个.因此,即使排在第k+1 位的优胜神经元其预响应向量值仍在阈值范围内,也不对其做突触权重向量的更新.
经过这样的改进,提高了系统对于Y层神经元的利用,增加了系统的容错性,并在一定程度上提高了系统的识别正确率.
1.1.2 基于负向学习的权值更新
在原有算法中,仅仅通过正向学习不断加强对应场景分类的相关权值.但实际上,负向学习同样重要.在进行指导学习时,若对于输入信息经过处理后得到了错误的输出,则应对与错误场景对应的权值进行弱化处理,从而模仿人类大脑对于记忆中的错误信息进行清除,以提高学习效率.
基于以上考虑,本文提出一种将正向学习与负向学习相结合的改进方式,即除了采用正向学习训练网络之外,同时利用样本对系统进行负向学习再处理,通过该过程进一步提高系统的可靠性,提高场景识别的正确率.
对于自主发育神经网络而言,Z层是一个全连接层,Y层内的每一个神经元通过自底向上突触权重向量与Z层的各个神经元进行连接.Z层中的神经元对应不同的输出场景类别.
改进型自主发育神经网络的简单模型如图2 所示.自主发育神经网络根据输入的样本图像进行网络内部处理,通过计算预响应向量获得一个与之关联强度系数最大的神经元,利用该神经元与最终输出效应层中对应不同场景类别神经元之间的突触权重向量值大小来决定输出结果类别.
图2 改进型自主发育神经网络模型Fig.2 Improved autonomous developmental neural network model
换句话说,每一个输入图像经过计算处理后会得到一个与之最为匹配的Y层神经元,我们称该激活的Y层神经元为最优胜神经元.在正向学习过程中,网络的输入除了来自样本的图像输入还有来自人为的指导输入.仅针对Y层与Z层而言,系统通过不断强化输入图像对应的Y层最优胜神经元与实际场景类别对应的Z层神经元之间的自底向上突触权重,从而使机器人进行发育学习.
在负向指导学习阶段,对于自主发育神经网络而言,仍有来自人为的指导输入.系统通过输入图像计算输出场景类别,若该输出的场景类别与人为指导输入的场景类别一致,则说明识别正确不需要进行处理;若该输出的场景类别与人为指导输入的场景类别不一致,则表明预测错误,也就是说输入图像计算得到的Y层最优胜神经元链接强度最大的Z层神经元与正确场景类别对应的Z层神经元不一致.造成这一现象最直观的原因在于Y层最优胜神经元与Z层各个效应器之间的自底向上突触权重向量出现了误差.此时采用一种最高效且满足需求的处理方式,即弱化导致错误输出结果效应器对应的突触权值向量,同时强化正确输出结果效应器对应的突触权重向量,以提高学习速度.
1.1.3 基于连续型输入的加强型学习
对于场景识别任务而言,若仅仅采用其中的一幅图像来识别场景,易受到噪声等各种因素的影响,识别的准确率不高.对于工作在实际环境中的机器人而言,它通过传感器获得的外部环境特征并不是孤立的静态信息,而应该是随着机器人运动采集到的一组连续信息.例如,对于采用视觉传感器的机器人而言,它接收到的视频中每一帧都相当于一张测试场景图像样本,此时,可以综合分析前后多帧样本图像来识别场景类别,以处理各类偶然性因素的影响,提高识别结果的稳定可靠性.基于以上考虑,本文提出了基于连续型输入的加强型学习方法.对于本文研究的场景识别问题,在机器人运动过程中连续拍摄场景照片,并对这些样本图像进行识别处理,进一步根据识别结果进行分类统计,出现频度最高的识别结果即为机器人在这段时间所处的场景类别.通过这种方法,在一定程度上增加了系统的容错性,提高了系统识别的正确率.
1.1.4 人类知识的引导与加强
在现有算法中,系统根据Y层输出权重结果直接决定对应的场景类别.但考虑到经过计算后,Y层输出权重向量值会出现多种情况.为此,本文提出了一种对于不同结果进行适当人为干预提高识别准确率的改进方法,具体过程如下:
对于Y层神经元来说,通过经过计算后得到的Y层的输出权重向量与Z层的n个对应不同的场景类别的神经元相连,根据Y层输出权重向量值的大小共有三种可能情况:
1)有一个单一的极大值,其大小明显占优
这种情况表明机器人系统对于其识别结果有足够的准确度,因此,可将明显占优的Y层输出权重向量指向的Z层效应器确定为外部测试图像的对应场景.
2)出现m个相近的极大值,且它们明显高于其余Y层输出权重向量值
可以确定的是,最终识别出的场景类别必定在这m个Y层输出权重向量相连接的Z层效应器中.此时,需要综合考虑对应Y层的各个神经元,通过观察其他信息,如神经元激活年龄等附加条件,计算挑选出链接强度最高者,最终遴选出正确的Z层效应器.
3)Y层所有输出权重向量值的大小近似
此时表明发育神经网络无法进行抉择,需要进行人工指导,从而确定该外部输入图像对应的场景类别.
将基于LCA 的自主发育神经网络建立的模型用于陌生环境识别的时候,当遇到难以抉择的情况时还需要进行人工指导,如此才能不断提升系统的性能;另一方面,随着系统能力的不断提升,其需要人工进行指导的情况也会不断减少.
1.2.1 神经元预响应向量的计算方式
对于自主发育神经网络而言,来自X层的外部输入即为机器人采集到并预处理为固定大小的图像,采用取值为 0 ∼1 的像素值进行表征的二维矩阵;来自Z层的指导输入即为一个n×1维矩阵(n即为进行区分的场景类别个数),结果指向外部输入图像对应的场景类别.换句话说,即场景N对应的指导输入矩阵中第N个元素为1,其余元素均为0.
当神经网络有输入向量时,相应的神经元将会对输入向量做出相应的反应.此时,我们将神经元的反应强度定义为神经元预响应.
在自主发育神经网络指导学习阶段,Z层作为外部环境对神经网络的指导输入.这时,对于Y层而言,同时有来自X层和Z层的两个输入.X层输入即为训练样本图像信息,Z层输入即为训练样本图像的对应场景类别信息.此外,Y层的每个神经元均有来自自底向上(bottom_up) 和自上而下(top_down)两个方向的突触权重向量.
假设x为X层的外部输入,z为Z层的内部指导效应输入,vbj为Y层第j个神经元的Ybottom_up突触权重向量,vtj为Y层第j个神经元的Ytop_down突触权重向量.Y层第j个神经元的响应向量值计算方法如下:
其中,Y层第j个神经元的bottom_up 突触权重向量对应的输入向量x,来自于当前神经元的前一层,即X层.α(0≤α ≤1) 即为相对于bottom_up 突触权重向量而言的top_down 突触权重向量最大权重比例系数.因此,当α0.5 时,说明对于该神经元来说,bottom_up 突触权重向量和top_down突触权重向量的影响力度相同,即来自X层的外部图像输入与来自Z层的学习指导输入对于该神经元的预响应向量计算的影响力度相同.
对于Z层而言,只有来自于Y层的输入.将Y层神经元经过计算得出的预响应向量作为输入.假设r为Y层计算得出的预响应向量,vjb为Z层第j个神经元的Zbottom_up 突触权重向量.则Z层第j个神经元的响应向量值计算方法如下式所示:
1.2.2 神经元突触权重更新过程
众所周知,人类之所以拥有高级的智能水平,主要原因在于可以通过不断地学习来获得新的知识,从而实现其智能增长.与之相对应,神经网络通过学习训练来实现自适应性,通过神经元突触权重向量的改变直观地反应学习结果.
对于Y层而言,将Y层神经元根据输入向量计算得到的预响应向量进行排序,选择前k个预响应向量值最大的神经元作为优胜神经元,对优胜神经元进行突触权重更新.
首先,更新优胜神经元的激活年龄.每次更新将其对应年龄加一.其次,更新优胜神经元的突触权重向量.假设Y层第j个神经元为Y层的优胜神经元,g j为Y层第j个神经元的激活年龄,ryj为Y层第j个神经元根据输入向量计算的预响应向量值,x即为经过处理后的来自于X层的输入向量,z即为经过转置处理后的来自于Z层的指导学习输入向量.β的值即为前文提到的 1/k,反映了Top-k竞争机制中针对不同位次神经元的新旧知识影响的调整.
更改后的Y层优胜神经元的bottom_up 突触权重向量的更新方程如下式所示:
更改后的Y层优胜神经元的top_down 突触权重向量的更新方程如下式所示:
Z层的bottom_up 突触权重向量的更新方程如下式所示:
其中,假设Z层第j个神经元为Z层的优胜神经元,v bjz为Z层第j个神经元的bottom_up 突触权重向量.
更新公式中的ω1(g j) 和ω2(g j) 控制着神经元的学习速率,两者之和恒等于1.ω2(g j)/ω1(g j) 的结果反映了神经元对于新知识的学习程度,比例越大,则对新知识学习程度越大.ω1(n) 和ω2(n) 由遗忘平均算法(Amnesic mean)获取,具体计算与钱夔等的原有发育神经网络算法[11]相同,此处不多赘述.
1.2.3 改进型自主发育算法在场景识别方面的应用
考虑机器人的具体特点,我们应用所设计的改进型自主发育算法完成场景识别任务.具体而言,改进型算法通过对X层获取的图像进行处理,变换为二维像素矩阵.结合来自于Z层的人为指导输出,计算Y层神经元的预响应向量.针对预响应向量值较大的前k个神经元进行其突触权重向量的更新.通过不断迭代学习,进而获得发育较完善的神经网络.再利用该神经网络对图像进行识别,确定与Y层预响应向量值最大的神经元链接强度最高的Z层效应器,判断该效应器对应的结果和人为指导输入的场景类别是否一致,针对不一致的情况进行链接强度调整.至此,自主发育神经网络的发育训练过程结束.综上所述,改进型自主发育神经网络算法进行场景识别的具体流程如图3 所示.
图3 改进型发育网络进行场景识别的算法流程Fig.3 Algorithm flow for scene recognition in improved developmental network
将本文提出的改进型自主发育神经网络应用于机器人系统,使其实现场景识别任务.为了测试方法的性能,本文选取室内、拐角、走廊三类场景类别进行识别.实验数据选取包括不同条件的图像样本,例如:光照、杂物干扰以及噪声影响,图4 展示了部分场景样本图像.
图4 部分场景样本图像Fig.4 Partial scene sample images
选取神经网络迭代次数为3,通过计算神经元的预响应向量,得到其值最大的Y层优胜神经元,然后利用与该神经元相连的Z层bottom_up 突触权重向量值确定Z层的效应器,选取Zbottom_up值最大的Z层的效应器,其对应的场景输出即为识别结果.
根据场景特点,在实验中定义Y层神经元个数为100 个,选择不同的更新神经元个数k进行对比性实验,图5 记录了Y层神经元激活个数的对比情况.由该图可以看出:与原来的方法相比较,改进型算法的激活神经元数量增加到原来的k倍左右,表明改进型算法中Y层神经元的利用率更高,从而减少了系统对内存资源的浪费,进而提高了场景识别的正确率.
图5 Y层神经元激活个数对比Fig.5 Comparison of the number of activations in layer Y neurons
对于这些人类知识,考虑噪声的影响,在系统测试时,进行了数据扩充.样本的选取经过了训练样本图像—在训练样本图像数据上加上随机数产生的“假”图像—非训练样本图像—连续非训练样本图像的过程.实际上,对于该发育神经网络来说,选取Y层优胜神经元所依据的是其突触权重向量与输入图像像素矩阵的匹配程度.因此,原则上使用增加了5%以内的随机数的输入图像像素矩阵对测试结果影响不大.因此考虑在输入图像的基础上产生一些“假”图像,其输出应仍然是那些对应的类别,从而做到进一步加强学习.
基于以上分析,利用不同数量的学习样本对神经网络进行发育训练,得到不同样本图像下的测试结果如图6 所示.可以看出,使用增加了5%以内的随机数的训练样本图像与训练样本图像相比,对场景识别的准确性相差不大.值得指出的是,当学习样本数量增加到一定程度时,机器人对于曾经所处过的环境可以做到百分百的正确识别,因此利用学习样本进行测试最终的准确率将达到100%.机器人根据以往积累的“知识”对场景进行识别,因此当其下次到达相同场景时,可以利用原来大脑中记忆的知识进行精准识别.相比利用非训练样本图像进行场景识别时,系统对连续采集的样本图像具有更高的识别准确率,当训练样本足够大时,系统识别准确率可以达到99.7%.
图6 不同测试样本识别正确率对比Fig.6 Comparison of correct test rates for different test samples
如图7 所示,利用相同数量的训练样本对系统进行发育训练,对比改进算法与原有算法在进行场景测试时的识别正确率.两条水平虚线表示两种算法识别准确率的均值曲线.可以看出,改进型自主发育神经网络对场景识别的正确率平均值达到了95.5%,相比原有算法均值90.17%得到了明显提高,并且比原有算法更加稳定.
图7 场景识别正确率对比Fig.7 Scene recognition correct rate comparison
针对室内场景较为复杂的特点,我们选取了不同的室内场景类别进行实验,进一步验证改进型自主发育神经网络的泛化能力.通过在实验室环境采集学习样本对网络进行指导训练,利用发育后的网络对教室以及会议室等与训练样本不同的环境采集测试样本进行识别,部分场景类别样本如图8 所示,系统识别准确率如表1 所示.
图8 部分室内场景样本图像Fig.8 Partial indoor scene sample image
表1 不同室内场景类别识别准确率Table 1 Classification accuracy of different indoor scenes
由表1 所示实验结果可以看出,因教室环境存在过道类似走廊的干扰,识别准确率稍低.总体来说改进型自主发育算法仍可取得较为不错的效果,证明其具有一定的泛化能力,对新鲜的场景环境容错率较好,可以应用到机器人未曾见过的实验环境中.
针对机器人场景识别问题的具体特点,本文提出了一种基于改进型自主发育网络的场景识别方法.这种方法由于引入了多优胜神经元竞争机制,可以增加更新的神经元数量,从而有效提高神经元的利用率;同时,在学习过程中增加了负向学习方式来提高系统的识别正确率;此外,利用连续测试图像对所处场景进行识别,降低因图像噪声等导致的识别错误,提高系统的鲁棒性.为了进一步提高学习效率,在系统中增加了人类知识的引导与加强,当无法明确进行场景类别抉择时,引入人类经验进行人工指导,以提高识别准确率,并扩展系统知识.通过实际测试结果表明,与现有的方法相比较,本文提出的方法具有更高的识别准确率,有望应用于机器人的实际作业.
未来的研究工作主要集中于以下两点:1)考虑传感器噪声的影响,采用滑动窗口覆盖图像测试实现识别准确率的进一步提高,对比不同策略得到最优化方法;2)使机器人应用到更广泛的场景中,进一步增加自主发育网络在机器人上的应用,并深入研究正向学习和负向学习的共同作用,快速提升机器人的智能发育水平.