混合模糊匹配算法在军用公共计算环境下的应用研究∗
2021-01-19
(中国舰船研究院 北京 100101)
1 引言
军用公共计算环境承担军方计算和存储职能,通常独立运行,要求高可靠性、高实时性,其计算能力和数据存储能力相对受限。而其中的定制化软件面临着定制化软件之间互相冲突、软件与底层配置不一致等常见问题的考验,采用混合模糊匹配算法可以避免提示信息与错误毫无关联的情况,提高军用公共计算环境的可靠性,减少无效操作,弥补计算能力不足等问题。
本文提出一种基于语义及词型的混合模糊匹配算法并形成一款软件自修复工具。如图1所示,其软件安装位置为操作系统之上、信息平台集成软件群之下。结合自更新的错误模型库,配合深度学习算法开发了一款服务于军用公共计算环境的软件自修复工具,主要实现功能包括对软件底层配置文件的自检查,收集错误信息并与软件自身模型库进行匹配,以及部分问题的自动修复。
图1 军用公共计算环境架构
2 自修复工具介绍
图2为软件自修复程序运行设计思路,其软件主要机理:根据系统提示错误信息以及当前状态与自身错误库中数据进行模糊匹配,通过深度学习算法提供相似度最大的错误信息给客户,确保报错的准确性和可读性。最终根据输出的错误与软件解决方案库进行匹配,向用户提供更为详细可读的解决方案,并在一定权限下完成简单错误的自我修复。
图2 软件自修复程序运行设计思路
3 混合模糊匹配算法应用创新
本文所设计的针对军用平台的混合模糊匹配算法主要包含词型级模糊匹配算法和语义级模糊匹配算法两个模块。
3.1 词型级模糊匹配算法
3.2 语义级模糊匹配算法
利用深度学习方法实现语义级模糊匹配算法,该软件主要提供三种解决思路,分别是基于Skip-gram的模糊匹配算法、基于问答形式的匹配算法和DSSM深度语义匹配算法。
3.2.1 基于Skip-gram的模糊匹配算法
Word2Vec是一种经典的语句处理算法,该方法运用了基于神经网络概率语言模型的自然语言处理技术,Word2Vec词向量语言模型就是基于神经网络概率模型,将自然语言中的字词转为计算机可以理解的稠密向量,本质上是一种降维。在隐含层,通常包含CBOW技术和Skip-gram技术[3,8]。
3.2.2 基于深度学习的DSSM语义匹配算法
如图3所示,DSSM从下往上可以分为三层结构:输入层、表示层、匹配层。
图3 DSSM结构示意图
图4 CNN-DSSM卷积神经网络架构
DSSM(Deep Structured Semantic Models)的原理:通过搜索引擎里Query和Title的海量的点击曝光日志,用DNN把Query和Title表达为低维语义向量,并通过余弦相似度距离来计算两个语义向量的距离,最终训练出语义相似度模型[6]。该模型既可以用来预测两个句子的语义相似度,又可以获得某句子的低维语义向量表达。
本文开发的自修复软件采用CNN-DSSM技术,相比于DSSM容易产生的信息混淆的特点,CNN-DSSM通过卷积层提取了滑动窗口下的上下文信息,又通过池化层提取了全局的上下文信息,使得上下文信息得到较为有效的保留,能更好地保留原本语义用于匹配[7]。接下来介绍CNN-DSSM从底层到顶层三层模型的工作方式并举例说明其处理中文语句的过程。
1)输入层
由于本软件的语言环境为中文,因此DSSM原本常见的英文的处理方式(word-trigramletter-trigram)需要进行修改,由于中文的粒度切分带来的误差是否可控一直是个难题,故只针对中文文本采用保守的中文单字切分得到的字向量(1.5万维)作为输入是比较可控的。
2)表示层
CNN-DSSM的表示层由一个卷积神经网络组成,如图4所示其结构如下。
(1)卷积层—Convolutionallayer
卷积层卷积层的作用是提取滑动窗口下的上下文特征。如上图所示每个中文字经过切分之后共有Q/D(Query/Doc)个单字,每个单字经过wordhash都可以由一个小的向量表示,之后设定卷积滑动窗口大小得到featuremap矩阵,通过计算得到卷积核的数量完成到一维卷积。输出固定维数(300)的向量表示为{ωi,bi},其中ωi表示第i层的权值 矩 阵 ,bi表 示 第 i层 的 bias项[10]。 输 出 为ct=tanh(ωift+bi)i=2…N-1,其中N取决于神经网络深度和训练模型卷积层数。
(2)池化层—Maxpoolinglayer
池化层的作用是为句子找到全局的上下文特征。池化层以Max-over-timepooling的方式工作,稳定使得每个featuremap都取最大值,得到一个300维的向量。输出向量为v=tanh(ωict+bi)i=2…N-1。为了保证机器训练,要求Maxpooling层要保持固定的输出维度,是因为下一层全连接层要求有固定的输入层数要求。
(3)全连接层—Semanticlayer
3)匹配层
在训练阶段,通过极大似然估计,取得最小化损失函数为
剧场里又响起一阵音乐,是那首著名的《骷髅之舞》,峰峰相连的音符串成一段又一段的高潮,不停撩拨着我心中那根脆弱的弦。
其残差会在表示层的DNN中反向传播,最终通过随机梯度下降(SGD)使模型收敛,得到各网络层的参数{ωi,bi}。两个需要对比的原始语句(Query和Doc)经过匹配层处理后的语义相似性可以用这两个语义向量(128维的余弦相似度)来表示:
通过softmax函数可以把Query与正样本Doc的语义相似性转化为一个后验概率[12]:
其中r为softmax的平滑因子,R(Q,D+)为Query下的正样本,R(Q,D')为Query下的负样本(采取随机负采样),D为Query下的整个样本空间。
4 模糊匹配算法实践与论证
4.1 实验对比与数据分析
考虑到词形级匹配算法对于同义句子的匹配情况差,而词义级匹配算法虽然能够较好匹配同义句,但匹配时间较长,对数据要求较高。本文综合考虑两者的优缺点,创新性地设计了混合匹配算法。其工作流程为如下。
首先输入需要匹配的语句,系统所运行的软件启动模糊匹配功能,第一环节通过词型匹配进行识别,如果Sim值大于等于0.9则匹配成功,输出相应结果;否则进行第二环节语义级匹配,通过Skip-gram以及DSSM确定结果。为了证明所设计的模糊匹配算法具有优于任意单一类型算法的效果,本文采用公开的语料库进行训练,对比词型级匹配算法、语义级匹配算法以及混合模糊匹配算法各自的训练结果,通过实验数据来证明本文提出算法的可行性以及阈值定值合理性。
该算法对于匹配准确率及效率影响最为重要的参数是第一环节中词型匹配阈值的确定方法,本文通过机器学习进行大量的语句训练并结合一定的数学方法,完成了从词型级匹配转向语义级匹配的分水岭阈值定值。
图5 不同阈值下各个算法精确度
图6 不同阈值下各算法时间开销
图5为各算法在不同阈值情况下,10000对句子匹配准确率。可以看出,在阈值较低的情况下,混合算法的匹配准确度较低,当阈值在0.9左右时,开始高于两种算法。
图6为各算法在不同阈值情况下,对1000对句子进行匹配所需要的时间(s)。可以看出,当阈值高于0.9时,混合算法所需的时间明显增大。
本文以参数t表示时间参数,v表示准确率参数,x表示两者综合效率参数,n为样本总数,转换公式:x=1/t+v/t+v2/t+...+vn/t,上式可以转化为x=1/(1-v)t,当n趋近于无穷大时,两式等价。
图7 各算法效率参数与准确度关系图
从图7可以看出,在不考虑准确率较低的情况下,阈值为0.5时,效率参数x取得最大值。但考虑到算法的匹配质量,我们将阈值为0.5的情况舍弃,此时可以看出,最佳阈值取值为0.9。
通过以上理论推导以及实验数据支撑可以得出结论,本文所提出的混合模糊匹配算法在词型初筛阈值取值为0.9时,性能优于目前常见的每种单一算法,且综合效率值低于词型级匹配算法高于语义级匹配算法。通过清晰的架构与合理的流程做到了既保证精确度提升又使响应速度在可接受范围内。
4.2 模糊匹配算法应用初探
4.2.1 算法适用场景
场景1:舰艇停靠在港口或距离距离陆基较近,有较好的网络环境时,可通过公有云从公共资源池获取训练数据,并借助公共计算能力,对模型参数数据进行更新,同时也会将舰艇本身所获取的新的数据传入公有云,更新公共资源池的数据资源。模型参数更新保证了软件自修复工具可以实时的进步,借助公有云资源池完成软件内错误描述库的周期性更新以及下载训练数据对软件内语义级匹配算法的效果进行优化。
场景2:当舰艇处于执行任务状态时,因其距离岸基较远,网络通讯能力较差,无法有效获取公共云的计算能力和数据。此时舰艇因计算存储能力受限,只进行有限的数据训练,并在一定程度上提高使用词型级匹配的频次。
4.2.2 软件自修复工具的定制化规则
根据上一节中应用场景分析不难看出,本文所设计开发的软件自修复工具的运行环境比较特殊,软件需要进行一些针对性的定制来适应其工作的军用公共计算环境。为了解决舰艇出海执行任务时在某些网络环境较弱的情况下,相应的计算存储能力也收到一定的限制。为解决该问题,在DSSM模块搭建深度学习神经网络时(这个选择也有文本转向量特性的原因),规定卷积层搭建30~40层。这样可以有效地降低对数据存储能力的要求。在全连接层搭建2~3层来降低峰值计算量,缓解计算需求剧增的情况。通过实验证实,所搭建的神经网络在处理语句的精确度和响应速度方面均达到了理论预期的要求。
此外,该军用公共计算环境因战场信息获取及时性、准确性而要求整体具备高实时高可靠的特点,实装软件均针对军用环境进行了相关调整,使其具备仅运行词型级匹配模块的功能,确保在特殊条件下不占用过多的计算资源。
5 结语
本文基于几种常见的模糊匹配算法,结合深度学习神经网络,针对军用公共计算环境特点设计了一种混合模糊匹配算法和相关软件架构,开发了一款软件自修复工具。该软件具有清晰的设计思路、架构方法符合软件科学、工作逻辑缜密,通过实验和理论推导证明了该软件核心算法的性能具有一定的能效提升,通过定制化可满足军用需求。