如何将转换器应用于时序模型

news2024/12/28 20:22:51
墙上不同大小的办公时钟的集合

 

一、说明

        在机器学习的广阔环境中,变压器作为建筑奇迹屹立不倒,以其复杂的设计和捕获复杂关系的能力重塑了我们处理和理解大量数据的方式。

        自 2017 年创建第一台变压器以来,变压器类型呈爆炸式增长,包括强大的生成 AI 模型,如 ChatGPT* 和 DALL-E*。虽然转换器在文本到文本或文本到图像模型中有效,但在将转换器应用于时间序列时存在一些挑战。在 2023 年北美开源峰会* 上,Ezequiel Lanza 分享了电流互感器模型的问题,并介绍了新的变压器,这些变压器开始在时间序列方面显示出有希望的结果。

        这篇文章不会深入到技术方面,但如果你想内容,我们将包括指向重要论文的链接。

        自从第一台变压器香草变压器问世以来,已经创造了许多新的变压器。

二、变压器功能概述

        让我们看看变压器在稳定扩散*中的作用,稳定扩散是一种深度学习模型,可以将短语(例如“戴眼镜的狗”)转换为图像。转换器接收用户输入的文本并生成文本嵌入。文本嵌入是可以由卷积神经网络 (CNN) 读取的文本表示形式,在本例中为 U-NET。虽然稳定扩散模型使用嵌入来生成图像,但嵌入可用于生成对时间序列模型有用的其他输出。

三、变压器的工作原理

要了解如何将转换器应用于时序模型,我们需要关注转换器体系结构的三个关键部分:

  • 嵌入和位置编码
  • 编码器:计算多头自注意力
  • 解码器:计算多头自我注意

例如,我们将解释香草变压器的工作原理,这是一种将简单短语从一种语言翻译成另一种语言的转换器。

3.1 嵌入和位置编码:如何表示输入数据

        当您在香草转换器中输入短语“我爱狗”时,称为 Word2Vec 的算法会将每个单词转换为数字列表,称为向量。每个向量都包含有关单词的含义以及它与其他单词(如同义词和反义词)的关系的信息。

        模型还必须了解短语中每个单词的位置。例如,“我爱的狗”与“我爱狗”的含义不同。第二种称为位置向量的算法使用复杂的数学方程来帮助模型理解句子顺序。Word2Vec 和位置向量算法提供的信息打包在一起,就是所谓的文本嵌入,或者以机器可以读取的方式表示您的原始短语。

3.2 编码器级别的多头自我注意

        接下来,编码器接收文本嵌入并将其转换为新向量,添加信息以帮助模型识别短语中单词之间的关系。例如,在短语“在公园玩耍的儿童”中,编码器将为“儿童”、“玩耍”和“公园”分配最大的权重。我们称这个过程为自我注意,因为它决定了模型应该最关注哪些词。

        为了计算自我注意,编码器为每个单词创建三个向量——查询向量、键向量和值向量。向量是通过将短语与三个矩阵相乘来创建的。这是一个复杂的算法,但要理解的重要部分是短语中的每个单词都会乘以短语中的每个其他单词,并且计算长短语的注意力可能需要大量时间。

        为了更好地理解单词之间的关系,自我注意层可以同时运行多个头部。这个过程称为多头注意力,它允许模型同时关注短语的不同部分,例如当存在短期和长期依赖关系时。例如,在短语“动物因为太累而没有过马路”中,多头注意力告诉模型“动物”和“它”指的是同一个想法。

  • 阅读本文,深入了解自我注意和多头注意力算法
  • 阅读“注意力是你所需要的一切”,这篇论文最初介绍了多头注意力

计算注意力所需的时间随着您添加到序列中的每个新数据点而二次增加。

3.3 解码器级别的多头自注意力

        解码器的工作方式与编码器相同,只是它使用不同的数据集进行了训练。例如,在香草变压器中,如果编码器在英语数据上进行了训练,解码器在法语数据上进行了训练,则解码器将运行相同的多头自注意力算法,将原始短语翻译成法语。

四、对时序使用转换器

        为什么此转换器体系结构不适用于时序?时间序列在某些方面类似于一种语言,但它与传统语言不同。在语言中,您可以使用截然不同的单词或句子顺序来表达相同的想法。一旦基于语言的转换器(如vanilla)在语言上进行了训练,它就可以理解单词之间的关系,因此当您在两个不同的输入中表示一个想法时,转换器仍然会得出大致相同的含义。然而,时间序列需要严格的序列——数据点的顺序更重要。这给使用转换器进行时间序列带来了挑战。

        让我们看看我们目前如何解决这个问题,以及为什么这些模型不足。

4.1 当前的方法

        自回归积分移动平均线 (ARIMA) 模型适用于某些时间序列,但需要深入了解相关趋势、季节性变化和残值——即便如此,它也仅适用于线性依赖关系。在许多具有多变量问题的时间序列中,依赖关系之间的关系不是线性的,ARIMA 将不起作用。

        还有几种使用神经网络的方法。

  • 前馈神经网络 (FNN) 模型使用序列中的任何前六个数据点来预测接下来的六个数据点。尽管 FNN 支持非线性依赖关系,但它们需要您手动制作一个专注于非常具体的问题或数据子集的模型,这使得该模型对于大型数据集的构造过于耗时。
  • 递归神经网络 (RNN 模型中,您可以向模型提供与时间序列相关的一小部分数据点,RNN 中的单元格将记住哪些数据点很重要以及它们的权重是多少。但是,当您处理具有长期依赖关系的数据集时,权重变得不那么相关,并且模型的准确性会随着时间的推移而降低。
  • 短期记忆(LSTM模型类似于RNN,不同之处在于每个细胞都有一个记忆,允许您在长序列期间更频繁地更新权重。这使得 LSTM 成为某些用例的良好解决方案。
  • Seq2seq 是提高 LSTM 性能的一种方法。您可以将数据馈送到编码器中,而不是直接馈送网络,编码器会生成输入的特征,这些特征被馈送到解码器中。

4.2 变压器如何改进时间序列?

        使用变压器支持的多头注意力可以帮助改进时间序列模型处理长期依赖关系的方式,比当前方法更具优势。为了让您了解转换器在长依赖项方面的工作情况,请考虑 ChatGPT 可以在基于语言的模型中生成的长而详细的响应。将多头注意力应用于时间序列可以产生类似的好处,允许一个头专注于长期依赖关系,而另一个头专注于短期依赖关系。我们相信,变压器可以使时间序列模型预测多达1个数据点,如果不是更多的话。

4.3 二次复杂性问题

        变压器计算多头自我注意力的方式对于时间序列来说是有问题的。由于序列中的数据点必须乘以序列中的所有其他数据点,因此添加到输入中的每个数据点都会成倍增加计算注意力所需的时间。这称为二次复杂度,它在处理长序列时会产生计算瓶颈。

        计算注意力所需的时间随着您添加到序列中的每个新数据点而二次增加。

五、改进时间序列的转换器模型

        今年年初发布的一项调查确定了在将变压器应用于时间序列之前需要解决的两个基本网络修改:

  • 位置编码:我们如何表示输入数据
  • 注意力模块:降低时间复杂度的方法

        下一节将介绍高级要点,但您可以阅读调查以获取有关修改及其结果的更多详细信息。

5.1 网络修改No1:位置编码

        2019 年,我们尝试在原版变压器中应用 Word2Vec 编码过程,但该模型无法充分利用时间序列的重要特征。香草转换器擅长辨别单词之间的关系,但不擅长遵循数据序列中的严格顺序。。

        2021 年,我们创建了可学习的文本嵌入,使我们能够在输入中包含额外的位置编码信息。与普通变压器中的固定编码相比,可学习的位置编码使变压器更加灵活,更好地利用顺序排序信息。这有助于转换器了解有关时间序列的更重要上下文,例如季节性信息。

5.2 网络修改No2:注意力模块

        为了降低注意力层的二次复杂度,新的转换器引入了概率稀疏注意力的概念。通过使注意力层仅使用最重要的数据点而不是所有数据点来计算权重和概率,ProbSparse 有助于大大减少计算注意力所需的时间。

Informer* 等新模型中使用的 ProbS稀疏注意力通过仅基于序列中最重要的数据点计算概率来减少时间。

六、对新变压器进行测试

        虽然许多新的转换器,如LogTrans*,Pyraformer*和FEDformer*都包含了这些网络修改,但在这里我们专注于Informer和Spacetimeformer*,因为它们是开源的。 GitHub* 存储库提供参考文档和示例,以便根据数据轻松微调模型,而无需了解注意力层的每个细节。
让我们看看Informer和Spacetimeformer 如何利用这些网络修改,看看它们会产生什么样的结果。

6.1 告密者架构

        通过告密者转换器,您可以向他们提供有关季节性、每月或节假日趋势的重要信息,以帮助模型了解数据在一年中行为方式的细微差异。例如,您的数据集在夏季的行为可能与在冬季的行为不同。通过位置编码,您可以告诉模型在一年中的不同时间使用不同的权重,从而更好地控制输入的质量。

        通过结合ProbSparse注意力模型和位置编码,Informer提供了优于LSTM等传统变压器的性能优势。当预测未来的 24 个数据点时,Informer 产生的均方误差 (MSE) 为 0.577,略好于 LSTM 的 MSE 0.650。当预测 720 个数据点时,性能差异越来越大,Informer 的 MSE 为 1.215,而 LSTM 为 1.960。我们可以在这里得出结论,Informer在长序列中提供了稍微好一点的结果,但LSTM在某些短期用例中仍可能产生良好的结果。

  • 访问告密者 GitHub 存储库以查看更多结果

        Informer产生的结果比LSTM模型略好,特别是对于长数据系列。

七、时空建筑

        Spacetimeformer 提出了一种表示输入的新方法。像Informer这样的时间注意力模型在单个输入令牌中表示每个时间步长的多个变量的值,这没有考虑特征之间的空间关系。图形注意力模型允许您手动表示特征之间的关系,但依赖于无法随时间变化的硬编码图形。时空前者结合了时间和空间注意力方法,创建一个输入令牌来表示给定时间单个要素的值。这有助于模型更多地了解空间、时间和价值信息之间的关系。

        时空形成者使用并行的空间和时间特征计算权重,由右下角的蓝线表示。

        与Informer一样,Spacetimeformer 提供的结果比LSTM略好。在预测未来40小时时,Spacetimeformer的MSE为12.49,略好于LSTM的MSE为14.29。虽然对于更长的序列,这个裕度会扩大,但对于每个用例,Spacetimeformer 还没有提供明显优于 LSTM 的结果。

  • 访问时空前 GitHub 存储库
  • 了解有关时空模型如何工作的更多信息

        与Informer类似,Spacetimeformer 产生的结果比 LSTM 略好,特别是对于更长的时间序列。

八、用例:微服务架构上的延迟

        让我们将时间序列模型应用于在线精品店。该商店有 11 个微服务,包括允许用户添加和删除项目的购物车服务和允许用户搜索单个产品的目录服务。

        将 Informer 时间序列预测应用于具有 11 个微服务的在线精品店。

        为了演示对最终用户的影响,我们将预测用户必须等待每个微服务处理请求的时间。基于每个服务的先前 360 个数据点的模型,我们对未来运行了 36 个数据点的简短预测,对未来运行了 120 个数据点的长期预测。

        在预测接下来的36个数据点时,Informer产生的MSE为0.6,略好于LSTM。但是,告密者需要更多时间来处理。长模型的结果也是如此:Informer的预测更准确,但需要更长的处理时间。

Informer在短数据系列和长数据系列中都产生了更好的结果,但处理时间略多。

九、参与并开始测试

        时序的复杂性各不相同,因此测试模型以找到最适合您的用例非常重要。虽然LSTM等传统模型是某些短期时间序列的有力选择,但Informer和Spacetimeformer可以为长期序列提供更准确的预测。随着我们继续对注意力层和输入数据的表示方式进行优化,我们预计性能会有所提高。此外,作为开源框架,Informer和Spacetimeformer 使安装模型并开始用您的数据进行测试变得更加容易。

        请为 GitHub 存储库做出贡献,以帮助推进这些项目。我们还提供深度学习工具和框架库,以充分利用我们的开源模型。

  • 转到告密者 GitHub 存储库
  • 访问时空前 GitHub 存储库
  • 查看时序 GitHub 存储库,了解时序和序列的最新深度学习

有关英特尔的更多开源内容,请查看 open.intel

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

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

相关文章

Kubernetes部署dolphindcheduler-3.1.8问题记录

温故知新 ⁉️问题记录❓问题一:Unschedulable 0/3 nodes are available: pod has unbound immediate PersistentVolumeClaims. preemption: 0/3 nodes are available: 3 No preemption victims found for incoming pod..❗解决方式:创建PV供应&#x1f…

ARM Soc内部总线

由于soc架构,把常用外设(控制器)集成到芯片内部,所以需要一种总线协调ARMcore与这些内部外设的通信,于是有了APB and AHB以及AXi这种片上总线。 同时要注意与常说的PC时代总线区分开: CPU总线(…

刷题笔记24——完全二叉树的节点个数

有些事情是不能告诉别人的,有些事情是不必告诉别人的,有些事情是根本没有办法告诉别人的,而且有些事情是,即使告诉了别人,你也会马上后悔的。——罗曼罗兰 222. 完全二叉树的节点个数 java的幂运算要 (int) Math.pow(2,l1)-1计算满二叉树的节点数量公式:2 ^ height…

【面试题】—— Java多线程篇(17题)

文章目录 1.什么是多线程?2.线程和进程的区别?3.我们为什么要使用线程?线程的优缺点?4.创建线程的方法有哪些?5.线程的状态有哪些?6.线程的优先级?7.线程常用的方法以及其作用?8.使用…

穿越撒哈拉:中国跨境电商的非洲冒险之旅

非洲,这片古老而神秘的大陆,一直以来都是探险者和冒险家的梦想之地。然而,近年来,中国的跨境电商企业也开始将目光投向了这片充满机遇的土地,但他们的目标不再是黄金和珍宝,而是一个更为宝贵的财富&#xf…

创建线程的方式打开记事本

更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验 今天操作系统课老师讲到进程,提出了一个有趣的小实验:能否以系统调用的方式利用 Windows 创建进程的系统调用函数来打开一个软件。闲着蛋疼的我立马来了兴趣,姑且写一个玩…

跨平台编程开发工具Xojo 2023 Release mac中文版功能介绍

Xojo mac是一款跨平台的软件开发工具,它允许开发人员使用一种编程语言来创建应用程序,然后可以在多个操作系统上运行。Xojo 2023是Xojo开发工具的最新版本,它提供了许多功能和改进,以帮助开发人员更轻松地构建高质量的应用程序。 …

【洛谷】P2004 领地选择

原题链接:https://www.luogu.com.cn/problem/P2004 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 整体思路:二维前缀和 (模板在这https://blog.csdn.net/m0_62531913/article/details/132712831?spm1001.2014.30…

[安洵杯 2019]easy_web md5强碰撞 preg_match绕过

比较简单 url一看就存在一个cmd 和 base64 我们尝试给cmd传递参数 但是没有效果 所以我们就去看看 img里面是什么 直接放到瑞士军刀看看 知道了加密方法 我们去看看能不能返回 index.php代码 TmprMlpUWTBOalUzT0RKbE56QTJPRGN3 返回了 接下俩就是代码审计了 <?php erro…

Python ---使用Fake库向clickhouse造数据小案例

每次insert太麻烦了 先在clickhosue中建表 test_user表 CREATE TABLE dwh.test_user (name String,age Int32,address String,phone String,email String ) ENGINE MergeTree() ORDER BY name; 此时表中暂无数据 用Python脚本来造一些数据 from faker import Faker from c…

Matlab图像处理-灰度级到彩色空间变换法

灰度级到彩色空间变换法 灰度图像转换为具有多种颜色渐变的连续彩色图像。该方法的基本概念是对任意输入像素的灰度级进行三个独立的变换。然后&#xff0c;将三个变换结果分别发送到彩电电视监视器的红、绿、蓝通道。该方法产生一个合成图像&#xff0c;其彩色内容受变换函数…

地球+卫星运动轨迹

由于工作中&#xff0c; 需要追踪卫星&#xff0c; 记录一下最近的工作成果&#xff0c; 分别有俩个方案&#xff0c; 一个是基于市面上主流的Threejs&#xff0c; 另外一个是基于Cesium&#xff0c; 还尝试过使用&#xff0c; Planetary.js&#xff0c; 效果其实还蛮好&#x…

vSphere 7.0 Update 3提示vCLS虚拟机没有兼容的主机的问题即物理机开启CPU “Monitor/Mwait”功能的方法

本文讲解在华为物理服务器上开启CPU "Monitor/Mwait"功能的方法&#xff0c;以解决vSphere 7.0 Update 3平台上vCLS代理虚拟机提示没有与虚拟机兼容的主机&#xff0c;无法开机&#xff0c;且一直尝试启动反复告警的问题。 一、问题实况 1、VC升级到7.0.3后&#x…

Linux系统编程(三):进程

参考引用 UNIX 环境高级编程 (第3版)黑马程序员-Linux 系统编程 1. 进程相关概念 1.1 程序和进程 程序&#xff0c;是指编译好的二进制文件&#xff0c;在磁盘上&#xff0c;不占用系统资源 (CPU、内存、打开的文件、设备、锁…) 程序 → 剧本 (纸) 进程与操作系统原理联系紧…

基于Yolov8的野外烟雾检测(3):动态蛇形卷积(Dynamic Snake Convolution),实现暴力涨点 | ICCV2023

目录 1.Yolov8介绍 2.野外火灾烟雾数据集介绍 3.Dynamic Snake Convolution 3.1 Dynamic Snake Convolution加入到yolov8 4.训练结果分析 5.系列篇 1.Yolov8介绍 Ultralytics YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最…

ggplot2做图(填坑中)

数据 df <- data.frame(x 1:10, y 1:10, f c(rep("A", 5), rep("B", 5))) 做图 1. 散点图 (scatter plot) # scatter plot scatter_plot <- function(df, metadata) {identical(rownames(df), rownames(metadata))data <- cbind(df, metada…

JavaScript系列从入门到精通系列第一篇:JavaScript语言简介和它代码初体验

一&#xff1a;简介 1&#xff1a;起源 JavaScript诞生于1995年&#xff0c;它的出现主要是用于处理网页中的前端验证&#xff0c; 所谓的前端验证&#xff0c;就是指检查用户输入的内容是否符合一定的规则。 2&#xff1a;简史 JavaScript是由网景公司发明&#xff0c;起初命…

安全测试:文件上传漏洞检测

文件上传漏洞 是一种安全漏洞&#xff0c;允许攻击者将恶意文件上传到目标服务器&#xff0c;从而可能导致恶意代码执行、服务器瘫痪或其他不安全的情况。 假设您正在测试一个网络应用程序&#xff0c;该应用程序允许用户上传文件&#xff0c;例如用户头像。你怀疑应用程序可能…

QT实现相关功能

1、文本的保存 mianwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include<QFontDialog> //字体对话框 #include<QFont> //字体类 #include<QMessageBox> //消息对话框 #…

伦敦银交易所数据全面吗?

据伦敦市场的数据显示&#xff0c;每天平均有超过1900万盎司的黄金和1.7亿盎司的白银交易在发生&#xff0c;而且实际的数量可能是这个数字几倍&#xff0c;因为许多的交易发生都在私人市场&#xff0c;不会产生交易信息报告&#xff0c;所以我们难以准确评估市场上所有的金银交…