Skip to content

傅里叶变换在大语言模型(LLM)中的实际应用

一句话回顾

上一篇我们说过:傅里叶变换就是把信号从"逐点看变化"切换到"按频率看成分"。在 LLM 的语境下,你可以把它理解为——把一个 token 序列从"逐位置看内容"切换到"按全局模式/节奏看结构"

img

场景一:直接替代注意力机制——FNet

为什么会想到用它

Transformer 的核心是自注意力(Self-Attention),但它的复杂度是 O(N²),N 是序列长度。当序列变长(比如处理整本书、长对话),注意力计算就成了瓶颈。于是有人想:注意力本质上是在做"让每个位置看到全局信息"的混合操作,有没有更便宜的方式达到类似效果?

它具体做了什么

Google 在 2021 年提出的 FNet,做了一件大胆的事:把 Transformer 中的自注意力层整个换成 FFT。具体来说,对输入矩阵沿着序列长度维度做一次 FFT,再沿着隐藏维度做一次 FFT(二维 FFT),就完成了"token 混合"。

你可以把它想象成:注意力机制是"每个人逐一和所有人握手交换信息",而 FFT 是"所有人同时站到不同的频率通道上广播,每个人自动就接收到了全局信号"。

效果与权衡

Self-AttentionFNet (FFT)
序列混合复杂度O(N²)O(N log N)
GLUE 基准精度100%(基线)~92–97%
训练速度基线快 ~80%(GPU)/ 快 ~70%(TPU)

FNet 用大约 5–8% 的精度损失,换来了显著的速度提升。它证明了一个重要观点:在很多任务中,注意力中"精确的 token-to-token 交互"并不是必须的,全局频域混合就够用了。后续的 GFNet、AFNO 等工作也在视觉 Transformer 中验证了类似思路。


场景二:长序列高效计算——卷积定理的妙用

为什么会想到用它

近年来很多工作尝试用状态空间模型(SSM)全局卷积来替代注意力处理长序列(如 S4、Mamba 的前身 S4D、Hyena 等)。这些模型的核心操作是"对整个序列做一次长卷积",直接在时域做的话复杂度是 O(N²)。

它具体做了什么

还记得卷积定理吗?时域卷积 = 频域逐元素乘法。所以这些模型的实际计算路径是:

输入序列 → FFT → 逐元素乘以卷积核的频谱 → IFFT → 输出

这样就把 O(N²) 的长卷积变成了 O(N log N)。

你可以把它想象成:直接卷积就像拿着一把尺子在序列上一个位置一个位置地滑动测量,而 FFT 方法是"把序列和尺子都投影到频域,一次乘法就搞定了所有位置"。

效果

这是 S4/S4D 等模型能高效处理超长序列(16K、甚至 65K tokens)的关键工程实现手段。没有 FFT 加速,这类模型在实际训练中根本跑不动。


场景三:位置编码中的频率思想

为什么和傅里叶有关

Transformer 原始论文中的正弦位置编码(Sinusoidal Positional Encoding)本身就是傅里叶变换的直系亲属——它用不同频率的正弦/余弦函数来编码每个 token 的位置:

PE(pos, 2i)   = sin(pos / 10000^(2i/d))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d))

每个维度对应一个不同的频率。低维度 = 高频(区分相邻位置),高维度 = 低频(编码全局位置关系)。

你可以把它想象成:位置编码就是对"位置"这个信号做了一次手动的傅里叶分解——把一个一维的位置数字,展开成多个频率通道的正弦波表示。

延伸

RoPE(Rotary Position Embedding,LLaMA/GPT-NeoX 等主流模型使用)进一步发展了这个思路,用复数旋转来编码相对位置,其数学形式和傅里叶变换中的旋转因子 e^{jθ} 完全同源。理解傅里叶变换,是理解现代 LLM 位置编码的前提。


场景四:多模态 LLM 中的音频/语音前端

为什么会想到用它

当 LLM 接入语音能力(如 GPT-4o、Whisper 等),音频信号不能直接喂给模型——你需要先把原始波形转成模型能理解的"特征"。这个过程几乎都离不开 FFT。

它具体做了什么

标准的语音特征提取流程(Mel 频谱 / MFCC):

原始音频 → 分帧 → 加窗 → FFT → 取功率谱 → Mel 滤波器组 → 对数压缩 → 输出特征

FFT 在这里的角色是把每一帧音频从时域波形变成频谱,后续的 Mel 滤波器再把频谱压缩成人耳感知相关的特征。

效果

没有 FFT 这一步,多模态 LLM 就"听不见"——它是语音进入大模型世界的第一道门。Whisper、AudioPaLM、甚至 TTS 模型(如 VITS)的 vocoder 部分,都依赖 FFT/IFFT。


场景五:训练稳定性分析与频域视角

为什么会想到用它

在大模型训练中,有时会出现 loss 震荡、训练不稳定的现象。研究者发现,对模型权重矩阵或梯度做频谱分析(SVD + 频域分析),可以诊断训练是否健康

它具体做了什么

  • 对训练过程中 loss 曲线做 FFT,可以发现是否存在周期性震荡(比如 learning rate schedule 引起的)
  • 对权重矩阵做频谱分析,可以检测是否有"频谱爆炸"(某些频率分量异常增大),这往往是训练崩溃的前兆
  • 一些正则化技术(如频谱归一化 / Spectral Normalization)直接在频域约束权重矩阵的谱范数

这更像是一种诊断和调试工具——就像你用 profiler 分析性能瓶颈一样,频谱分析帮你"看见"训练动态中肉眼看不到的模式。


场景六:频域数据增强与去噪

在视觉-语言模型(VLM)或图像生成模型(如 Stable Diffusion)的训练中,有研究尝试在频域做数据增强

  • 交换两张图片的低频分量(风格迁移的频域版本)
  • 随机扰动高频成分(一种比像素级噪声更"结构化"的增强方式)
  • 在扩散模型的去噪过程中,用频域分析来区分"已去噪的低频结构"和"尚需处理的高频细节"

这些方法利用了一个直觉:低频 ≈ 全局结构/风格,高频 ≈ 局部细节/纹理,在频域操作可以更精准地控制增强的粒度。


总结

应用场景核心作用代表工作
替代注意力机制O(N²) → O(N log N) 的全局 token 混合FNet, GFNet, AFNO
长序列高效卷积利用卷积定理加速 SSM/全局卷积S4, S4D, Hyena
位置编码用多频率正弦波编码位置信息Sinusoidal PE, RoPE
多模态音频前端波形 → 频谱特征,让模型"听得见"Whisper, VITS
训练诊断与正则化频谱视角分析训练稳定性Spectral Norm, loss 频谱分析
频域数据增强在频域精准控制增强粒度频域风格迁移, 扩散模型频域去噪

傅里叶变换在 LLM 中的角色,目前可以概括为:不是绝对核心(那个位置属于注意力机制和梯度下降),但它是一个反复出现的、极其实用的"瑞士军刀"——在需要全局混合、高效计算、频率分解的地方,它几乎总是最自然的选择。

随着模型规模持续增长、序列长度不断突破、多模态融合成为标配,傅里叶变换在 LLM 生态中的存在感只会越来越强,而不是越来越弱。