Self-Attentive 基于自注意力分类的非结构化日志异常检测
原文:Self-Attentive Classification-Based Anomaly Detection in Unstructured Logs
理解:使用目标数据集和辅助数据集训练,使目标数据集的分数低,辅助数据集的分数高,
达到异常检测的效果。
摘要:现有方法的局限是无法学习日志表征,日志表征可以描述正常和异常日志间的语义区别,这样很难表述未见过的日志。本文提出Logsy方法,一种基于分类的方法学习日志表征以区别系统中的正常日志和辅助日志数据集中的异常样本。本文认为辅助数据集能够提供充足信息以提升正常日志的表征,也可以提供多样的正则化以减少过拟合和增进泛化能力。本文提出使用基于注意力的编码器模型和新的球形损失函数。这样可以学习压缩的日志表征,捕获正常和异常日志内在的不同。
介绍:异常检测可认为是数据挖掘任务,找到观测数据集中与期望行为不符的数据。日志信息是开发者自创的文本结构。常用的异常检测方法是一分类,目标是学习一个模型,使模型可以描述正常系统行为,通常假定大多数未标记训练数据为非异常的,而异常是在学习范围之外的样本。之前的方法由于不完美的日志向量表征会产生错误的预测结果。例如学习的指标序列不能正确的分类新出现的日志信息,而预训练的词向量的领域语言和电脑系统使用的语言有本质区别。为部分缓解这些限制,一个可能的办法是合从操作者合并更多标注数据,持续学习。这样扔然需要频繁周期性重新练,升级,消耗专家知识标注数据,无法解决对未知日志的泛化处理问题。本文训练一个神经网络学习日志向量表征以区分来自目标系统的正常日志和辅助数据的日志。辅助数据帮助学习正常日志更好的表征同时正则化减少过拟合。可以更好的泛化未知日志。本文提出使用球形学习目标以提升模型学习压缩正常日志向量表征的能力。这样正常样本就集中压缩向量表征在球的中心。此方法还可以直接日志向量转换,提升前述方法的性能。此外可以使操作者纠正错误分类的样本,用于模型重训练。
本文贡献:
1. 使用自注意力和辅助数据用于日志异常检测分类方法。
2. 更新目标函数,使用球边界以压缩数据表征和基于距离的异常分数。
3. 通过三个实际异常检测数据评估此方法。
4. 在其他实验集中检验此方法。
5. 提供了此方法的开源接口
不同于之前的方法,本文在异常分布中增加了领域偏执以提升检测,使用辅助数据达到这个目的。
基于分类的日志异常检测:
异常检测也可视为密度水平评估,可作为二分类问题,在异常分布上的偏置对提升检测效果很必要。辅助数据的使用增加了额外价值,同时保持了正常数据的信息。
问题描述:
D 为目标系统训练日志,xi代表一条日志,有 r 个单词构成,使用 d 维向量表示,label yi 为 0,正例;A 为辅助数据,数量为 m,label 为 1,负例;通过神经网络将输入映射成向量表征,L 代表一个神经网络,将网络输出结果映射为异常分数。任务是学习神经网络的参数 θ,测试时将输入的日志转换为向量获得异常分数。
基于分类目标的自注意力机制异常检测
日志可被定义为临时有序的非结构文本信息序列。
Token是每条日志最小的不可分实体。
r 代表分词后的日志 x,分词就是一个转换函数,将日志 x 转为分词序列 r 。
训练过程中不使用目标系统日志的异常数据。
Logsy方法由两个部分组织,日志分词和神经网络模型。
本文方法流程图:
分词转换原始日志为词序列;
使用NLTK库处理,
首先过滤HTTP和文件路径;
大写转小写,去除ASCII码;
移除含有数字的token,移除停用词;
在日志序列前添加 "[EMBEDDING]" token;
添加此token可以使模型在向量表征中汇总日志上下文。
每条日志的token组成词典,大小为 V,每个token 使用 V - 1 维数据表示;此方法的优势是不需要做日志解析。
Logsy 有两种操作模式,离线和在线。
离线阶段,日志用于调整所有模型参数。
在线阶段,每条日志通过保存的模型,产生对应的日志向量表征 z 和异常分数。
模型在输入token序列上使用两种操作:token向量和位置编码。
使用 Transformer 模型的编码器和多头自注意力机制。
编码器输出,有 ri 个转义向量表征,共有 d 个维度。
d 维同样是模型所有层和词向量的大小。
将 token 随机初始化为数值向量 x,在训练过程中根据上下文调整语义。
基于注意力机制的模型不包含任何输入顺序的概念,
因此编码时需要加入输入日志的位置信息。
位置向量转换公式:
使用向量 n 表征一个token的相对位置关系;
k 取值从 0 到 d - 1,是向量 n 中每个元素的的序号;
j 取值从 1 到 ri,是每个 token 的位置序号;
在上面的等式中,参数 k 描述向量 n 中值之间的指数关系。
通过下面的公式合并日志标识向量公式:
L代表attention head数量,w = d / L;d mod L = 0。
Q,K,V是矩阵,对应上图中的query,key和value。
X’为输入,W的shape 为 M * w,
除以根号w是为了稳定斜率;使用softmax函数获得结果,再和V值点乘
X’’是X’’l(m * d)合并得到的。
根据self-attention的图示,输入标识矩阵X’与其注意力转换 X’’ 有残差联系,后面是正则层,通过解决不同在学习中遇到的问题增进模型性能,如梯度消失和样本点变化。
原始的输入通过注意力转换公式 转化了。
编码器最后是前馈线性层和relu激活函数。
EMBEDDING 在预处理时被填充在每条日志序列前面,也就是返回向量的第一个位置,这个向量是日志向量,用于目标函数和日志信息向量,代表了日志信息的上下文
目标函数
为更好的区分正常日志和异常日志,本文提出了新的损失函数—球形损失函数;根据之前的假设:正常日志数据通常集中且距离较近;用放射分类损失形成对正常数据的球形决策区域。
为获得损失值,开始使用标准二项交叉熵。
使用编码器转换目标正常日志和辅助数据日志为向量形式,
使用高斯径向基函数压缩日志信息,
将高斯径向基函数带入二项交叉熵损失函数:
径向基函数:径向基函数是一个取值仅依赖离原点距离的实值函数,即Φ(x) = Φ(‖x‖),c点称为中心点,即Φ(x,c)= Φ(‖x-c‖)。满足Φ(x) = Φ(‖x‖)特性的函数Φ都叫做径向基函数,一般使用欧氏距离(欧式径向基函数)。
高斯径向基函数: r = ||x - xi||,φ(r) = exp((-θ * r)^2)
使用径向基函数替换原来sigmoid中二分类的交叉熵函数,以确保正常样本可以被压缩在球心 c = 0 附近。对于正常样本,损失函数hi最小化到 c 的距离。在训练优化是,c 可以是任意常数值。
这样的球形分类器在映射输入到输出一个常向量时可能会倾向于学习到很小的解;但是此处提出的损失函数不会找到很小的解,因为等式中第二部分代表辅助数据会或异常数据,yi=1,第二部分会是一个在限制范围内的无线数,起到正则和防止学到的 c 值很小。
将正常样本压缩到c = 0的球心;对于正常样本,损失函数会最小化距离c;这样上式左边的值会降低,右边的值对异常日志会变大;
c 是一个常量,与优化无关。使用日志向量到c 的距离作为异常分数。
计算的分数 A(xi) 大于阈值,则样本为异常。
最为额外选项,Logsy 允许从目标系统中合并有标签的数据。损失函数中第二部分可用于辅助数据,也可以使用标注的异常数据,Logsy 也可用于获取日志数字表征。
上图展示了一个低维度理想的日志表征的样子
训练时要确保没有目标系统未标注样本进入辅助数据。
无异常目标系统样本是目标数据集,正例是异常日志。
Logsy处理数据:每条日志信息变为长度为50 的标识序列,Logsy有两层transformer 编码器。词被嵌入16个神经元,得到相同大小的向量表示;通过添加损失函数的权重平衡正常和异常日志间数量的不平衡。
DeepLog使用日志模板序号学习异常和正常日志的模式,忽略了日志的语义。但是不同模板由不同序号但可能有相同语义,这会导致假正例的产生。
增加不同辅助数据可以提升性能。
在 Logsy 中增加少量的标注异常日志可以显著增进性能。
Self-Attentive 基于自注意力分类的非结构化日志异常检测相关推荐
- 基于卷积神经网络和热力图回归的非结构化道路消失点检测 论文解读
Unstructured Road Vanishing Point Detection Using the Convolutional Neural Network and Heatmap Regre ...
- 2018-3-12论文(非结构化网络中有价值信息数据挖掘研究)笔记一总体思路以及三种目前进行价值信息挖掘的研究思想
文章主要的内容: 提出了基于关联规则的非结构化网路中有价值信息数据挖掘的方法 总体的思想: (1)利用特征提取的方法进行初步的分类与识别,提取出不同文本类型的特征, (2)利用关联规则方法计算各个类型 ...
- AI非结构化数据处理和分析软件公司Zilliz宣布完成4300万美元B轮融资
"数据猿年度重磅活动预告:2020年度金猿策划活动(金猿榜单发布+金猿奖杯颁发+2.0版产业图谱+落地颁奖大会)即将推出,敬请咨询期待! 数据猿发布产业全景图--2020中国数据智能产业图谱 ...
- USSD(Unstructured Supplementary Service Data)即非结构化补充数据业务,是一种新型基于GSM网络的交互式数据业务
USSD USSD(Unstructured Supplementary Service Data)即非结构化补充数据业务,是一种新型基于GSM网络的交互式数据业务. 当你使用手机键盘输入一些网络已预 ...
- 知识图谱-知识抽取(三):非结构化数据【DeepDive:基于远程监督的“关系抽取”】【斯坦福开发的开源知识抽取系统,通过弱监督学习,从非结构化的文本中抽取结构化的关系数据 】
deepdive是由斯坦福大学InfoLab实验室开发的一个开源知识抽取系统.它通过弱监督学习,从非结构化的文本中抽取结构化的关系数据 .是目前人工智能学习领域的一个热门项目.原文见 http://d ...
- 基于非结构化的数据管理探究
摘要 如何对海量的非结构化数据进行管理并从中挖掘更大的价值,决定了全球经济下半场的走向.结合全球数据生产与存储现状以及数据管理理论和技术的发展情况,对非结构化数据管理的成因.管理方法和非结构化数据管理 ...
- 【阶段总结】《非结构化信息分析应用与实践(筹)》
<非结构化信息分析应用与实践(筹)> Part 1.知识储备 一.机器学习 1.几种常见的有监督学习算法 2.几种常见的无监督学习算法 3.数据挖掘基础知识 30 问 二.神经网络与深度学 ...
- 独家 | 使用机器学习加速对非结构化数据的查询-第1部分(使用BlazeIt加速聚合和限制查询)...
作者:Daniel Daniel,Peter Bailis和Matei Zaharia 翻译:Kay 校对:王雨桐 本文约2800字,建议阅读13分钟. 本文为大家介绍了针对非结构化数据如何加快聚合和 ...
- python文本结构化处理_在Python中标记非结构化文本数据
python文本结构化处理 Labelled data has been a crucial demand for supervised machine learning leading to a n ...
最新文章
- 在有@Override方法上面会报错如下
- Android Hal层简要分析
- 日常打卡:平淡无奇的一天
- Faster R-CNN论文及源码解读
- 一步步在Kubernetes里运行Web应用
- 前端学习(2524):自定义指令(钩子函数)
- 记一次修改redis需要外部访问
- OpenCV单目视觉定位(测量)系统
- Mysql基础之 事务
- 一个不错的架构图:基于SpringCloud的微服务项目
- ch340是什么芯片
- 天翼云主机安装php环境,使用PHP空间和天翼云盘搭建私人云盘
- 优雅地使用ffmpeg转换音频格式
- SVAC国家标准介绍
- matlab怎么将jpg转化为bmp,bmp(jpg)和avi互转---matlab实现
- opentstack使用keypair文件登陆实例
- 微信语音技术原理_干货 | 2 分钟论文:语音生成表情包背后的技术原理
- AI溃败,被Dota2职业战队打蠢!独家专访OpenAI:我们发现一个Bug
- sda、sdb、sdc、sda1、sda2的意思
- 世事洞明职场“行”(上篇)——刘墉力作《我不是教你诈》花絮采撷