当前位置: 首页 > news >正文

专业网站建设团队自助建站h5

专业网站建设团队,自助建站h5,响应式网站模板下载,海南网站建设及维护01-论文阅读-Deep learning for anomaly detection in log data: a survey 文章目录 01-论文阅读-Deep learning for anomaly detection in log data: a survey摘要I 介绍II 背景A 初步定义B 挑战 III 调查方法A 搜索策略B 审查的功能 IV 调查结果A 文献计量学B 深度学习技术C …01-论文阅读-Deep learning for anomaly detection in log data: a survey 文章目录 01-论文阅读-Deep learning for anomaly detection in log data: a survey摘要I 介绍II 背景A 初步定义B 挑战 III 调查方法A 搜索策略B 审查的功能 IV 调查结果A 文献计量学B 深度学习技术C 日志数据准备D 异常检测技术E 评价与再现性 V 讨论VI 结论 摘要 自动日志文件分析能够及早发现系统故障等相关事件。特别是自学习异常检测技术能够捕捉日志数据中的模式然后向系统操作员报告意外的日志发生而无需提前提供或手动建模异常场景。最近越来越多的利用深度学习方法来实现此目的的方法被提出。与传统的机器学习技术相比这些方法表现出了卓越的检测性能同时解决了数据格式不稳定的问题。然而深度学习存在不同的架构对原始和非结构化的日志数据进行编码以供神经网络分析是非常有意义的。我们因此进行了一个系统的文献综述提供了模型部署数据预处理机制异常检测技术以及评估的概述。这项调查没有量化比较现有方法而是旨在帮助读者理解相关领域的不同模型结构并强调未来工作的开放性问题。 I 介绍 在检测计算机系统时日志文件提供了丰富的信息源。因此大多数日志事件通常是作为正常的系统操作的结果而产生的例如启动和停止进程重启虚拟机、用户访问资源等。然而当出现错误或不希望出现的系统状况发生时例如失败的进程可用性问题或者安全事件应用也会产生日志。这些意外的和可能的不安全系统活动对于操作者是重要的他们需要及时的采取行动阻止或减少系统损坏避免不利的级联效应。 对于这类日志文件分析的主要问题是在标准系统使用的大量不太有趣的跟踪中识别这些相关日志事件并非易事。特别是现代应用程序产生的大量日志使得手动分析变得不可行并且需要自动机制。不幸的是手动编码的签名和在日志中搜索特定关键字的规则仅具有有限的适用性并且不适合事先未知的场景。因此有必要部署异常检测技术自动学习代表系统行为正常基线的模型并随后将与这些模型的任何偏差作为可能需要人类操作员注意的不良活动进行披露。 机器学习为日志文件中的异常检测提供了许多可行的技术并且过去已经提出了许多不同的方法包括聚类和工作流挖掘、时间参数的统计分析、时间序列分析以识别事件频率的变化等。最近研究人员开始使用深度神经网络进行基于日志的异常检测试图复制图像和语音识别深度学习的成功其性能优于传统的机器学习方法。然而由于系统日志事件通常是非结构化的并且涉及复杂的依赖关系因此以某种方式准备数据以允许神经网络摄取并提取与检测相关的特征很重要。而且现有的深度学习架构例如循环神经网络或卷积神经网络种类繁多因此很难为当前的特定用例选择合适的模型也很难理解它们对输入数据的格式和属性的各自要求。 据我们所知目前对基于深度学习的日志异常检测的最新技术只有有限的综述。因此很难理解哪些特征适合从原始日志数据中提取如何将这些特征转换为足以被神经网络提取的格式以及哪些模型架构适合检测日志数据中的特定模型。现有的调查仅比较少数异常检测方法主要关注日志数据中的顺序模式目前对系统日志数据分析的广泛研究并未充分涵盖深度学习模型和挑战或者关注网络流量而不是系统日志数据。 因此我们对用于日志数据异常检测的深度学习技术进行了系统的文献综述。因此我们的主要重点是调查有关已部署模型架构的科学出版物、处理非结构化输入日志数据的各自要求和转换、用于区分正常和异常数据样本的方法以及所提出的评估。这项研究的结果对研究人员和行业都有好处因为更好地了解了不同深度学习算法的挑战和特性避免了开发异常检测技术时的陷阱并简化了针对学术和现实用例中现有检测系统的选择。此外对预处理策略的详细研究对于在进行异常检测时利用日志中的所有可用信息并了解数据表示对检测能力的影响至关重要特别是在什么情况下可以检测到哪些类型的异常情况。在科学评估方面我们特别关注实验设计的相关方面包括数据集、指标和再现性以指出普遍评估策略的缺陷并提出补救措施。最后我们的研究还旨在创造一部参考著作并为未来的研究奠定一个起点。我们指出这项调查没有定量比较所审查方法的检测性能因为只有少数开源实现可用并且这些方法的比较已经在其它调查中进行了。根据上述目标我们指定本次调查的研究问题如下 RQ1基于日志的深度学习异常检测的主要挑战是什么 RQ2通常应用哪些最先进的深度学习算法 RQ3如何预处理日志数据以供深度学习模型摄取 RQ4检测到哪些类型的异常以及如何识别它们 RQ5如何评估所提出的模型 RQ6这些方法在多大程度上依赖标记数据并支持增量学习 RQ7就源代码和所用数据的可用性而言所呈现的结果在多大程度上可重复 本文的其余部分的结构如下。第2节首先解释了深度学习、日志数据和异常检测等术语然后概述了常见的挑战。我们在第3节中解释了我们选择出版物和进行调查的方法。第4节详细展示了我们所调查的所有结果。在第5节我们讨论了这些结果并回答了我们的研究问题。最后第6节为结束语。 II 背景 在本节中我们首先阐明与深度学习的日志数据异常检测相关的一些一般概念和术语。然后我们概述了该研究领域特有的科学挑战。 A 初步定义 本文进行的研究取决于对三个主要概念的理解深度学习、日志数据和异常检测。然而各个领域的确切特征和相应要求可能在不同的研究领域和现有文献中有所不同。因此下面我们将描述这三个概念的基本属性。 深度学习人工神经网络ANN的开发试图以连接通信节点的形式重建生物信息处理系统。为此不同数量的节点按层的顺序排列特别是读取数据的输入层、用加权边连接相邻层的几个隐藏层以及输入层、用加权边连接相邻层的几个隐藏层以及输出层。ANN可以实现监督训练其中所有类别的标签都可用即数据样本标记有正常或异常等标签半监督训练某些类别的标签可用以及无监督学习无标签可用。一般来说深度学习算法被理解为具有多个隐藏层的神经网络。过去已经提出了几种不同的神经网络架构例如用于顺序输入数据的循环神经网络RNN。深度学习已被证明在许多应用领域例如图像分类、语音识别等优于传统的机器学习方法例如支持向量机或决策树甚至人类专家。 **日志数据**日志数据是由应用程序生成的按时间顺序排列的单行或多行事件用于永久捕获特定的系统状态特别是在发生故障或其他意外事件时用于手动取证分析。日志事件通常以文本形式提供范围从半结构化对象例如键值对上的结构化向量例如逗号分隔值到具有异构事件类型的非结构化人类可读消息。尽管不存在统一的日志格式但日志事件通常包含其生成时间戳作为其事件参数之一。有时出现在不同类型的日志数据中的其他参数是日志记录级别例如INFO或ERROR或链接相关事件序列的进程标识符。虽然单个日志事件描述了一个特定时间点的系统状态部分但日志事件组代表了底层程序逻辑的动态工作流程。原因是日志事件是由软件开发人员在其代码中有意放置的打印语句生成的以支持对程序活动和调试的理解。这些语句由静态部分即硬编码字符串和可变部分即在程序运行时动态确定的参数组成。过去大量研究针对自动提取所谓的日志键也成为日志签名、日志模板或者简单日志事件这些日志键表示原始打印语句的模板并能够解析日志。这些解析器允许从日志中导出比非结构化日志消息更适合用于后续分析的值特别是通过1为日志事件分配事件类型标识符2提取日志消息中的参数。 **异常检测**异常是数据集中表现出罕见或意外特征的实例因此从其他数据中脱颖而出。为了检测的目的这些数据实例的符合性通常通过与每个实例相关联的一个或多个连续或分类属性来测量并且能够计算相似性度量。对于独立数据只需将其与所有其他数据点具有高度差异性的单个或一小组实例声明为异常值也称为点异常。对于实例彼此不独立的所有数据例如包括日志数据在内的各种有序数据会出现两种额外类型的异常。首先上下文异常是仅相对于它们发生的上下文而不是其他而言异常的实例例如发生时间。例如考虑每天执行数据备份过程突然在计划时间之外开始。其次集体异常是仅由于组合出现而非单独出现而出现异常的实例组例如特定的日志事件序列。 大多数异常检测技术的隐含假设是分析的数据包含的异常数据远少于正常实例。这使得检测能够以完全无监督的方式进行即不需要标记数据来训练模型。然而许多科学方法转而追求半监督检测其中仅包含正常实例的训练数据可用然后对包含正常实例和异常实例的测试数据集进行评估。半监督操作的主要优点是模型不会学习异常实例并且收集正常数据通常相对简单而建模和标记异常则不太简单。因此监督异常检测方法的适用性较低且相对较少。 B 挑战 几十年来基于日志的异常检测一直是一个活跃的研究领域。因此大多数提出的方法都依赖于传统的机器学习技术。然而在过去几年中利用深度学习来披露与意外系统行为相关的异常日志事件的方法大幅增加。下面我们总结了有效且适用的检测需要克服的主要挑战。 数据表示。深度学习系统通常使用结构化和数字输入数据。将日志数据输入神经网络并非易事因为它们经常涉及异构事件类型、非结构化信息和分类参数的混合。 数据不稳定。随着应用程序的发展可能会出现与训练数据中的日志事件类型不同的新日志事件类型。此外观察到的系统行为模式可能会随着技术环境及其利用率随时间的变化而变化。深度学习系统因此需要逐步更新并调整正常系统行为的基线以实现实时检测。 类别失衡。异常检测本质上假设正常事件多于异常事件。众所周知许多基于神经网络的方法对于不平衡的数据集表现不佳。 异常类别的多样性。异常的表现以各种方式影响日志事件及其参数包括顺序模式、频率、相关性、到达间隔时间等的变化。检测技术通常仅针对特定异常类型的属性而设计因此并不普遍适用。 标签可用性。由于异常代表意外的系统行为因此通常没有可用于训练的标记异常实例。这限制了半监督和无监督深度学习系统的应用众所周知这些系统的检测性能低于监督方法。 流处理。日志作为连续的数据流生成。为了实现动态监控而不是取证分析深度学习系统需要设计用于检测和模型更新时的单通道数据处理。 数据量。日志数据会大量生成一些系统每天会生成数百万个甚至数十亿个事件。实际应用中需要高效的算法来确保实时处理特别是在边缘设备等计算资源很少的机器上运行时。 交错日志。当许多进程同时运行或集中收集分布式日志时相关日志事件的序列可能会相互交错。当事件缺少会话标志符时检测原始时间序列并非易事。 我觉的HDFS里的任务ID划分就是对不同的进程分别进行的提取。 数据质量。数据质量低可能是由于日志收集不当或日志生成过程中的技术问题造成的并对机器学习有效性造成负面影响。常见问题包括不正确的时间戳信息、时间排序、丢失事件、重复记录、错误标记事件等。 模型可解释性。基于神经网络的方法通常比传统的机器学习方法具有较低的可解释性。在针对关键系统行为或安全事件做出合理决策时难以理解正确和错误分类背后的原因尤其成问题。 III 调查方法 本节概述了用于进行系统文献综述的方法。我们首先描述我们收集相关文献的策略然后提出我们用来分析检索到的论文的评估标准。 A 搜索策略 在本节中我们将描述收集纳入调查的相关出版物的过程。首先使用网络搜索收集初始文献集。随后使用纳入、排除和质量标准选择相关论文。 带搜索字符串的初始文献收集为了从最先进的技术中获得一组处事方法我们组装了一个搜索字符串来查询科学出版物的公共数据集库。特别适合我们设计了搜索字符串以便仅检索包含与本次调查相关的三个主要概念的出版物日志数据log data、异常检测和深度学习。由于某些出版物使用不同的术语为了减少遗漏相关出版物的可能性我们还使用术语 “system log(s)”, “event log(s)”, “log file(s)”, “log event(s)” 作为 “log data” 的替代神经网络作为深度学习的替代。我们省略术语 “log” 而没有任何其他词因为它产生许多包含日志但与我们的研究无关的结果。图1显示了最终的搜索字符窜。 然后我们使用此搜索字符串从以下数据库收集出版物Science Direct, Scopus, Springer-Link, ACM Digital Library, IEEE Xplore, Google Scholar, 和 Web of Science。该检索于2022年1月进行共返回2925篇出版物。在下一节中我们将描述从该集中选择相关出版物的方法。 相关出版物的选择为了筛选出与本次调查无关的出版物并将出版物集减少到可管理的规模我们定义了多个选择标准并将其应用于我们的初始集合。我们将出版物纳入调查的主要标准如下出版物中提出的模型对异构和非结构化的日志数据中的异常检测应用深度学习技术如多层神经网络。此外我们还定义了几个排除标准用于忽略相关性较低或格式不适当的出版物。排除标准列表如下 本文中没有表明所提出的方法适用于或设计用于日志数据的应用。我们的调查并不试图采用其他领域的方法进行日志数据分析。最近有一份出版物提出了相同或类似的研究。该标准的目的是缺包分析特定方法的最新版本。该出版物进应用现有方法没有对原始概念进行新的修改。该出版物以英语以外的任何语言出版。该出版物不提供电子版本。该出版物是书籍、技术报告、讲稿、演示文稿、评论或论文此处指大论文。在这些情况下如果可能的话会审查相应的会议或期刊出版物。 请注意我们不会讲出版物限定在特定时间范围内以避免遗漏任何于本次调查相关的较旧出版物。然而我们的目标是忽略不符合最低科学标准的质量普遍较低的出版物。因此除了我们的主要纳入标准外我们只选择符合以下质量标准的出版物。 明确阐述了研究的目的及其发现例如将用于异常检测的深度学习系统设计作为论文的主要贡献。对所应用的深度学习模型及其参数进行了严格的描述即读者清楚选择了什么类型的深度学习模型以及其布局是如何设计的例如它包含多少层。该出版物包括对所提出方法的合理评估包括进行实验设计的令人信服的动机、评估过程和总体设置的全面描述、选择捕获指标的解释以及对收集结果的详细讨论及其影响。引用或描述了用于评估该方法的数据集。这一标准确保我们的调查不包括那些可能存在误导性发现的出版物这些发现来自不足以进行异常检测的数据集。可视化清晰易读。结果的难以理解的表述具有误导性缺乏科学价值。 我们的选择程序分为两个阶段。首先我们根据每篇论文的标题和摘要使用纳入和排除标准来减少出版物的初始集合。此阶段后剩下331份出版物在第二阶段我们根据每篇论文的内容使用上述所有标准进行选择。我们最终获得了62篇论文纳入本次调查。以下部分概述了我们分析这些出版物的方法。 B 审查的功能 为了确保我们按照共同的方案分析所选出版物并解决我们的研究问题我们制定了针对每篇论文评估的特征列表。以下一组问题涉及应用的深度学习DL模型和操作模式。 DL-1使用了那些深度学习模型 DL-2应用了哪些训练损失函数 DL-3该方法是否支持在线或增量学习 DL-4训练是否已无监督、半监督或监督方式进行 然后我们分析所审查的方法如何将原始日志数据输入深度学习模型的不同方式。因此以下问题涉及预处理PP以及将日志转换为数值向量或矩阵表示。 PP-1原始日志是如何预处理的PP-2从预处理的日志中提取那些特征PP-3提取的特征如何表示为向量 下一组问题涉及异常检测AD。特别是我们对不同类型的异常感兴趣以了解它们是否与从原始日志中提取的特征及其如何作为向量的表示有关。 AD-1该方法检测到哪些类型的异常AD-2深度神经网络的输出如何用于异常检测AD-3如何区分异常数据样本和正常数据样本 利用可公开访问的数据集进行评估以及与论文一起发布的源代码不仅是良好的科学标准而且对于其他人验证所呈现的结果进行比较也至关重要。因此最后一组问题涉及评估和再现性ER特别是所采用的评估指标以及数据集和源代码的可用性。 ER-1使用哪些日志数据集来评估该方法ER-2使用哪些评估指标ER-3评估是否考虑运行时的性能测量ER-4使用哪些方法作为基准ER-5所使用的数据集是否公开可用ER-6该方法的源代码是否公开 所有上述问题军针对每份出版物进行了单独评估。由此产生的特征矩阵显示在下一节的表2中并作为我们分析和讨论的基础。 IV 调查结果 本节提供了对所有已审阅的出版物相对于上一节中概述的功能的评估。再详细介绍每个已审查的功能之前我们首先提供有关出版物元数据的一些一般信息。 A 文献计量学 本节概述了每年出版物的分布及其引用次数。 每年发表的论文用于日志异常检测的深度学习是一个相对较新的研究领域在过去几年中越来越受到关注。因此该研究领域的大多数出版物都是在最近两三年内发表的。图2显示了本次调查所审查的所有出版物的出版年份概览。正如预期的那样在62篇考虑的出版物中有58篇是在2019年或之后出版的。由于相关文献的检索是在2022年初进行的因此仅收录了当年的2篇出版物。然而按照图中可见的整体趋势我们预计2022年及以后的出版物数量将会更高。 引用引用计数是评估出版物相关性和影响力的常用指标。因此我们在表一中列出了引用次数最高的前6名出版物根据谷歌学术。截至2023年1月Du等人于2017年发表的介绍 DeepLog 的论文被引用次数最高可以说是所有审阅出版物中最具有影响力的因为它们是第一个提出基于深度学习的方法能够检测日志数据中的异常事件序列。随后发表的几篇论文都依赖于 DeepLog 的基础因此可以公平地假设这篇论文至少在某种程度上对2019年及以后相关出版物的增加负责如图2所示。 请注意杨等人的出版物早于 DeepLog但引用计数明显较低。主要原因是本文主要关于单个日志时间中的token分析而该主题在后续研究中受到的关注远远少于事件序列分析。这种区别以及对第III-B节中所述的其它特征的评估见表2。 B 深度学习技术 本节概述了已评论出版物中应用的深度学习模型的属性。 深度学习模型有许多不同类型的深度学习模型适用于日志数据中的异常检测。深度学习神经网络最基本的形式是多层感知机MLP其中网络中的所有层都是完全连接的。由于其简单性它们的分类精度通常优于其它专门设计用于捕获序列数据中存在的共同特征的深度学习模型。因此在文献综述中很少考虑它们并且仅与其它深度学习模型结合使用或作为补充注意机制。 卷积神经网络CNN通过在隐藏层中插入卷积层和最大池化层来扩展MLP的架构。这些层使神经网络能够捕获输入数据的更抽象特征同时减少输入维度。事实证明这在对图像中的二维输入数据进行分类时特别有效其中线条等特征的学习与它们在图像中的确切位置无关。通过在矩阵内排列日志键将此功能转移到日志数据以便网络捕获事件之间的关系即它们的时间依赖性。还有几种依赖于特定类型CNN的方法啊例如专门设计用于处理时间序列并通过扩张因果卷积捕获其短期和长期依赖性的事件卷积网络TCN。 如表2所示循环神经网络RNN时调查文献中最常用的神经网络架构在62种经过审查的方法中有36中利用RNN进行异常检测。主要原因是RNN的架构利用反馈机制随着时间的推移保留其状态从而直接能够学习输入数据中的顺序事件执行模式这些模式时日志数据集中异常的关键标识符常用于日志数据集中。几种不同类型的RNN已成功应用于此目的。最广泛使用的架构之一是长短期记忆LSTMRNN它的开发是为了实现状态的长期存储并包含具有以下功能的单元输入门、输出门和遗忘门。大多数利用LSTM RNN的方法都使用事件发生序列或其修改和丰富版本来训练网络并随后将测试数据中不寻常的序列模式公开为异常。一些方法利用Bi-LSTM RNN它们基本上是两个独立的LSTM-RNN它们并行工作并以相反的方向处理序列即一个LSTM RNN像往常一样处理从第一个到最后一个元素的输入序列而另一个 LSTM RNN 从最后一个条目开始处理序列元素并预测按时间书匈奴位于它们之前的元素。实验表明 Bi-LSTM RNN 优于 LSTM RNN。RNN 的另一个流行选择是门控循环单元 GRU它简化了单元架构因为它们仅依赖于更新和重置门。GRU 的主要优点之一是它们在计算上比 LSTM RNN 更高效这是关注边缘设备的用例的一个相关方面。 虽然上述深度学习模型主要用于不同研究领域的分类问题但也有专门设计用于以无关监督方式运行的模型因此是异常检测的自然选择。其中之一是自动编码器AE它首先使用编码器从输入数据创建代码然后尝试使用解码器近似来自代码的输入从而避免需要标记的输入数据。主要思想是通过这个过程神经网络从输入中学习主要特征但忽略数据中的噪声类似于主成分分析PCA等降维计数。任何输入到已训练网络并产生高重建误差的输入数据都被视为异常。除了自动编码器的标准模型之外还有几种相关类型例如对统计分布进行操作的变分自动编码器VAE、在训练中添加事件类型等条件信息的条件变分自动编码器CVAE以及卷积自动编码器CAE利用CNN在学习与位置无关的特征方面的优势。 生成对抗网络GAN是另一种无监督深度学习方法。它们实际上由两个相互竞争的独立组件组成一个生成器生成类似输入数据的新数据。鉴别器估计某些数据源自输入数据的概率用于改进生成器。现有的方法使用不同的模型来构建GAN包括LSTM RNN、CNN于GRU的结合以及Transformer。 TransformersTF利用所谓的自注意力机制将数据实例嵌入到向量空间中其中相似的实例应该比不相似的实例彼此更接近。Transformer的目标是根据特定输入出现的上下文例如句子中的单词为其分配权重。因此Transformers 在自然语言处理NLP领域特别成功。注意力机制AT不仅出现在Transformer中还经常用于通过提高相关输入的权重来改进其他深度神经网络例如RNN的分类和检测。当RNN摄取长序列时这种效应尤为强烈。注意力机制通常被实现为可训练的网络例如MLP。为了避免于Transformer模型混淆我们在表2中明确说明了这些额外的注意机制。 Wan 等人是唯一使用图神经网络GNN的作者。虽然神经网络通常摄取有序数据例如CNN依赖于二维输入数据而RNN需要观察序列但GNN被设计为摄取图输入即顶点和边集。将日志数据转换为图的一种可能性是生成会话图其中顶点表示事件边表示其顺序执行。另一种不太常用的深度学习模型类型是进化颗粒神经网络EGNN这是一种从在线数据里路逐渐构建额模糊推理系统。 我们的调查显示许多经过审查的方法仅依赖于一种类型的深度学习模型。然而一些作者也使用不同模型的组合。例如Wang 等人建议使用 MLP 将 VAE 的输出与经过对抗性学习训练的 Transformer 的输出相结合。 训练损失函数损失函数DL-2对于深度神经网络的训练至关重要因为它们量化了神经网络输出于预期结果之间的差异。所审查的出版物中最常见的损失函数是交叉熵CE特别是用于多类预测的分类交叉熵或仅区分正常和异常的二元交叉熵。其他常见损失函数包括超球体目标函数HS其中到超球体中心的距离代表异常得分、均方误差MSE用于回归以及KL散度及其扩展边际似然ML可用于测量概率分布中的损失。 所提出的一些方法是使用自定义损失函数CF进行训练的包括CE和HS的组合。一些作者还专门为GAN的对抗训练AT定义了目标函数。表3总结了主要的损失函数。在所有出版物中有14篇没有说明损失函数因此被标记为不可用NA。 运行模式在现实场景中应用异常检测时并非所有日志数据都随时可用相反事件作为连续流生成并且仅应在事件发生时进行分析以便实现接近实时检测。因此生成的日志的结构完整性和统计特性随着时间的推移而变化例如由于用户交互和技术环境可能会发生变化整个系统的利用率并不是固定的。此外当生成这些日志的应用程序被修改时日志模板会发生更改或有新的日志事件发生。 为了以自动化方式跟上这些变化算法需要采用在线或增量学习DL-3即以线性事件复杂度摄取输入数据以便单次处理数据集其中每个数据实例仅处理过一次。虽然当经过训练的模型被认为是静态的通常总是可能以在线方式进行检测但开发支持在线学习的算法并通过将其纳入检测 baseline 中来动态更新其模型以适应新的事件或者模式更具挑战性。由于持续学习仍然是一个悬而未决的问题我们在表2中将所有至少在某种程度上启用动态模型更新的方法标记为在线ON将所有其它具有离线训练阶段的方法标记为离线OFF。 所审查的方法以多种方式解决动态模型适应问题。Du 等人建议在检测过程中发现误报时更新神经网络的权重以反映正确的事件概率分布而无需从头开始重新训练。Meng 等人认为这种手动反馈循环在实践中是不可行的因此需要重新训练将新的事件类型映射到现有的事件类型。Yen 等人在误报率超过一定阈值时会自动在成批的新日志数据上重新训练他们的神经网络。然而计算误报率依赖于标记数据因此不会将人类从循环中删除。Decker 等人提出了一种解决上述问题的有希望的解决方案。他们采用了一种不断发展的分类器专门设计用于处理不稳定的数据流从而可以实现持续学习。 一般来说在线和离线模型都可以在有监督SUP和无监督UN方式DL-4下工作。然而我们注意到所审查的出版物几乎所有监督学习方法都选择离线训练阶段。这是合理的因为监督学习所需要的标签信息依赖于手动分析或验证因此只能为分隔的数据集以取证方式生成而不能为数据流生成。 我们还观察到许多经过审查的方法声称可以实现无监督学习但实际上是以半监督SEMI方式操作的因为他们通常假设训练仅在没有异常的正常数据上进行。主要问题是训练数据中存在的异常会错误地改变神经网络的权重从而恶化后续检测阶段的检测。因此只有为无监督学习而设计的深度学习模型才能够处理训练数据中的异常例如 Otomo 等人提出的基于 CVAE 模型的方法。请注意支持无监督学习的神经网络架构也可以应用于半监督检测因此不一定标记为无监督。 C 日志数据准备 本节概述了为深度学习准备原始和文本日志数据所需要的所有步骤。这包括将事件分组到窗口或会话中、token化和日志解析、从日志中提取特征以及将这些特征转换为适合作为神经网络输入的向量表示。图3概述了所审查文献中使用的这些数据准备方法并在示例日志行 L1-L8 上说明了它们。在以下各节中我们讲详细讨论所有所述方法。 预处理由于日志数据通常是非结构化的因此有必要在将其输入深度学习系统PP-1之前以某种方式对其进行预处理。我们的调查显示处理非结构化数据有两种主要方式。最常见的方式是利用解析器通常称为日志键KEY来提取每一行的唯一事件标识符以及事件参数值如 II-A2 节中所述。因此作者通常会重复使用众所周知的数据集的现有日志键或使用最先进的解析器生成方法创建键例如 Drain 或者 Spell。通常每一行恰好匹配一个键因此在事件映射期间可以轻松地为每个日志键行分配唯一的事件类型标识符。例如在图3中行L1映射到事件类型标识符E1因为它匹配对应的日志键。此外该图还显示解析可以从日志事件中提取所有参数特别是从L1中提取时间戳、数据包响应者的标识符、以及文件 block 并将其存储在列表中。 解析的替代方法是基于 tokenTOK的策略该策略将日志消息拆分为单词列表例如通过在空格处拆分它们。然后在获得最终的词向量之前通常会通过将所有字母转换为小写并删除特殊字符和停止词来清理数据。虽然此类方法从单个标记中获取较少的语义信息但它们具有更灵活的有点因为它们依赖于普遍使用的启发式方法而不是预定义的解析器因此具有广泛的适用性。一些方法利用解析和基于标记的预处理策略的组合COM特别是通过从解析的事件而不是原始日志行生成 token 向量。 事件分组如第II-A3节中所述。简单的异常值检测不需要对日志进行任何分组因为单个异常事件被视为独立于它们发生的上下文的异常。然而深度学习最常应用于揭示多个日志事件的异常模式例如作为事件序列或事件日志相关性的变化。对于这些情况有必要将事件逻辑地组织成组然后单独进行分析或相互关联进行分析。 我们在图3的右上角说明了常见的事件分组策略。分组到时间窗口几乎总是可行的因为日志事件通常是用记录其生成时间的时间戳生成的。由于时间戳通常出现在日志行的开头因此相对容易提取因此没有必要解析通常更复杂的日志消息的其余部分。基于事件的分组有两种主要策略。首先滑动时间窗口是具有特定持续时间的窗口这些窗口以固定的步长通常较小和窗口大小的整数除数。对于移动时间窗口的每一步在窗口的当前开始和结束时间内具有时间戳的所有日志被分配到同一组其中每个日志行可能出现在多个组中因为时间窗口重叠。对于图3中的示例日志我们假设从20:00:00开始的时间窗口为2小时步长为30分钟。如图所示线L5、L6和L7都包含在Tb和Tc中。其次固定时间窗口是滑动时间窗口的特殊情况其中步长设置为与窗口大小相同的值。虽然这一策略会导致数据视图的粒度不太细但优点是每个日志事件只会分配到一个时间窗口这使得后续计算例如时间序列分析变得更加容易。图3中的日志事件被示例性地分组为2小时的固定时间窗口产生包含第一组四行的T1和包含后续组四行的T2。需要说明的是基于滑动或固定窗口的分组也可以按照行数而不是时间进行分组这里是我想的等长度分组法使得每组行具有相同的大小。虽然这避免了处理时间戳的需要并确保组大小是固定的例如不能有任何空的组但将在时间序列中考虑事件频率更加困难因为结果窗口表示不同的时间跨度。 完全不同的分组策略是依赖于事件参数的会话窗口该事件参数充当事件源自的特定任务或进程的标识符。通过这些会话标志符对日志事件进行分组即使在受监控系统上并行执行多个会话时也可以提取正确描述底层程序工作流程的事件序列。不幸的是并非所有类型的日志数据都带有这样的会话标识符例如blk_388)充当会话标志符因此允许我们示例性地提取三个事件序列。 特征提取第IV-C1节中描述的基于解析和标记的与处理策略能够从非结构化日志中提取结构化特征PP-2。其中一些特征是直接从预处理日志中导出的例如可以使用 token 序列TS而不需要任何进一步的修改即可将每个日志行作为一个句子进行分析。另一方面token计数TC需要额外的计算步骤其中对每行中的token的高级加权技术如术语频率-反向文档频率TF-IDF它根据所有观察到的日志行的token出现情况估计token相关性。 考虑到事件映射步骤的结果提取事件序列ES很简单即通常由固定、滑动或会话窗口分隔的事件类型标志符序列参见第IV-C2节。例如图3显示文件块 blk_388 的事件序列为 [E1, E1, E2, E1]对应于匹配行 L1-L4 的日志键的事件标识符。事件计数EC是长度为d的向量其中向量的第i个元素描述了第i个日志键的出现次数d是可用日志键的总数。图3中的示例将时间窗T1的事件计数向量显示为 [3, 1, 0, 0]表示T1中出现了第一条日志键 E1 对应的三条日志行特别是 L1、L2、L4行。除了频率之外还可以从事件发生中计算初许多其它统计属性STAT例如季节性日志的百分比日志消息的长度日志活动频率日支行块的基于熵的分数或者事件发生中突然爆发的存在。 日志事件的参数PA被提取为值列表。由于每个参数的语义在解析后已知因此可以使用适合各自值类型例如数字或分类的方法来分析每个向量中的值。日志事件的一个特殊参数是时间戳因为它允许将事件发生按时间顺序排列并推断动态依赖性。因此事件间隔时间EI即属于同一事件类型的日志行的间隔时间是异常检测中经常提取的特征。 特征表示上一节中描述的提取特征包括数字或分类向量适合神经网络使用。例如事件序列被表示为事件ID序列向量ID即按时间顺序排列的日志键标识符序列并被馈送到RNN中以学习事件发生的依赖性并将不寻常的序列模式揭示为异常。事件计数表示为有序计数向量CV并且也类似地用作RNN的输入。时间统计是另一种类型的输入除了将它们表示在统计特征向量FV中之外不需要任何特定处理其中限量中每个元素的位置对应于一个特定特征。 虽然可以直接使用提取的特征但所审查的出版物中提出的大多数方法实际上依赖于原始特征向量的组合或者以其他方式转换的向量表示PP-3。因此最常见的表示是语义向量SV。在NLP理念关于常见的做法是将句子的单词转换为所谓的语义向量这些向量编码基于上下文的语义例如Word2Vec, BERT 或 GloVe或语言统计数据例如 TF-IDF。由于每个日志行都包含类似于句子中单词的token序列因此有理由对token序列应用自然语言处理的方法。类似地多个后续事件的序列可以被视为一个句子其中每个唯一的日志键代表一个单词。语义编码通常通过在特定日志文件上训练深度神经方法或依赖预训练模型来实现。语义向量有时与位置嵌入PE结合使用其中元素通常是tokens根据它们在序列中的相对位置进行编码。为了将位置信息添加到编码的日志消息中作者通常分别使用使用正弦和余弦函数对偶数和奇数标记索引。 **One-Hot 编码OH**是处理分类数据的最常用技术之一因此经常应用于事件类型因为在解析其中定义了有限数量的日志键或token值。形式上对d个值的有序列表中的值i进行独热编码是一个长度为d的向量其中第i个元素为1所有其他元素为0。虽然大多数作者直接使用one-hot编码数据作为神经网络的输入但也可以将其与计数向量等其他特征相结合以便应用的神经网络能够识别输入并针对不同的日志键学习单独的模型。 **编码层/矩阵EL**通常用于解决高位输入数据的稀疏性问题例如当需要大量日志键来解析日志时例如one-hot编码事件类型。它们通常是随机初始化的参数与分类模型一起训练以为日志消息创建最佳向量编码。向量编码通常排列在矩阵中以便通过将该矩阵与独热编码的日志键向量相乘来获得日志键的相应向量。与语义向量的主要区别在于 嵌入层/矩阵 通常不是针对NLP目标进行训练的即它们的目的不是学习 Word2Vec 等单词的语义相反嵌入层/矩阵 仅经过训练以最小化分类网络的损失函数。一些作者使用基于深度学习的自定义嵌入模型我们将它们的输出称为深度编码嵌入DE。这包括基于字符、事件和序列的嵌入的组合、使用MLP和CNN的注意机制以及将标签信息输入VAE的标记计数。 与上述的方法不同这些方法操作事件类型并且主要使用token来以向量格式编码这些事件而依赖于参数向量PV的方法直接使用从解析的日志消息中提取实际值。因此提取的数值参数可以用于RNN的多变量事件序列分析而类别值可以用词嵌入方法进行一次性编码和矢量化。无论如何由于不同的日志事件具有不同数量的且语义不同的参数通常需要对每种事件类型的参数进行各自的分析。日志事件的时间戳是一个特殊的参数因为它允许将其他参数放在时间上下文中这是事件序列分析所必需的。然而时间戳本身可用于时间嵌入TE并用作神经网络的输入。为此Li等人通过应用软独热编码为事件发生之间的时间差序列生成向量。 虽然在几个出版物的不同变体中使用了上述表示法但GraphG是一种完全不同的方法仅由Wan等人使用。其关键思想是将事件序列转换为会话图然后应用专门为这些数据结构设计的神经网络。另一种不太常用的对日志消息之间的相关性进行编码的策略是所谓的Transfer MatrixTM。具体地说dxd维矩阵对d个日志键中的任何一个跟随另一个键的概率进行编码。 D 异常检测技术 前面的几节描述了准备输入日志数据以供神经网络摄取的方法。然而在许多情况下检索呈现给神经网络的数据样本是否异常的信息是非常重要的因为没有针对事先未知的异常的专用输出节点。因此本节概述了所审查的方法所应用的异常检测技术。首先我们陈述了方法通常针对的不同类型的异常。其次我们研究如何从网络输出中检索检测或分类结果。最后我们陈述了不同的判定标准用于根据这些结果测量来区分正常和异常样本。 异常类型审查的方法处理了章节II-A3AD-1中概述的不同类型的异常。异常值OUT是不适合数据集整体结构的的单个日志事件。最常见的是根据异常参数值、标记序列、或出现次数来检测异常事件。相对而言很少有方法考虑异常值因为大多数已审查的方法侧重于集体异常特别是涉及事件序列。 顺序SEQ异常是在执行路径改变时检测到的也就是说生成日志的应用程序执行事件的方式与以前不同。这可能导致在正常时间序列中出现额外的、缺失的或者不同顺序的事件以及甚至可能涉及以前未见过的事件类型的全新序列。检测这些异常的一种常用方法是根据之前或之后发生的所有事件检查事件序列中的特定事件类型是否预计会发生。 顺序异常的检测本质上假定事件以有序序列的形式发生而频率FREQ异常只考虑事件发生的次数。尽管如此事件频率可以用来推断事件之间的依赖关系例如与打开和关闭文件相关的事件数量应该相同因为每个文件最终将被关闭并且在此之前需要打开。检测频率异常的主要思想是系统行为的变化会影响在时间窗口内最常计数的通常事件发生的数量。 一些方法还考虑基于超出事件计数的多个日志事件的某些定量表达属性的异常如达到间隔时间或季节发生模式。我们将其称为统计STAT异常因为它们的检测通常假设时间发生遵循特定的稳定分布。下面的部分描述如何使用神经网络的输出来确定上述类型的异常。 网络输出一般来说神经网络的输出由其最后一层AD-2的单个节点或多个节点组成。因此从网络中提取的结果值是一个标量或数值向量。一种可能性是将这些结果视为异常评分该评分表示呈现给网络的日志事件在多大程度上代表异常。由于这些分数通常很难单独解释因此通常有必要将它们与一些阈值进行比较。在二值分类BIN中这个思想被用来估计神经网络的输入是正常的还是异常的。对于监督方法数字输出可以解释为输入对应于任何一类的概率。另一方面由半监督或无监督方法生成的异常分数通常不归一化例如输入和超球聚类中心的距离可以变得任意大因此需要与经验确定的阈值进行比较。同样输入向量变换TRA将输入转换为新的向量空间并为正常数据生成聚类能够通过距离聚类中心很远的距离来检测异常值。另一种相关方法是利用 Autoencoders 的重构误差RE该方法首先在较低维空间中编码输入数据然后尝试将其重构为原始形式。在这种情况下如果输入样本难以重建即产生很大的重建误差则认为它们是异常的因为它们不对应于网络所训练的正常数据。 虽然上述方法追求区分正常和异常输入的二元分类但也有能够区分两个以上类别的概念。多分类MC为特定类型的异常分配不同的标签但需要监督学习以便在训练阶段捕获特定于这些类的模式。为了解决这个问题还可以将事件类型作为分类的目标。最常见的方法是训练模型使其在观察到的日志事件序列之后预测下一个日志键。当使softmax函数作为输出的激活时该预测将产生一个概率分布PRD其中包含每个日志键的单独概率。当时间被视为数字向量VEC特别是语义或参数向量时预测序列中的下一个日志事件的问题也可以被表述为回归任务。因此神经网络输出表示预测事件向量的向量而不是各自的事件类型。 检测方法在前一节中描述的获取网络输出的不同策略已经大致了解了用于区分正常和异常行为并最终报告异常的AD-3的方法。当网络输出直接对应于特定的标签LAB时例如通过二元分类完成很容易为所有标记为异常的样本生成异常。对于输出某种数值或异常分数的所有方法使用阈值THR进行区分是很直接的。该阈值也有助于调整方法的检测性能并通过经验实验在TPR和FPR之间找到可接受的权衡。另一种方法是将从网络中获得的异常分数建模为统计分布。特别是Du等人和Xie等人使用高斯分布检测误差超出特定置信区间的参数向量为异常。Otomo等人提出了一种不同的方法它们对重建误差应用聚类并将距离正常聚类足够远的所有样本检测为异常。 当神经网络的输出是已知日志键的多概率分布时通常考虑具有最高概率top的前n个日志键作为分类的候选者。因此只有当日志事件的实际类型不在候选事件集中时才会检测到异常。考虑的候选数n调节TPR和FPR之间的权衡类似于上述阈值。图4显示了网络输出与应用的监测技术之间的关系。BIN和MC都依赖于监督学习因此能够直接为新的输入样本分配标签。所有其他技术都可以进行半监督或无监督的训练。特别是RETRA和VEC产生的异常分数与阈值进行比较而PRD通常与具有最高概率的顶级日志键进行比较。请注意这个整体模式有一些例外。例如Yang等人的方法通过使用概率标签支持半监督训练Zhang等人的方法尽管依赖于误差重构但仍是由监督的。 E 评价与再现性 本节概述在审查的出版物中进行的评价。我们提供了一个公开可用的数据集列表这些数据集对评估有用并说明了常用的评估指标和基准。我们还讨论了与开源实现的可用性相关的评估和再现性。 数据集数据集在科学出版物中时必不可少的以验证方法并显示由于最先进的检测率ER-1的改进。我们的文献综述表明在使用深度学习评估日志数据异常检测方法时只有很少的数据集是常用的。表4概述了所审查的出版物中使用的所有数据集。从表中可以看出绝大多数的评估只依赖于四个数据集HDFS、BGL、Thunderbird和OpenStack。下面我们将简要介绍每个数据集。 HDF 日志数据集来源于Hadoop Distributed File SystemHDFSHDFS运行在203个节点的高性能计算集群上该集群计算了大量的标准MapReduce作业。两天内收集的日志超过2400万条。该数据集包括作为会话标志符的特定文件块的异构日志事件序列。一些事件序列对应于异常执行路径这些异常执行路径主要与写入异常等性能问题相关这些问题是手动标记的。图3中所示的示例日志是HDFS数据集日志的简化版本。 BGL数据集包括400多万个日志事件这些事件是从Lawrence Livermore National Labs运行的BlueGene/L (BGL) 超级计算机上收集的历时200多天。日志事件是使用严重性字段生成的该字段允许将它们分成不同的类别但是系统管理员还手动标记了日志。日志中出现的异常及对应于硬件问题也对应于软件问题。Oliner等人也在研究中提供了来自同一系列的其他日志数据集包括Thunderbird和Spirit。这些数据集包括系统日志syslog同样也包括与磁盘故障等系统问题的相关的警报。两个数据集中的事件都包括自动生成的警报标记可以用作标签。HPC RAS数据集来自同一超级计算机的另一个日志数据集。可靠性、可用性和可服务性RAS日志通常用于了解系统故障的原因。但是该日志数据及不包含异常标签。 OpenStack数据集采集自OpenStack平台自动脚本连续、随机地执行虚拟机处理相关任务包括创建、暂停、删除等。除了上述数据集主要包含随机发生的故障之外OpenStack数据集的作者有目的地在特定时间点注入异常包括超时和错误。事件包括可用于标志会话额实例标识符。 与HDFS数据类似Hadoop数据集包含运行MapReduce任务WordCount和PageRank的计算集群的日志。在初始训练阶段之后作者有目的地出发节点上的故障特别是通过关闭机器、断开网络连接和填充一台服务器的硬盘。日志根据应用程序标识符被分成不同的文件这些标识符的作用类似于会话标识符也被作者用来为异常的程序执行分配标签。 Loghub包含几个用于评估的数据集包括来自高性能计算机系统的日志。Spark数据集包含运行在32台机器上的分布式数据处理引擎Apache Spark日志。日志包括正常和异常执行但没有标签。ZooKeeper是Apache另一个用于分布式计算和配置管理的服务。Loghub还包含来自传统操作系统的日志。Windows日志数据集是通过监视CBS基于组件的服务在一台实验室Windows7机器上手机的CBS在包和更新的级别上运行。同样Android的数据集是在实验室环境下从手机上手机的。这两个数据集都没有标记也不涉及任何故意注入的异常。数字语料库的磁盘映像中提供了来自Linux操作系统的日志其中数据中出现了诸如无效身份验证之类的故障。 当涉及到异常行为的检测时上述所有数据集主要提供作为合法系统使用的一部分而生成的故障事件。但是也有一些数据集涉及由恶意活动产生的事件从而能够对基于异常的入侵检测系统进行评估。例如DFRWS 2009数据集包含来自 Linux 设备的系统日志设计数据泄露未经授权的访问以及使用后门软件。Honeynet 2010和Honeynet 2011数据集包含来自被非法访问的受感染Linux计算机的常见日志文件。公共安全日志共享站点提供来自不同来源的Linux安全日志这些日志受到不同的现实入侵如暴力攻击的影响。不幸的是这些安全日志文件中没有一个带有恶意事件的标签因此作者需要生成他们自己的基本事实来评估他们在这些数据集上的方法。 评价指标异常检测方法的定量评估ER-2通常围绕将正确检测到的异常样本计数为真阳性TP将错误检测到的非异常样本计数为假阳性FP将错误未检测到的异常样本计数为假阴性FN将正确未检测到的非异常样本计数为真阴性TN。在最基本的设置中事件被单独标记样本代表单个事件例如在BGL数据集中使用二元分类评估检测到的事件相对简单。一些经过评论的论文还考虑了数据集的多分类问题其中不同类型的故障通过计算所有类型的评估指标的平均值或绘制混淆矩阵来具有不同给的标签。 鉴于日志事件在检测之前有时会使用不同的方法进行聚合因此有不同的方法来确定样本是否异常以及它是否算作正确的检测。例如window中日志的聚合可能需要将检测到的事件计数为真阳性只要它们与事件序列中的实际异常足够接近。由于大多数被审查的论文依赖于HDFS数据集其中标签仅适用于整个时间绘画而不是单个事件因此计算上述指标最常用方法依赖于 对/正确 识别 非/异常 会话的计数。 无论正样本和负样本如何计数几乎所有作者最终都会使用众所周知的指标 Precisionrecall或真阳性率假阳性率和F1-score。不太常见的评估指标时15篇出版物中使用的 precision-recall-curves 和 receiver operator characteristic (ROC) 曲线。其它更特定于深度学习应用的指标时模型参数的数量、以及训练模型或运行检测的时间ER-3。一些作者还评估了他们的方法的特征这些特征超出了标准异常检测评估的范围例如对多个数据集的组合进行训练是否可以提高分类的整体性能或者他们的方法是否对日志模式随时间的变化具有鲁棒性。 基准方法大多数出版物将上一节中所述的评估指标与基准方法进行比较以显示它们相对于最先进技术ER-4的改进。图5显示了所审查出版物中最常用的基准。请注意对于此可视化我们只考虑了至少两个不同出版物中出现的方法。 如图所示DeepLog是最常用的基准在62篇经过审查的出版物中出现过38篇。DeepLog依靠LSTM RNN来预测序列中即将发生的日志事件从而将观察到的事件披露为异常如果预计这些事件发生的概率较低。DeepLog之所以受欢迎是因为DeepLog是第一个使用深度学习检测日志数据中的序列异常参见第IV-A2节并且可以在线获得开源重新实现。 第二个最常用的基准利用主成分分析PCA依赖于事件计数而不是序列。特别是Xu等人为事件类型标识符创建消息计数向量并使用PCA将其转换为子空间其中异常表现为与所有其他样本具有高距离的离群值。Lou等人也生成消息计数向量但使用不变挖掘来发现表示执行工作流的日志事件之间的线性关系。违反先前确定的不变量的事件序列被声明为异常。 LogCluster生成日志序列的向量然后使用相似性度量对它们进行聚类。该方法主要用于日志过滤但也可用于检测异常日志模式。支持向量机SVM是另一种依赖事件计数向量的方法。然而除了PCA和不变挖掘之外SVM通常以监督的方式运行。为了缓解这一问题并使其能够在半监督或无监督的情况下应用作者因此求助于独类SVM或支持向量机数据描述SVDD。 与DeepLog类似与上述传统机器学习方法相反LogAnomaly利用LSTM RNN来分析日志事件序列。为此他们提出了所谓的template2Vec嵌入方法从组成事件的token中提取语义向量LogRobust也利用了语义向量但是专门设计用于处理作为软件发展的一部分出现的未知日志事件。 孤立森林是一种异常检测技术其中分析的数据被递归分割指导单个数据实例与所有其它点隔离因此异常点被识别因为他们在被孤立之前需要更少的分割。逻辑回归是一种用于数字输入数据的分类器在线性分类情况下效果最好。另一方面决策树是一种监督分类方法其中实例遍历二叉搜索树。因此每个内部节点通过一个特定的谓词分割数据树的每个叶子决定实例的类。 另一个依赖深度学习的基准是CNN。特别是Lu等人的方法在语义上对事件标识符序列进行编码并将它们嵌入到一个矩阵中进行卷积。最后nLSAlog利用LSTM RNN因此与DeepLog类似。在所有审查的出版物中只有八份不涉及任何比较基准方法。 在现性出于多种原因科学出版物的作者应该追求其所呈现结果的再现性包括其他人验证方法正确性的可能性、使用附加功能扩展算法、在其他数据集上进行自己的实验的可能性并使用该方法作为新出版物的基准。当评估中使用的数据ER-5以及原始代码ER-6都是公开可用时我们认为该方法是可重复的。 正如第IV-E1节中所概述的那样。大多数审查过的出版物对公开提供的相同少数数据集进行了评估。一些作者还评估了他们在测试平台中综合生成的私人数据集的方法这些数据集从学术机构收集或从工业实际应用中获得。总体而言在62份经过审查的出版物中有55份涉及对表IV中至少一组公开数据的评估。 虽然在公共数据集上评估方法相对常见但不幸的是只有少数作者与论文一起发布其方法的实现。在我们的审查过程中我们只能从8种出版物中找到所提出方法的原始源代码。然而我们也指出Chen等人提供的Deep-loglizer工具箱中存在一些科学方法的重新实现。在表IV中我们将原始作者实现的方法标记为YES将其他作者的重新实现标记为RE将所有其他方法标记为NO。我们鼓励作者发布他们的代码以提高结果的可重复性并希望将来看到更多的开源实现。 V 讨论 前面的部分详细介绍了我们的调查结果。下面我们总结这些结果讨论使用深度学习进行基于日志的异常检测研究领域中开放问题并在回答第I节的研究问题的过程中提出了未来研究的思路。 RQ1基于日志的深度学习异常检测的主要挑战是什么在进行系统文献综述时我们评估了当前最先进的技术是否以及在多大程度上解决了第II-B节中列举的研究挑战。事实证明数据不稳定性即以前未知事件的出现是所审查的方法解决的主要问题之一。目前解决这一问题的关键思路是将日志表示为语义向量通过测量其相似性让然可以将新的或改变的事件与已知事件进行比较。有许多技术可以生成数字向量来表示日志事件参见第IV-C4节从而解决将非结构化和文本输入数据馈送到神经网络的问题。不平衡的数据集是一些方法专门解决的另一个挑战。特别是作者建议使用采样技术以及上下文嵌入方法作为可能的解决方案。 一些方法是专门设计的以便在需要高效和轻量级算法的场景中适用例如部署在边缘设备上。这是通过利用低维向量表示以及比循环神经网络更有效的卷积神经网络来实现的。同样一些方法支持日志流处理并通过适用手动识别和标记的假阳性样本逐步重新训练模型来实现自适应学习即动态改变异常检测基线。必须注意的是目前还没有解决方案如何在没有标签信息或人工干预的情况下自动确定是否需要重新训练。交错日志的挑战通常是通过直接利用解析的日志数据的会话标识符来解决的然而也有一些方法完全不需要哦序列例如依靠情感分析。 迁移学习提供了一种解决可用标记数据很少这一挑战的方法其中模型在一个系统上进行训练并在另一个系统上进行测试。主要思想是神经网络学习的日志事件模式在不同领域是相似的并且可以识别和分类已经看到的异常。Guo等人是唯一考虑联邦学习的作者其中学习以分布式方式跨多个系统进行。Hashemi等人也进入了这个方向因为他们结合了多个数据集来评估这是否会影响他们模型的性能。我们相信联邦学习可能是未来出版物的一个有趣主题因为存在许多现实世界的场景其中日志数据在分布式机器中监控但部署的检测器的编排是集中进行的。 由于绝大多数方法关注的是日志序列和频率但只有少数方法考虑事件参数或检测的间隔到达时间因此只能部分地解决面对各种异常工件的挑战。我们还建议考虑处理在正常系统行为中出现的其他模式的技术这些模式可能有助于检测特定的异常例如参数值的相关性的变化、周期行为、统计分布等。此外我们观察到所提出的深度学习模型的可解释性相对较低即理解分类标准并不简单因此模型偏差的检测以及误报和漏报的解释通常很困难。这阻碍了对检测到的异常进行根本原因分析并给系统操作员带来了额外的开销。特别是在安全关键系统例如入侵检测中了解已部署的异常检测器的功能及其限制是至关重要的。因此我们建议将基于日志的异常检测的未来研究转向可解释的人工智能。 RQ2通常应用哪些最先进的深度学习算法我们的回顾表明科学出版物中使用了多种类型的深度学习算法并且将集中方法结合起来是很常见的。因此RNN显然是应用最广泛的模型因为它们是捕获日志数据中的顺序模式的自然选择。CNN被用作RNN的有效替代因为他们也能够获取事件依赖关系。另一方面自动编码器和Transformer由于支持无监督学习而经常被应用。虽然GAN、MLP和EGNN仅被少数几种方法使用但他们具有有益的特性参见第IV-B1节使这些模型值得考虑。同样地我们相信在文献综述中为探索的其他深度学习架构也可以产生有趣的见解例如深度信念网络或深度强化学习。 我们认为特定技术的应用主要是由要分析的日志数据和要检测的异常所驱动。事实上所常用的日志数据集都涉及表现为连续发生的事件的异常参见第IV-E1节从而解释了RNN的趋势。然而由于异常也可能表现为点异常或上下文异常参见第II-A3节我们建议考虑具有不同类型异常的替代日志数据集并为这些情况开发方法。例如在我们早期的工作中我们发布了日志数据集其中异常除了影响日志事件的频率和序列之外还影响事件参数的组合、组成和分布。 RQ3如何预处理日志数据以供深度学习模型摄取我们的调查表明从原始日志数据中提取特征的主要有三种方法。首先通过对日志消息进行标记这是一种简单的方法不需要任何解析器但缺乏对标记的予以解释。第二解析消息并从日志事件集合中提取信息如序列、计数或统计信息。第三、通过从解析的日志事件中提取包括时间戳在内的参数。有许多方法可以将这些特征表示为深度学习模型所摄取的数值向量。 虽然SVM或PCA等传统机器学习方法最适合事件计数向量但大多数方法利用深度学习神经网络使用语义向量来产生最佳结果。因此组成日志消息的token被表示为数字向量并在事件发生序列的上下文中进行考虑。大多数方法都采用这些顺序特征而频率、独热编码数据和嵌入层则较少使用或者仅作为贡献特征使用。 RQ4检测到哪些类型的异常以及如何识别它们几乎所有审查的方法都集中在顺序异常上这些异常要么表现在事件序列中要么表现在事件中的标记序列中要么表现在两者的组合中。只有少数方法使用事件计数或检测单个日志行作为异常值而不需要它们发生的上下文。检测技术一般由神经网络的输出驱动。虽然二元或多元分类直接用于报告异常但所有数值输出如异常分数或重建错误都与预定义的阈值进行比较并且使用日志事件的概率分布来检查实际事件是否在最佳候选范围内。通常根据经验对特定日志文件确定这些阈值。 RQ5如何评估所提出的模型我们对第IV-E1节中常用的日志数据集进行调查发现只有四种数据集被大多数方法使用HDFS、BGL、Thunderbird和OpenStack。所有这些数据集都是从涉及高性能计算和受随机故障影响的虚拟机的场景中收集的。很明显异常标签的可用性使这些数据集对科学评估特别有吸引力。如前所述我们认为更大和更多样化的输入数据集将有助于评估所提出的方法是否能够检测异常序列以外的异常工件。特别是网络攻击的后果而不是故障可能导致适合检测的日志工件和适合异常检测的用例。 我们手动分析了HDFS数据集因为它是最受欢迎的数据集发现实现有竞争力的检测率远非难事。原因是许多异常事件序列很容易被识别因为它们涉及的事件类型从未在训练数据中出现过或者涉及的元素少于最短的正常序列。使用这两种启发式方法我们可以在测试数据集上实现F190.41%ACC99.48%、P98.37%、R83.65%、FPR0.04%。此外当使用窗口大小为2时将这些启发式方法与简单的Stide算法结合使用该算法。。。 我们注意到的另一个问题是评估通常是在异常序列的基础上进行的即整个序列被认为是正常或异常的而不是其元素。然而长序列的部分实际上可能代表正常的系统行为而只有少数元素应被视为异常。评估检测方法能否能够准确第查明序列的哪部分是异常的将是很有趣的这对于系统操作员对报告的异常进行手动调查也很实用。显然这要求数据集以单个事件的粒度而不是会话的粒度进行标记。 最后我们注意到几乎所有评估都依赖于F-score参见第IV-E2节等指标当数据集高度不平衡时这些指标无法准确描述分类或检测性能。为了避免对评估结果的误解建议还计算对类别不平衡更稳健的指标例如特异性或真阴性率。 RQ6这些方法在多大程度上依赖标记数据并支持增量学习基于日志的异常检测最常应用于旨在揭示意外系统行为例如故障或网络攻击的用例中。由于事先不知道这些工件因此不可能存在标签因此非监督或半监督方法通常更广泛地适用因此更可取。由于包括RNN在内的大多数神经网络架构都可以实现半监督学习但只有特定的深度学习模型支持完全无监督操作因此我们在回顾的文献中发现了28种半监督方法而62种方法只有8种是无监督的。我们没有想到会看到相对大量的26种监督方法至少需要部分标记的异常进行训练。此外62种方法中的54种只支持离线训练。这包括大多数监督模型以及不打算随时间的推移动态自动更新训练模型的所有其他方法。审查的方法中只有8中能够通过重新训练或EGNN模型架构实现持续的模型调整。 RQ7就按嗲吗和所有数据的可用性而言所呈现的结果的可重复性如何如地IV-E4节所指出的大多数审查的方法利用公开可用的数据集来评估其方法只有7份出版物依靠私人数据集。因此假设读者愿意根据论文中的描述从头开始重新实现这些方法所呈现结果的可重复性相对较高。我们只能找到9个由原作者发布的方法的公开源码以及4个重新实现表明总体可重复性较低。我们鼓励作者将来发表可重复的实验以便在调查中进行大规模定量比较。 **建议。**基于上述对我们研究问题的回答和发现的问题我们提出以下研究议程首先需要足够和多样化的日志数据集并具有最先进的基准以确保深度学习在一般异常检测用例中的适用性并证明其优于简单或传统的检测方法。其次检测结果的第可解释性是贯穿整个研究领域的主要问题需要适当解决。这两个问题的解决在很大程度上提高了所提出方法的可理解性和可靠性并促进了新型深度学习检测算法的发展。考虑到这一研究议程我们总结了对未来研究的建议如下 创建或识别新的日志数据集这些数据集专门涉及顺序异常并且在评估将日志数据作为序列摄取的方法时受其他类型异常的影响较小。研究使用深度学习提高所提出的异常检测方法的可解释性的方法例如通过从模型中提取特定的检测规则或确定负责特定实例检测的主要特征并使用该信息增强检测结果。考虑事件序列意外的日志工件进行异常检测或将它们用作深度学习模型的附加输入。提出新颖的异常检测方法或深度学习框架已解决实际应用中的常见挑战特别是关于增量和流处理或日志数据、自适应学习以及高效和低资源训练。考虑在序列内精确定位异常而不是将整个序列检测为异常。允许研究人员通过将开发的代码作为开源发布和在数据共享存储库上使用日志数据集来重现和扩展呈现的结果。 VI 结论 本文介绍了62种科学方法的调查这些方法使用深度学习技术来检测系统日志数据中的异常事件或过程。调查显示不同的模型架构适合于这一目的包括序列输入数据的模型如循环或卷积神经网络基于语言的模型如Transformer以及无监督模型例如自动编码器或生成对抗网络。类似地有不同的特征用于训练和随后的检测例如事件或标记的序列和计数以及从事件派生的参数值或统计信息。为了将这些特征作为神经网络的输入进行处理有必要将它们编码为数字向量例如通过语义矢量化或独热编码。然后通过分类直接检测异常或者通过从网络中获得某种异常评分来区分正常和异常的系统行为。调查显示现有方法尚未充分解决一些开放性挑战包括超越顺序异常的检测技术、训练模型和分类结果的可解释性低、缺乏包含不同共计工件的代表性评估数据集以及再现性低。
http://www.zqtcl.cn/news/52117/

相关文章:

  • 个人网站创建与管理360建筑网一级消防
  • 南通网站建设哪家好wordpress中文官网
  • 网站建设优化公司seo数据优化
  • 新乡建网站网站建设哪里最好接单子
  • 企业为何选择网站推广外包?石家庄模板建站代理
  • 网站建设卖给别人可以吗推广竞价
  • 广州哪家做网站价格好义乌网红村
  • 网牛网站建设生物科技公司网站模板下载
  • 网站页面的宽度直播带货系统
  • 凡科网站建设好成都智能建站模板
  • 网站开发详细介绍上海企业建站公司哪家好
  • 推荐一些外国做产品网站毕业室内设计代做网站
  • 国内网页做的好看的网站布吉做棋牌网站建设哪家便宜
  • 创新的成都 网站建设wordpress主题机制
  • 网站开发接单辽宁建设工程信息网上传招标文件方法
  • 企业宣传网站建设说明书佛山网站建设定制
  • 网站模板制作教程视频网站规划的缩略图
  • 怎样维护自己的网站昆明新闻头条最新消息
  • 南京做网站需要多少钱网站建站销售怎么做
  • 石家庄建设银行河北分行招聘网站北京信息化
  • 网站被黑了申请注册一个自媒体平台账号
  • 番禺手机网站制作推广新闻军事最新消息
  • 30个成功的电子商务网站设计硬件开发需求
  • 免费网站后台管理系统html甘肃省建设部网站首页
  • 做网站的公司现在还 赚钱吗视频网站如何做微信营销
  • wordpress整站下载wordpress主题手动安装
  • wordpress百度云cdn外国网站在内地做seo
  • 网站的软文 怎么做推广方案wordpress伪静态cdn
  • 如何使用凡科建设网站环评怎么在网站做公示
  • 新媒体营销推广公司烟台优化网站公司哪家好