APP下载

基于数字微分的函数化树突状细胞算法模型

2020-09-18梁意文谭成予

计算机工程 2020年9期
关键词:树突微分抗原

张 艺,周 雯,梁意文,谭成予

(武汉大学 计算机学院,武汉 430072)

0 概述

人工免疫系统(Artificial Immune System,AIS)是受到人体免疫系统启发,模拟其行为、机制和功能的计算机系统[1],可用于解决信息安全领域的多个问题,包括恶意代码检测、入侵检测、垃圾邮件检测、shellcode检测等[2]。AIS算法根据应用类别主要分为优化算法、学习算法和异常检测算法。异常检测算法能够解决计算机安全的相关问题[3],其中代表算法为树突状细胞算法(Dendritic Cell Algorithm, DCA)。

目前树突状细胞算法已经成功应用于诸多安全相关领域,解决了具体的入侵检测问题,其中包括端口扫描检测[4]、僵尸网络检测[5]、机器人安全分类器[6]、ping扫描检测[7]、服务器攻击检测[8]以及电网攻击检测[9]等,近年来也被应用于地震预测[10]和网络水军检测[11]等方面。

GREENSMITH等人于2005年提出最初的树突状细胞算法(prototype DCA,pDCA)模型,并证明这种基于种群的算法能够对有序数据进行两类判别[12],此后其又完善了算法使用的步骤和流程,提出了更完整的模型(libtissue DCA,ltDCA)[13]。尽管ltDCA已被证明在诸多应用中有效,但其存在算法可控性差(相互作用参数和随机元素多)、信号预处理方法不明确、算法缺乏形式化规范、可分析性差等不足[14]。针对可控性差的问题,GREENSMITH等人通过去除大部分随机性参数,提出了轻量级的算法模型——确定性树突状细胞算法(deterministic DCA,dDCA)模型[15]。近年来也有学者对原算法的信号提取进行优化,如结合XGBoost的改进算法[16]和集成PCA的改进算法[17],但都没有给出明确的形式化描述。在理论分析方面,GU等人对DCA和dDCA进行了形式化描述[18],但描述与实现细节混杂在一起,缺少数据流和函数定义;GREENSMITH等人引入事件流的概念,在dDCA的基础上,对算法进行了函数化描述,形成了较为明确的规范(deterministic DCA in Haskell,hDCA)[19]。在信号预处理阶段,通过特征选择机制提取信号的方式会损坏数据特征的隐含意义,因此,CHELLY等人结合模糊粗糙集的方法[20]避免了信息损失,但该方法仍存在信号提取受人工影响、普适性差的不足。

通过数字微分可以依据数据的变化和变化趋势来感知危险[21],在信号提取阶段使用能够自适应提取危险信号(DS)和安全信号(SS),解决上述算法普适性差的问题。为此,本文在hDCA模型的基础上,结合数字微分改进原算法中的信号提取过程,建立基于数字微分的函数化树突状细胞算法(numerical differentiation based hDCA,ndhDCA)模型,并将其应用于UCI机器学习库,与传统DCA和dDCA模型进行性能比较。

1 相关知识

1.1 数字微分

数据的变化及数据的变化趋势被认为是异常检测的基础。“危险”通常表现为数据的异常,可用于评估数据集中各项要素的重要性。数字微分[21]是一种通过研究离散数据集,分析数值变化和变化趋势来感知“危险”的方法,能够从全部特征集中提取应用环境的所需特征。数字微分包括数值微分、数组微分和向量微分,在实际使用中可根据数据的特点选用合适的算子并加以调整。

文献[22]利用数字微分从应用环境的信号中自适应地提取危险信号,建立基于变化的自适应危险信号提取模型。文献[23]将数字微分用于入侵检测的数据预处理过程,提高了入侵检测的准确率。文献[24]将数字微分结合树突状细胞算法用于故障检测,在提高检测率的同时实现较早检测到渐变性故障的目标。

1.2 DCA发展及hDCA介绍

DCA是一种免疫启发算法,最初基于天然树突细胞的功能,因为其具有非常低的CPU处理要求并且不需要大量的训练期,所以在应用于实时计算机安全问题时具有明显的优势。DCA应用于端口扫描检测、僵尸网络检测、无线传感器不良行为检测、机器人安全等方面都取得了较好的效果。但由于算法中相互作用的参数数量过多,相关研究中参数设置和可变阈值设置较为随意。GREENSMITH等人对DCA进行分解并测试其内在关系,对算法进行了参数简化,并提出新的异常度量,建立了可控性更强的确定性树突状细胞算法模型dDCA[15]。2010年,CHELLY等人新增了两个信号模型,采用模糊集切换输入流数据,利用模糊子集修改信号变换方程,由此建立模糊树突状细胞模型FDCM,提高了算法性能[25]。2011年,GU等人提出xDCA[26],通过引入自动化信号预处理过程,使用主成分分析法并利用特征选择机制自适应选择信号流的数据源。

在理论研究方面,OATES等人于2007年发现了DCA算法的滤波和降噪属性,并指出算法具有线性分类器属性[27]。2009年,STIBOR等人使用点积构建信号处理阶段的模型,并且演示了其线性分类器属性,结果表明DCA可能遇到与线性分类器相同的问题:分类边界复杂造成错误和处理动态超平面问题的性能受损[28]。2011年,GU等人以支持向量机代替线性分类阶段,发现DCA的滤波属性在应用于噪声流数据时会提高性能,但在传统机器学习数据集上表现较差[29]。MUSSELLE研究了事件流对DCA的影响,发现DCA对流数据的延迟具有鲁棒性[30]。

结合以上研究结果,GREENSMITH将流作为输入,基于dDCA对算法进行函数化的声明和表达,并使用Haskell进行实现[19]。Haskell是一种纯函数式编程语言,其中程序的规范被解释为其实现。hDCA规范由集合上的纯数学函数组成,与之前算法使用一系列抽象步骤来呈现的方式不同。该规范适用于多数编程语言,也可用于正式推理算法[19]。

1.3 问题描述

xDCA、dDCA和hDCA在信号提取和信号分类时均采用了主成分分析法,这使得进行危险信号和安全信号选取时依赖于人工经验,一旦确定之后就不可更改,不具备自适应性。而数字微分方法可以自适应地提取信号并随机动态采样抗原,去除信号提取和敏感的数据序列。因此,本文提出ndhDCA模型,在输入数据的预处理阶段引入数字微分方法描述数据变化将导致“危险”这一特性,并利用数据的变化自适应提取需要的输入信号。

2 ndhDCA模型

2.1 模型框架

ndhDCA模型架构包括数据采集、数据预处理、信号融合、抗原背景评估与分类以及函数式描述模块,如图1所示。

图1 ndhDCA模型架构

数据采集模块通过从实际应用环境(或已有的数据集)中获得的所有特征建立原始抗原库,再从其中构建候选抗原库和候选信号库,以便后续处理和评估抗原。

数据预处理模块将数字微分用于选取候选信号库中的信号,通过深入的数据分析检测每个时间窗下数据的变化,在考虑特征变化和特征之间相互作用的前提下,自适应地提取危险信号和安全信号,将其作为信号融合阶段的输入。

信号融合模块利用人工树突状细胞群(DCs)对抗原进行取样,从信号集中获取危险信号和安全信号。当树突状细胞成熟时,通过累积输出信号浓度来确定抗原环境。

抗原环境评估与分类模块通过每次累积的数据计算环境评估的度量值MCAV和K值,以确定抗原环境处于异常还是正常。

函数式描述模块对上述过程分别进行函数化描述,这也是模型最重要的部分。

2.2 基础理论

通常,数据流是一组有时间序列的数据。流是一个有限的列表。任意集合X上的列表集用ListX表示,有以下两种情况:

1)空列表ε是ListX的一个元素。

2)如果x∈X且xs∈Listx,则x:xs∈Listx,x:xs读作“xconsxs”。

由此可知,空表ε是任意集合X上列表集合的元素,只要X具有至少一个元素,那么就可以利用上述第2种情况将X的每个元素添加到Listx中任何列表的开头,因此,Listx就具有无限数量的元素。例如,X={1},由1∶ε∈Listx可以推出1∶(1∶ε)∈Listx。

因为流总是有限的,所以可用列表相同的方式对其进行归纳描述,但需要去掉空列表的情况,以Streamx表示任意集合X上的流集合,其可以被描述为“若x∈X,xs∈Streamx,则x◁xs∈Streamx”。

2.3 数字微分信号提取

在数据预处理阶段,输入由各指标数据构成,数字微分用于从指标集{m1,m2,…,mn}中选取特定指标作为危险信号或安全信号。将此阶段的输入信号称为原始数据流,它由各指标和时间戳T组成,表示为:

M=Stream(T×m1×m2×…×mn)

(1)

用s0表示危险信号,安全信号s1表示s0和s1都由原始数据流经过数字微分选取指标并融合各指标后得到,将此过程称为Mix,则s0和s1可以被表示为:

s0,s1=Mix[Stream(T×m1×m2×…×mn)]

(2)

上述过程主要包括以下3个步骤:

1)将各指标归一化,用数字微分计算每个指标mi的变化率。

假设指标与时间之间的映射关系为fmi(ti),指标mi左右侧可描述为:

(3)

(4)

指标mi的变化趋势可描述为:

fmi(ti)=fmi(ti)right-fmi(ti)left

(5)

上述过程可通过数字微分实现,将其称为numeric,表示为:

numeric:mi×T→Δmi

numeric(mi,T)=fmi(ti)right-fmi(ti)left

(6)

2)对指标mi进行分类,判定是作为危险信号s0还是安全信号s1,将此过程称为divide,设判定的阈值为k,则有:

divide:mi→si{m1,m2,…,mn}

(7)

3)累计多个指标融入信号中,作为下一步过程的输入。将累计到信号si的过程命名为addsi,危险信号s0的累积过程如下:

adds0:mi→si

(8)

2.4 信号融合

2.4.1 输入

ndhDCA模型两个输入均为数据流,一个称为事件流(抗原流),另一个称为信号流。事件(抗原)是E×T的元素,其中,E是抗原(事件)的类型集合,T是时间戳集合。因而事件流可以被定义为:

A=Stream(E×T)

(9)

S=Stream(T×s0×s1)

(10)

2.4.2 树突状细胞

人工树突状细胞接收输入信号并用他们计算3个决策信号,即激活信号、抑制信号和迁移信号。用实数三元组表示这三个信号:

(11)

每个树突状细胞由事件集、3个信号值和迁移阈值组成。事件缓冲区es用于记录细胞在其生命周期中遇到的事件,迁移阈值决定了细胞的生命周期。因此,细胞可被定义为:

(12)

给定迁移阈值d,则初始化新细胞的方法可以表示为:

new(d)=(∅,(0.0,0.0,0.0),d)

(13)

定义以下方法判定细胞是否达到生命周期,如果达到迁移阈值,则评估为true,否则为false:

dead:Cell→B

dead(es,(ωA,ωI,ωM),d)=ωM≥d

(14)

如果某个细胞的dead值为true,则对该细胞使用reset方法重置事件缓冲区和决策信号,并保持原始的迁移阈值:

reset:Cell→Cell

reset(es,os,d)=new(d)

(15)

当细胞达到迁移阈值时,计算细胞的临时异常分数,然后将其分配给细胞事件缓冲区的每个事件。有以下2种度量方法:

1)利用成熟背景抗原值MCAV,返回特定事件被分类为异常的概率,定义如下:

(16)

2)如果激活信号ωA大于抑制信号ωI,则细胞将其缓冲区的事件判定为异常,要计算细胞的实际度量,需要获取ωA减去ωI的值,这是一种真实度量(在dDCA中称为Kα):

(17)

2.4.3 信号融合

信号融合由以下3个步骤组成:

1)用信号流中当前元素获得的信号值,迭代更新细胞总群中所有细胞的决策信号,此过程称为updateS,其中,N表示细胞总群,p表示当前的一个细胞:

updateS:(T×R1×R2)×N→N

updateS((_,s0,s1),p)=

{(es,accumulate(d,transduction(s0,s1),t))|(es,d,t∈p)}

(18)

更新细胞决策信号阶段分为两个部分,其中,transduction把当前输入的信号值映射到细胞各个决策信号,将输入的危险信号s0、安全信号s1转化为决策信号。accumulate将当前的决策信号累加到先前决策信号,计算出细胞新的决策信号。为计算决策信号,本文应用线性函数,用ω=ωj×si+…+ωj×si形式的公式来表示,其中,ω是正在计算的判定信号,si是输入信号,ωj是权重。权重可从生物免疫学对树突状细胞的实验中获得,如表1所示。

表1 信号融合权重Table 1 Fused weights of signals

由表1中的权重得出决策信号计算公式:

ωA=s0+(-2.0)×s1

ωI=s1

ωM=s0+s1

(19)

由此,transduction的函数表达式可定义为:

transduction(s0,s1)=

(s0+(-2.0)×s1,s1,s0+s1)

(20)

一旦计算了来自两个输入信号的决策信号的值,则需要将它们添加到细胞的决策信号的当前值,由此accumulate可被描述为:

accumulate((ωA,ωI,ωM),(ω′A,ω′I,ω′M))=

(ωA+ω′A,ωI+ω′I,ωM+ω′M)

(21)

2)更新决策信号导致每个细胞的迁移值增加,即ωM增加。因此,需要检查细胞是否已超过相应迁移阈值。当寿命超过其迁移阈值的细胞,需要使用results函数为其事件缓冲区中的每个事件生成中间异常分数。

results(p)=

{(e,score(c)|c∈p,dead(c),e∈events(c))}

(22)

3)达到迁移阈值的细胞内异常分数值计算完成后,使用migrate重置这些细胞以生成新的一代:

migrate(cs)=

{if dead(c) then reset(c) elsec|c∈cs}

(23)

migrate遍历群体中所有细胞,并用dead测试是否超过其迁移阈值。 如果dead为true,则通过reset重置细胞,清除细胞的事件缓冲区并将其决策信号设置为0,迁移阈值保持不变。

2.5 抗原背景环境评估与分类

在经过n次迭代之后,停止处理输入并返回映射到异常分数的一组事件的元素。该集合被传递给analyze函数。此时,对于同一事件类型,可能会有多个临时异常分数,在analyze中计算每种事件类型的平均异常分数:

(24)

3 实验与分析

3.1 实验设计

3.1.1 数据集选择

本文提出ndhDCA的目的是在信号提取阶段能够脱离人工经验,自适应地提取DS和SS信号,同时保证分类的准确性。为展示ndhDCA的有效性及其性能,测试本文模型的性能,将使用ndhDCA、DCA、dDCA/hDCA分别在两个数据集进行对比实验。

实验在两个数据集上进行:

1)the UCI Wisconsin Breast Cancer dataset(WBC),其由700个数据实例组成,每个数据项有10个特征。

2)KDD99数据集,其源自DAPRA 98 Lincoln Lab数据集,用于将数据挖掘技术应用于入侵检测领域,由约500万个数据实例组成,每个数据实例具有42个特征。本文使用是其10%的子集,数据项从整个数据集中随机按比例选择。

在两个数据集的数据项中,WBC数据集按种类排序,为有序数据;KDD99数据集经由多次随机打乱,为无序数据。

3.1.2 参数说明

数据集中每个数据项被映射为抗原。在所有实验中,DC总数均设置为100,每个循环中对10个DC采样,以确保ndhDCA的自适应性。在数字微分计算结果中,选取变化最大的4个信号形成DS,最小的一个信号为SS,其余所有特征参数设置按照文献[1]设置,这些参数来自经验免疫学数据(同hDCA/dDCA)。对于DCA,在WBC和KDD99中设置的异常值分别为0.65和0.446。

3.2 实验结果与分析

为与原始DCA进行对比,本文使用的编码环境为 Python 3.6。实际上,本文给出的函数化表达方式更适合在Haskell的环境下进行实验。

3.2.1 评价指标说明

本文实验使用分类器模型常用指标作为评价指标,使用的每个指标的具体说明如表2所示。

表2 评价指标说明

3.2.2 在有序数据集WBC上的实验

有序数据集WBC上3种算法的对比实验结果如表3和图2所示。从实验结果看,ndhDCA在阳性预测率、阴性预测率、特异度上都有更高的评价,召回率与dDCA相同,马修斯相关系数、AUC高于其他两种算法。漏报率也低于dDCA和DCA。从ROC曲线图可以更明确地看出,本文提出的ndhDCA不仅能自适应地提取危险信号和安全信号,其在有序数据集上,与 DCA、hDCA/dDCA相比,还具有更高的准确率和更低的误报率。

表3 WBC数据集上的实验结果Table 3 Experimental results on the WBC dataset %

图2 WBC数据集上的ROC图Fig.2 ROC graph on the WBC dataset

3.2.3 在无序数据集KDD99上的实验

无序数据集KDD99上3种算法的对比实验结果如表4和图3所示。在之前的DCA研究中,错误的分类常发生在过渡边界。因此,当环境连续多次变化时DCA会产生更多错误。ndhDCA每次运行对每个数据项进行10次采样,可以缓解数据项混乱带来的影响。

实验结果显示,由于数据随机乱序了多次,DCA的性能基本上等同于随机分类器,对于dDCA和ndDCA,在阳性预测率、阴性预测率、特异度、马修斯相关系数、准确率上ndhDCA有更高的评价,但误报率比dDCA高。图3所示的ROC图更清晰地反映了在无序数据集KDD99上,3种算法分类效果均不理想,但在数据项乱序的情况下,nhDCA相比较于其他两种算法取得了更准确的分类结果。

表4 KDD99数据集上的实验结果Table 4 Experimental results on the KDD99 dataset %

图3 KDD99数据集上的ROC图Fig.3 ROC graphs on the KDD99 dataset

4 结束语

本文构建了基于数字微分理论的函数化树突状细胞模型ndhDCA。在hDCA模型基础上,利用数字微分可根据离散数值变化和变化趋势感知危险的特性,以DC信号随机动态地对抗原进行采样,通过分析数据变化及变化趋势确定并自适应提取DS和SS信号。实验结果表明,相比通过人工经验设置,该模型的算法普适性更强,并能减小输入数据顺序的敏感性。后续将评估本文模型在无序数据集上的分类效果,并进一步提高其检测性能。

猜你喜欢

树突微分抗原
神经元树突棘病理学改变的研究进展
科学家揭示大脑连接的真实结构 解决了树突棘保存难题
Ap(φ)权,拟微分算子及其交换子
拟微分算子在Hp(ω)上的有界性
多复变整函数与其关于全导数的微分多项式
上下解反向的脉冲微分包含解的存在性
梅毒螺旋体TpN17抗原的表达及纯化
结核分枝杆菌抗原Lppx和MT0322人T细胞抗原表位的多态性研究
树突状细胞疫苗抗肿瘤免疫研究进展
APOBEC-3F和APOBEC-3G与乙肝核心抗原的相互作用研究