【张量|LRTC】Low-rank Tensor Completion with a New Tensor Nuclear Norm Induced by Invertible Linear Tran

支持我的工作 🎉

📃亲爱的朋友们,感谢你们一直以来对我的关注和支持!
💪🏻 为了提供更优质的内容和更有趣的创作,我付出了大量的时间和精力。如果你觉得我的内容对你有帮助或带来了欢乐,欢迎你通过打赏支持我的工作!

🫰🏻你的一份打赏不仅是对我工作的认可,更是对我持续创作的巨大动力。无论金额多少,每一份支持都让我倍感鼓舞和感激。

📝有关此篇文章的更多详情请见:论文精读,给我一杯咖啡的支持吧!☕️

🔥再次感谢你们的支持和陪伴!
在这里插入图片描述
在这里插入图片描述

动机+相关工作+实验

LRTC 代码分析及实验结果

阅读笔记

小结与疑问

由可逆线性变换诱导的具有新张量核范数的低秩张量补全

初步分析

一、摘要

这篇论文研究了低秩张量补全问题,旨在从部分观察到的条目中精确恢复低秩张量。模型受到最近提出的基于可逆线性变换的张量-张量乘积(t-product)的启发。通过在满足特定条件的情况下,我们推导出了新的张量管状秩、张量谱范数和张量核范数。利用张量核范数,通过解一个凸规划问题来解决张量补全问题,并在一定的张量非一致性条件下提供了精确恢复的理论界限。实验结果验证了理论结果,图像恢复的应用展示了该方法的优越性。


二、动机

在现代计算技术和存储技术进步的推动下,科学和工程应用中数据的采集、存储和处理变得前所未有的便宜和容易。真实数据通常是多维的,存储在称为张量的多向数组中。然而,张量数据通常是高维的,感兴趣的张量通常是低秩的或近似低秩的。因此,研究低秩张量估计和恢复问题变得越来越重要。这项工作旨在扩展现有的低秩矩阵和张量补全模型和分析,提出一种新的张量核范数,并在图像恢复中展示其应用效果。


三、贡献

  1. 提出新定义:定义了一种基于可逆线性变换的新的张量核范数张量管秩
  2. 理论分析:在满足一定张量非一致性条件下,提供了基于新张量核范数的张量补全问题的精确恢复理论界限。
  3. 扩展性:新模型和结果大大扩展了现有的低秩矩阵和张量补全结果。
  4. 数值验证:通过数值实验验证了理论结果,并展示了新方法在图像恢复中的优越性。

四、方法

  1. 新张量核范数:定义了一种基于 t-product 的张量核范数,并证明了在满足特定条件下,该范数是张量平均秩的凸包。

  2. 张量补全模型:提出了一种基于新张量核范数的张量补全模型,表示为一个凸优化问题【在已知某些投影点的情况下,使得张量 X \mathcal{X} X 的核范数最小(因为已知先验是一般图像具有低秩性)】

    min ⁡ X ∥ X ∥ ∗ s.t. P Ω ( X ) = P Ω ( M ) \min_\mathcal{X} \|\mathcal{X}\|_* \quad \text{s.t.} \quad P_\Omega(\mathcal{X}) = P_\Omega(\mathcal{M}) XminXs.t.PΩ(X)=PΩ(M)

    其中, P Ω P_\Omega PΩ 表示在观测集合上的投影, ∥ X ∥ ∗ \|\mathcal{X}\|_* X 表示张量核范数。

  3. 算法实现:通过交替方向乘子法(ADMM)解决上述凸优化问题。


五、实验

  1. 随机数据补全:验证了在不同的可逆线性变换下,新张量核范数模型的精确恢复能力。
  2. 图像恢复:将张量补全应用于图像恢复,并与现有的低秩矩阵和张量补全方法进行了比较。结果表明,基于离散余弦变换(DCT)的张量核范数方法在大多数情况下表现最佳。

数学模型

1. 新的张量核范数

新提出的张量核范数基于 t-product 定义。t-product的定义如下:

  • 对于张量 A ∈ R n 1 × n 2 × n 3 \mathcal{A} \in \mathbb{R}^{n_1 \times n_2 \times n_3} ARn1×n2×n3 ,其块循环矩阵 bcirc ( A ) ∈ R n 1 n 3 × n 2 n 3 \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 ( n 3 ) ⋯ A ( 2 ) A ( 2 ) A ( 1 ) ⋯ A ( 3 ) ⋮ ⋮ ⋱ ⋮ A ( n 3 ) A ( n 3 − 1 ) ⋯ A ( 1 ) ] \text{bcirc}(\mathcal{A}) = \begin{bmatrix} \mathcal{A}^{(1)} & \mathcal{A}^{(n_3)} & \cdots & \mathcal{A}^{(2)} \\ \mathcal{A}^{(2)} & \mathcal{A}^{(1)} & \cdots & \mathcal{A}^{(3)} \\ \vdots & \vdots & \ddots & \vdots \\ \mathcal{A}^{(n_3)} & \mathcal{A}^{(n_3-1)} & \cdots & \mathcal{A}^{(1)} \end{bmatrix} bcirc(A)= A(1)A(2)A(n3)A(n3)A(1)A(n31)A(2)A(3)A(1)

  • t-product 定义为:

    C = A ∗ B = fold ( bcirc ( A ) ⋅ unfold ( B ) ) \mathcal{C} = \mathcal{A} * \mathcal{B} = \text{fold}(\text{bcirc}(\mathcal{A}) \cdot \text{unfold}(\mathcal{B})) C=AB=fold(bcirc(A)unfold(B))

  • t-product 在张量运算中的作用

    1. 定义多维矩阵的乘法

    • t-product 提供了一种将高维张量之间的乘法转换为矩阵乘法的方法,使得可以利用矩阵运算的性质和工具来处理张量问题。
    • 具体来说,t-product 定义了两张量之间的乘法操作,使得其运算结果也是一个张量。

    2. 保持张量结构

    通过使用 t-product 运算,可以保持张量的多维结构,而不需要将张量展开为矩阵。这对于处理多维数据(如彩色图像和视频等)特别有用,因为可以直接在多维数据的本征结构上进行运算,而不会丢失信息或导致性能下降

    3. 支持高效计算

    t-product 的定义利用了块循环矩阵(block circulant matrix)和离散傅里叶变换(Discrete Fourier Transform, DFT)等工具,这些工具可以高效地实现张量运算。具体操作如下:

    • 块循环矩阵 bcirc ( A ) \text{bcirc}(\mathcal{A}) bcirc(A) :将三维张量转换为一个块循环的矩阵形式。
    • t-product 的计算:通过块循环矩阵的矩阵乘法和展开(unfold)操作实现,使得复杂的张量运算可以在变换域内以较低的计算成本完成。

    4. 促进张量分解和低秩张量估计

    t-product 是张量奇异值分解(t-SVD)的基础,后者是进行低秩张量估计的重要工具。通过 t-product 定义的 t-SVD,可以将张量分解为一系列低秩成分,有助于在多种应用中(如图像恢复、视频修复等)进行低秩张量的估计和完成。

    综上所述,t-product 在张量运算中起到了关键作用,使得在保持张量多维结构的同时,可以高效地进行复杂运算,并应用于低秩张量的分解和估计等重要任务。


2. 线性变换诱导的 t-product

论文引入了一种基于任意可逆线性变换 L 的 t-product 定义:

  • 对于张量 A ∈ R n 1 × n 2 × n 3 \mathcal{A} \in \mathbb{R}^{n_1 \times n_2 \times n_3} ARn1×n2×n3定义其变换 A ′ \mathcal{A}^{\prime} A A \mathcal{A} A 在第 3 3 3 维上的线性变换:

    A ′ = L ( A ) = A × 3 L \mathcal{A}^{\prime} = L(\mathcal{A}) = \mathcal{A} \times_3 L A=L(A)=A×3L

  • t-product 定义为:

    C = A ∗ L B 其中 L ( C ) = L ( A ) ⋅ L ( B ) \mathcal{C} = \mathcal{A} *_{L} \mathcal{B} \quad \text{其中} \quad L(\mathcal{C}) = L(\mathcal{A}) \cdot L(\mathcal{B}) C=ALB其中L(C)=L(A)L(B)

  • 为什么要用线性变化诱导?

    1. 提供通用框架

    线性变换诱导的 t-product 提供了一个更通用的框架,适用于各种不同类型的张量数据。通过选择适当的线性变换 L L L可以更灵活地处理不同结构和性质的张量数据。例如,可以根据应用需要选择离散傅里叶变换(DFT)、离散余弦变换(DCT)或随机正交矩阵(ROM)等不同的线性变换。

    2. 增强计算效率

    在某些情况下,特定的线性变换(如 DFT)可以将复杂的张量运算转化为更简单的矩阵运算,从而大大提高计算效率。通过将张量数据转换到频域或其他适合的变换域,可以利用高效的矩阵算法进行运算,减少计算成本。

    3. 保持张量结构

    线性变换诱导的 t-product 允许在不展开张量的情况下进行张量运算,保持了张量的多维结构。这对于多维数据(如彩色图像和视频)非常重要,因为展开操作可能导致信息丢失或性能下降。保持张量的本征结构有助于在保留原始数据特性的同时进行有效的处理和分析。

    4. 提供更好的理论保证

    线性变换诱导的 t-product 可以在理论上提供更好的恢复保证。在张量完成问题中,通过引入特定的线性变换,可以证明在一定的条件下可以精确恢复低秩张量。具体来说,论文中的理论结果表明,在满足张量不相干性条件下,可以通过凸优化模型精确恢复低秩张量。

    5. 支持多种应用

    线性变换诱导的 t-product 框架适用于多种实际应用,包括图像恢复、视频修复、信号处理和数据挖掘等。通过选择合适的线性变换,可以在不同的应用场景中获得更好的性能和结果。

    综上所述,使用线性变换诱导的 t-product 提供了更灵活、高效和理论上有保证的张量运算方法,适用于广泛的应用场景。


3. 新的张量核范数

在满足一定条件的情况下,定义了新的张量核范数 ∥ A ∥ ∗ \| \mathcal{A} \|_{*} A 为:

∥ A ∥ ∗ = 1 ℓ ∥ A ′ ∥ ∗ \| \mathcal{A} \|_{*} = \frac{1}{\ell} \| \mathcal{A}^{\prime} \|_{*} A=1A

其中 ℓ \ell 是常数, ∥ A ′ ∥ ∗ \| \mathcal{A}^{\prime} \|_{*} A A ′ \mathcal{A}^{\prime} A 的核范数。

  • 张量核范数(Tensor Nuclear Norm, TNN)

    张量核范数是通过将张量展开成矩阵形式,然后计算这些矩阵的核范数来定义的。具体来说,对于一个三维张量 X ∈ R n 1 × n 2 × n 3 \mathcal{X} \in \mathbb{R}^{n_1 \times n_2 \times n_3} XRn1×n2×n3,其张量核范数的定义步骤如下:

    1. 张量展开

      • 将张量 X \mathcal{X} X 展开成三个模展开矩阵,分别记为 X ( 1 ) ∈ R n 1 × ( n 2 n 3 ) 、 X ( 2 ) ∈ R n 2 × ( n 1 n 3 ) \mathbf{X}_{(1)} \in \mathbb{R}^{n_1 \times (n_2 n_3)}、\mathbf{X}_{(2)} \in \mathbb{R}^{n_2 \times (n_1 n_3)} X(1)Rn1×(n2n3)X(2)Rn2×(n1n3) X ( 3 ) ∈ R n 3 × ( n 1 n 2 ) \mathbf{X}_{(3)} \in \mathbb{R}^{n_3 \times (n_1 n_2)} X(3)Rn3×(n1n2)
    2. 矩阵核范数计算

      • 计算这些展开矩阵的核范数,核范数定义为矩阵的奇异值之和,即:

        ∥ X ( i ) ∥ ∗ = ∑ j σ j ( X ( i ) ) , \|\mathbf{X}_{(i)}\|_* = \sum_j \sigma_j(\mathbf{X}_{(i)}), X(i)=jσj(X(i)),

        其中 σ j ( X ( i ) ) \sigma_j(\mathbf{X}{(i)}) σj(X(i)) 是矩阵 X ( i ) \mathbf{X}{(i)} X(i) 的第 j j j 个奇异值。

    3. 张量核范数

      • 将所有展开矩阵的核范数求和,得到张量的核范数:

        ∥ X ∥ T N N = ∥ X ( 1 ) ∥ ∗ + ∥ X ( 2 ) ∥ ∗ + ∥ X ( 3 ) ∥ ∗ . \|\mathcal{X}\|_{TNN} = \|\mathbf{X}_{(1)}\|_* + \|\mathbf{X}_{(2)}\|_* + \|\mathbf{X}_{(3)}\|_*. XTNN=X(1)+X(2)+X(3).

    这种方法的优点是可以利用成熟的矩阵奇异值分解技术来计算,但在处理高维张量时计算开销较大。

  • 傅里叶变换核范数(Fourier Transform Nuclear Norm)

    傅里叶变换核范数是一种更现代的方法,它通过在傅里叶变换域中处理张量,计算其核范数。其具体步骤如下:

    1. 张量傅里叶变换

      • 对张量 X ∈ R n 1 × n 2 × n 3 \mathcal{X} \in \mathbb{R}^{n_1 \times n_2 \times n_3} XRn1×n2×n3 进行离散傅里叶变换(DFT),得到傅里叶变换张量 X ^ ∈ C n 1 × n 2 × n 3 \hat{\mathcal{X}} \in \mathbb{C}^{n_1 \times n_2 \times n_3} X^Cn1×n2×n3。傅里叶变换通常在第三维度上进行,即:

        X ^ = DFT ( X , axis = 3 ) . \hat{\mathcal{X}} = \text{DFT}(\mathcal{X}, \text{axis}=3). X^=DFT(X,axis=3).

    2. 傅里叶域展开矩阵

      • 在傅里叶域中,将变换后的张量 X ^ \hat{\mathcal{X}} X^ 展开成多个矩阵 X ^ ( i ) \hat{\mathbf{X}}^{(i)} X^(i),每个矩阵对应傅里叶变换后的每一个频率分量 i i i
    3. 傅里叶域核范数计算

      • 计算这些展开矩阵的核范数,即:

        ∥ X ^ ( i ) ∥ ∗ = ∑ j σ j ( X ^ ( i ) ) , \|\hat{\mathbf{X}}^{(i)}\|_* = \sum_j \sigma_j(\hat{\mathbf{X}}^{(i)}), X^(i)=jσj(X^(i)),

    4. 傅里叶变换核范数

      • 将傅里叶域中所有矩阵的核范数求和,得到张量的傅里叶变换核范数:

        ∥ X ∥ F T N N = ∑ i ∥ X ^ ( i ) ∥ ∗ . \|\mathcal{X}\|_{FTNN} = \sum_{i} \|\hat{\mathbf{X}}^{(i)}\|_*. XFTNN=iX^(i).

    这种方法的优势在于利用傅里叶变换的特性,可以在频域中更有效地处理张量的数据结构,尤其是在某些周期性或频率成分明显的应用中。

    综上所述,TNN和FTNN都是重要的张量核范数方法,它们在不同的应用场景中各有优势。选择适当的核范数需要考虑具体应用的需求和数据的特性。


6. 张量完成的优化模型

基于新的张量核范数,提出了如下凸优化问题来解决低秩张量完成问题:

min ⁡ X ∥ X ∥ ∗ , s.t. P Ω ( X ) = P Ω ( M ) \min_{\mathcal{X}} \| \mathcal{X} \|_{*}, \quad \text{s.t.} \quad P_{\Omega}(\mathcal{X}) = P_{\Omega}(\mathcal{M}) XminX,s.t.PΩ(X)=PΩ(M)

其中 P Ω ( X ) P_{\Omega}(\mathcal{X}) PΩ(X) 表示 X \mathcal{X} X 在观测集 Ω \Omega Ω 上的投影。


7. 理论保证与实验验证

论文提供了在一定条件下通过上述优化模型能够精确恢复低秩张量的理论保证,并通过数值实验验证了该方法在合成数据和图像恢复上的有效性。


提出的算法

Algorithm 1 Transform L based t-product

输入:

  • 张量 A ∈ R n 1 × n 2 × n 3 \mathcal{A} \in \mathbb{R}^{n_1 \times n_2 \times n_3} ARn1×n2×n3
  • 张量 B ∈ R n 2 × l × n 3 \mathcal{B} \in \mathbb{R}^{n_2 \times l \times n_3} BRn2×l×n3
  • 线性变换 L : R n 1 × n 2 × n 3 → R n 1 × n 2 × n 3 L : \mathbb{R}^{n_1 \times n_2 \times n_3} \rightarrow \mathbb{R}^{n_1 \times n_2 \times n_3} L:Rn1×n2×n3Rn1×n2×n3

输出:

  • 张量 C = A ∗ L B ∈ R n 1 × l × n 3 \mathcal{C} = \mathcal{A} *_{L} \mathcal{B} \in \mathbb{R}^{n_1 \times l \times n_3} C=ALBRn1×l×n3

步骤:

  1. 计算 A ‾ = L ( A ) \overline{\mathcal{A}} = L(\mathcal{A}) A=L(A) B ‾ = L ( B ) \overline{\mathcal{B}} = L(\mathcal{B}) B=L(B)
    • 分别对张量 A \mathcal{A} A B \mathcal{B} B 应用线性变换 L L L
  2. 通过下式计算每个前切片的 C ‾ \overline{\mathcal{C}} C
    • 对于 i = 1 , ⋯   , n 3 : i = 1, \cdots, n_3 : i=1,,n3:

      C ‾ ( i ) = A ‾ ( i ) B ‾ ( i ) \overline{C}^{(i)} = \overline{A}^{(i)} \overline{B}^{(i)} C(i)=A(i)B(i)

      • 计算 A ‾ \overline{\mathcal{A}} A B ‾ \overline{\mathcal{B}} B 的第 i i i 个前切片的乘积。
  3. 计算 C = L − 1 ( C ‾ ) \mathcal{C} = L^{-1}(\overline{\mathcal{C}}) C=L1(C)
    • C ‾ \overline{\mathcal{C}} C 应用线性变换的逆变换 L − 1 L^{-1} L1 ,得到最终的结果张量 C \mathcal{C} C

解释:

  • 步骤1:使用给定的线性变换 L L L 对输入张量 A \mathcal{A} A B \mathcal{B} B 进行变换。
  • 步骤2:计算变换后的张量 A ‾ \overline{\mathcal{A}} A B ‾ \overline{\mathcal{B}} B 的每个前切片的乘积,生成 C ‾ \overline{\mathcal{C}} C 的前切片。
  • 步骤3:对分解后的张量应用逆线性变换 L − 1 L^{-1} L1 ,得到原始张量的乘积结果 C \mathcal{C} C

Algorithm 2 T-SVD based on t − p r o d u c t ∗ L t-product_{∗L} tproductL

输入:

  • 张量 A ∈ R n 1 × n 2 × n 3 \mathcal{A} \in \mathbb{R}^{n_1 \times n_2 \times n_3} ARn1×n2×n3
  • 可逆的线性变换 L L L

输出:

  • 张量 A \mathcal{A} A T − S V D T-SVD TSVD 分解成分 U , S , V \mathcal{U}, \mathcal{S}, \mathcal{V} U,S,V

步骤:

  1. 计算 A ‾ = L ( A ) \overline{\mathcal{A}} = L(\mathcal{A}) A=L(A)
    • 对张量 A \mathcal{A} A 应用线性变换 L L L
  2. A ‾ \overline{\mathcal{A}} A 计算每个前切片的 U ‾ , S ‾ , V ‾ \overline{\mathcal{U}}, \overline{\mathcal{S}}, \overline{\mathcal{V}} U,S,V
    • 对于 i = 1 , ⋯   , n 3 i = 1, \cdots, n_3 i=1,,n3 :

      [ U ‾ ( i ) , S ‾ ( i ) , V ‾ ( i ) ] = SVD ( A ‾ ( i ) ) [\overline{U}^{(i)}, \overline{S}^{(i)}, \overline{V}^{(i)}] = \text{SVD}(\overline{A}^{(i)}) [U(i),S(i),V(i)]=SVD(A(i))

      • A ‾ \overline{\mathcal{A}} A 的第 i i i 个前切片执行奇异值分解(SVD),得到对应的 U ‾ ( i ) \overline{U}^{(i)} U(i), S ‾ ( i ) , V ‾ ( i ) \overline{S}^{(i)}, \overline{V}^{(i)} S(i),V(i)
  3. 计算 U = L − 1 ( U ‾ ) , S = L − 1 ( S ‾ ) , V = L − 1 ( V ‾ ) \mathcal{U} = L^{-1}(\overline{\mathcal{U}}), \mathcal{S} = L^{-1}(\overline{\mathcal{S}}), \mathcal{V} = L^{-1}(\overline{\mathcal{V}}) U=L1(U),S=L1(S),V=L1(V)
    • U ‾ , S ‾ , V ‾ \overline{\mathcal{U}}, \overline{\mathcal{S}}, \overline{\mathcal{V}} U,S,V 应用线性变换的逆变换 L − 1 L^{-1} L1 ,得到原始张量 A \mathcal{A} A 的 T-SVD 分解成分 U , S , V \mathcal{U}, \mathcal{S}, \mathcal{V} U,S,V

解释:

  • 步骤1:使用给定的线性变换 L L L 对输入张量 A \mathcal{A} A 进行变换。
  • 步骤2:使用奇异值分解(SVD)分解变换后的张量 A ‾ \overline{\mathcal{A}} A 的每个前切片,生成 U ‾ , S ‾ , V ‾ \overline{\mathcal{U}}, \overline{\mathcal{S}}, \overline{\mathcal{V}} U,S,V 的前切片。
  • 步骤3:对分解后的张量应用逆线性变换 L − 1 L^{-1} L1 ,得到原始张量的 T-SVD 分解成分 U , \mathcal{U}, U, S , V \mathcal{S}, \mathcal{V} S,V
低秩张量补全是一种用于填补缺失数据的方法,它基于低秩矩阵分解的思想。下面是一个简单的Python代码示例,用于实现低秩张量补全: ```python import numpy as np from scipy.linalg import svd def tensor_completion(tensor, rank): # 将张量转换为矩阵形式 matrix = tensor.reshape(tensor.shape[0], -1) # 对矩阵进行奇异值分解 U, S, V = svd(matrix, full_matrices=False) # 保留前rank个奇异值 U = U[:, :rank] S = np.diag(S[:rank]) V = V[:rank, :] # 重构矩阵 matrix_reconstructed = U @ S @ V # 将矩阵转换回张量形式 tensor_reconstructed = matrix_reconstructed.reshape(tensor.shape) return tensor_reconstructed # 示例用法 # 创建一个3维张量 tensor = np.random.rand(3, 4, 5) # 随机遮挡一些元素作为缺失数据 mask = np.random.choice([True, False], size=tensor.shape, p=[0.2, 0.8]) tensor_incomplete = np.where(mask, tensor, np.nan) # 使用低秩张量补全方法填补缺失数据 rank = 2 tensor_completed = tensor_completion(tensor_incomplete, rank) print("原始张量:") print(tensor) print("\n缺失数据的张量:") print(tensor_incomplete) print("\n补全后的张量:") print(tensor_completed) ``` 这段代码使用了NumPy库和SciPy库中的svd函数来进行奇异值分解。首先,将输入的3维张量转换为2维矩阵,然后对矩阵进行奇异值分解。根据指定的低秩(rank)参数,保留前rank个奇异值,并重构矩阵。最后,将重构后的矩阵转换回原始的3维张量形式,并返回补全后的张量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FOUR_A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值