Appearance
FITS 深度学习笔记
FITS: Modeling Time Series with 10k Parameters(ICLR 2024)
一句话定位
FITS = rFFT + 低通滤波(LPF) + 复数线性插值层 + irFFT
→ 用约 10k 参数实现媲美 PatchTST 的长期预测和异常检测性能,专为边缘设备设计。
核心洞见:时序预测和重建本质上是复频域插值——将 L 步回望窗口的频域表示,通过复数线性变换插值到更长的 (L+H) 步,再变换回时域即得预测。幅度缩放 + 相位偏移,同时被一次复数乘法捕获。
零、前置知识
0.1 必须了解(缺少就看不懂正文)
| 概念 | 关键内容 | 推荐入口 |
|---|---|---|
| 实数 FFT(rFFT) | 对 N 个实数做 FFT,得到 N/2+1 个复数;共轭对称性使一半信息冗余,rFFT 利用此特性压缩存储 | [[FEDformer-深度学习笔记]] 四章 |
| 复数的极坐标表示 | $X(f) = | X(f) |
| 时移定理 | 时域向右平移 τ 步 ↔ 频域每个分量乘以 | FEDformer 论文 3.1 节 |
| 可逆实例归一化(RIN) | 减去均值、除以标准差;预测后用存储的 μ, σ 逆变换;防止均值主导 FFT 的零频分量 | Kim et al., ICLR 2022 |
| 低通滤波(LPF) | 保留频谱中频率低于截止频率 COF 的分量,丢弃高频;高频通常是噪声 | 本笔记四章 |
0.2 推荐了解
| 概念 | 为什么推荐 |
|---|---|
| DLinear(LTSF-Linear) | FITS 的直接前作,同一作者组的工作,单层线性直接映射时域;理解 FITS 的设计动机需要理解为什么从时域转到频域 |
| 谐波(Harmonics) | FITS 的截止频率按主频率的整数倍(谐波)来选,理解谐波概念可以帮助选择 COF |
| PatchTST | FITS 的主要竞争对手,参数量 1.5M;理解 FITS 在精度相近情况下凭什么只用 10K 参数 |
0.3 背景:前作留下了什么问题
DLinear(LTSF-Linear)的核心发现:对于长期时序预测,简单的单层线性模型(Y = W·X + b)就能媲美甚至超越复杂的 Transformer,原因在于时序数据的简单全局线性关系被 Transformer 的点对点注意力忽视了。
但 DLinear 遗留了两个问题:
参数效率低:DLinear 直接映射 L → H 步,参数量 = L × H。当 L=720, H=720 时需要 72 万参数;Transformer 系列更需要数百万参数。对于运算能力有限的边缘设备(传感器、MCU)完全不可用。
时域直接建模信息冗余:时域中同一条时序的信息分散在所有时间步,而频域中大部分能量集中在少数低频分量——直接在时域建模没有利用这一稀疏性。
FITS 的回答:去频域做插值。L 步时序变换到频域只需 L/2+1 个复数分量,再经 LPF 只保留约 L_cut ≈ L/12 个,用一个小复数线性层从 L_cut 插值到 η·L_cut,参数量 ≈ L_cut × η·L_cut × 2,轻松控制在 10K 以内。
一、问题定义
任务:时序预测(Forecasting)和时序重建/异常检测(Reconstruction)。
| 符号 | 含义 |
|---|---|
| 输入回望窗口(单变量,多变量通过权重共享分别处理) | |
| 回望窗口长度(搜索:90, 180, 360, 720) | |
| 预测水平(Forecasting Horizon) | |
| rFFT 后的复数频域表示 | |
| LPF 截止后保留的频率分量数(= 主频第 n 次谐波) | |
| 插值率;预测任务: | |
| COF | Cutoff Frequency,截止频率,唯一超参数 |
二、整体架构鸟瞰
![[assets/FITS-深度学习笔记/figure2-fits-pipeline-forecasting.png]]
论文 Figure 2(预测任务流程):上方为输入方向(时域 → 频域 → 插值),下方为输出方向(频域 → 时域)。流程:时序 x 先做 RIN 归一化,rFFT 转到复数频域得
(频谱柱状图),LPF 截断高频得 (保留红色框内分量),通过紫色复数线性层插值到 (更多频率分量),零填充到目标长度后 irFFT 回时域,iRIN 逆归一化,得到包含"回望+预测"的完整序列 。监督目标是预测段与真实值对齐;B+F 模式下同时监督回望段(backcasting)。
![[assets/FITS-深度学习笔记/arch_dataflow.svg]]
颜色语义:蓝=时域输入,青=RIN/iRIN,橙=FFT/iFFT,红=低通滤波,紫=复数线性插值(核心),深灰=零填充,绿=预测输出。
数据流(预测任务,以 L=96, H=96 为例):
x(96步) → RIN(均值归零) → rFFT → X̃(49复数)
→ LPF(COF=8) → X̃'(8复数)
→ 复数线性层(8→16复数, η=2)
→ 零填充(16→97) → irFFT(192步) → iRIN
→ ŷ(后96步=预测结果)三、复数频域:幅度与相位
FITS 的核心依赖是复数频域能同时表达信号的幅度(强度)和相位(时移)。
![[assets/FITS-深度学习笔记/figure1-complex-number-visualization.png]]
论文 Figure 1: (a) 复平面上的复数可视化——
,向量长度为幅度 ,角度为相位 ,同时编码了频率分量的"大小"和"时移"。 (b) 复数乘法的效果: ,幅度相乘、相位相加,即一次运算同时完成幅度缩放和相位移动。FITS 的复数线性层正是通过学习这样的复数权重,来同时调整每个频率分量的幅度和相位,实现任意时移的预测。
时移定理的核心:若时域信号向右平移 τ 步,则频域每个分量 f 的相位变化
这意味着:要预测未来 H 步,只需让频域每个分量相位移动对应的量——而这正是复数乘法自然实现的操作。
四、低通滤波(LPF):模型压缩的关键
做什么:在 rFFT 之后、复数线性层之前,丢弃高于截止频率 COF 的所有分量,只保留低频部分。
为什么可行:
![[assets/FITS-深度学习笔记/figure3-lpf-effect.png]]
论文 Figure 3:ETTh1 数据集 OT 通道(长度 480,主频率为 1/24,即 24 步周期)。每列为(上)滤波后波形(下)对应幅度谱。
- (a) 无滤波:MSE=0,保留所有分量,蓝线为原始。
- (b) COF=第6谐波(频率≤6/24):MSE=0.073,波形几乎与原始重合。
- (c) COF=第3谐波:MSE=0.166,轻微失真但主体结构完整。
- (d) COF=第2谐波:MSE=0.430,失真明显增大。 结论:保留到第3~6谐波(即频谱的约1/4)就能以极小失真重建波形;被丢弃的高频分量通常是噪声,不影响有效建模。
COF 选择策略:
- 用 FFT 找到主频率
(幅度最大的频率) - 截止频率 =
(取第 n 次谐波,n 为整数) - 论文建议 n ∈ {2, 3, 4, 5, 6},通过验证集网格搜索选最优
参数量与 COF 的关系(ETTh2, L=180, H=192):
| COF 谐波次数 | L_cut(频率分量数) | 参数量 |
|---|---|---|
| 2 | ~15 | 1,431 |
| 4 | ~30 | 3,698 |
| 6 | ~45 | 7,021 |
| 8 | ~60 | 11,400 |
五、FITS 核心算法:复数频率线性插值
做什么:单层复数值线性层,输入
公式:
其中
预测任务的插值率:
含义:长度 L 的回望窗口扩展到长度 L+H(回望+预测),在频域插值得到。监督时截取后 H 步作为预测值,前 L 步可选地作为回望监督(B+F 模式)。
重建任务的插值率:
数值示例:FITS 完整流程(L=8, H=4, D=1, COF=2个分量)
输入时序(含明显的4步周期规律,适合频域插值):
Step A:RIN 归一化(减去均值 μ=2,除以 σ=0.707)
Step B:rFFT(N=8 实数 → N/2+1=5 复数)
对
| 频率 l | 幅度 | 相位 | 复数值 |
|---|---|---|---|
| l=0 | 0 | — | 0+0j |
| l=1 | ~0 | — | ≈0 |
| l=2 | 4√2 | π/2 | 0+5.66j |
| l=3 | ~0 | — | ≈0 |
| l=4 | 0 | — | 0 |
Step C:LPF(保留 L_cut=2 个分量,即 l=0, l=1)
等效为保留到第1次谐波;由于 l=2 的能量被截断(这里为演示选 COF=2 即保留 l=0, l=1, l=2):
Step D:复数线性层插值(η = 1 + H/L = 1 + 4/8 = 1.5,输出 4~5 个分量)
学习到的权重
(相位旋转了 π,对应时序向后移动了 4 步)
Step E:零填充 + irFFT + iRIN
零填充到长度 L_o/2 = (L+H)/2 = 6 个复数,irFFT 得到 12 步时序,取后4步为预测:
验证
- 对纯正弦信号,FITS 只需1个频率分量就能完美预测 ✓
- 复数线性层学习到的正是频域相位偏移(时移),符合时移定理 ✓
- 整个模型参数只有复数线性层的 3×4.5×2 ≈ 27 个实数参数 ✓(极端简单)
六、权重共享(多变量处理)
FITS 采用通道独立(Channel-Independent)策略处理多变量时序:
- 每个变量(通道)单独通过相同的 FITS 模型处理
- 权重在所有通道间共享,不为每个通道学习独立权重
适用条件:各通道来自同一物理系统(如电力系统的50/60Hz基频、交通流量的日周期),具有相同的基础频率。
对不同基频的处理:若数据集中某些通道的基础频率明显不同,则将通道按基频聚类,每簇单独训练一个 FITS 模型。
七、训练细节
| 超参数 | 值 | 说明 |
|---|---|---|
| 回望窗口 L | 90, 180, 360, 720 | 网格搜索 |
| 截止频率 COF | 第 n 次谐波(n=2~6+) | 唯一有效超参数,按验证集选 |
| 损失函数 | MSE | 在时域计算(irFFT 后) |
| 监督模式 | F(仅预测)或 B+F(回望+预测) | B+F 通常更好 |
| 随机种子 | 5 次均值±标准差 | 最终结果 |
| 下采样率 η_rec | 4(异常检测) | 窗口 200/400 |
| 参数量范围 | 4.5K ~ 10K(预测),2.6K~10.2K(异常检测) | 见 Table 3 & 24 |
| MACs 范围 | 1.6M ~ 8.9M | vs DLinear 40M |
| 推理时间 | 0.6ms(CPU) | vs DLinear 0.4ms |
B+F 监督技巧:同时优化"预测未来 H 步"和"重建回望 L 步"两个目标,模型的输出是 L+H 步,前 L 步与历史对比(backcast),后 H 步与未来对比(forecast)。消融研究表明 B+F 在部分场景下有明显提升。
八、实验结果
长期预测(6个数据集,与 SOTA 对比)
| 方法 | ETTh1 96 | ETTh2 96 | Weather 96 | Electricity 96 | Traffic 96 | 参数量 |
|---|---|---|---|---|---|---|
| PatchTST | 0.385 | 0.274 | 0.129 | 0.165 | 0.366 | 1.5M |
| DLinear | 0.384 | 0.282 | 0.174 | 0.169 | 0.246 | 139.7K |
| TimesNet | 0.384 | 0.340 | 0.172 | 0.168 | 0.593 | 301.7M |
| FEDFormer | 0.375 | 0.346 | 0.246 | 0.210 | 0.378 | 20.68M |
| FITS | 0.372 | 0.271 | 0.143 | 0.143 | 0.385 | 4.5K~10K |
- FITS 在 ETTh2 上以 MSE=0.271 大幅领先 PatchTST(0.274)
- FITS 在 Weather 上与 PatchTST 并列最优(0.143 vs 0.129)
- FITS 对比 DLinear:参数量少 50倍,性能相当或更优
计算效率对比(Electricity 数据集,L=96, H=720)
| 模型 | 参数量 | MACs | 推理时间 |
|---|---|---|---|
| TimesNet | 301.7M | 1226.49G | N/A |
| Pyraformer | 241.4M | 0.80G | 3.4ms |
| Autoformer | 14.91M | 4.41G | 164.1ms |
| FEDFormer | 20.68M | 4.41G | 40.5ms |
| PatchTST | 1.5M | 5.07G | 3.3ms |
| DLinear | 139.7K | 40M | 0.4ms (CPU) |
| FITS | 4.5K~10K | 1.6M~8.9M | 0.6ms (CPU) |
![[assets/FITS-深度学习笔记/figure10-critical-difference-plot.png]]
论文 Figure 10:Critical Difference Plot(显著性差异图,alpha=0.05)。横轴为 MSE 平均排名(左=好,排名1=最优),连线表示无显著差异。FITS(排名约1.5)、PatchTST、DLinear 三者聚在左侧高性能区且彼此无显著差异;而 FEDFormer 和 TimesNet 在右侧且无连线连接,说明 FITS 对这两者的优势具有统计显著性。
异常检测(5个数据集,F1分数)
| 数据集 | FITS | TimesNet | Anomaly Trans. | THOC | IMP vs 最优 baseline |
|---|---|---|---|---|---|
| SMD | 99.95 | 85.81 | 92.33 | 84.99 | +7.62 |
| PSM | 93.96 | 97.47 | 97.00 | 80.83 | -3.93 |
| SWaT | 98.9 | 91.74 | 94.07 | 85.13 | +4.83 |
| SMAP | 70.74 | 71.52 | 96.69 | 90.68 | -25.95 |
| MSL | 78.12 | 85.15 | 93.59 | 89.69 | -15.96 |
在连续型模拟信号数据集(SMD、SWaT)上,FITS 达到近乎完美的检测效果(99.95%),因为这些数据的异常体现在频率成分的突变,FITS 的频域重建天然敏感。SMAP 和 MSL 数据集大多为二进制事件值,频域表示无法有效描述,FITS 在这两个数据集上表现欠佳。
九、消融实验
| 配置 | 结论 |
|---|---|
| 更长回望窗口(90→720) | 普遍改善性能,更长回望 → 更高频率分辨率 → 更好的频域表示 |
| 更高 COF(2阶→8阶谐波) | 轻微改善,但代价是参数量和 MACs 增加;在复杂数据集(如 Electricity 多周期)更显著 |
| B+F vs 仅 F 监督 | B+F(同时监督回望段)在部分数据集有改善(Table 4 高亮区) |
| 去掉 LPF | 参数量激增(需要更大复数线性层),且容易过拟合 |
ETTh1 特殊现象:回望窗口 L=720 时反而略差于 L=360,作者归因于 ETTh1 存在分布偏移(distribution shift),更长的回望窗口引入了更多来自偏移分布的历史信息,反而干扰预测。
十、与同类模型横向对比
| 模型 | 核心操作 | 频域利用 | 参数量 | 适合边缘 | 特色 |
|---|---|---|---|---|---|
| Transformer | Self-Attn | 无 | ~14M+ | ✗ | 基线 |
| DLinear | 单层线性(时域) | 无 | ~140K | 勉强 | 简单有效,线性假设 |
| FEDformer | FEB/FEA(频域 Attn) | 核心(FFT) | ~20M | ✗ | 随机频率选取 + 季节-趋势分解 |
| PatchTST | Patch + Transformer | 无 | ~1.5M | ✗ | Patch 编码局部依赖 |
| TimesNet | 2D CNN(FFT 找周期) | 辅助 | ~300M | ✗ | 时序→2D 图像 + CNN |
| FITS | 复数线性插值(频域) | 核心(rFFT) | ~10K | ✓✓ | 同时表达幅度+相位,极简架构 |
十一、局限性与未来方向
| 局限 | 描述 | 可能方向 |
|---|---|---|
| 短回望窗口性能差 | 频率分辨率 = 1/L,L 过小时无法区分相近频率;M4 数据集(回望窗口仅12~36步)性能不佳 | 多尺度频域分析或 Wavelet 混合 |
| 二进制事件数据失效 | SMAP/MSL 主要为开关量,频域无法有效表达;MSE 损失对异常点不敏感 | 混合时域/频域,或对二值信号设计专用表示 |
| 跨通道相关性缺失 | 权重共享意味着各通道独立处理,无法捕获变量间的相互影响 | 频域中的跨通道注意力 |
| 非平稳时序适应性差 | 频域插值假设信号近平稳;若时序的频率特性随时间变化(如趋势突变),预测会出错 | 结合非平稳检测(如 Reversible IN + 残差补偿) |
| 可解释性有限 | 复数权重难以直接解读为物理含义 | 论文提及未来探索 FITS 可解释性 |
思考问题
- [ ] FITS 的复数线性层权重
通过训练学习,能否分析其学到的相位偏移模式是否与数据的真实超前/滞后关系一致?(如电力负荷预测中,早晨高峰领先于交通高峰多少小时?) - [ ] FITS 在频域做插值时假设频率特性在 L 步窗口内平稳。如果在某个时序窗口内,某一频率分量的幅度突然增大(如工厂突然开机),FITS 能在多少步后"感知"到并调整预测?
- [ ] LPF 截止频率按谐波选取(整数倍主频),但真实时序往往有多个不相关的频率分量(如温度的昼夜周期 + 年周期)。如果主频和次主频差距悬殊,按谐波截断可能错误丢弃次主频的有效分量——FITS 是否对此敏感?
- [ ] FITS 只有一个复数线性层,理论上只能做频域的线性变换。而实际时序往往有非线性特征(如幅度调制 AM 信号)。FITS 在这类场景下的理论上限是什么?叠加多层是否能打破这一限制?
- [ ] FITS 在 SMD(服务器机器数据集)上取得 99.95% F1,近乎完美。这背后的物理直觉是什么?服务器异常(如内存泄漏、CPU 抢占)会如何体现在频谱上?是幅度突增还是新频率成分出现?
- [ ] 对比 FITS 和 FEDformer:两者都在频域操作,FITS 只用 10K 参数,FEDformer 用 20M 参数,但在很多数据集上 FITS 更好。FEDformer 的 MOEDecomp + 编解码器结构是否过度复杂化了一个本质上简单的频域插值问题?
关联笔记
- [[FEDformer-深度学习笔记]] — 同为频域时序模型,但 FEDformer 用随机频率子集做注意力,FITS 用全部低频做线性插值;FEDformer 20M 参数 vs FITS 10K 参数
- [[Autoformer-深度学习笔记]] — Autoformer 的季节-趋势分解思路 vs FITS 的频域整体插值思路
- ![[FITS.pdf#page=1|FITS 原论文]]