首页 > 其他分享 >【Tensor Computation for Data Analysis】T-SVD(Tensor Singular Value Decomposition)

【Tensor Computation for Data Analysis】T-SVD(Tensor Singular Value Decomposition)

时间:2024-12-19 09:27:20浏览次数:5  
标签:bar Tensor Singular SVD 张量 mathbf mathcal hat

在这里插入图片描述

什么是 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. 直观理解

  1. 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 把这个过程扩展到了三维,同时保留了张量的结构。

  2. 分解的意义:

    • U \mathcal{U} U :描述了张量的“左正交特性”;
    • S \mathcal{S} S :表示张量的“奇异值”;
    • V ⊤ \mathcal{V}^\top V⊤ :描述了张量的“右正交特性”。
  3. 循环模式:
    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∗。

标签:bar,Tensor,Singular,SVD,张量,mathbf,mathcal,hat
From: https://blog.csdn.net/weixin_42932602/article/details/144575348

相关文章

  • TensorRT-LLM 调整和部署 LoRA
    TensorRT-LLM调整和部署LoRANVIDIA开发者计划想要了解有关NIM的更多信息?加入NVIDIA开发者计划,即可免费访问任何基础设施云、数据中心或个人工作站上最多16个GPU上的自托管NVIDIANIM和微服务。加入免费的NVIDIA开发者计划后,您可以随时通过NVIDIAAPI目......
  • 【LLaMa-Factory】训练报错 a Tensor with 8 elements cannot be converted to Scalar
    Q:训练时,报错aTensorwith8elementscannotbeconvertedtoScalarA1:大概率时transformers版本不适配参考https://github.com/hiyouga/LLaMA-Factory/issues/5885A2降低transformers版本我这本来是4.46,后降为4.44版本就能用了pipinstalltransfor......
  • 毕业设计:python车牌识别系统 CNN算法 卷积神经网络网络 深度学习 tensorflow(源码)✅
    python车牌识别系统CNN算法卷积神经网络网络深度学习tensorflow(源码)1、项目介绍技术栈:Python语言、CNN算法、tensorflow和keras、深度学习、opencv、pyqt5图形界面2、项目界面(1)上传图像进行车牌识别1(2)上传图像进行车牌识别2(3)上传图像进行车牌识别3(4)上传视......
  • 关于在虚拟环境中装tensorflow框架跑模型安装了一些库报错问题
    一、问题描述:我用conda安装创建了虚拟环境,然后在环境里安装了numpy、pandas、scikit-learn和tensorflow,但在运行程序是报错如下:ModuleNotFoundErrorTraceback(mostrecentcalllast)CellIn[3],line75fromtensorflow.keras.modelsimportSequential6fromten......
  • 深度学习笔记07-咖啡豆识别(Tensorflow)
      ......
  • 转载:【AI系统】Tensor Core 深度剖析
    TensorCore是用于加速深度学习计算的关键技术,其主要功能是执行神经网络中的矩阵乘法和卷积运算。通过利用混合精度计算和张量核心操作,TensorCore能够在较短的时间内完成大量矩阵运算,从而显著加快神经网络模型的训练和推断过程。具体来说,TensorCore采用半精度(FP16)作为输入......
  • Pytorch学习_03 Tensor(上):基础计算单元
    目录什么是TensorTensor的类型、创建及转换Tensor的类型Tensor的创建直接创建从NumPy中创建创建特殊形式的TensorTensor的转换Tensor的常用操作获取形状矩阵转秩(维度转换)形状变换增减维度小结什么是TensorTensor是深度学习框架中极为基础的概念,也是PyTroch......
  • 转载:【AI系统】Tensor Core 深度剖析
    TensorCore是用于加速深度学习计算的关键技术,其主要功能是执行神经网络中的矩阵乘法和卷积运算。通过利用混合精度计算和张量核心操作,TensorCore能够在较短的时间内完成大量矩阵运算,从而显著加快神经网络模型的训练和推断过程。具体来说,TensorCore采用半精度(FP16)作为输入......
  • 转载:【AI系统】Tensor Core 基本原理
    在英伟达的通用GPU架构中,主要存在三种核心类型:CUDACore、TensorCore以及RTCore。其中,TensorCore扮演着极其关键的角色。TensorCore是针对深度学习和AI工作负载而设计的专用核心,可以实现混合精度计算并加速矩阵运算,尤其擅长处理半精度(FP16)和全精度(FP32)的矩阵乘法和累......
  • 转载:【AI系统】Tensor Core 深度剖析
    TensorCore是用于加速深度学习计算的关键技术,其主要功能是执行神经网络中的矩阵乘法和卷积运算。通过利用混合精度计算和张量核心操作,TensorCore能够在较短的时间内完成大量矩阵运算,从而显著加快神经网络模型的训练和推断过程。具体来说,TensorCore采用半精度(FP16)作为输入......