鲜开军 丁新虎 朱城超 朱钟华 徐东伟③
(*中国人民解放军61478 部队 乌鲁木齐830001)
(**浙江工业大学网络空间安全研究院 杭州310023)
近年来,深度学习的研究成果已经成功应用在图像识别[1]、语音识别[2]和自然语言处理[3]等诸多领域,具有巨大的发展潜力和社会价值。作为深度学习的重要组成部分,神经网络模型结构在很大程度上决定着深度学习的性能表现[4]。例如,卷积神经网络(convolutional neural network,CNN)从提出到现在,已经涌现出了许多经典的网络模型[5],如AlexNet[6]、VGGNet[7]、GoogLeNet[8]、ResNet[9]、DenseNet[10]等,这些网络模型成功地应用在了许多领域,尤其是在图像识别领域[11]。作为深度学习领域中另一类重要的模型,循环神经网络(recurrent neural network,RNN)擅长处理时间序列数据,基于RNN 而提出的长短期记忆网络(long short-term memory,LSTM)[12]和门控循环单元(gated recurrent unit,GRU)[13]等变体结构,在文本、音频和视频等领域也取得了较好的效果[14]。
神经网络模型的结构对于模型来说非常重要,因此获取神经网络模型结构并对其进行分析具有重要意义。但是当得到一个黑盒模型时,其模型结构无法得知,而构建等价模型可以模拟出一个等价模型来帮助分析黑盒模型。因此等价模型构建具有实际意义。
遗传算法[15](genetic algorithm,GA)是模拟达尔文生物进化论的自然选择和遗传学机理的计算模型,是一种通过模拟自然进化过程搜索最优解的方法[16]。该算法无需准确描述问题的全部特征,且具有较强的通用性和鲁棒性,能较快适应问题和环境的变化,在对较为复杂的组合优化问题求解时,通常能较快地获得较好的优化结果。
构建神经网络等价模型的本质就是一种较为复杂的优化组合问题,且神经网络的可解释性理论研究还处于完善过程中,特别是对于深度神经网络,更是难以找到合适的数学工具对其表达和训练能力进行建模[17]。
针对上述问题,本文提出了基于遗传算法构建神经网络等价模型的方法,在原模型的输入输出数据以及经典神经网络模型结构的基础上,将模型的结构参数进行编码,并充分利用遗传算法搜索最优解的能力,构建了原模型的等价模型。
整体设计方案的流程图如图1 所示。首先提取神经网络模型的结构参数,再选择合适的编码方式将提取的参数进行编码,并根据编码结果生成初始种群,然后通过遗传算法的选择算子、交叉算子、变异算子对种群进行迭代优化,最终选取最优个体作为最终构建的等价模型。
图1 等价模型构建流程图
模型的结构参数与模型结构相关,通过优化结构参数可以使得最终构建的等价模型结构相似于原模型,因此首先需要确定所需优化的结构参数。
本文以经典的卷积神经网络结构进行说明。卷积神经网络主要由输入层、卷积层、池化层和输出层组成,而卷积层为最核心的结构。在卷积层中,上一层的特征图被卷积核卷积后,通过激活函数得到输出特征图[18]。假设卷积层的输入特征图的大小为H×W×N,其中H×W表示输入特征图的尺寸,N是输入特征的通道数,K×K×N表示卷积核尺寸,用M表示卷积核数量与输出特征图的通道数[19],卷积操作如图2 所示。
图2 卷积计算过程
卷积神经网络的最后通常由多层全连接网络组成[18],通过全连接层计算,将特征数据映射到样本标签空间,再对其进行分类,全连接层中的核心操作是矩阵向量乘积,如图3 所示。
图3 全连接结构
通过分析可知,卷积神经网络的模型结构与卷积核的尺寸、个数和全连接层的单元个数相关。通过改变这些参数,可以生成不同的模型结构。
编码是把一个问题的可行解从其解空间通过相应的转换方式,转换到遗传算法所能处理的搜索空间[16]。在遗传算法编码方式的选择问题上,Holland[20]建议采用二进制编码。虽然还有格雷码编码[21]、浮点编码、树结构编码[22]、参数动态编码[23]等多种编码方式,但是考虑到本文所提取出的模型结构参数均为正整数,且编解码方式越简洁,就越方便后续的交叉变异等遗传操作,因此本文选用二进制编码方式。
二进制编码仅使用{0,1} 2 个符号,将每个个体的参数编码为二进制符号串,式(1)体现了一个二进制串(bn,…,b1,b0)2与十进制数(a)10相互转换过程。
本文以经典网络结构AlexNet[6]为例,提取了AlexNet 的模型结构参数作为等价模型构建时的优化对象,并利用二进制编码方式对其进行编码。表1展示了AlexNet 原始网络的结构。选择卷积核尺寸、个数和全连接层单元个数作为编码对象,结果如表2 所示。
表1 AlexNet 网络结构
表2 AlexNet 编码结果
适应度函数作为描述个体性能的主要评价指标,依据函数值的大小对个体的优劣进行区分。因此适应度函数的构造至关重要,这对遗传算法的迭代速度以及全局最优解有着直接影响。
本文通过将神经网络模型训练时的损失函数与种群个体的适应度函数建立映射关系,实现种群进化过程中对优化目标函数的寻优。
而神经网络模型的训练过程,就是减小损失函数值,直到其收敛至基本稳定的过程。多分类问题一般采用交叉熵损失函数[23],其数学表达式为
其中,m为样本数量,y(i)为第i个样本的one-hot 向量,hθ(x(i))为对第i个样本的预测概率结果。
本文在训练等价模型时,采用的数据标签为原模型的预测结果。一般而言,分类问题的最终结果y(i)为one-hot 向量,但从模型的角度而言,模型最终的输出值其实是对各个类别的预测概率值。因此为了避免精度损失,在训练等价模型时采用相对熵[24]作为其损失函数,其数学表达式如下:
对比式(2)与式(3),式(3)使用原模型的预测值y(i)pre替换式(2)中的y(i),这避免了y(i)仅考虑原模型预测结果的最大分量而造成的精度损失情况,有利于等价模型在训练阶段尽可能地学到原模型更多的细节信息,力求其预测值hθ(x(i))的概率分布尽可能逼近。
但作为种群进化依据的适应度函数,其函数值越大表示个体的适应性越好,即构建的等价模型越接近原模型。因此选取模型收敛到一定程度时相对熵的倒数作为最终个体的适应度,用于后续遗传算法对个体进行选择的依据,其数学表达式如下:
其中,(k,i)代表第k轮迭代中第i个个体,而Hki(θ)为对应模型的损失函数值。
当确定神经网络模型结构参数,并对结构参数进行编码后,通过将参数进行不同组合即可产生相应的种群。对种群中每个个体代表的模型进行训练后,根据适应度函数的结果进行后续遗传算法的优化。
本文对于模型的训练过程考虑了训练数据和训练方式。
关于训练数据方面,考虑到原模型最终的输出值是对各个类别预测的概率值,但在转换为预测结果时会经过one-hot 编码,而one-hot 编码只关注预测结果中最大的分量,将其置为1,而将其他类别预测结果置为0,作为分类问题的最终结果。构建等价模型的目的是为了使构建的模型结构尽可能与原模型一致,因此为了避免one-hot 编码所造成的转换损失,在训练等价模型时,直接采用原模型的预测概率值进行损失函数的计算,数学表达式如式(3)所示。
关于训练方式方面,考虑到神经网络模型本身训练所占时长,为了提高训练效率,在对种群中个体对应的模型训练时并不一定要等到损失函数收敛到最优状态,而是可以设定固定训练步数。该举措虽然使模型没有收敛到最优,但加快了遗传迭代速度,且训练步数并不是造成模型结构差异的因素,训练步数为无关变量,对于后续的选择算子进行个体的选择并未造成影响。为了提高最终构建的等价模型精度,可以将通过遗传算法迭代后最终选择的个体进行再训练,直至最优收敛状态,作为构建的等价模型。总体训练流程如图4 所示。
图4 模型训练方式
遗传算法的操作算子包括选择、交叉和变异3种基本形式,它们是遗传算法强大搜索能力的核心,是模拟自然选择遗传过程中发生的繁殖、杂交和突变现象的主要载体[16]。等价模型构建中的处理流程如图5 所示。
图5 遗传算法优化流程
1.6.1 选择算子
选择算子体现适者生存的原理,依据适应度对优质个体进行挑选而抛弃劣质个体,其主要作用是避免基因缺失,并提高全局收敛性和计算效率[16]。常用的选择算子有轮盘赌选择[25]、线性排序选择[26]、最优保留选择和锦标赛选择[27]等。
本文首先采用最优保留选择方式对种群进行选择,直接将种群中适应度最高的个体结构完整地复制到下一代群体中。然后再按照个体的适应度计算出每个个体被选中的概率,如式(5)所示,依据计算出个体被选中的概率值,进行轮盘赌选择,从而完成选择过程。
渤海装备在与多家用户日常交流中发现,烟气轮机用户大都存在大量备件储存的现象,既不利于企业资产管理,又严重占用了企业资金。针对这种情况,渤海装备开展了烟气轮机配件集中储备工作,建立了配件储备库。
1.6.2 交叉算子
在遗传算法中,交叉算子模拟的是自然界生物遗传基因交换重组的过程,通过交叉能使个体之间的遗传物质进行交换从而产生新的个体,一方面保存了种群中的优良基因,另一方面也增加了种群的多样性。
本文采用二进制编码方式,而适用于二进制编码个体的交叉算子有单点交叉、两点交叉、多点交叉、均匀交叉和算数交叉等[28]。在交叉过程中,选择合适的交叉概率Pc更有利于算法的寻优与收敛,Pc过小则会在迭代过程中导致新个体产生缓慢,致使优化过程减缓,Pc过大会导致最优个体丢失等情况出现,无法收敛[29]。
综合考虑下,本文采取两点交叉法作为交叉算子,在个体的二进制编码串中随机设置两个交叉点,然后将这两个交叉点之间的内容进行交换。表3 给出了一个具体的实例进行说明,对于选择出的两个个体的全连接层进行交叉,得到两个新的个体。
表3 两点交叉法
而对于交叉概率Pc的计算,则采用文献[29]中提出的自适应调节概率计算方式,如式(6)所示。其中pc1与pc2为设定的最大与最小交叉概率值,f′为进行交叉操作的两个个体中适应度较大的个体,favg与fmax分别为该次迭代中种群的平均适应度与最大适应度。如果进行交叉操作的个体适应度小于平均适应度,则表示此时处于遗传算法寻优的前期过程,种群的适应度分布较为分散,选择更小的交叉概率有利于保留种群中表现较好的个体;如果进行交叉的个体适应度大于平均适应度时,则表示此时处于遗传算法寻优的后期过程,种群的适应度分布较为集中,选择更大的交叉概率,能在不破坏表现较好个体的前提下,提高新个体的产生概率,可以在一定程度上避免陷入局部最优的困境。
1.6.3 变异算子
变异运算就是将个体的编码串中某些基因座上的基因值用该基因座上的其他等位基因来替换,从而形成新的个体。常用的变异方式有基本位变异、
均匀变异、边界变异、高斯近似变异等[30]。同时在变异过程中,变异概率Pm的取值对于遗传算法的寻优过程与最终收敛结果有着同样重要的影响,Pm过小不容易诞生新的个体,而Pm过大则会影响遗传算法的稳定性。
本文采用的编码方式为二进制编码,因此选择基本位变异方式即可。首先计算变异概率Pm,当结果满足变异条件后;再通过计算个体编码的变异位点,对其进行取反操作完成变异。表4 给出了一个具体的实例进行说明,对于一个全连接层单元数量做变异操作,生成新的变异个体。
表4 基本位变异
计算变异概率Pm的方式选用文献[29]中提出的自适应变异概率方法,其计算方式如式(7)所示,其中Pm1与Pm2为设定的最大最小变异概率值,f为当前个体的适应度值,favg与fmax分别为该次迭代中种群的平均适应度与最大适应度。如果个体的适应度大于平均适应度,则表示此时处于遗传算法寻优的后期过程,种群趋于稳定,个体的表现均较为理想,因此加大变异概率更有利于全新个体的产生。
而当确定变异概率Pm后,对于变异位的确定再做进一步考虑。由于神经网络对于结构的敏感性,当变异位确定为编码的高位时,变异结果对于模型结构的变动较为剧烈,容易造成整体结构的不稳定。因此本文提出通过结合编码的位置信息来确定变异位,使得随着编码位的增长而被选中为变异位的概率减小,计算方式如式(8)所示。
其中pl表示编码中第l位被选中的概率,random(0,1)表示生成0~1 之间的随机数,L表示编码的总位数。
根据本文所提出的基于遗传算法的神经网络等价模型构建方法,在图像分类、通信信号调制类型分类、网络链路预测领域[31]进行了模型构建实验。本文就网络链路领域的模型构建结果进行展示说明。
网络的链路预测问题主要是通过利用网络结构等信息,预测网络中缺失的链路或未来可能出现的链路。在图深度学习[32]中,链路预测问题主要通过图自编码器模型[33]解决。本文利用Apache 数据中程序员之间的Email 通讯数据,构建一个3000 个节点左右的Email 通讯网络,并使用链路预测模型对该通讯网络进行链路预测。
表5 展示了多个链路预测模型及其对应的模型结构参数。
表5 链路预测模型
确定上述模型的可提取结构参数后,根据原模型的参数值,对模型参数的编码范围进行确定,并在参数范围内随机生成种群并对其进行编码,如表6所示。
表6 链路预测模型参数范围
实验中设定遗传算法迭代次数为30 次,种群规模为20,最小交叉概率pc1和最大交叉概率pc2分别为0.5 和0.9,最小变异概率pm1和最大变异概率pm2分别为0.1 和0.2,对种群进行迭代优化,各个模型的迭代结果如图6 所示。
图6 遗传算法迭代结果
在迭代结束后,取最优参数构建的等价模型进行再训练,直至最优状态,最终的曲线下面积(AUC)与平均精度(AP)结果与原模型对比结果如表7 所示。从表中的结果分析可知,构建的等价模型在结构参数上虽然与原模型存在差别,但是在预测精度方面与原模型基本一致,由此证明了本文提出的等价模型构建方法的有效性。
表7 原模型与等价模型对比
在无法获取准确神经网络模型结构的情况下,本文充分依据原模型的输入输出数据与经典神经网络模型结构,并结合遗传算法提出了基于遗传算法的神经网络等价模型构建方法,实现在输入数据相同的情况下,保持原模型的输出数据与等价模型的输出数据基本一致。实验结果表明,本文提出的方法能构建出原神经网络的等价模型,且精度具有一定的保障。然而,此构建方式在原模型预测精度不高的情况下,构建出的等价模型效果也不理想,因此今后的工作将重点放在提升构建的等价模型拟合精度方面。