⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议。
Skip to content

1.2 傅里叶变换与频谱分析

核心问题: 傅里叶变换是什么?为什么它这么重要?

在线 Notebook

对应的交互式版本可在 Google Colab 打开,统一使用方式见 第0章说明


傅里叶变换的直观理解

核心思想

很多信号都可以分解为不同频率正弦波的叠加。

x(t)=kAksin(2πfkt+ϕk)

其中:

  • Ak:第k个正弦波的幅度
  • fk:第k个正弦波的频率
  • ϕk:第k个正弦波的相位

为什么这很重要

  1. 分解复杂信号:把复杂信号分解成简单的正弦波
  2. 找出规律:看哪些频率成分强,哪些弱
  3. 滤波:去掉不想要的频率成分


复数基础回顾

重要提示: 傅里叶变换使用复指数 ej2πft。如果你对复数不熟悉,请先阅读 附录A.3 复数基础

关键概念:

  • 欧拉公式:ejθ=cosθ+jsinθ
  • 复指数 ej2πft 同时编码了信号的幅度和相位
  • 傅里叶变换的结果 X(f) 是复数,包含幅度和相位信息

数学表达

连续傅里叶变换(CFT)

正变换:

X(f)=x(t)ej2πftdt

逆变换:

x(t)=X(f)ej2πftdf

离散傅里叶变换(DFT)

正变换:

X[k]=n=0N1x[n]ej2πkn/N

逆变换:

x[n]=1Nk=0N1X[k]ej2πkn/N

快速傅里叶变换(FFT)

问题: DFT的计算复杂度是 O(N2),对大信号很慢。

解决方案: FFT算法,复杂度降低到 O(NlogN)

实际应用: 工程实现通常用FFT来快速计算DFT。


频谱分析

幅度谱(Magnitude Spectrum)

|X[k]|=Re(X[k])2+Im(X[k])2

含义: 每个频率成分的强度。

相位谱(Phase Spectrum)

X[k]=atan2(Im(X[k]),Re(X[k]))

含义: 每个频率成分的相位。

功率谱(Power Spectrum)

P[k]=|X[k]|2

含义: 每个频率成分的功率(能量)。


重要性质

1. 线性性

F(ax+by)=aF(x)+bF(y)

2. 时移性

F(x(tt0))=ej2πft0X(f)

含义: 时间延迟只改变相位,不改变幅度。

3. 频移性

F(x(t)ej2πf0t)=X(ff0)

含义: 乘以复指数相当于频率平移。

4. 卷积定理

F(xh)=F(x)F(h)

含义: 时域卷积 = 频域乘法。

应用: 用FFT快速计算卷积。


采样定理(Nyquist定理)

问题

连续信号如何用离散样本表示?

答案

对于带限信号,采样频率至少需要达到最高频率的 2 倍。

fs2fmax

为什么

如果采样频率太低,高频成分会被混叠(aliasing)到低频。

例子

原始信号:最高频率 10 kHz
采样频率:20 kHz(满足Nyquist定理)
结果:在理想低通重建等条件下可以恢复原信号

采样频率:15 kHz(不满足)
结果:高频成分混叠,无法重建

实际应用

音频处理

  • CD音质:采样频率44.1 kHz(人耳最高听觉频率约20 kHz)
  • 电话:采样频率8 kHz(人声主要在0-4 kHz)

图像处理

  • 图像压缩:用FFT找出重要的频率成分,丢弃不重要的
  • 图像增强:在频域调整,然后逆变换回时域

这里可以把一维傅里叶变换的思想推广到二维:对于图像,频率不再只沿时间轴变化,而是沿水平和垂直两个空间方向变化,因此二维傅里叶变换描述的是空间频率。进一步地,视频、体数据、阵列观测等更高维信号也可以用同样的思路分解,只是分析的轴从“时间”扩展到了“空间、时间、视角”或其他维度。

1D vs 2D Fourier

图1.2b:从一维到二维傅里叶变换。上行:一维信号及其频谱,频率沿时间轴分布;下行:二维图像及其空间频率谱,频率沿水平和垂直两个空间方向分布。中心亮点为直流分量(DC),周围的亮斑对应图像中的主要空间频率成分。

代码文件: code/ch01_dsp/fourier_2d.py
运行方式: python code/ch01_dsp/fourier_2d.py

通信系统

  • 调制:把信息信号转换到高频
  • 解调:从高频信号中提取信息

本节小结

傅里叶变换的核心,是把复杂信号拆成一组可解释的频率成分。 它让我们从“时域里看到什么”转向“结构由哪些频率组成”,也为后面的位置编码、RoPE 和上下文窗口理解提供了统一视角。


与 LLM 的联系

下面的对照是理解桥梁,不是严格的数学等价。它的作用,是把“频率分解”的直觉迁移到现代 LLM 的表示和建模机制上。

位置编码:用不同频率表示位置

  1. 位置编码的数学原理

    • 傅里叶变换:用正弦波分解信号
    • 位置编码:用正弦波编码位置
    • 两者都在用周期结构表示序列中的位置信息
  2. Sinusoidal 位置编码

    PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
    PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
    • 用不同频率的正弦波编码不同位置信息
    • 这是一种把结构信息编码进向量表示的做法

Positional Encoding

图1.2c:Transformer 位置编码矩阵可视化。不同频率的正弦/余弦波在不同维度上编码位置信息,与傅里叶变换用不同频率分解信号的思想一致。

代码文件: code/ch01_dsp/positional_encoding.py
运行方式: python code/ch01_dsp/positional_encoding.py

启示: 位置信息可以通过周期结构注入到序列表示中。

RoPE:把位置信息写进复数旋转

  1. 复数旋转的数学基础

    • 傅里叶变换使用复指数:ej2πft
    • RoPE 使用复数旋转编码位置
    • 两者都利用了复数旋转的结构性表达
  2. RoPE 的优势

    • 更自然地表达相对位置
    • 外推性较好,可处理更长序列
    • 在现代 LLM 中广泛使用

启示: 位置编码的关键,是把相对位移编码成可计算的几何关系。

频域分析:对应到注意力和多头建模

  1. 注意力权重可类比为关系谱

    • 傅里叶变换:分解信号的频率成分
    • 注意力机制:分解 Token 之间的关系
    • 两者都在做“分解 + 加权汇总”
  2. 多头注意力可类比为多视角分析

    • 傅里叶变换:用多个频率分析信号
    • 多头注意力:用多个“注意力头”分析 Token 关系
    • 两者都强调从多个角度观察同一对象

启示: 多头注意力可以理解为在不同子空间里并行观察关系结构。

卷积定理:对应到局部注意力和效率优化

  1. 时域卷积 = 频域乘法

    • DSP 中的卷积定理:时域卷积可以转成频域乘法
    • LLM 中的注意力:可以看作一种更一般的关系加权
    • 两者都体现了在变换域里重写计算的思路
  2. 局部注意力

    • 类似 DSP 中的窗函数
    • 通过限制范围换取效率
    • 在长序列 LLM 中很常见

启示: 结构约束用于平衡信息保留和计算成本。

采样定理:对应到 Token 密度和上下文窗口

  1. Token 采样与信息保留

    • DSP 中采样频率决定能保留的最高频率
    • LLM 中 Token 数量决定能保留的最长依赖
    • 两者都在讨论“信息密度”的上限
  2. 上下文窗口的限制

    • 类似采样定理中的带宽约束
    • 决定模型能看到多长的历史
    • 也是长上下文扩展的核心瓶颈之一

启示: 上下文窗口需要和计算成本、信息密度一起看。

频率分解:对应到全局语义和局部细节

  1. 低频信息可类比为全局趋势

    • DSP 中的低频:整体趋势
    • LLM 中的全局信息:主题和语义主线
  2. 高频信息可类比为局部变化

    • DSP 中的高频:细节变化
    • LLM 中的局部信息:词汇和语法细节
  3. 多尺度分析

    • DSP 中的小波变换:多尺度分析
    • LLM 中的多层 Transformer:逐层抽象特征

启示: 从粗到细的分层建模,是信号处理和 LLM 表征学习共同的思路。


下一节: 1.3 滤波器与卷积

本教程采用 CC BY-NC-SA 4.0 许可协议