基于深度学习的恶意代码分类(三)

基于深度学习的恶意代码分类(三)

序言

下面我们继续对本次报告涉及的相关概念、模型、算法等理论知识进行理论知识梳理。

Word2Vec

Word2Vec是一个用来计算词向量的框架,可以在百万数量级的词典和上亿的数据集上进行训练,得到词的连续分布向量表示,依据上下文实现对单词的预测。作为一个浅层的神经网络。Word2Vec 算法的的输出层引入 Huffman 树,与传统的 Softmax 算法相比,极大的减小了计算复杂度,使得学习和训练的速度大大提高。而词向量是 Word2Vec 模型的一个副产品,可以通过词向量之间的空间距离度量词与词之间的相似性。
Word2Vec框架有两种模型:CBOW (Continuous Bag of Words)
Skip-gram

CBOW模型主要用于依据文本中词的上下文来预测当前词的概率。

Skip-gram 则是根据当前单词来预测上下文出现的概率。

Word2Vec 的两种模型结构如图
基于深度学习的恶意代码分类(三)_第1张图片
在 CBOW 模型中,在输入层选取合适长度的上下文词语作为语境,并将其表示为 k 维向量作为输入结点,将输入层结点的向量叠加在一起,形成隐藏层 k 维向量输出层是一颗 Huffman 树,叶子结点代表词表中的所有词,而将非叶子结点作为父结点到子结点的Softmax 二分类器,它将中间向量的每一个结点分到左右子树,计算概率,直至达到叶子结点。训练过程采用反向传播和随机梯度下降方法,在预测过程中训练词向量。

基于深度学习的恶意代码分类(三)_第2张图片
在 Skip-gram 模型中,输入层是一个单词的向量,通过训练预测上下文窗口的每一个单词。Word2Vec 结合了神经网络和 Huffman 树的优点,在提高词向量表达准确性的同时极大的减小计算复杂度,并且最大程度上学习词序的上下文关系。

Doc2Vec

2014 年,Le 等人提出了基于 Word2Vec 的 Doc2Vec 的训练方法。Doc2Vec 在自然语言处理任务中多用于段落或文本的向量化表示。与 Word2Vec 类似,Doc2Vec 的框架也是一个神经网络,通过训练神经网络,实现依据上下文词语或某确定词语进行词语预测的任务。除此之外,Doc2Vec 框架在输入层比 Word2Vec 多了一个表示整体文本的向量。通过训练预测模型完成段落或整个文本的向量化表示,且文本向量不仅包含了上下文信息还包含了文本整体的语义信息
Doc2vec也有两种模型:DBOW(Distributed bag of words)和 DM(Distributed Memory),这两种模型分别是基于 Word2Vec 的 Skim-gram 和 CBOW 模型的改进所得,Doc2Vec 的两种模型结构如图所示基于深度学习的恶意代码分类(三)_第3张图片

基于深度学习的恶意代码分类(三)_第4张图片

卷积神经网络

卷积神经网络受视觉皮层电生理研究的启发,由Le等人提出用于手写数字的识别。作为一种深度学习架构,卷积神经网络在图像识别分割任务上取得较好的成绩,随后,在自然语言处理、语音识别、运动分析甚至脑电波分析等方面均表现出较好的性能。

在计算机视觉领域,图像分类任务也不断取得成果,每年的 ISVR(Imagenet Large Scale Visual Recognition Challenge)竞赛中都会出现各种优秀的图像分类相关算法,其中,卷积神经网络的表现尤为突出,在 ILSVRC 2012 中,Krizhevsky 等人提出了卷积神经AlexNet,将测试的 top-5 error 下降到 15.3%。随后,更多准确和有效的模型不断出现,如 ResNet,GoogLeNet和 VGG-Net等。

卷积神经网络模型的结构

与普通的神经网络相比,卷积神经网络主要依靠卷积层池化层提取特征矩阵。卷积层通过对数据的训练和学习提取图像特征,作为特征抽取器,卷积层将特征矩阵分割成若干子矩阵,所有的特征子矩阵共享同一个权值矩阵,即卷积核。卷积层后接池化层,池化层则用于减少特征的数量,降低训练过程中计算复杂性,并且引入特征不变性以及防止过拟合。

1. 卷积层
(1) 局部感知
依据生物学视觉系统对外界感知的特点,在卷积神经网络中引入局部感受野的概念。
在生物学中,通常认为,视觉系统对于外界的感知是局部到全局的。图像也具有这样的特点,某些像素点的特征往往与相邻近的像素点关联性更强,而与较远的像素点关联性较弱。所以在网络结构构建中,相比于普通神经网络神经元与神经元之间的全连接,每个神经元只需感知邻近局部信息,即只与邻近的部分神经元相连。

(2) 参数共享
局部感知的概念使得整个图形被分割为许多子矩阵,卷积核对子矩阵卷积提取局部特征,而对于整个图像的许多子矩阵,采用同样的卷积核处理,这就是权值共享的概念。
其中,卷积核对部分区域进行卷积的过程即针对该区域进行特征提取的过程,一种卷积核代表一种提取特征的方式。利用同一卷积核对整个图像的各个区域卷积的过程则是代表了针对图像的不同区域采用同一提取特征的方式进行特征学习。

(3) 多卷积核
采用局部感知和参数共享的方式,同一个卷积核针对整个图像的不同子矩阵提取同一种特征。这就存在着特征提取不充分的缺点,针对这种不足,卷积神经网络引入多卷积核的概念,赋予不同权值的卷积核可以针对输入提取不同的特征。例如,使用 100 种卷积核对一张图像处理,可以获取 100 中特征矩阵,学习到 100 种特征。

卷积核的过程如图所示(4x4):
基于深度学习的恶意代码分类(三)_第5张图片
具体的解释内容可以观看bilibili 回形针博主的内容解释,这边不对算法进行过多的介绍,因为在pytorch中直接使用即可。

2. 池化层
在卷积层卷积过程之后,同一卷积核会提取一个高维特征向量,引入多卷积核后,这种特征向量的维数成倍增加,给分类器的计算和训练带来挑战,并容易出现模型过拟合的问题。为了克服这种不足,在卷积层后引入池化层。基于对特征矩阵部分区域进行聚合统计的思想,池化层主要包括两种:平均池化层和最大池化层。平均池化层即计算图像池化
窗口内的的加权平均值作为采样值代表该区域特征;最大池化层即计算图像池化窗口内的最大值作为采样值表示该区域特征。通过概要统计计算,使特征矩阵降维的同时解决模型过拟合问题,同时,池化层的引入也保证了特征矩阵形变不变性的特点。

如图所示为最大池化过程。其中数值 1 为池化窗口内的最大值。
基于深度学习的恶意代码分类(三)_第6张图片
3. Softmax 分类器
将全连接层的输出作为 Softmax 分类器的输入。逻辑回归用来解决二分类问题,而Softmax 是逻辑回归由二分类向多分类的推广。

循环神经网络模型

RNN 是一种最基础的循环神经网络,可以用来对时间建模,处理序列数据。常规的前馈神经网络或者卷积神经网络在建立网络结构时,同一层之间的神经元是无连接的。不同于这种结构,RNN 中引入定向循环结构,其隐层结点之间是相互连接的,即隐层结点的输入不仅包含输入神经元的输出还包含上一时刻同层隐层结点的输出。因此,RNN 在处理上下文相关联的数据时表现出良好的性能。 RNN 经典结构图如图所示。
基于深度学习的恶意代码分类(三)_第7张图片
在这里插入图片描述

U,V,W分别为输入层与隐藏层之间、隐藏层与输出层之间、隐藏层自身的共享参数。ℎt是网络中的记忆神经元,包含了前面所有步的隐藏层神经元的状态。即 t 时刻的输出不仅包含了该时刻的输入,还包含了之前所有的历史信息,因此,RNN 有能力针对上下文输入进行记忆并建模。

小结

随着深度学习技术的不断成熟,词向量、神经网络模型在很多领域取得了较好的成果。本文基于深度学习的恶意代码分析方法也以词向量以及神经网络模型为基础。本章着重介绍了词向量表示、用于计算机视觉领域的经典卷积神经网络模型、用于自然语言处理领域处理序列文本的经典循环神经网络模型的相关知识。
其中,词向量表示是一项基础工作,基于此本文分别在第三章和第五章对恶意代码基因的向量化表示和恶意代码基因序列的向量化表示进行扩展研究。本文将在后续结合卷积神经网络模型和循环神经网络模型对恶意代码基因序列进行建模,来实现恶意代码的分类。

以上内容均来源于网络,若有侵权请联系。

你可能感兴趣的:(网络空间安全,深度学习,神经网络)