什么是 T-SVD?
T-SVD(Tensor Singular Value Decomposition)是针对三维张量的一种奇异值分解方法,类似于我们熟悉的矩阵的 SVD(奇异值分解)。T-SVD 是基于 t-product 的分解,可以将张量分解为三个部分:正交张量、对角张量和另一个正交张量。它在信号处理、图像修复、视频分析等多维数据处理中非常有用。
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∗V⊤, \mathcal{A} = \mathcal{U} * \mathcal{S} * \mathcal{V}^\top, A=U∗S∗V⊤,
其中:
- U∈Rn1×n1×n3\mathcal{U} \in \mathbb{R}^{n_1 \times n_1 \times n_3}U∈Rn1×n1×n3 :一个正交张量;
- V∈Rn2×n2×n3\mathcal{V} \in \mathbb{R}^{n_2 \times n_2 \times n_3}V∈Rn2×n2×n3 :另一个正交张量;
- S∈Rn1×n2×n3\mathcal{S} \in \mathbb{R}^{n_1 \times n_2 \times n_3}S∈Rn1×n2×n3 :一个对角张量(所有切片中仅主对角线元素非零)。
这里的乘法是基于 t-product 的。
2. T-SVD 的计算步骤
(1) 对张量进行傅里叶变换
和 t-product 一样,T-SVD 的核心思想是先将张量转换到频域,在频域中对每个切片做普通矩阵分解,然后再转换回原域。
-
先对 A\mathcal{A}A 的第三维做快速傅里叶变换(FFT):
A^=fft(A,dim=3), \hat{\mathcal{A}} = \text{fft}(\mathcal{A}, \text{dim}=3), A^=fft(A,dim=3),
结果 A^\hat{\mathcal{A}}A^ 是一个在频域中的张量。
(2) 对每个切片执行矩阵 SVD
在频域中, A^\hat{\mathcal{A}}A^ 的每个切片 A^k\hat{\mathbf{A}}_kA^k 是一个普通的矩阵。对每个切片执行矩阵的 SVD:
A^k=U^k⋅S^k⋅V^k⊤,k=1,2,…,n3, \hat{\mathbf{A}}_k = \hat{\mathbf{U}}_k \cdot \hat{\mathbf{S}}_k \cdot \hat{\mathbf{V}}_k^\top, \quad k = 1, 2, \dots, n_3, A^k=U^k⋅S^k⋅V^k⊤,k=1,2,…,n3,
其中:
- U^k∈Rn1×n1\hat{\mathbf{U}}_k \in \mathbb{R}^{n_1 \times n_1}U^k