【论文阅读】基于深度学习的时序异常检测——Anomaly Transformer
系列文章链接
数据基础:多维时序数据集简介
论文一:2022 Anomaly Transformer:异常分数预测
论文二:2022 TransAD:异常分数预测
论文链接:Anomaly Transformer.pdf
代码链接:https://github.com/thuml/Anomaly-Transformer
视频讲解(原作者禁止转载,联系的话侵删):https://www.bilibili.com/video/BV1CN4y1A7x6/?spm_id_from=333.337.search-card.all.click&vd_source=c912801c215d811162cae4db751b0768
本文是清华大学研究生提出的一种异常检测模型,是基于transformer针对时序数据进行编码的方案,整体方案让人耳目一新。
本文的创新点总结:
- 提出了Anomaly-Attention模块,该模块有两大亮点:
2.1 prior-association:如下图上半部分所示,采用高斯分布去拟合样本时间点位和邻近点位的数据分布,通过调整参数 σ \sigma σ得到高斯先验分布,更注重局部数据分布, l l l层的高斯分布计算表示为: P l = R e s c a l e ( [ 1 2 π σ i e x p ( − ∣ j − i ∣ 2 2 σ i 2 ) ] i , j ∈ 1 , 2 , . . . , N ) P^l=Rescale([\frac{1}{\sqrt {2\pi\sigma_i}}exp(-\frac{|j-i|^2}{2\sigma_i^2})]_{i,j\in{1,2,...,N}}) Pl=Rescale([2πσi1exp(−2σi2∣j−i∣2)]i,j∈1,2,...,N)

2.2 series-association:采用transformer中的注意力机制进行时序数据建模,拟合上下文点位和目标样本点位间的权重关系,用于表示点位和更大范围内的上下文数据间的关联性,更注重较大范围内的信息,如上图下半部分所示, l l l层的注意力关联计算为: S l = s o f t m a x ( Q K T d m o d e l ) S^l=softmax(\frac{QK^T}{\sqrt{d_{model}}}) Sl=softmax(dmodelQKT)正如上图右边所示,对于正常点位而言,其对应临近点高斯分布和上下文注意力分布之间差距会更大,因为正常点位与上下文时序数据间关联更大;对于异常点位而言,它和邻近点位以及上下文时序数据的关联性较小,属于比较离群的状态,因此异常点位的两种分布差异很小;可以通过这种差异性来区分正常点位和异常点位(👍); - 提出了一种新的重构损失构建方法: L t o t a l ( X ^ , P , S , λ ; X ) = ∣ ∣ X − X ^ ∣ ∣ F 2 − λ ∗ ∣ ∣ A s s D i s ( P , S ; λ ; X ) ∣ ∣ 1 L_{total}(\hat X,P,S,\lambda;X)=||X-\hat X||^2_F-\lambda*||AssDis(P,S;\lambda;X)||_1 Ltotal(X^,P,S,λ;X)=∣∣X−X^∣∣F2−λ∗∣∣AssDis(P,S;λ;X)∣∣1左边计算的是预测值和真实数据间的重构损失,差距越大表示数据越异常,右边表示的是高斯分布和注意力分布间的差值损失,差值越大表示数据越正常,因此是减去该损失,以此构建的重构损失能够让模型更好地学习到正常点位和异常点位之间的差异性;,训练过程中如果想让分布间的距离变大,就容易导致高斯分布训练出来的 σ \sigma σ趋于0,最终呈现出如下图的分布:

为此,他们设计了一种技巧叫Minimax Strategy,在最小化阶段,先固定注意力模块的权重不变,让高斯分布的拟合向注意力权重分布靠近,让 σ \sigma σ不至于过拟合;然后在最大化二者距离的时候,固定高斯分布的参数,训练注意力模块的权重,让最终的两种分布的距离变大,如下图所示:
- 最终的异常分通过下式计算: A n o m a l y S c o r e ( X ) = s o f t m a x ( − A s s D i s ( P , S ; λ ; X ) ) ⨀ [ ∣ ∣ X − X ^ ∣ ∣ 2 2 ] i = 1 , 2 , . . . , N AnomalyScore(X)=softmax(-AssDis(P,S;\lambda;X))\bigodot [||X-\hat X||^2_2]_{i=1,2,...,N} AnomalyScore(X)=softmax(−AssDis(P,S;λ;X))⨀[∣∣X−X^∣∣22]i=1,2,...,N通过将重构差异和分布距离进行联合能够更好地进行异常检测,当预测的异常分数超过某个阈值时,就认为当前点位为异常点位;
相关文章:
【论文阅读】基于深度学习的时序异常检测——Anomaly Transformer
系列文章链接 数据基础:多维时序数据集简介 论文一:2022 Anomaly Transformer:异常分数预测 论文二:2022 TransAD:异常分数预测 论文链接:Anomaly Transformer.pdf 代码链接:https://github.co…...
Java并发总结
1.创建线程三种方式 Runnable.Callable接口使用继承Thread类的方式创建多线程Runnable 和Callable区别 Callable规定(重写)的方法是call(),Runnable规定(重写)的方法是run()。Callable的任务执行后可返回值࿰…...
视频汇聚平台EasyCVR视频广场侧边栏支持拖拽
为了提升用户体验以及让平台的操作更加符合用户使用习惯,我们在EasyCVR v3.3版本中,支持面包屑侧边栏的广场视频、分组列表、收藏这三个模块拖拽排序,并且该操作在视频广场、视频调阅、电子地图、录像回放等页面均能支持。 TSINGSEE青犀视频…...
MyCat分片规则——范围分片、取模分片、一致性hash、枚举分片
1.范围分片 2.取模分片 范围分片和取模分片针对数字类型的字段可以,但是针对于字符串类型的字段时。这两种就不适用了。 3.一致性hash 4.枚举分片 默认节点指的是,如果我们向数据库表插入数据的时候,超出了这个枚举值,那么默认向…...
设计模式行为型——备忘录模式
目录 什么是备忘录模式 备忘录模式的实现 备忘录模式角色 备忘录模式类图 备忘录模式举例 备忘录模式代码实现 备忘录模式的特点 优点 缺点 使用场景 注意事项 实际应用 什么是备忘录模式 备忘录模式(Memento Pattern)又叫做快照模式&#x…...
Parquet存储的数据模型以及文件格式
文章目录 数据模型Parquet 的原子类型Parquet 的逻辑类型嵌套编码 Parquet文件格式 本文主要参考文献:Tom White. Hadoop权威指南. 第4版. 清华大学出版社, 2017.pages 363. Aapche Parquet是一种能有效存储嵌套数据的列式存储格式,在Spark中应用较多。 …...
Go和Java实现访问者模式
Go和Java实现访问者模式 我们下面通过一个解压和压缩各种类型的文件的案例来说明访问者模式的使用。 1、访问者模式 在访问者模式中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随 着访问者改变而…...
想要通过软件测试的面试,都需要学习哪些知识
很多人认为,软件测试是一个简单的职位,职业生涯走向也不会太好,但是随着时间的推移,软件测试行业的变化,人们开始对软件测试行业的认知有了新的高度,越来越多的人开始关注这个行业,开始重视这个…...
MySQL的索引使用的数据结构,事务知识
一、索引的数据结构🌸 索引的数据结构(非常重要) mysql的索引的数据结构,并非定式!!!取决于MySQL使用哪个存储引擎 数据库这块组织数据使用的数据结构是在硬盘上的。我们平时写的代码是存在内存…...
普及100Hz高刷+1ms响应 微星发布27寸显示器:仅售799元
不论办公还是游戏,高刷及低响应时间都很重要,微星现在推出了一款27寸显示器PRO MP273A, 售价只有799元,但支持100Hz高刷、1ms响应时间,还有FreeSync技术减少撕裂。 PRO MP273A的100Hz高刷新率是其最大的卖点之一&#…...
Java课题笔记~6个重要注解参数含义
1、[掌握]Before 前置通知-方法有 JoinPoint 参数 在目标方法执行之前执行。被注解为前置通知的方法,可以包含一个 JoinPoint 类型参数。 该类型的对象本身就是切入点表达式。通过该参数,可获取切入点表达式、方法签名、目标对象等。 不光前置通知的方…...
Windows Docker Desk环境时区问题导致的时间问题解决?
大多docker镜像为了保持镜像大小,采用了alpine linux。 但经常由于时区问题导致时间不准确,解决也很简单。 1.查看事件文件 cd /usr/share/zoneinfo 2.复制时区文件 将文件copy到 /etc/localtime 路径下即可(重庆时区,上海也…...
SpringBoot复习:(22)ConfigurationProperties和@PropertySource配合使用及JSR303校验
一、配置类 package cn.edu.tju.config;import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component;Component ConfigurationPropertie…...
Spring IoC (控制反转)
IoC 是 Inversion of Control 的简写,译为“控制反转”,它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则。 Spring 通过 IoC 容器来管理所有 Java 对象的实例化和初始化,控制对象与对象之间的依赖关系。…...
安卓下模拟渲染EGLImageKHR
创建AHardwareBuffer并填充颜色 AHardwareBuffer_Desc desc = {static_cast<uint32_t>(screenW),static_cast<uint32_t>(screenH),...
Spring MVC 框架学习总结
文章目录 初步认识 Spring MVC 框架 一、初识 Spring MVC 框架 二、 三、 四、 五、 六、 七、 八、 九、...
2、简单上手+el挂载点+v-xx(v-text、v-html、v-on、v-show、v-if、v-bind、v-for)
官网: vue3:https://cn.vuejs.org/ vue2:https://v2.cn.vuejs.org/v2/guide/ 简单上手: 流程: 导入开发版本的Vue.js <!--开发环境版本,包含了有帮助的命令行警告--> <script src"https…...
C++初阶语法——命名空间
前言:C,即cplusplus,顾名思义,是C语言promax版本,C兼容C语言。 C的诞生是因为贝尔实验室的本贾尼等大佬认为C语言的语法坑实在太多,拥有许多不足之处(比如命名冲突,)&…...
Axwing.878 线性同余方程
题目 给定n组数据ai, bi , mi,对于每组数求出一个xi,使其满足ai * xibi (mod mi),如果无解则输出impossible。 输入格式 第一行包含整数n。 接下来n行,每行包含一组数据ai , bi , mi。 输出格式 输出共n行,每组数…...
【Pytorch+torchvision】MNIST手写数字识别
深度学习入门项目,含代码详细解析 在本文中,我们将在PyTorch中构建一个简单的卷积神经网络,并使用MNIST数据集训练它识别手写数字。 MNIST包含70,000张手写数字图像: 60,000张用于培训,10,000张用于测试。图像是灰度(即…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
