AAAI 2025-FEI: 频率掩码嵌入推理:一种非对比学习的时间序列表示学习
title:Frequency-Masked Embedding Inference: A Non-Contrastive Approach for Time Series Representation Learning
PAPER: https://arxiv.org/pdf/2412.20790
CODE: https://github.com/USTBInnovationPark/Frequencymasked-Embedding-Inference
Highlights:
1)非对比学习范式的突破
本文首次提出完全消除对比学习依赖的新范式。通过频率掩蔽嵌入推断(FEI)实现了无需样本对约束的表示学习,解决了对比学习中样本构造偏差和计算效率低的核心痛点。
2)频率域操作驱动语义关系建模
创新性地将频率掩蔽作为提示信号引入时间序列处理,通过选择性抑制频域分量引导模型捕捉序列的连续语义关系。这种频率域操作相比传统时域增强技术(如窗口裁剪)更符合时间序列的本质物理特性。
3)双重推断分支的协同优化机制
设计两个互补的推断分支,通过参数共享与交互实现特征互补,突破了单一自监督任务的信息局限性。
研究背景
对比学习范式是当前大多数自监督预训练时间序列表示方法的基础。构造正负样本对的策略会显著影响最终的表示质量。然而,由于时间序列语义的连续性,对比学习的建模方法难以适应时间序列数据的特征。这会导致诸如难以构建难负样本对构建过程中可能引入不适当的偏差等问题。尽管最近的一些工作(如: 1. TimesURL, 2. SimMTM , 3. InfoTS, 4. TimeDRL, 5. TF-C, and 6. TS2Vec )已经开发了几种科学策略来构建正负样本对,效果更高,但它们仍然受到对比学习框架的限制。为了从根本上克服对比学习的局限性,本文介绍了频率掩蔽嵌入推理 (FEI),这是一种新颖的非对比方法,完全消除了对正负样本的需求。所提出的 FEI 基于提示策略构建了 2 个推理分支: 1) 使用频率掩码作为提示来推断嵌入空间中缺少频段的目标序列的嵌入表示,以及 2) 使用目标序列作为提示来推断其频率掩码嵌入。通过这种方式,FEI 支持对时间序列进行连续的语义关系建模。使用线性评估和端到端微调对 8 个广泛用于分类和回归任务的时间序列数据集进行的实验表明,FEI 在泛化方面明显优于现有的基于对比的方法。本研究为时间序列的自我监督表示学习提供了新的解决方案。
方法
所提出的 FEI 的主要架构如下图所示。对于一个原始序列,使用频域随机mask的方式生成一个其可以视为正样本的增强序列(target series)。这两个序列都使用Encoder+MLP进行表征生成。然后使用原始序列的embedding去预测被mask后序列的embedding,实现表示学习embedding的训练过程。下面展开介绍模型中的各个模块,包括Encoder、Masking Block、优化目标3个部分。
Encoder
Encoder可以使用各种类型的模型,整体包括2个Encoder,一个Encoder用来对原始序列进行表征映射,另一个Encoder用来对经过Mask后的增强序列进行表征映射。由于整体只有正样本,为了避免表征坍缩(即所有表征学习点学到一块去),对于另一个Encoder使用Momentum Encoder的方式,主要就是增加了衰减累加参数,让两个Encoder参数空间产生差异。
Masking Block
这部分用来对原始序列在频域做mask掩码操作,以生成一个可以视为和原始序列互为正样本对的增强序列。具体做法,先采用快速傅里叶变换将原序列从时域映射到频域,然后随机mask掉一部分主成分。这里的mask比例服从均匀分布,且每次样本mask的比例随机。然后再将Mask后的掩码序列映射回时域得到增强样本(文中叫做Target Series)。
为了让mask部分在前向反馈神经网络中也参与梯度学习,文中使用了一个mask生成网络,用于学习每个频率成分是否应该mask:
优化目标
上述模型的优化目标包括2个部分。一方面,使用原始序列表征和mask结果来预测增强序列的表征;另一方面使用原始序列表征和增强序列的表征来预测mask的结果。公式如下,其中D是stop gradient,让模型在梯度传播的时候专注于对应表征的学习。
实验
在8个广泛使用的时间序列数据集上进行的分类和回归任务实验表明,FEI 在泛化性能上显著优于现有的基于对比学习的方法。具体来说,FEI 在分类任务中的线性评估和端到端微调中均表现出色,平均准确率分别提高了2.15%和3.50%
另外在回归预测任务中表现也实验SOTA水平:
代码实现
FEI 的官方代码已在 GitHub 上发布,可以通过以下命令快速开始预训练:
python ./experiment.py --task_type=p --method=FEI
预训练完成后,可以使用以下命令验证预训练模型:
python ./experiment.py --model=./train/model_result/your_model_path --task_type=l --task=c --dataset=FDB --method=FEI
结论
FEI 提供了一种新的时间序列自监督表示学习方法,通过频率掩码推理克服了对比学习的局限性,显著提升了模型的泛化性能
AAAI 2025-FEI: 频率掩码嵌入推理:一种非对比学习的时间序列表示学习的更多相关文章
- 【系统硬件】英伟达安培卡 vs 老推理卡硬件参数对比
欢迎关注我的公众号 [极智视界],回复001获取Google编程规范 O_o >_< o_O O_o ~_~ o_O 本文分享一下英伟达安培卡 vs 老推理 ...
- 【NLP学习其三】在学习什么是嵌入之前,你应该了解什么是词语表征
在了解什么是嵌入(embeddings)之前,我们需要先搞清楚一个词语在NLP中是如何被表示的 注:本次不涉及任何具体算法,只是单纯对概念的理解 词汇表征 One-Hot 词汇的表示方法有很多,最有名 ...
- C#如何加载嵌入到资源的非托管dll
如何加载非托管Dll 我们总会遇到需要加载非Win32的非托管dll,这里推荐一种方式就是将那些非win32的非托管dll嵌入资源的方式,在入口解压并且加载的方式,我先来看看如何实现吧,首先我们准备好 ...
- NLP领域的ImageNet时代到来:词嵌入「已死」,语言模型当立
http://3g.163.com/all/article/DM995J240511AQHO.html 选自the Gradient 作者:Sebastian Ruder 机器之心编译 计算机视觉领域 ...
- vb小菜一枚-----了解“类型推理”
局部类型推理 (Visual Basic) Visual Studio 2013 其他版本 Visual Basic 编译器使用类型推理来确定未使用 As 子句声明的局部变量的数据类型. 编译 ...
- OpenCV学习笔记:矩阵的掩码操作
矩阵的掩码操作很简单.其思想是:根据掩码矩阵(也称作核)重新计算图像中每个像素的值.掩码矩阵中的值表示近邻像素值(包括该像素自身的值)对新像素值有多大影响.从数学观点看,我们用自己设置的权值,对像素邻 ...
- [hdu5136]Yue Fei's Battle 2014 亚洲区域赛广州赛区J题(dp)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud 现场赛的时候由于有个地方有点小问题,没有成功AC,导致与金牌失之交臂. 由于今天下 ...
- 广告等第三方应用嵌入到web页面方案 之 使用js片段
在自己的项目中嵌入过广告的朋友们可能都用过百度联盟, 只需要嵌入如下一段js代码片段, 就可以在自己的项目中嵌入广告, 来获得收益. <script type="text javasc ...
- 转导推理——Transductive Learning
在统计学习中,转导推理(Transductive Inference)是一种通过观察特定的训练样本,进而预测特定的测试样本的方法.另一方面,归纳推理(Induction Inference)先从训练样 ...
- Go 语言中的方法,接口和嵌入类型
https://studygolang.com/articles/1113 概述 在 Go 语言中,如果一个结构体和一个嵌入字段同时实现了相同的接口会发生什么呢?我们猜一下,可能有两个问题: 编译器会 ...
随机推荐
- SpringBoot+微信支付-JSAPI
引入微信支付SDK Maven: com.github.wechatpay-apiv3:wechatpay-java-core:0.2.12 Maven: com.github.wechatpay-a ...
- ajax 多次请求相同链接 相同参数,缓存问题
经常会发现,ajax 多次调用同一个接口时(get),参数不变. 为了提升性能,浏览器就不会和服务器进行交互,获取到的数据 就不会发生变化 解决方案:添加随机参数.或者时间戳 类似在接口后面 添加 D ...
- Ubuntu安装mosquitto并进行配置
要在Ubuntu上安装Mosquitto并进行配置,你可以按照以下步骤进行操作: 打开终端. 更新软件包列表,使用以下命令: sudo apt update 安装Mosquitto包,使用以下命令: ...
- 【Linux】5.3 Shell字符串
Shell 字符串 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号.单双引号的区别跟PHP类似. 1. 单 ...
- 使用Python计算万有引力势能
引言 在物理学中,万有引力是描述物体之间相互吸引的基本力之一.牛顿的万有引力定律告诉我们,任何两个物体之间都存在引力,这个引力与它们的质量和它们之间的距离有关.在这个定律中,万有引力势能是一个非常重要 ...
- 详细介绍MessageQueueSelector
一.MessageQueueSelector 详解 MessageQueueSelector 是 RocketMQ 提供的一个接口,用于自定义消息发送时的队列选择策略. 通过实现该接口, 开发者可以控 ...
- 74.8K star!这个开源图标库让界面设计效率提升10倍!
嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 Font Awesome 是全球最受欢迎的图标库和工具包,提供超过2000个免费图标和700 ...
- Spring Boot 不能加载 tcnative-2.dll 库(Can't load library: tcnative-2.dll)
Spring Boot 不能加载 tcnative-2.dll 库 本文将介绍怎样解决 Spring Boot 在启动时抛出 "org.apache.tomcat.jni.LibraryNo ...
- Java编程--接口(interface)简单用法(一)
接口是Java中的一个重要的概念. interface:定义了子类要实现的功能.由全局常量和抽象方法组成. 接口的定义 定义一个简单的interface public interface A { p ...
- 遇到的问题之“对象不为空,字段为空,取出使用时报空指针异常【特例场景:Optional的使用】”
一.场景 二.原因 目前找到的原因是:使用Optional.of()方法对其判空后直接报错了,就没有走orElse了 Optional.of()源码 Optional.java /** * Retur ...