基于深度学习的恶意代码分类(二)
序言
本节内容我们将介绍本课题中涉及的相关概念、模型、算法等理论知识。首先介绍词向量相关概念及其变体模型;然后介绍本文研究中所涉及到的卷积神经网络的网络结构及其训练过程;最后介绍改进的分类模型所要融合的循环神经网络及其变体相关知识。
词向量
在自然语言处理任务中,将文本符号化是解决问题的第一步。其中,one-hot编码表示是一种比较直观而简洁的表示方法,在早期,经常被用于字词的向量化表示。one-hot 表示的核心思想是将文本中每个词语表示为一个高维稀疏向量,每一维代表词表中的每一个词语,向量的维度为词表大小,用“0”或“1”表示,且每个词语向量中只有一个维度为“1”,其余为“0”。 例如,在 one-hot 表示方法中,“苹果”和“橘子”表示方法如下:
苹果:[0, 1, 0, 0, …… 0, 0, 0]
橘子:[0, 0, 0, 0, …… 0, 0, 1]
one-hot 表示方法存在其自身的不足:一是,它对于词语的编码是随机的,词语向量之间是相互独立的,不能有效表征词语之间的关联关系。二是,向量维度受词表大小控制,过大的词表将导致维度过大,会造成维数灾难,并且向量合成的矩阵过于稀疏。
为了解决 one-hot 表示方法的不足,词向量被提出,其基本思想是将词语转化为一种分布式表示,即连续稠密较低维的向量表示。向量的每一维不再表示一个词语,而是表示词的一种潜在特征,因此,词向量可以有效地提取文本语义和句法特征。例如,在词向量表示方法中,“苹果”和“橘子”表示方法如下:
苹果:[-0.62, 0.38, 0.18, -1.32, …… -0.62, 0.47]
橘子:[-0.51, 0.31, 0.21, -0.97, …… -0.59, 0.5]
相较于 one-hot 表示方法,词向量引入向量特征距离的概念,即语义相近的词语,其特征向量在向量空间中距离也相近。并且词向量的维度不会受到词表大小的严格约束,解决了维度灾难问题。(具体内容在第一篇文章中有链接介绍)
语言模型
语言模型(Language Model, LM)是用来估计一个句子出现概率的模型,在机器翻译、语音识别、信息检索等任务中表现出良好的性能。
针对语言模型的形式化描述,给定一段文本
其中W1,W2,W3…Wn代表一段文本中的词语,则自然语言的统计语言模型为P(s)计算公式如下
常用的语言模型将语句出现概率近似地转化为计算给定上下文情况下某个确定的词出现的概率问题,即条件概率,常见的统计语言模型包括:n-gram 模型、隐马尔可夫模型、最大熵模型等。
神经网络语言模型
使用神经网络来训练语言模型的思想,最初由 Xu 等人[62]提出,即利用神经网络训练二元语言模型的方法,对神经网络语言模型(Nerual Network Language Model,NNLM)进行了深入的研究。如图 为一个三层的神经网络构建的语言模型
NNLM 是用于依据文本上下文词语预测下一个词为某个确定词的概率,即其网络结构由输入层x, 隐藏层h和输出层o构成。。输入层是由(n-1)个首位相连的向量拼接而成的(n-1)m维的向量,其中,(n-1)代表文本中作为输入的上下文词语的数量,m表示每个词的词向量维度。对于整个词表D,词向量的维度为m,所有词表中的词就形成了一个矩阵c,矩阵大小为(|V|xm),其中,|V|为词表中总词数;隐藏层ℎ接收输入层的输出,采用tanh作为激活函数;输出层o接收输入层x和隐藏层h的输入,由|V|个节点组成,每个结点oi表示预测下一个词为wi的未归一化log的概率,最后使用softmax做归一化处理,隐藏层和输出层的计算公式如下所示:
其中,U,W,V分别为输入层到输出层、隐藏层到输出层和输入层到隐藏层的权值矩阵。
下一节,我们将具体的对Word2Vec,卷积神经网络,Doc2Vec等的内容进行概述。
以上内容均来源于网络,若有侵权请联系。