【文章学习系列之模型】Non-stationary Transformers

news2024/11/25 4:50:11

本章内容

  • 文章概况
  • 总体结构
  • 主要模块
    • Series Stationarization(序列平稳化模块)
    • De-stationary Attention(逆平稳化注意力模块)
  • 实验结果
  • 消融实验
  • 总结

文章概况

《Non-stationary Transformers:Exploring the Stationarity in Time Series Forecasting》是2022年发表于NeurIPS上的一篇文章。在过去的时序预测研究中,人们常通过数据平稳化减弱原始序列的非平稳性,这一做法与时序预测对突发事件预测的意义相悖,忽略了现实场景下非平稳数据的普遍存在性,最终导致建模和预测过平稳化。为了解决这个问题,该论文提出由序列平稳化和逆平稳化注意力组成的新的网络结构。

总体结构

在这里插入图片描述
上图为本文所提模型结构。数据 x x x首先经过一个标准化模块(Normalization)获得变换后的序列 x ′ x^{'} x,接着对其进行编码操作,并将编码后的结果输入常见的Encoder-Decoder模块中,最终经过一个逆标准化模块(De-Normalization)后输出预测结果。其中一对标准化-逆标准化模块作者将其称为平稳化模块。与一般Transformer不同的是,作者对 Q K V Q K V QKV均作了调整,所提结构逆平稳化注意力模块(De-stationary Attention)代替了传统注意力模块,并接收了来自外界的两个参数 τ τ τ Δ Δ Δ用来计算注意力得分。

主要模块

Series Stationarization(序列平稳化模块)

非平稳化序列在预测任务中通常难度较大,因此人们希望将其转换为平稳数据进行预测。在此之前已有的方法:RevIN。该方法将输入数据进行标准化,并对标准化之后的结果添加可学习参数(权重a和偏置项b),最后在预测输出时进行对应的逆运算。该方法已被证实是有效的。受此启发,作者精简了RevIN的操作,舍弃了可学习参数,即数据的输入和输出只需要标准化和逆标准化。

De-stationary Attention(逆平稳化注意力模块)

序列平稳化模块确实能够有效将非平稳数据转化为平稳数据,但平稳化不可避免地丢失非平稳化特征,导致数据的过平稳化,这对时序预测的目的而言无疑是一场灾难。
在这里插入图片描述
为了说明这一点,作者作出了注意力机制中所学习到的特征图,如上图所示。非平稳序列一般由若干个不同的子序列组成,将其中不同的子序列分别输入到一般性Transformer、带有序列平稳化模块的Transformer以及本文所提方法中。
可以发现,对不同子序列的特征提取,Transformer和本文方法提取到不同的三组特征,而带有序列平稳化模块的Transformer则提取到了非常相似的特征。这表明序列平稳化使得不同子序列提取的特征趋同,以丢失差异性特征的方法简化了特征提取的结果,不利于后续预测任务的开展。
与之形成对比的是本文所提方法,在序列平稳化后,成功地通过创新注意力模块来将原先丢失的非平稳化特征融入至注意力所学习到的特征中。接下来,我们来具体看看是如何做到的。

一般性注意力模块De-stationary Attention
在这里插入图片描述在这里插入图片描述
z = s o f t m a x ( Q K T d k ) V z=softmax(\frac{QK^{T} }{\sqrt{d_{k} } } )V z=softmax(dk QKT)V z ′ = s o f t m a x ( τ Q ′ K ′ T + 1 Δ T d k ) V ′ z'=softmax(\frac{τQ^{'}K^{'T} +1Δ^{T}}{\sqrt{d_{k} } } )V^{'} z=softmax(dk τQKT+1ΔT)V

上面表格左边为一般性注意力模块,右边为文章所提De-stationary Attention。我们可以发现,两者的差别主要是后者调整了 Q K V Q K V QKV并多了 τ Δ τ Δ τΔ两个参数。通过这样的变化,作者尝试将非平稳特征添加进注意力模块中,具体计算步骤如下。

1.为了简化运算,假设 Q Q Q是由 x x x通过线性映射所得
2.为了便于公式的推导,假设每一批次的输入序列具有同样的期望和方差,
此时有 x ′ = x − 1 μ x T σ x^{'}=\frac{x-1\mu ^{T}_x}{\sigma } x=σx1μxT,可得 Q ′ = Q − 1 μ Q T σ Q^{'}=\frac{Q-1\mu ^{T}_Q}{\sigma } Q=σQ1μQT K ′ = K − 1 μ K T σ K^{'}=\frac{K-1\mu ^{T}_K}{\sigma } K=σK1μKT
3.代入计算,可得 Q ′ K ′ = 1 σ x 2 [ Q K T − 1 ( μ Q T K T ) − ( Q μ K ) 1 T + 1 ( μ Q T μ K ) 1 T ] Q^{'}K^{'}=\frac{1}{\sigma^2_x}[QK^T-1(\mu^T_QK^T)-(Q\mu_K)1^T+1(\mu^T_Q\mu_K)1^T] QK=σx21[QKT1(μQTKT)(QμK)1T+1(μQTμK)1T]
4.因此可将原先的注意力公式转化为 s o f t m a x ( Q K T d k ) = s o f t m a x ( σ x 2 Q ′ K ′ T + 1 ( μ Q T K T ) + ( Q μ K ) 1 T − 1 ( μ Q T μ K ) 1 T d k ) softmax(\frac{QK^{T} }{\sqrt{d_{k} } })=softmax(\frac{\sigma^{2}_xQ'K'^T+1(\mu^T_QK^T)+(Q\mu_K)1^T-1(\mu^T_Q\mu_K)1^T}{\sqrt{d_{k}}}) softmax(dk QKT)=softmax(dk σx2QKT+1(μQTKT)+(QμK)1T1(μQTμK)1T)
5.此时第二点简化期望和方差为标量就发挥作用了。第四点的公式中分子上的最后两项为常数项,可以删去,这样便可得
z ′ = s o f t m a x ( Q K T d k ) = s o f t m a x ( σ x 2 Q ′ K ′ T + 1 ( μ Q T K T ) d k ) z'=softmax(\frac{QK^{T} }{\sqrt{d_{k} } })=softmax(\frac{\sigma^{2}_xQ'K'^T+1(\mu^T_QK^T)}{\sqrt{d_{k}}}) z=softmax(dk QKT)=softmax(dk σx2QKT+1(μQTKT))
6.对于5中的公式, Q ′ K ′ d k Q' K' \sqrt{d_{k}} QKdk 已知(表格左图)可以计算得到,而与非平稳信号相关的 σ x \sigma_x σx K K K μ Q \mu_Q μQ σ 2 \sigma^2 σ2记为 τ ( τ ≥ 0 ) τ(τ≥0) τ(τ0) K μ Q K\mu_Q KμQ记为 Δ Δ Δ,作者使用多层感知机将其非平稳化特征带入到平稳化之后的计算中,可得 z ′ = s o f t m a x ( τ Q ′ K ′ T + 1 Δ T d k ) z'=softmax(\frac{τQ'K'^T+1Δ^T}{\sqrt{d_{k}}}) z=softmax(dk τQKT+1ΔT)
l o g τ = M L P ( σ x , x ) 和 Δ = M L P ( μ x , x ) logτ=MLP(\sigma_x,x)和Δ=MLP(\mu_x,x) lo=MLP(σx,x)Δ=MLP(μx,x)

实验结果

在这里插入图片描述
作者在真实世界中六种数据集进行测试,从实验角度和公式的推导角度说明了实验的先进性。
(更多实验结果见论文)

在这里插入图片描述
如上图,作者还将本文所提的框架应用于之前的Transformer模型中,通过实验说明了本文所提框架的优越性。

消融实验

在这里插入图片描述
该部分主要针对一般性Transformer、一般性Transformer+时序平稳以及本文所提方法进行对比。可以看出a、c具有显著的差异性波动,而b的波动相对稳定,显然是因为平稳化模块发挥的作用,而这正是作者所说的过平稳化。在逆平稳化注意力模块的帮助下,c中重回a中的非平稳状态,表现了该模块发挥的巨大的作用,一定程度减少了国过平稳化的负面影响,有利于时间序列准确的变化和预测,在这一类研究课题中具有重要的意义。

总结

这篇论文的目标很明确,指出过平稳化的问题并提出了一个有效的方法,这种方法在公式的推导中往往需要一些技巧,比如近似值处理、常数项归零、数学假设等等,虽然从纯理论的角度有些内容难以完美推导,但在各种化繁为简的操作下完成一套合理有效的试验方法其优异结果带来的价值已超出零散理论不足带来的弊病。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker 存储

Docker 存储 docker 默认存储方式docker 持久化存储Volumes (卷)简介推荐使用情况 Bind mounts (绑定挂载)简介推荐使用情况 绑定挂载与卷注意点 docker 非持久化存储tmpfs mounts (tmpfs 挂载)简介推荐使用…

leetcode100——相同的树

文章目录 题目详情分析Java完整代码 题目详情 leetcode100 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例: 分析 主要想法…

vue3头像上传组件

用到了自定义组件v-model的双向绑定使用input的typefile这个原生html元素,通过监听change事件,获取到选择的文件(注意,选择完文件值后,要把这个隐藏的input的typefile元素的value置为空,否则,下…

【关于C++中----异常】

文章目录 一、C语言中处理错误的方式二、C异常概念三、异常的使用3.1 异常的抛出和捕获3.2 异常的重新抛出3.3 异常安全3.4 异常规范 四、自定义异常体系五、C标准库的异常体系六、异常的优缺点 一、C语言中处理错误的方式 C语言中常见的错误类型包括:语法错误、逻…

访问 virtualbox中的mysql

在 mysql.user 中存储这用户可访问的的host地址 select user,host from user;修改访问权限 可以使用sql语句 use mysql; mysql>update user set host % where user root; flush privileges或者使用mysql的权限语句 use mysql; Grant all on *.* to root% identified b…

深入浅出C++ ——异常

文章目录 一、C语言传统的处理错误的方式二、C异常概念三、异常的使用异常的抛出和捕获异常的重新抛出异常安全异常规范 四、自定义异常体系无、C标准库的异常体系六、异常的优缺点 一、C语言传统的处理错误的方式 C语言传统的处理错误的机制: 终止程序&#xff0…

docker打包部署spring boot应用(mysql+jar+Nginx)

文章目录 一、基本准备二、mysql部署二、jar部署三、Nginx部署 一、基本准备 小唐拿的就是之前放置在我们服务器上的应用进行部署,主要就是mysql和jar还有Vue的部署。 目前已经有的是jar、已经打包好的vue 项目参考:小破站数据大屏可视化(…

【IPv6】IPv6有无状态地址分配及IPv6路由

IPv6有无状态区分 有状态可控、可管理。有IP地址管理者,能够识别客户端。根据不同客户端分配对应v6地址,客户端和服务器存在租期及续约。无状态无控、难管理。无IP地址管理者,没人识别客户端。客户端根据网关发送的相同的RA报文内容&#xf…

path/to/sdkmanager --install “cmdline-tools;latest“

执行flutter doctor时、报错Android Studio的命令行工具没有安装& 以及 android-licenses没有同意 其中提示错误语句如标题: path/to/sdkmanager --install "cmdline-tools;latest"之类的, 因为同意条款的时候,日志太多,所以把报错覆盖了.没有截图. 解决方法: …

一个简单的servlet+Jsp+MySQL/Oracle程序

一个简单的servletJspMySQL/oracle程序 1. 创建项目 使用 IDEA 创建一个 Maven 项目. 1.1、File -> New Project Name:javaservlet4 Location:选择要存放的路径 Language:Java Build system:Maven 点击Create按钮 ​​​​​​​1.2、Pom.xml配置 <dependencies…

整数在内存中的存储:原码、反码、补码 大小端字节序

本篇博客会讲解整数在内存中的存储形式&#xff0c;以及整数二进制的3种表示形式&#xff1a;原码、反码、补码&#xff0c;还有大小端的相关知识点。相信读完本篇博客&#xff0c;大家对内存的了解会上一个台阶。 注意&#xff1a;本篇博客讨论的是整数在内存中的存储&#x…

【五一创作】【数学建模】matlab的常用函数运用(1)

文章目录 1. matlab基本常识2. 常用输入输出函数2.1 输出函数2.2 拼接函数&#xff08;字符串的合并&#xff09;2.3 输入函数 3. 求和函数3.1 向量求和3.2 矩阵求和 4. 提取矩阵元素4.1 取第x行第y列的元素4.2 取指定行或列的所有元素4.3 取指定某些行的所有元素 1. matlab基本…

MongoDB聚合操作

文章目录 一、单一聚合二、聚合管道2.1 $match / $project / $count2.2 $limit / $skip / $sort2.3 $group 分组查询2.4 $unwind 展开数组2.5 $lookup 左外连接2.6 $bucket 存储桶 三、MapReduce 提示&#xff1a;以下是本篇文章正文内容&#xff0c;MongoDB 系列学习将会持续更…

域名解析出现错误,该如何解决?

域名作为网络地址&#xff0c;是我们访问网站的必经之路&#xff0c;域名解析就是把你的域名解析成一个ip地址&#xff0c;在使用的过程中遇到域名解析文件异常也是常有的事。如果域名解析出现错误&#xff0c;该怎么解决呢&#xff1f; 一、打开网页时&#xff0c;显示域名解析…

Redis主从复制、哨兵实战

环境&#xff1a;linux centos7.x &#xff0c;虚拟机3台 版本&#xff1a;redis-6.2.6 1.下载安转redis 下载地址 wget https://download.redis.io/releases/redis-6.2.6.tar.gz解压 tar -zxvf redis-6.2.6.tar.gz移动目录 mv redis-6.2.6 /usr/local/redis编译 cd /usr/…

【GORM框架】ORM介绍、GORM简单连接和高级配置详解

博主简介&#xff1a;努力学习的大一在校计算机专业学生&#xff0c;热爱学习和创作。目前在学习和分享&#xff1a;数据结构、Go&#xff0c;Java等相关知识。博主主页&#xff1a; 是瑶瑶子啦所属专栏: GORM框架学习 近期目标&#xff1a;写好专栏的每一篇文章 目录 一、简介…

配准带尺度点云的方法汇总

如果点集之间不存在缩放关系时(即尺度相同时), 可以用经典ICP( Iterative Closest Point )方法求解得到旋转矩阵R和平移向量t来进行点集对齐。 如果存在缩放关系时&#xff0c;首先估计出点集S1和S2之间的缩放倍数s, 我们就可以利用ICP算法求解。 一、尺度因子s是两个点集中线…

HashSet底层原理

特点&#xff1a;无序、不可重复 LinkedHashSet 有序、可重复&#xff08;底层通过双向链表的方式记录元素的存储顺序&#xff09; HashSet底层数据结构是哈希表 jdk1.8之前&#xff1a;哈希表组成&#xff1a;数组 链表 jdk1.8之后&#xff1a; 数组 链表 红黑树 存储…

Flutter 组件抽取:日期(DatePicker)、时间(TimePicker)弹窗选择器【仿照】

简介 仿照《Flutter 仿ios自定义一个DatePicker》实行的日期弹窗选择器&#xff08;DatePicker&#xff09;、时间弹窗选择器&#xff08;TimePicker&#xff09; 效果 范例 class _TestPageState extends State<TestPage> {overridevoid initState() {super.initStat…

Java笔记_15(集合三)

Java笔记_15 一、创建不可变集合1.1、创建不可变集合的应用场景1.2、创建不可变集合的书写格式 二、Stream流2.1、体验Stream流2.2、Stream流的思想和获取Stream流2.3、Stream流的中间方法2.4、Stream流的终结方法2.5、收集方法collect 一、创建不可变集合 不可变集合&#xf…