刘志强

(重庆移通学院 大数据与软件学院,重庆 500000)

0 引言

对应用程序加载模式数据的分析与提取,能够辅助软件技术人员从程序角度上把握软件的设计意图及其实现的功能,由此实现程序理解与逆向工程设计[1]。利用仿真应用加载模式,不仅解决了软件系统设计中重复出现的问题,还有效提高了应用可复用性、可维护性、可理解性、可进化性和鲁棒性[2]。对于一个特定的问题或加载经验,加载模式通常是具体的解决方案,其能帮助开发人员更有效、更快地实现程序架构设计[3]。

以往的加载模式识别系统,如基于容器理论的模式识别系统[4],通常采用一种多级归约策略,即将源代码和设计模式同时表示为称为抽象对象语言的中间表示,从而创建一个AOL识别模式知识库。在此基础上,分析AOL知识库,并生成抽象语法树,提取加载模式识别信息。然后采用多阶段简化策略减少识别模式搜索与识别的复杂度,确定不同程序加载模式。但这种加载模式的中间表示方式只描述了每个程序的属性和方法数量,不能准确地表达模拟应用程序加载模式的特征信息。

针对传统系统存在的不足,本文提出了一种基于极限学习机的模拟应用程序加载模式识别系统设计方案。利用极值学习机进行异常模式识别。极值学习机的训练速度非常快,能够快速处理海量数据,并能进行非线性回归拟合,可以处理具有高度非线性的分类边界异常模式识别问题。

1 系统总体结构设计

模拟应用装载模式识别系统利用OpenCV实现嵌入式平台的装载模式识别,通过安装在嵌入式平台的摄像机获取装载程序的图形信息。该系统的模式识别程序能自动提取图形中的手势信息,并对手势的形状、位置进行记录[5-6]。因为OpenCV库文件需要被调用,多线程和链接库需要被多次使用,所以需要一个支持多线程和叠加的操作系统,而嵌入式ARM完全满足这个需求,具有小型、便携性优点,且与台式计算机相比具有较高的性价比,能够更好地实现多任务、多线路处理[7]。因此,ARM嵌入式开发平台将被采用,其总体结构见图1。

图1 系统总体结构

图1中的模块分为四个部分:USB摄像机、ARM硬件开发板、嵌入式多Linux操作系统、模式识别应用模块。该设备终端是一个嵌入式系统,包含了所有的软硬件资源。

2 硬件结构设计

系统硬件主要由S3C2440芯片、内存、通用I/O接口电路、LCD显示屏、摄像机等组成。TQ2440开发板是由嵌入式技术公司提供开发所需要的主要硬件资源,极大地方便了嵌入式模式识别系统的开发[8-9]。系统硬件结构如图2所示。

图2 系统硬件结构

图2中,采用三星公司生产的S3C2440芯片,用一个外部摄像头采集外部图像,液晶显示器用来显示处理过的图形,串口用来和PC通信调试系统,通用端口用来控制或指令[10]。

2.1 S3C2440处理器

S3C2440处理器是三星为其广泛应用而开发的处理器,具有ARM920T嵌入式内核,采用0.182µm CMOS工艺制造处理器,工作频率稳定在400 MHz,并在超频限制下可以达到532 MHz。S3C2440功耗低、效率高,支持16位Thumb指令和32位ARM指令,使用大量寄存器完成大量操作,指令长度固定,便于寻址。此外,S3C2440还集成了通用的系统外部设备。

2.2 SDRAM

SDRAM是一个同步、动态、随机的存储器。Synchro-nized表示内存需要一个同步时钟,在此基础上,实现了内部命令和数据同步传输,Dynamics意味着需要不断刷新存储数组,以确保数据不会丢失。随机性意味着数据被随意分配到读写数据的地址。图3中显示了SDRAM的结构。

图3 SDRAM结构

图3中,Pin主要是用来将模块或芯片连接到外部电路的金属管脚;SIMM:表示存储器模块单排记忆棒,所说的单排是指模块电路板与主板插座之间接口只有一排插针;DIMM:表示二进制内存模块内部的双排管,所谓双排管,就是模块电路板和主板槽之间的接口有两排引脚,模块电路板两侧对应一排引脚;RIMM:表示带注册表的双线存储器模块,该存储器插槽只能插入DDR或Rambus存储器。

2.3 信号识别模块

系统参数控制平台也称为上位机平台,主要包括以下几个方面:

1)参数控制。参数化控制主要实现用户控制和系统参数设置,包括数据采集、数据存储、信号识别等。

2)信号特性显示。主要内容包括未解调信号的波形显示、信号频谱分析、解调数据流波形等。

3)数据调度。该模块主要完成各模块间的数据传输及调度操作。在LabVIEW环境下实现了参数控制、信号特性显示、数据调度、USB数据通信等功能。

4)USB数据通信。USB数据通信模块实现了主机软件和USB接口之间全双工模式的数据通信。

3 软件功能设计

3.1 模拟应用程序加载模式信息抽取

极限学习机是在词法分析过程中与符号表交互的工具,在极限学习机上找到标识符的语素后,就会在符号表中添加该语素。读入模拟应用程序中的字符,把它们组合成语素,然后生成和输出一系列词汇单位,每一个单位对应一个语素的过程。

在提取信息的过程中,极限学习机主要扮演着读取源代码信息的角色,因此除了识别语素外,还需要识别过滤源代码中的注释、空白和一些无效字符。学习的过程是通过形式和语法实现的,词汇和语法是相互影响的,其交互过程见图4。

图4 词法与语法之间的交互

基于得到的字符和符号表中的词素匹配,极限学习机会生成下一个词汇单元,然后返回到极限学习机上,由此完成模拟应用程序加载模式信息抽取。

3.2 基于极限学习机的加载信号分析

为模拟应用程序的负载提供了人工神经网络分析模型,其中的分析原则如下:

式中:Q表示隐藏节点到输出向量的权重矩阵;ω表示输入向量到隐藏节点的权重矩阵;α表示激活函数。

在该原理下,对模拟应用程序加载信号接收特点进行分析,极限学习机接收的信号d(t)存在噪声干扰,因此,需构建数学模型排除干扰。

式中:ηn(t)表示加载信道增益;λ(t)表示噪声;s(t)表示加载信号,即无噪声信号。针对该加载信号,可用如下公式表示:

式中:g(t)表示数字脉冲信号;αn表示激活函数序列;cos(Δwct)表示残留载波信号。通过对加载信号进行非线性变换处理,通过激活函数进行类内识别,抵抗外界干扰。

3.3 识别流程设计

在无外界干扰信号支持下,将抽取的模拟应用程序加载模式信息构成一个个关联集合。根据不同加载模式之间的关系特征可知,在同一个关联集合中存在加载模式的所有信息,且关联之间符合不同信息之间的关系特征,由此判定关联集合加载模式,并等待特征约束识别。识别流程设计如图5所示。

图5 识别流程图

由图5可知,依据加载模式信息的关联集合,根据其所包含的加载信息过滤不满足该集合的其他信息。依据遍历满足条件的候选集合,得到最终识别结果。

4 实验与结果分析

为验证基于极限学习机的模拟应用程序加载模式识别系统的应用性能,将其各个功能模块转换成二进制编程文件形式,保存在扩展名为.bit位流文件之中,并存放于工程目录之下,运行后可得到USB识别结果和信号加载结果。然后将其与传统的基于容器理论的模式识别系统进行性能对比,以突出本文系统的实用性。

4.1 USB信号识别结果

USB信号识别结果如图6所示。

图6 两种方法USB信号的识别结果

由图6可知:使用传统识别系统在不同频率下波动曲线不具有规律性,但在0~1 500 MHz和8 500~10 000 MHz频率下波动幅度较大,而在1 500~8 500 MHz范围内,波动幅度较小,但最高也达到0.4。使用本文系统与标准值基本一致,均在0~1 500 MHz和8 500~10 000 MHz频率下波动幅度较大,在1 500~8 500 MHz范围内,波动幅度较小,最大也低于0.2。通过上述分析结果可知,使用基于极限学习机的识别系统识别USB信号较为精准。

4.2 信号加载结果

由于信号加载受到噪声干扰,导致传统识别系统识别效果较差,而使用本文系统不会受到影响,基于此观点进行实验验证分析,结果如图7所示。

图7 有噪声环境两种方法的信号加载结果

由图7可知,使用传统识别系统在频率为1 000~1 500 MHz范围内波动,最高幅值为0.98,最低为0.65;使用本文识别系统在频率为1 200~1 800 MHz范围内波动,最高幅值为0.9,最低为0.78,与标准值基本一致,误差仅为0.02。

在无噪声环境下,两种系统加载信号识别结果如表1所示。

表1 无噪声环境下两种方法的加载信号识别结果

由表1可知,使用传统识别系统在无噪声环境下加载信号识别精准度最高为0.88,而使用本文识别系统在无噪声环境下加载信号识别精准度最高为0.98,两者相差0.10。由此可知,使用基于极限学习机识别系统识别加载信号较为精准。

5 结语

利用极限学习机进行异常模式识别,极限学习机训练速度极快,能处理大量数据,并能进行非线性回归拟合。本文研究的识别系统虽然具有良好识别效果,但后期还需做以下深入研究工作,可作为今后的研究方向:

1)串行和并行分类架构下,测试样本不能被任何两个分类器识别为正数,这种分类方法有待商榷。

2)用遍历搜索法确定双分类器的参数,在训练过程中比较慢,所以提出一个启发式算法可以加快整个进程。