张量奇异值分解(t-SVD):从矩阵SVD到张量t-SVD的全面推导
引言
奇异值分解(Singular Value Decomposition, SVD)是矩阵分解中最核心的工具之一,它将一个矩阵分解为左奇异向量、奇异值对角矩阵和右奇异向量三部分的乘积。然而,当我们面对三维甚至更高维的数据(如视频序列、多通道医学影像、多传感器阵列数据等)时,传统的矩阵SVD需要将数据"压扁"成二维矩阵,这个过程不可避免地破坏了数据内在的多维结构信息。
张量奇异值分解(t-SVD)由Kilmer和Martin于2011年提出,它基于张量t-product(张量-张量积)这一新的代数框架,将矩阵SVD的思想推广到了三阶张量。t-SVD能够直接在张量空间中进行分解,保留了数据的高维结构信息。本文将系统地从算法和公式推导的角度讲解t-SVD,并与传统的矩阵SVD进行全面对比。
一、预备知识
1.1 矩阵SVD回顾
对于任意矩阵 A∈Rm×n\mathbf{A} \in \mathbb{R}^{m \times n}A∈Rm×n,其奇异值分解为:
A=UΣVT \mathbf{A} = \mathbf{U} \boldsymbol{\Sigma} \mathbf{V}^T A=UΣVT
其中 U∈Rm×m\mathbf{U} \in \mathbb{R}^{m \times m}U∈Rm×m 和 V∈Rn×n\mathbf{V} \in \mathbb{R}^{n \times n}V∈Rn×n 是正交矩阵(即 UTU=I\mathbf{U}^T\mathbf{U} = \mathbf{I}UTU=I,VTV=I\mathbf{V}^T\mathbf{V} = \mathbf{I}VTV=I),Σ∈Rm×n\boldsymbol{\Sigma} \in \mathbb{R}^{m \times n}Σ∈Rm×n 是一个对角矩阵,其对角线元素 σ1≥σ2≥⋯≥σmin(m,n)≥0\sigma_1 \geq \sigma_2 \geq \dots \geq \sigma_{\min(m,n)} \geq 0σ1≥σ2≥⋯≥σmin(m,n)≥0 称为矩阵的奇异值。
矩阵SVD的核心性质包括:
- 低秩逼近 :截断SVD(保留前 kkk 个最大奇异值)是在Frobenius范数意义下对原矩阵的最优 kkk 秩逼近(Eckart-Young定理)。
- 子空间分解 :U\mathbf{U}U 的列张成列空间,V\mathbf{V}V 的列张成行空间。
1.2 张量的基本概念
张量是多维数组的统称:
- 0阶张量:标量
- 1阶张量:向量
- 2阶张量:矩阵
- 3阶张量:三维数组(可视为"数据立方体")
本文聚焦于三阶张量 A∈Rn1×n2×n3\mathcal{A} \in \mathbb{R}^{n_1 \times n_2 \times n_3}A∈Rn1×n2×n3,其中 n1n_1n1 和 n2n_2n2 为空间维度,n3n_3n3 为第三维度(如时间、通道数等)。
张量的正面切片(frontal slice) 是指固定第三维索引 kkk 后得到的矩阵 A(k)∈Rn1×n2\mathbf{A}^{(k)} \in \mathbb{R}^{n_1 \times n_2}A(k)∈Rn1×n2。张量的管(tube) 是指固定前两个索引 (i,j)(i,j)(i,j) 后得到的向量 aij∈Rn3\mathbf{a}_{ij} \in \mathbb{R}^{n_3}aij∈Rn3。
二、t-product:张量乘法的基石
2.1 为什么需要新的乘法定义
在矩阵世界中,两个矩阵相乘 AB\mathbf{A}\mathbf{B}AB 是定义良好的。但对于三阶张量,标准的张量乘法(如模积)并不能很好地保持与矩阵SVD类似的代数结构。t-product的提出正是为了解决这一问题------它使得三阶张量之间的乘法在代数结构上与矩阵乘法高度相似。
2.2 t-product的定义
设 A∈Rn1×n2×n3\mathcal{A} \in \mathbb{R}^{n_1 \times n_2 \times n_3}A∈Rn1×n2×n3,B∈Rn2×n4×n3\mathcal{B} \in \mathbb{R}^{n_2 \times n_4 \times n_3}B∈Rn2×n4×n3,则 A\mathcal{A}A 与 B\mathcal{B}B 的t-product C=A∗B∈Rn1×n4×n3\mathcal{C} = \mathcal{A} * \mathcal{B} \in \mathbb{R}^{n_1 \times n_4 \times n_3}C=A∗B∈Rn1×n4×n3 定义为:
C(i,j,:)=∑k=1n2A(i,k,:)⊛B(k,j,:) \mathcal{C}(i,j,:) = \sum_{k=1}^{n_2} \mathcal{A}(i,k,:) \circledast \mathcal{B}(k,j,:) C(i,j,:)=k=1∑n2A(i,k,:)⊛B(k,j,:)
其中 ⊛\circledast⊛ 表示管之间的循环卷积(circular convolution)。
这个定义看起来有些抽象,但它的核心思想可以通过块循环矩阵来理解。将张量 A\mathcal{A}A 映射为块循环矩阵 bcirc(A)∈Rn1n3×n2n3\text{bcirc}(\mathcal{A}) \in \mathbb{R}^{n_1 n_3 \times n_2 n_3}bcirc(A)∈Rn1n3×n2n3:
bcirc(A)=A(1)A(n3)A(n3−1)...A(2)A(2)A(1)A(n3)...A(3)⋮⋮⋮⋱⋮A(n3)A(n3−1)A(n3−2)...A(1) \text{bcirc}(\mathcal{A}) = \begin{bmatrix} \mathbf{A}^{(1)} & \mathbf{A}^{(n_3)} & \mathbf{A}^{(n_3-1)} & \dots & \mathbf{A}^{(2)} \\ \mathbf{A}^{(2)} & \mathbf{A}^{(1)} & \mathbf{A}^{(n_3)} & \dots & \mathbf{A}^{(3)} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \mathbf{A}^{(n_3)} & \mathbf{A}^{(n_3-1)} & \mathbf{A}^{(n_3-2)} & \dots & \mathbf{A}^{(1)} \end{bmatrix} bcirc(A)= A(1)A(2)⋮A(n3)A(n3)A(1)⋮A(n3−1)A(n3−1)A(n3)⋮A(n3−2)......⋱...A(2)A(3)⋮A(1)
则t-product等价于块循环矩阵的乘积:
bcirc(A∗B)=bcirc(A)⋅bcirc(B) \text{bcirc}(\mathcal{A} * \mathcal{B}) = \text{bcirc}(\mathcal{A}) \cdot \text{bcirc}(\mathcal{B}) bcirc(A∗B)=bcirc(A)⋅bcirc(B)
2.3 傅里叶域中的t-product
块循环矩阵的一个重要性质是:它可以通过离散傅里叶变换(DFT)被块对角化。具体地:
(Fn3⊗In1)⋅bcirc(A)⋅(Fn3−1⊗In2)=bdiag(A^(1),A^(2),...,A^(n3)) (\mathbf{F}{n_3} \otimes \mathbf{I}{n_1}) \cdot \text{bcirc}(\mathcal{A}) \cdot (\mathbf{F}{n_3}^{-1} \otimes \mathbf{I}{n_2}) = \text{bdiag}(\hat{\mathbf{A}}^{(1)}, \hat{\mathbf{A}}^{(2)}, \dots, \hat{\mathbf{A}}^{(n_3)}) (Fn3⊗In1)⋅bcirc(A)⋅(Fn3−1⊗In2)=bdiag(A^(1),A^(2),...,A^(n3))
其中 Fn3\mathbf{F}_{n_3}Fn3 是 n3×n3n_3 \times n_3n3×n3 的DFT矩阵,⊗\otimes⊗ 表示Kronecker积,A^(k)\hat{\mathbf{A}}^{(k)}A^(k) 是 A\mathcal{A}A 沿第三维做FFT后第 kkk 个正面切片。
这意味着t-product在傅里叶域中退化为逐切片的标准矩阵乘法:
A∗B^(k)=A^(k)⋅B^(k),k=1,2,...,n3 \widehat{\mathcal{A} * \mathcal{B}}^{(k)} = \hat{\mathbf{A}}^{(k)} \cdot \hat{\mathbf{B}}^{(k)}, \quad k = 1, 2, \dots, n_3 A∗B (k)=A^(k)⋅B^(k),k=1,2,...,n3
这一性质是t-SVD高效计算的核心。
三、t-SVD:张量奇异值分解
3.1 t-SVD的数学定义
设 A∈Rn1×n2×n3\mathcal{A} \in \mathbb{R}^{n_1 \times n_2 \times n_3}A∈Rn1×n2×n3 是一个三阶张量,则其张量奇异值分解(t-SVD)为:
A=U∗S∗VT \mathcal{A} = \mathcal{U} * \mathcal{S} * \mathcal{V}^T A=U∗S∗VT
其中:
- U∈Rn1×n1×n3\mathcal{U} \in \mathbb{R}^{n_1 \times n_1 \times n_3}U∈Rn1×n1×n3 是一个正交张量 ,满足 UT∗U=I\mathcal{U}^T * \mathcal{U} = \mathcal{I}UT∗U=I(I\mathcal{I}I 为单位张量)
- V∈Rn2×n2×n3\mathcal{V} \in \mathbb{R}^{n_2 \times n_2 \times n_3}V∈Rn2×n2×n3 是一个正交张量 ,满足 VT∗V=I\mathcal{V}^T * \mathcal{V} = \mathcal{I}VT∗V=I
- S∈Rn1×n2×n3\mathcal{S} \in \mathbb{R}^{n_1 \times n_2 \times n_3}S∈Rn1×n2×n3 是一个f-对角张量 (f-diagonal tensor),即每个正面切片 S(k)\mathbf{S}^{(k)}S(k) 都是对角矩阵
这里的 VT\mathcal{V}^TVT 表示张量转置(类似于矩阵转置,对正面切片进行转置并反转管的顺序)。
3.2 t-SVD的计算算法
t-SVD的计算充分利用了傅里叶变换将t-product转化为矩阵乘法的性质。
算法:t-SVD
输入 :张量 A∈Rn1×n2×n3\mathcal{A} \in \mathbb{R}^{n_1 \times n_2 \times n_3}A∈Rn1×n2×n3
输出 :正交张量 U\mathcal{U}U、f-对角张量 S\mathcal{S}S、正交张量 V\mathcal{V}V
步骤1:沿第三维进行FFT
A^=fft(A,\[\],3) \hat{\mathcal{A}} = \text{fft}(\mathcal{A}, \[\], 3) A^=fft(A,\[\],3)
即对 A\mathcal{A}A 的每一个管(tube)做 n3n_3n3 点快速傅里叶变换。得到频域张量 A^∈Cn1×n2×n3\hat{\mathcal{A}} \in \mathbb{C}^{n_1 \times n_2 \times n_3}A^∈Cn1×n2×n3。
步骤2:对每个正面切片进行矩阵SVD
对于 k=1,2,...,n3k = 1, 2, \dots, n_3k=1,2,...,n3,对频域中的第 kkk 个正面切片 A^(k)∈Cn1×n2\hat{\mathbf{A}}^{(k)} \in \mathbb{C}^{n_1 \times n_2}A^(k)∈Cn1×n2 执行标准矩阵SVD:
A^(k)=U^(k)Σ^(k)(V^(k))H \hat{\mathbf{A}}^{(k)} = \hat{\mathbf{U}}^{(k)} \hat{\boldsymbol{\Sigma}}^{(k)} (\hat{\mathbf{V}}^{(k)})^H A^(k)=U^(k)Σ^(k)(V^(k))H
其中 (⋅)H(\cdot)^H(⋅)H 表示共轭转置。
步骤3:沿第三维进行逆FFT
将频域中分解得到的三个张量变换回时域:
U=ifft(U^,\[\],3),S=ifft(S^,\[\],3),V=ifft(V^,\[\],3) \mathcal{U} = \text{ifft}(\hat{\mathcal{U}}, \[\], 3), \quad \mathcal{S} = \text{ifft}(\hat{\mathcal{S}}, \[\], 3), \quad \mathcal{V} = \text{ifft}(\hat{\mathcal{V}}, \[\], 3) U=ifft(U^,\[\],3),S=ifft(S^,\[\],3),V=ifft(V^,\[\],3)
其中 U^\hat{\mathcal{U}}U^ 的第 kkk 个正面切片为 U^(k)\hat{\mathbf{U}}^{(k)}U^(k),S^\hat{\mathcal{S}}S^ 的第 kkk 个正面切片为 Σ^(k)\hat{\boldsymbol{\Sigma}}^{(k)}Σ^(k),V^\hat{\mathcal{V}}V^ 的第 kkk 个正面切片为 V^(k)\hat{\mathbf{V}}^{(k)}V^(k)。
步骤4(可选) :为保持实数输出,可对共轭对称的切片进行配对处理。
3.3 t-SVD的示意图
从算法流程可以看出,t-SVD的核心思想极其简洁:
"FFT → 逐切片矩阵SVD → IFFT"
这个"三部曲"使得t-SVD的实现非常直观------你只需要一个FFT库和一个矩阵SVD库,就可以实现t-SVD。
3.4 tubal秩(管秩)
与矩阵SVD中"秩"的概念相对应,t-SVD引入了tubal秩(管秩)的概念。
定义 S\mathcal{S}S 中非零管的个数为张量 A\mathcal{A}A 的tubal秩:
ranktubal(A)=#{k:S(k,k,:)≠0} \text{rank}_{\text{tubal}}(\mathcal{A}) = \#\{k : \mathcal{S}(k,k,:) \neq \mathbf{0}\} ranktubal(A)=#{k:S(k,k,:)=0}
直观上,tubal秩衡量的是张量在"管"维度上的有效自由度。对于视频数据,tubal秩反映了帧与帧之间在时间维度上的相关性程度。
与矩阵SVD类似,截断t-SVD(保留前 rrr 个最大的tubal奇异值)是在任何酉不变张量范数意义下对原张量最优的tubal秩 rrr 逼近。
四、矩阵SVD与t-SVD的全面对比
4.1 分解形式对比
| 维度 | 矩阵SVD | t-SVD |
|---|---|---|
| 输入 | 矩阵 A∈Rm×n\mathbf{A} \in \mathbb{R}^{m \times n}A∈Rm×n | 张量 A∈Rn1×n2×n3\mathcal{A} \in \mathbb{R}^{n_1 \times n_2 \times n_3}A∈Rn1×n2×n3 |
| 分解形式 | A=UΣVT\mathbf{A} = \mathbf{U}\boldsymbol{\Sigma}\mathbf{V}^TA=UΣVT | A=U∗S∗VT\mathcal{A} = \mathcal{U} * \mathcal{S} * \mathcal{V}^TA=U∗S∗VT |
| 左因子 | 正交矩阵 U\mathbf{U}U | 正交张量 U\mathcal{U}U |
| 中间因子 | 对角矩阵 Σ\boldsymbol{\Sigma}Σ | f-对角张量 S\mathcal{S}S |
| 右因子 | 正交矩阵 V\mathbf{V}V | 正交张量 V\mathcal{V}V |
| 乘法 | 标准矩阵乘法 | t-product(含循环卷积) |
4.2 秩的定义对比
| 概念 | 矩阵SVD | t-SVD |
|---|---|---|
| 秩的定义 | 非零奇异值的个数 | 非零管的个数(tubal秩) |
| 低秩逼近 | Eckart-Young定理(Frobenius范数最优) | 截断t-SVD对任意酉不变张量范数最优 |
| 物理意义 | 矩阵的行/列空间维度 | 张量在管维度上的有效自由度 |
4.3 计算复杂度对比
设张量尺寸为 n1×n2×n3n_1 \times n_2 \times n_3n1×n2×n3,且 n1≥n2n_1 \geq n_2n1≥n2:
| 方法 | 计算复杂度 | 说明 |
|---|---|---|
| 矩阵SVD(展开后) | O(n1n2n3⋅min(n1n3,n2n3))O(n_1 n_2 n_3 \cdot \min(n_1 n_3, n_2 n_3))O(n1n2n3⋅min(n1n3,n2n3)) | 将张量展开为 (n1n3)×(n2n3)(n_1 n_3) \times (n_2 n_3)(n1n3)×(n2n3) 的矩阵 |
| t-SVD | O(n1n2n3⋅min(n1,n2)+n1n2n3logn3)O(n_1 n_2 n_3 \cdot \min(n_1, n_2) + n_1 n_2 n_3 \log n_3)O(n1n2n3⋅min(n1,n2)+n1n2n3logn3) | 对 n3n_3n3 个 n1×n2n_1 \times n_2n1×n2 切片做SVD,加上FFT开销 |
关键区别在于:矩阵SVD展开后的矩阵尺寸是 (n1n3)×(n2n3)(n_1 n_3) \times (n_2 n_3)(n1n3)×(n2n3),其SVD复杂度为 O(n1n2n32⋅min(n1,n2))O(n_1 n_2 n_3^2 \cdot \min(n_1, n_2))O(n1n2n32⋅min(n1,n2));而t-SVD只需对每个 n1×n2n_1 \times n_2n1×n2 的切片做SVD,复杂度为 O(n1n2n3⋅min(n1,n2))O(n_1 n_2 n_3 \cdot \min(n_1, n_2))O(n1n2n3⋅min(n1,n2))。当 n3n_3n3 较大时,t-SVD的计算优势非常明显。
此外,t-SVD的逐切片SVD可以天然并行化------每个频率切片上的SVD相互独立。
4.4 信息保持对比
| 特性 | 矩阵SVD(展开后) | t-SVD |
|---|---|---|
| 多维结构 | 破坏(压扁为矩阵) | 保持(直接在张量空间操作) |
| 跨维度相关性 | 忽略第三维的结构信息 | 通过t-product保留管维度的循环结构 |
| 物理意义 | 难以解释高维数据的语义 | tubal秩具有明确的物理含义 |
| 适用场景 | 二维数据(图像、表格) | 三维及以上数据(视频、多通道信号) |
4.5 优缺点总结
矩阵SVD的优点:
- 理论成熟,算法稳定
- 实现简单,有大量优化库支持
- 对二维数据效果优异
矩阵SVD的缺点:
- 处理高维数据时需要"压扁",破坏结构信息
- 展开后的矩阵尺寸巨大,内存和计算开销高
- 无法利用第三维(如时间)的天然相关性
t-SVD的优点:
- 直接处理三维张量,保持数据的高维结构
- 计算可并行化,效率高
- tubal秩具有明确的物理意义
- 截断t-SVD具有最优逼近性质
t-SVD的缺点:
- 理论基础相对较新(2011年提出)
- 实现相对复杂(需要FFT和t-product的理解)
- 目前成熟的开源库支持不如矩阵SVD丰富
五、t-SVD在阵列信号处理中的应用展望
在阵列信号处理中,多传感器接收的数据天然具有多维结构。例如:
- 空时处理 :阵元数 ×\times× 快拍数 ×\times× 频点数
- MIMO雷达 :发射阵元 ×\times× 接收阵元 ×\times× 脉冲数
- 多通道信号 :通道数 ×\times× 采样点数 ×\times× 试验次数
传统的处理方法往往将这些三维数据"压扁"为矩阵后使用SVD或其他矩阵分解工具。t-SVD的出现为直接在张量域进行信号处理提供了新的可能。例如,可以利用t-SVD进行:
- 多维信号的降噪与恢复
- 张量数据的低秩逼近与压缩
- 多传感器数据融合
六、总结
本文系统介绍了张量奇异值分解(t-SVD)的数学原理和算法流程,并与传统的矩阵SVD进行了全面对比。
t-SVD的核心思想可以概括为:通过t-product将矩阵SVD的代数结构推广到三阶张量,并利用FFT将t-product转化为逐切片的矩阵乘法,从而实现高效计算。
t-SVD与矩阵SVD的本质区别在于:
- 分解形式 :从 UΣVT\mathbf{U}\boldsymbol{\Sigma}\mathbf{V}^TUΣVT 推广到 U∗S∗VT\mathcal{U} * \mathcal{S} * \mathcal{V}^TU∗S∗VT
- 乘法运算:从标准矩阵乘法推广到t-product(含循环卷积)
- 秩的概念:从矩阵秩推广到tubal秩
- 数据结构:从破坏多维结构到保持多维结构
随着高维数据(视频、多通道信号、医学影像等)的普及,t-SVD作为一种能够直接处理三维张量的分解工具,正在信号处理、计算机视觉、机器学习等领域展现出越来越重要的价值。理解t-SVD不仅有助于掌握这一具体算法,更能帮助读者建立从矩阵思维到张量思维的跨越。