摘要

日志异常检测,其对开发稳定、可持续的系统具有重要意义。但当系统刚上线时,收集足够的数据训练一个无监督模型是不现实的。为此本文提出了一个可转移的日志异常检测(LogTAD)框架,该框架利用对抗域适应技术使来自不同系统的日志数据具有相似的分布,从而使检测模型能够检测来自多个系统的异常。实验表明,LogTAD在使用少量新系统日志的情况下,可以实现较高的跨系统异常检测精度。

介绍

在实践中,系统日志被广泛用于记录在线系统的状态,在检测网络安全中起着至关重要的作用。近年来,许多基于机器学习的日志异常检测方法被提出以检测异常日志序列。由于异常有限,提出了许多无监督机器学习方法来识别异常日志序列,如主成分分析(PCA)、DeepLog和LogBERT。

关键思想是从大量正常日志中捕获正常模式,模型根据正常模式对异常日志序列检测。当被部署到新系统时,需要一些时间来收集足够的日志来训练一个无监督异常检测模型。而新部署的系统通常有自动识别异常状态的紧急需求。

为解决冷启动问题,提出了几种基于迁移学习的方法来检测不同系统中的异常,如LogTransfer。基本假设是,不同在线系统中的异常日志序列通常具有相似的模式。例如,来自不同系统的日志消息中的单词通常有一些重叠。同时,不同系统的正常工作流程也有一些相似之处。这样构建一个跨系统分类器来检测源系统和目标系统中的异常。

现有模型的主要缺点是,需要来自源系统和目标系统的正常和异常日志数据来构建分类器。但实际中从目标系统中收集到足够的异常数据往往不可行。

本文提出了一种可转移的日志异常检测方法,LogTAD,不需要源系统和目标系统的标记异常数据。受到DeepSVDD方法的启发(该方法使正常数据接近超球体的中心),核心思想是基于源系统和目标系统中的正常数据派生系统不变中心表示。利用领域对抗技术将源和目标日志序列映射到具有相似分布的同一个超球体中,并为两个系统派生出共享中心,通过距离中心较远的距离,检测到两个系统的异常序列。

本文方法建立了一个只使用正常样本的跨系统异常检测模型。该模型只需要来自目标系统的少量样本,就可以解决异常检测的冷启动问题。

无监督机器学习 异常识别 无监督异常检测_深度学习

框架

假设源系统 S 和目标系统 T,数据集 D,由S系统的正常日志序列和少量T系统的正常日志序列组成。由此建立一个无监督的跨异常检测模型,其可以检测S和T系统中的异常序列。模型有两个部分组成,一个是编码器,将日志序列映射到低维空间,另一个是将日志序列表征映射到一个超球面,两个系统日志共享一个球心,正常日志序列应更靠近球心,使用领域对抗框架使序列表征更靠近球心;这样距离球心越远的则越可能异常。

日志序列表征

使用原始日志,通常不同系统的描述性词汇应该有一些相似之处,在S系统和T系统的词汇方面存在一些重叠。先使用word2vec将每个日志消息中的单词表示为嵌入向量,使用日志消息中的单词嵌入均值作为日志表征。日志序列表征为

无监督机器学习 异常识别 无监督异常检测_无监督机器学习 异常识别_02

,使用LSTM模型,

日志被表征为hn,lstm模型的参数是共享的,可减少对T系统日志的需求。

正常日志序列应该在一个超球体中且靠近球心,开始使用所有样本向量的均值代表球形,目标函数:

无监督机器学习 异常识别 无监督异常检测_无监督机器学习 异常识别_03


本文提出一种对抗训练方法,使不同系统的正常日志互相靠近;

鉴别器D用于区分日志序列的表示是来自S系统还是T系统。用logistic函数进行预测,目的使不同系统的日志不被分开,

无监督机器学习 异常识别 无监督异常检测_目标系统_04

 通过minmax优化,LSTM生成的不同系统的日志序列表征无法被鉴别器区分。

总的目标函数:

无监督机器学习 异常识别 无监督异常检测_数据_05

,这样训练后,编码器可将不同系统正常日志映射到超球体中靠近中心处。

设置阈值半径γ,作为正常和异常的判断标准,样本到球心距离大于阈值的则为异常序列。

结论

本文提出了一个跨系统的日志异常检测框架,LogTAD,使超球中的正常日志数据接近一个中心,并利用域对抗自适应使来自不同系统的日志数据遵循相似的分布,通过距离球心距离判断是否异常。本文方法的一个局限性是,假设S系统和T系统在词汇方面共享类似的模式。

参考:

GitHub - hanxiao0607/LogTAD: LogTAD: Unsupervised Cross-system Log Anomaly Detection via Domain Adaptation