论文学习:LSTM-Based System-Call Language Modeling and Robust Ensemble Method for Designing Host-Based Intrusion Detection Systems.
将语言模型的概念引入系统调用序列的异常检测系统中。
引入:语言模型:用来计算一个句子的概率的模型,也就是判断一句话是否正常的概率
假设给定句子 S=w1,w2,w3,...,wk
则句子S出现的概率(S正常的概率)
在统计语言模型中:采用极大似然估计来计算每个词出现的条件概率 , 其中 C()代表出现次数
但是这种统计模型的问题:1、难以统计出现次数、估算条件概率。2、可能出现 C(w1,w2,....,wi)= 0的情况,因为很多词对的组合未在语料库中出现过
因此引入了马尔可夫假设:随意一个词出现的概率只与它前面出现的有限的一个或者几个词有关
因此有了n元语言模型:假设当前词的出现概率只与它前面的N-1个词有关
例如:2元语言模型
但是这样做仍有些缺点:1、词语间缺乏长期依赖;2、有些词语组合仍可能未在语料库中出现过;3、仅基于词频的统计,泛化能力差
因此有了神经网络语言模型:利用神经网络去建模当前词出现的概率 与 其前 n-1 个词之间的约束关系
神经网络模型的不足:仍缺乏长期依赖
因此可以采用RNN结构,RNN网络打破了上下文窗口的限制,使用隐藏层的状态概括历史全部语境信息,对比 神经网络语言模型 可以捕获更长的依赖
系统调用序列的入侵检测:现有方案的不足:大多数现有方法使用词频特征或窗口序列特征 , 这样的方法无法同时考虑系统调用间的特征(call-level)和序列整体特征(phrase-level)
该论文采用长短期记忆网络(LSTM)对系统调用序列进行建模,从而获得学习长期依赖的能力。
为什么采取多个language model呢?因为仅从正常数据判断异常数据很难;正常数据可能不会包含所有情况。所以很难为LSTM选择出一组超参数。
因此采取一种集成的方法:多个语言模型的参数略有不同,因此可以捕获略微不同的正常模式。
网络结构大致如下
论文采用了三种不同参数的语言模型:其隐含层分别为LSTM200 , LSTM400和LSTM400*2 ; 嵌入层的输出维度与LSTM层cell数目相同
ensemble方案:如何集成三种不同的语言模型