【论文阅读】基于深度学习的时序异常检测——TransAD

系列文章链接
数据解读参考:数据基础:多维时序数据集简介
论文一:2022 Anomaly Transformer:异常分数预测
论文二:2022 TransAD:异常分数预测
论文三:2023 TimesNet:基于卷积的多任务模型

论文链接:TransAD.pdf
代码库链接:https://github.com/imperial-qore/TranAD

这篇文章是基于多变量数据的异常检测,也是基于transformer的一种深度学习方法,作者对前人的工作存在以下两点思考:

  • 在常用的基于深度学习的异常检测方案中,都是采用一定的固定窗口进行样本数据提取,如对于一个时间点位,会提取历史窗口长度为100的数据作为当前点位的数据,然后采用LSTM编码进行数据向量化表征,但是这种表征方式存在缺陷,就是忽略了数据的长期周期性、季节性等规律特性。但是如果要加入这些数据,时序原始数据表征长度就会过长,很难进行建模。
    在这里插入图片描述
  • 真实数据和重构的数据差异比较大时有两种情况:(1)原始数据的噪声;(2)异常事件引起数据异常;而模型需要关注的应该是这些时候的差异性;
    在这里插入图片描述针对上述思考,论文作者提出了两个创新模块:
  • 基于Transformer的时序数据建模;
  • 基于two-phase inference的数据重构;
    在这里插入图片描述
    在这里插入图片描述
    整体架构如上图所示,通过编解码的结构进行网络架构搭建,具体的模块细节包含下面几个:
  1. Phase1对应的粗略重建:如下图所示,其中 W W W表示时序数据邻近窗口点位的时序数据, C C C表示能够获取周期性、季节性特性的长时段时间序列,截至点为当前时间点, 0 ⃗ \vec 0 0 表示的是趋势序列输入的数据权重,在第一个阶段中是和完整序列 C C C大小相匹配的全0向量。在对窗口数据 W W W和完整序列 C C C采用多头注意力进行编码后,将完整序列的编码结果和窗口编码结果采用注意力机制进行计算,并进行解码,重构出两个输出结果 O 1 O_1 O1 O 2 O_2 O2。关于如何进行多头注意力机制的建模就不展开了,可以参考原文。
    在这里插入图片描述
  2. Phase2对应的引导重构:对于输出结果 O 1 O_1 O1 O 2 O_2 O2而言,构建重构损失 ∣ ∣ O 1 − W ∣ ∣ 2 ||O_1-W||_2 ∣∣O1W2 ∣ ∣ O 2 − W ∣ ∣ 2 ||O_2-W||_2 ∣∣O2W2用于反馈给网络, O 1 O_1 O1反馈用于更新网络的focus score。更新好focus score后,对于Decoder1而言,目标是使得重构结果和目标间的差距更小,对于Decoder2而言,目标是使得重构结果和目标间的差距更大,所以对于两个解码器的两个阶段而言,设计了以下损失构建方式: L 1 = ϵ − n ∣ ∣ O 1 − W ∣ ∣ 2 + ( 1 − ϵ − n ) ∣ ∣ O ^ 2 − W ∣ ∣ 2 L_1=\epsilon^{-n}||O_1-W||_2+(1-\epsilon^{-n})||\hat O_2-W||_2 L1=ϵn∣∣O1W2+(1ϵn)∣∣O^2W2 L 2 = ϵ − n ∣ ∣ O 2 − W ∣ ∣ 2 + ( 1 − ϵ − n ) ∣ ∣ O ^ 2 − W ∣ ∣ 2 L_2=\epsilon^{-n}||O_2-W||_2+(1-\epsilon^{-n})||\hat O_2-W||_2 L2=ϵn∣∣O2W2+(1ϵn)∣∣O^2W2
    在这里插入图片描述
  3. 异常得分计算: 1 2 ∣ ∣ O 1 − W ^ ∣ ∣ 2 + 1 2 ∣ ∣ O ^ 2 − W ^ ∣ ∣ 2 \frac{1}{2}||O_1-\hat W||_2+\frac{1}{2}||\hat O_2-\hat W||_2 21∣∣O1W^2+21∣∣O^2W^2超过阈值的则认为是异常;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/63172.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET对象的内存布局

在.NET中,理解对象的内存布局是非常重要的,这将帮助我们更好地理解.NET的运行机制和优化代码,本文将介绍.NET中的对象内存布局。 .NET中的数据类型主要分为两类,值类型和引用类型。值类型包括了基本类型(如int、bool、double、cha…

Python类的设计

Python类的设计 # 定义一个闹钟类 class Clock:__cureen_keyNone # 私有成员不能改变和使用def __init__(self, id, price): # 类对象是立即自动执行self.id idself.price pricedef ring(self):import winsound # 内置声音方法winsound.Beep(2000,3000)clock1 Clock(…

面试题:ArrayList扩容时扩容多少?

大家好,我是你们的小米!今天要和大家一起来探讨一个在Java面试中经常被问到的问题:“ArrayList扩容时扩容多少?”相信很多小伙伴都在面试中遇到过这个问题,那么接下来,我就为大家详细解析一下这个问题&…

Blazor 简单组件(0):简单介绍

文章目录 前言说明环境安装 前言 Blazor 这个技术还是比较新,相关的UI组件还在完善,我这里提供一下我个人的组件开发。 说明 本UI组件是基于BootstrapBlazor(以下简称BB)开发。 BootstrapBlazor 文档 环境安装 C#小轮子:Visual Studio自…

用vim打开后中文乱码怎么办

Vim中打开文件乱码主要是文件编码问题。用户可以参考如下解决方法。 1、用vim打开.vimrc配置文件 vim ~/.vimrc**注意:**如果用户根目录下没有.vimrc文件就把/etc/vim/vimrc文件复制过来直接用 cp /etc/vim/vimrc ~/.vimrc2、在.vimrc中加入如下内容 set termen…

页面的滚动及scrollIntoView的穿透效果和解决

朋友今天遇到一个奇怪的问题,我觉得很有意思就记录一下。现象是这样的,页面有一个按钮,点击按钮以后会请求一个接口拿到一个iframe的地址然后创建一个iframe并渲染到页面上,iframe的页面加载完毕后会滑动到对应的某一个元素的位置…

python的gui界面程序爬虫,python的gui界面怎么打开

大家好,小编来为大家解答以下问题,python的gui界面怎么打开,python的gui界面程序爬虫,今天让我们一起来看看吧! Python支持多种图形界面的第三方库,包括: wxWidgets Qt GTK Tkinter&#xf…

平板选择什么电容笔比较好?ipad手写笔推荐品牌

在现在的生活上,有了iPad平板,一切都变得简单了许多,也让我们的学习以及工作都更加的便利。这其中,电容笔就起到了很大的作用,很多人都不知道,到底要买什么牌子的电容笔?哪些电容笔的性价比比较…

MySQL多表连接查询3

目录 表结构 创建表 表数据 查询需求: 1.查询student表的所有记录 2.查询student表的第2条到4条记录 3.从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息 4.从s…

Linux 基础(五)常用命令-文件属性

文件属性 文件权限文件属性修改文件权限属性 文件所有者 文件权限 文件属性 Linux中文件权限 可以通过文件属性体现; 使用 ll 查看文件列表 最前面的 l d 表示文件类型 1 5 表示硬链接数 或者 子文件夹个数 所属用户 所属用户组 文件大小 创建/更新时间 文件&…

PIC单片机配置字的设置

PIC单片机配置字的设置 PIC系列单片机,其芯片内部大都设置有一个特殊的程序存储单元,地址根据不同的单片机而定,此存储单元用来由单片机用户自由配置或定义单片机内部的一些功能电路单元的性能选项,所以被称之为系统配置字。目前PIC单片机系统配置字的方法有两种,一种是利…

七、dokcer-compose部署springboot的jar

1、准备 打包后包名为 ruoyi-admin.jar 增加接口 httpL//{ip}:{port}/common/test/han #环境变量预application.yml 中REDIS_HOSTt的值,去环境变量去找;如果找不到REDIS_HOST就用myredis 1、Dockerfile FROM hlw/java:8-jreRUN ln -sf /usr/share/z…