摘 要:针对现有日志特征提取不充分且存在噪音等问题,提出一种基于门控循环单元(Gate Recurrent Unit,GRU)的日志异常检测方法。该方法使用BERT(Bidirectional Encoder Representations from Transfomers)提取日志的语义特征,然后利用事件逆频率加权对特征进行优化。采用基于注意力和门控循环单元的模型进行日志异常检测,以减少日志噪声对检测结果的影响。在2个真实的数据集上的实验结果表明,该方法在异常检测任务中表现出色,F1值平均达到0.98,与基准方法DeepLog(Deep Log Anomaly Detection)相比,分别提高了3.36%和11.0%。
关键词:日志异常检测;门控循环单元;注意力机制;双向编码语义解析
中图分类号:TP391.1 文献标志码:A
0 引言(Introduction)
系统日志记录了软件系统在运行过程中产生的各种事件信息,通过对日志进行实时分析与异常检测,可以及时发现系统运行中的异常行为、错误和故障[1],为系统运维人员提供监控预警,从而确保系统的稳定可靠运行。日志异常检测是信息安全、系统管理、网络监控等领域的关键技术,它通过分析系统和应用程序产生的日志数据,旨在准确识别异常事件及潜在的安全风险。然而,现有的日志异常检测方法存在特征提取不充分且在日志处理的过程中难以避免噪声干扰等问题。针对这些问题,本文提出了一种基于门控循环单元和注意力机制的日志异常检测方法。该方法通过BERT提取日志的语义特征,并与事件逆频率进行加权以充分提取序列特征,再使用注意力机制与GRU结合,减轻噪声对异常检测的影响,提升了日志异常检测的准确性。
1 相关工作(Related work)
随着计算机技术和大数据技术的发展,各种应用系统的规模也逐渐扩大,数据量呈现爆发式增长。这意味着日志数据数量的剧增和种类的复杂化,进而增大了日志异常检测的难度。在此背景下,深度学习方法凭借其极佳的性能和稳定性,在日志异常检测领域脱颖而出,已成为当前主流的检测手段之一。例如,DU等[2]提出的DeepLog方法使用深度学习中的LSTM神经网络模型学习正常日志序列之间的关系,利用来自用户反馈的检测为假阳性的日志增量来更新检测模型,使模型适应新的日志模式。然而,该方法中对日志索引进行建模的方式忽视了日志本身的语义信息,导致检测准确率不高。MENG等[3]提出了LogAnomaly方法,即使用Template2vec方法将日志模板转换为语义向量并利用LSTM 算法进行日志特征数据集的异常检测,但该方法在未知类的异常检测任务中表现不佳。ZHANG等[4]提出的LogRobust是首次考虑到鲁棒性问题的异常检测方法。LogRobust方法通过自然语言处理实现对日志事件进行语义向量的转换,并使用带有注意力的Bi-LSTM模型完成异常检测。然而,该方法在处理长序列日志时,受Bi-LSTM结构的限制,容易出现长期依赖问题。YANG等[5]提出了一种更实用的基于对数的异常检测方法PLELog。PLELog根据一组日志序列中是否存在已知的正常日志序列,初步估计该组中日志序列的标签,但其对已知正常日志序列的依赖性较强。LI等[6]提出的SwissLog采用的日志解析方法具有一定的创新性,它能够通过多种方式,如标记化、字典化、聚类等,提取出多种模板并进行解析。SwissLog使用BERT[7]编码器嵌入语义信息,将语义嵌入和时间嵌入作为参数输入到基于注意力的Bi-LSTM 中。然而,该方法在处理高维特征时的计算开销较大且未充分考虑特征之间的交互关系。
目前,许多基于深度学习的方法在日志异常检测中表现出良好的性能,但仍存在日志序列特征提取不充分和无法避免噪声干扰等问题。本文针对以上问题提出一种新的日志异常检测方法。