iTransformer

iTransformer

先进的时间序列预测模型,打造SOTA性能

iTransformer是一种基于注意力机制的时间序列预测模型,由清华大学和蚂蚁集团研究人员开发。该模型采用倒置Transformer结构,支持多变量和多步长预测。iTransformer引入了可逆实例归一化等技术,旨在提高预测准确性和处理长序列数据的能力。这个开源项目为时间序列分析提供了新的研究方向。项目提供Python实现,支持使用PyTorch框架。用户可通过pip安装并轻松集成到现有的时间序列分析工作流程中。该项目还包括实验性功能,如二维注意力和傅里叶变换增强版本,为研究人员提供了探索和改进的空间。

iTransformer时间序列预测注意力网络深度学习人工智能Github开源项目

<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/cfcdb613-a4ae-4faf-8753-2184e08591b2.png" width="400px"></img>

iTransformer

实现<a href="https://arxiv.org/abs/2310.06625">iTransformer</a> - 来自清华/蚂蚁集团的使用注意力网络的最先进时间序列预测

现在只剩下表格数据(xgboost仍是冠军)了,然后就可以真正宣称"注意力是你所需要的全部"

在苹果公司让作者更改名称之前。

官方实现已在<a href="https://github.com/thuml/iTransformer">这里</a>发布!

致谢

  • 感谢<a href="https://stability.ai/">StabilityAI</a><a href="https://huggingface.co/">🤗 Huggingface</a>的慷慨赞助,以及我的其他赞助商,让我能够独立地开源当前的人工智能技术。

  • 感谢<a href="https://github.com/gdevos010">Greg DeVos</a>分享他在iTransformer上运行的<a href="https://github.com/lucidrains/iTransformer/issues/20">实验</a>以及一些即兴变体

安装

$ pip install iTransformer

使用方法

import torch from iTransformer import iTransformer # 使用太阳能设置 model = iTransformer( num_variates = 137, lookback_len = 96, # 或论文中的回溯长度 dim = 256, # 模型维度 depth = 6, # 深度 heads = 8, # 注意力头 dim_head = 64, # 头部维度 pred_length = (12, 24, 36, 48), # 可以是一个预测,或多个 num_tokens_per_variate = 1, # 实验性设置,将每个变量映射到多个token。这个想法是网络可以学会将时间划分为更精细的时间token,以便对时间进行更精细的注意力。多亏了快速注意力,你应该能够很好地适应长序列长度 use_reversible_instance_norm = True # 使用可逆实例归一化,在这里提出 https://openreview.net/forum?id=cGDAkQo1C0p 。考虑到iTransformer内部的层归一化(以及在第一个层归一化之前的第一层上注意力可能学到的任何其他东西),这可能是多余的。如果我有时间,我会收集所有变量的统计数据,投影它们,并进一步调节transformer。这样更有意义 ) time_series = torch.randn(2, 96, 137) # (批次, 回溯长度, 变量) preds = model(time_series) # preds -> Dict[int, Tensor[batch, pred_length, variate]] # -> (12: (2, 12, 137), 24: (2, 24, 137), 36: (2, 36, 137), 48: (2, 48, 137))

对于一个即兴版本,可以对时间token进行精细的注意力(以及原始的每个变量token),只需导入iTransformer2D并设置额外的num_time_tokens

更新:它成功了!感谢<a href="https://github.com/gdevos010">Greg DeVos</a><a href="https://github.com/lucidrains/iTransformer/issues/6#issuecomment-1794989685">这里</a>运行实验!

更新2:收到了一封邮件。是的,如果这个架构适合你的问题,你可以自由地写一篇关于它的论文。我对此没有任何利害关系

import torch from iTransformer import iTransformer2D # 使用太阳能设置 model = iTransformer2D( num_variates = 137, num_time_tokens = 16, # 时间token的数量(补丁大小将是(回溯长度 // num_time_tokens)) lookback_len = 96, # 论文中的回溯长度 dim = 256, # 模型维度 depth = 6, # 深度 heads = 8, # 注意力头 dim_head = 64, # 头部维度 pred_length = (12, 24, 36, 48), # 可以是一个预测,或多个 use_reversible_instance_norm = True # 使用可逆实例归一化 ) time_series = torch.randn(2, 96, 137) # (批次, 回溯长度, 变量) preds = model(time_series) # preds -> Dict[int, Tensor[batch, pred_length, variate]] # -> (12: (2, 12, 137), 24: (2, 24, 137), 36: (2, 36, 137), 48: (2, 48, 137))

实验性

带有傅里叶token的iTransformer

一个iTransformer,但也带有傅里叶token(时间序列的FFT被投影到它们自己的token中,并与变量token一起被关注,最后被拼接出来)

import torch from iTransformer import iTransformerFFT # 使用太阳能设置 model = iTransformerFFT( num_variates = 137, lookback_len = 96, # 或论文中的回溯长度 dim = 256, # 模型维度 depth = 6, # 深度 heads = 8, # 注意力头 dim_head = 64, # 头部维度 pred_length = (12, 24, 36, 48), # 可以是一个预测,或多个 num_tokens_per_variate = 1, # 实验性设置,将每个变量映射到多个token。这个想法是网络可以学会将时间划分为更精细的时间token,以便对时间进行更精细的注意力。多亏了快速注意力,你应该能够很好地适应长序列长度 use_reversible_instance_norm = True # 使用可逆实例归一化,在这里提出 https://openreview.net/forum?id=cGDAkQo1C0p 。考虑到iTransformer内部的层归一化(以及在第一个层归一化之前的第一层上注意力可能学到的任何其他东西),这可能是多余的。如果我有时间,我会收集所有变量的统计数据,投影它们,并进一步调节transformer。这样更有意义 ) time_series = torch.randn(2, 96, 137) # (批次, 回溯长度, 变量) preds = model(time_series) # preds -> Dict[int, Tensor[batch, pred_length, variate]] # -> (12: (2, 12, 137), 24: (2, 24, 137), 36: (2, 36, 137), 48: (2, 48, 137))

待办事项

  • 用最新发现加强transformer
  • 在变量和时间上即兴创作2D版本
  • 即兴创作包含fft token的版本
  • 即兴创作使用基于所有变量统计数据的自适应归一化的变体

引用

@misc{liu2023itransformer, title = {iTransformer: Inverted Transformers Are Effective for Time Series Forecasting}, author = {Yong Liu and Tengge Hu and Haoran Zhang and Haixu Wu and Shiyu Wang and Lintao Ma and Mingsheng Long}, year = {2023}, eprint = {2310.06625}, archivePrefix = {arXiv}, primaryClass = {cs.LG} }
@misc{shazeer2020glu, 标题 = {GLU变体改进Transformer}, 作者 = {Noam Shazeer}, 年份 = {2020}, 网址 = {https://arxiv.org/abs/2002.05202} }
@misc{burtsev2020memory, 标题 = {记忆Transformer}, 作者 = {Mikhail S. Burtsev 和 Grigory V. Sapunov}, 年份 = {2020}, 预印本 = {2006.11527}, 预印本库 = {arXiv}, 主要类别 = {cs.CL} }
@inproceedings{Darcet2023VisionTN, 标题 = {视觉Transformer需要寄存器}, 作者 = {Timoth'ee Darcet 和 Maxime Oquab 和 Julien Mairal 和 Piotr Bojanowski}, 年份 = {2023}, 网址 = {https://api.semanticscholar.org/CorpusID:263134283} }
@inproceedings{dao2022flashattention, 标题 = {Flash{A}ttention:具有{IO}感知的快速高效精确注意力机制}, 作者 = {Dao, Tri 和 Fu, Daniel Y. 和 Ermon, Stefano 和 Rudra, Atri 和 R{\'e}, Christopher}, 会议名称 = {神经信息处理系统进展}, 年份 = {2022} }
@Article{AlphaFold2021, 作者 = {Jumper, John 和 Evans, Richard 和 Pritzel, Alexander 和 Green, Tim 和 Figurnov, Michael 和 Ronneberger, Olaf 和 Tunyasuvunakool, Kathryn 和 Bates, Russ 和 {\v{Z}}{\'\i}dek, Augustin 和 Potapenko, Anna 和 Bridgland, Alex 和 Meyer, Clemens 和 Kohl, Simon A A 和 Ballard, Andrew J 和 Cowie, Andrew 和 Romera-Paredes, Bernardino 和 Nikolov, Stanislav 和 Jain, Rishub 和 Adler, Jonas 和 Back, Trevor 和 Petersen, Stig 和 Reiman, David 和 Clancy, Ellen 和 Zielinski, Michal 和 Steinegger, Martin 和 Pacholska, Michalina 和 Berghammer, Tamas 和 Bodenstein, Sebastian 和 Silver, David 和 Vinyals, Oriol 和 Senior, Andrew W 和 Kavukcuoglu, Koray 和 Kohli, Pushmeet 和 Hassabis, Demis}, 期刊 = {Nature}, 标题 = {高度精确的蛋白质结构预测{AlphaFold}}, 年份 = {2021}, doi = {10.1038/s41586-021-03819-2}, 注释 = {(加速文章预览)}, }
@inproceedings{kim2022reversible, 标题 = {可逆实例归一化:用于应对分布偏移的准确时间序列预测}, 作者 = {Taesung Kim 和 Jinhee Kim 和 Yunwon Tae 和 Cheonbok Park 和 Jang-Ho Choi 和 Jaegul Choo}, 会议名称 = {国际学习表示会议}, 年份 = {2022}, 网址 = {https://openreview.net/forum?id=cGDAkQo1C0p} }
@inproceedings{Katsch2023GateLoopFD, 标题 = {GateLoop:用于序列建模的完全数据控制线性递归}, 作者 = {Tobias Katsch}, 年份 = {2023}, 网址 = {https://api.semanticscholar.org/CorpusID:265018962} }

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多