什么是 T-SVD?
T-SVD(Tensor Singular Value Decomposition)是针对三维张量的一种奇异值分解方法,类似于我们熟悉的矩阵的 SVD(奇异值分解)。T-SVD 是基于 t-product 的分解,可以将张量分解为三个部分:正交张量、对角张量和另一个正交张量。它在信号处理、图像修复、视频分析等多维数据处理中非常有用。
1. 准备:张量和 T-SVD 的分解目标
设 A ∈ R n 1 × n 2 × n 3 \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 ∈ R n 1 × n 1 × n 3 \mathcal{U} \in \mathbb{R}^{n_1 \times n_1 \times n_3} U∈Rn1×n1×n3 :一个正交张量;
- V ∈ R n 2 × n 2 × n 3 \mathcal{V} \in \mathbb{R}^{n_2 \times n_2 \times n_3} V∈Rn2×n2×n3 :另一个正交张量;
- S ∈ R n 1 × n 2 × n 3 \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}}_k A^k 是一个普通的矩阵。对每个切片执行矩阵的 SVD:
A ^ k = U ^ k ⋅ S ^ k ⋅ V ^ k ⊤ , k = 1 , 2 , … , n 3 , \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 ∈ R n 1 × n 1 \hat{\mathbf{U}}_k \in \mathbb{R}^{n_1 \times n_1} U^k∈Rn1×n1 :左奇异向量矩阵;
- S ^ k ∈ R n 1 × n 2 \hat{\mathbf{S}}_k \in \mathbb{R}^{n_1 \times n_2} S^k∈Rn1×n2 :奇异值矩阵,对角线元素是奇异值;
- V ^ k ∈ R n 2 × n 2 \hat{\mathbf{V}}_k \in \mathbb{R}^{n_2 \times n_2} V^k∈Rn2×n2 :右奇异向量矩阵。
(3) 组合张量
将所有的 U ^ k 、 S ^ k 、 V ^ k \hat{\mathbf{U}}_k 、 \hat{\mathbf{S}}_k 、 \hat{\mathbf{V}}_k U^k、S^k、V^k 组合起来,得到:
U ^ = [ U ^ 1 , U ^ 2 , … , U ^ n 3 ] , S ^ = [ S ^ 1 , S ^ 2 , … , S ^ n 3 ] , V ^ = [ V ^ 1 , V ^ 2 , … , V ^ n 3 ] . \hat{\mathcal{U}} = [\hat{\mathbf{U}}_1, \hat{\mathbf{U}}_2, \dots, \hat{\mathbf{U}}_{n_3}], \quad \hat{\mathcal{S}} = [\hat{\mathbf{S}}_1, \hat{\mathbf{S}}_2, \dots, \hat{\mathbf{S}}_{n_3}], \quad \hat{\mathcal{V}} = [\hat{\mathbf{V}}_1, \hat{\mathbf{V}}_2, \dots, \hat{\mathbf{V}}_{n_3}]. U^=[U^1,U^2,…,U^n3],S^=[S^1,S^2,…,S^n3],V^=[V^1,V^2,…,V^n3].
这些是频域中的分解结果。
(4) 逆傅里叶变换
将频域的张量 U ^ 、 S ^ 、 V ^ \hat{\mathcal{U}} 、 \hat{\mathcal{S}} 、 \hat{\mathcal{V}} U^、S^、V^ 通过逆傅里叶变换(IFFT)转换回原域:
U = ifft ( U ^ , dim = 3 ) , S = ifft ( S ^ , dim = 3 ) , V = ifft ( V ^ , dim = 3 ) . \mathcal{U} = \text{ifft}(\hat{\mathcal{U}}, \text{dim}=3), \quad \mathcal{S} = \text{ifft}(\hat{\mathcal{S}}, \text{dim}=3), \quad \mathcal{V} = \text{ifft}(\hat{\mathcal{V}}, \text{dim}=3). U=ifft(U^,dim=3),S=ifft(S^,dim=3),V=ifft(V^,dim=3).
最终得到:
A = U ∗ S ∗ V ⊤ . \mathcal{A} = \mathcal{U} * \mathcal{S} * \mathcal{V}^\top. A=U∗S∗V⊤.
3. T-SVD 的公式总结
完整的 T-SVD 过程可以表示为:
A = ifft ( fft ( A , dim = 3 ) ∣ k = 1 n 3 ) , \mathcal{A} = \text{ifft} \Big( \text{fft}(\mathcal{A}, \text{dim}=3) \Big|_{k=1}^{n_3} \Big), A=ifft(fft(A,dim=3) k=1n3),
其中对每个切片执行矩阵 SVD。
4. 直观理解
-
SVD 类比:
对于矩阵 A \mathbf{A} A ,我们可以写成 A = U S V ⊤ \mathbf{A} = \mathbf{U} \mathbf{S} \mathbf{V}^\top A=USV⊤ 。对于张量 A \mathcal{A} A ,T-SVD 把这个过程扩展到了三维,同时保留了张量的结构。
-
分解的意义:
- U \mathcal{U} U :描述了张量的“左正交特性”;
- S \mathcal{S} S :表示张量的“奇异值”;
- V ⊤ \mathcal{V}^\top V⊤ :描述了张量的“右正交特性”。
-
循环模式:
T-SVD 的核心利用了 t-product 和 FFT,使得分解可以保留张量的 循环模式,这是它比普通矩阵 SVD 更强大的地方。
5. 应用场景
- **多维数据压缩:**T-SVD 可以用于压缩视频数据或多通道信号,通过截断奇异值达到降维效果。
- **图像修复:**利用 T-SVD 的低秩分解,修复缺失的张量数据(例如缺失的图像或视频帧)。
- **机器学习:**在深度学习中,T-SVD 被用于处理张量形式的数据,例如卷积核的分解。
Proof of T-SVD
1. 目标与前提
-
本证明是通过构造法来进行的。
-
假设条件: ( F n 3 ⊗ I n 1 ) ⋅ b c i r c ( A ) ⋅ ( F n 3 − 1 ⊗ I n 2 ) = A ˉ (F_{n3} \otimes I_{n1})\cdot bcirc(\mathcal{A}) \cdot (F_{n3}^{-1} \otimes I_{n2}) = \bar{A} (Fn3⊗In1)⋅bcirc(A)⋅(Fn3−1⊗In2)=Aˉ 成立,且 A ˉ ( i ) \bar{A}^{(i)} Aˉ(i) 满足性质:
{ A ˉ ( 1 ) ∈ R n 1 × n 2 , conj ( A ˉ ( i ) ) = A ˉ ( n 3 − i + 2 ) , i = 2 , … , ⌊ n 3 + 1 2 ⌋ . \left\{ \begin{aligned} \bar{A}^{(1)} &\in \mathbb{R}^{n_1 \times n_2}, \\ \text{conj}(\bar{A}^{(i)}) &= \bar{A}^{(n_3 - i + 2)}, \quad i = 2, \dots, \left\lfloor \frac{n_3 + 1}{2} \right\rfloor. \end{aligned} \right. ⎩ ⎨ ⎧Aˉ(1)conj(Aˉ(i))∈Rn1×n2,=Aˉ(n3−i+2),i=2,…,⌊2n3+1⌋.
2. 构造 SVD(奇异值分解)
- 对每个张量 A ˉ ( i ) \bar{A}^{(i)} Aˉ(i) 进行奇异值分解 (SVD)。
- 在 i = 1 , … , ⌈ n 3 + 1 2 ⌉ i = 1, \dots, \lceil \frac{n_3 + 1}{2} \rceil i=1,…,⌈2n3+1⌉ 的范围内: A ˉ ( i ) = U ˉ ( i ) S ˉ ( i ) ( V ˉ ( i ) ) ∗ \bar{A}^{(i)} = \bar{U}^{(i)} \bar{S}^{(i)} (\bar{V}^{(i)})^* Aˉ(i)=Uˉ(i)Sˉ(i)(Vˉ(i))∗。
- 这里的 S ˉ ( i ) \bar{S}^{(i)} Sˉ(i) 是实数奇异值矩阵。
3. 对称性质与共轭关系
- 对于
i
=
⌈
n
3
+
1
2
⌉
+
1
,
…
,
n
3
i = \lceil \frac{n_3 + 1}{2} \rceil + 1, \dots, n_3
i=⌈2n3+1⌉+1,…,n3:
- U ˉ ( i ) = conj ( U ˉ ( n 3 − i + 2 ) ) \bar{U}^{(i)} = \text{conj}(\bar{U}^{(n_3 - i + 2)}) Uˉ(i)=conj(Uˉ(n3−i+2))
- S ˉ ( i ) = S ˉ ( n 3 − i + 2 ) \bar{S}^{(i)} = \bar{S}^{(n_3 - i + 2)} Sˉ(i)=Sˉ(n3−i+2)
- V ˉ ( i ) = conj ( V ˉ ( n 3 − i + 2 ) ) \bar{V}^{(i)} = \text{conj}(\bar{V}^{(n_3 - i + 2)}) Vˉ(i)=conj(Vˉ(n3−i+2))
这些对称性质确保了分解的完整性和一致性。
4. 验证 SVD 的完整性
-
可以验证对于 i = ⌈ n 3 + 1 2 ⌉ + 1 , … , n 3 i = \lceil \frac{n_3 + 1}{2} \rceil + 1, \dots, n_3 i=⌈2n3+1⌉+1,…,n3:
A ˉ ( i ) = U ˉ ( i ) S ˉ ( i ) ( V ˉ ( i ) ) ∗ \bar{A}^{(i)} = \bar{U}^{(i)} \bar{S}^{(i)} (\bar{V}^{(i)})^* Aˉ(i)=Uˉ(i)Sˉ(i)(Vˉ(i))∗
-
因此,结合所有分解,可以表示为: A ˉ = U ˉ S ˉ V ˉ ∗ \bar{A} = \bar{U} \bar{S} \bar{V}^* Aˉ=UˉSˉVˉ∗。这是对整个张量的完整 SVD 分解。
5. 构建 bcirc 矩阵
根据 U ˉ , S ˉ , V ˉ \bar{U}, \bar{S}, \bar{V} Uˉ,Sˉ,Vˉ 的构造,以及引理的结果:
- 将 F n 3 − 1 ⊗ I n 1 F_{n_3}^{-1} \otimes I_{n_1} Fn3−1⊗In1 和 F n 3 ⊗ I n 2 F_{n_3} \otimes I_{n_2} Fn3⊗In2 作用于张量的左侧和右侧。
- 这些操作使得分解后的矩阵变成块循环矩阵(block circulant matrices)。
6. 分解形式
最终,可以得到一个形式为:
U ∗ S ∗ V ∗ \mathcal{U} * \mathcal{S} * \mathcal{V}^* U∗S∗V∗
其中, U , S , V \mathcal{U}, \mathcal{S}, \mathcal{V} U,S,V 都是实数张量。
7. 总结
- 证明通过构造张量的 SVD 并使用对称性质,得到张量的完整分解。
- 通过傅里叶变换和块循环矩阵的性质,最终将分解表示为形式 U ∗ S ∗ V ∗ \mathcal{U} * \mathcal{S} * \mathcal{V}^* U∗S∗V∗。