【张量|TRPCA】Tensor Robust Principal Component Analysis with A New Tensor Nuclear Norm

支持我的工作 🎉

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

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

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

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

TRPCA 代码分析与实验结果

动机+相关工作+实验

具有新的张量核范数的张量鲁棒主成分分析

初步分析

摘要

本文研究了张量鲁棒主成分分析(TRPCA)问题,目标是精确恢复低秩稀疏成分。本文基于最近提出的 t-product,严格推导了张量谱范数、张量核范数和张量平均秩,并证明了张量核范数是张量平均秩在张量谱范数单位球内的凸包。利用这些新定义,作者提出了一种凸优化方案解决TRPCA问题,并提供了精确恢复的理论保证。数值实验验证了理论结果,并在图像恢复和背景建模问题中展示了方法的有效性。


动机

  • PCA(主成分分析)是数据分析的基础方法,但对大幅度噪声和异常值较为敏感
  • 为此,鲁棒PCA(RPCA)被提出,用以处理矩阵的低秩和稀疏分解
  • 然而,RPCA只能处理二维数据(矩阵),而实际数据通常是多维的(张量),例如彩色图像和视频。将RPCA扩展到张量数据,可以避免信息损失和性能下降。
  • 因此,本文动机是将RPCA扩展到张量数据,利用其多维结构实现更高效的数据分解

贡献

  1. 新张量核范数的定义:提出了一个新的张量核范数及相关张量概念,严格推导了这些定义及其关系,确保其与矩阵情况一致。
  2. 精确恢复保证:理论证明在一定条件下,凸 TRPCA 模型能够精确恢复低秩和稀疏成分。RPCA的理论保证成为本文的特例。
  3. t-SVD 分解和优化方法:提供了t-SVD分解的新证明和更高效的TRPCA求解方法,并通过数值实验验证了这些方法的有效性。

方法

  1. 张量-张量积(t-product):作为张量运算的基础,定义了t-product及相关的张量范数,包括张量谱范数和张量核范数。
  2. 凸优化方案:提出了TRPCA问题的凸优化模型,使用新定义的张量核范数和稀疏约束,通过求解凸优化问题实现低秩和稀疏成分的分解。
  3. 数值实验:通过合成数据和实际数据(如图像和视频)的数值实验,验证了TRPCA模型在恢复精度和计算效率上的优越性。

实验

数值实验部分主要包括:

  1. 合成数据实验:在合成数据上验证 TRPCA 模型的恢复精度和理论结果的一致性。
  2. 图像恢复实验:在图像恢复问题中,比较了 TRPCA 和传统 RPCA 的效果,展示了 TRPCA 在处理多维数据上的优势。
  3. 背景建模实验:在视频背景建模问题中,证明了 TRPCA 模型的实用性和有效性。

数学模型

关键概念和定义

  1. 张量-张量乘积(t-product)
    • 是矩阵-矩阵乘积在张量中的推广。

    • 对于张量 A ∈ R n 1 × n 2 × n 3 \mathbf{A} \in \mathbb{R}^{n_1 \times n_2 \times n_3} ARn1×n2×n3 B ∈ R n 2 × l × n 3 \mathbf{B} \in \mathbb{R}^{n_2 \times l \times n_3} BRn2×l×n3 ,t-product 定义为:

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

    • 这种操作保持了数据的多维结构。

  2. 张量奇异值分解(t-SVD)
    • 扩展了奇异值分解(SVD)的概念到张量。

    • 对于张量 A \mathbf{A} A ,t-SVD 表示为:

      A = U ∗ S ∗ V ∗ \mathbf{A} = \mathbf{U} * \mathbf{S} * \mathbf{V}^* A=USV

    • 这里, U \mathbf{U} U V \mathbf{V} V 是正交张量, S \mathbf{S} S 是一个对角张量。

  3. 张量核范数(TNN)
    • 定义为张量 t-SVD 的奇异值之和。

    • 对于张量 A \mathbf{A} A

      ∥ A ∥ ∗ = ∑ i = 1 r S ( i , i , 1 ) \|\mathbf{A}\|_* = \sum_{i=1}^{r} S(i, i, 1) A=i=1rS(i,i,1)

    • 论文证明了这种范数是在张量谱范数单位球内的张量平均秩的凸包。


TRPCA模型

TRPCA 模型旨在将一个张量 X \mathbf{X} X 分解为低秩张量 L \mathbf{L} L稀疏张量 E \mathbf{E} E

X = L + E \mathbf{X} = \mathbf{L} + \mathbf{E} X=L+E

为了实现这种分解,需要解决以下凸优化问题:

min ⁡ L , E ∥ L ∥ ∗ + λ ∥ E ∥ 1 s.t X = L + E \min_{\mathbf{L}, \mathbf{E}} \|\mathbf{L}\|_* + \lambda \|\mathbf{E}\|_1 \quad \text{s.t} \quad \mathbf{X} = \mathbf{L} + \mathbf{E} L,EminL+λE1s.tX=L+E

其中:

  • ∥ L ∥ ∗ \|\mathbf{L}\|_* L L \mathbf{L} L 的张量核范数。
  • ∥ E ∥ 1 \|\mathbf{E}\|_1 E1 是稀疏张量 E \mathbf{E} E ℓ 1 \ell_1 1-范数。
  • λ \lambda λ 是平衡两个项的参数。

提出的算法

Algorithm 1 Tensor-Tensor Product

这个算法描述了如何计算两个三维张量的乘积。具体步骤如下:

  1. 输入:
    • A ∈ R n 1 × n 2 × n 3 \mathbf{A} \in \mathbb{R}^{n_1 \times n_2 \times n_3} ARn1×n2×n3
    • B ∈ R n 2 × l × n 3 \mathbf{B} \in \mathbb{R}^{n_2 \times l \times n_3} BRn2×l×n3
    • 目标是计算 C = A ∗ B ∈ R n 1 × l × n 3 \mathbf{C} = \mathbf{A} * \mathbf{B} \in \mathbb{R}^{n_1 \times l \times n_3} C=ABRn1×l×n3
  2. 步骤:
    1. 计算张量的傅里叶变换:

      • 计算张量 A \mathbf{A} A B \mathbf{B} B 在第三维度上的傅里叶变换:

        A ˉ = fft ( A , [ ] , 3 ) and B ˉ = fft ( B , [ ] , 3 ) \mathbf{\bar{A}} = \text{fft}(\mathbf{A}, [ ], 3) \quad \text{and} \quad \mathbf{\bar{B}} = \text{fft}(\mathbf{B}, [ ], 3) Aˉ=fft(A,[],3)andBˉ=fft(B,[],3)

    2. 计算张量 C \mathbf{C} C 的每个正面切片:

      • 对每个正面切片 C ˉ ( i ) \mathbf{\bar{C}}^{(i)} Cˉ(i) 执行以下操作:

        C ˉ ( i ) = { A ˉ ( i ) B ˉ ( i ) , i = 1 , … , ⌈ n 3 + 1 2 ⌉ conj ( C ˉ ( n 3 − i + 2 ) ) , i = ⌈ n 3 + 1 2 ⌉ + 1 , … , n 3 \mathbf{\bar{C}}^{(i)} = \begin{cases} \mathbf{\bar{A}}^{(i)} \mathbf{\bar{B}}^{(i)}, & i = 1, \ldots, \left\lceil \frac{n_3 + 1}{2} \right\rceil \\ \text{conj}(\mathbf{\bar{C}}^{(n_3 - i + 2)}), & i = \left\lceil \frac{n_3 + 1}{2} \right\rceil + 1, \ldots, n_3 \end{cases} Cˉ(i)={Aˉ(i)Bˉ(i),conj(Cˉ(n3i+2)),i=1,,2n3+1i=2n3+1+1,,n3

    3. 计算逆傅里叶变换:

      • 计算 C \mathbf{C} C 的逆傅里叶变换以得到最终结果:

        C = ifft ( C ˉ , [ ] , 3 ) \mathbf{C} = \text{ifft}(\mathbf{\bar{C}}, [ ], 3) C=ifft(Cˉ,[],3)

解释

  1. 傅里叶变换:傅里叶变换将张量从时域转换到频域,使得在频域中的乘法操作更加简便和高效。
  2. 正面切片计算:算法通过处理张量的正面切片来执行乘法。这些切片是傅里叶变换后的张量表示。
  3. 复共轭:在频域中,某些切片是通过取另一个切片的复共轭来获得的,以保证计算的对称性和正确性。
  4. 逆傅里叶变换:最终结果通过逆傅里叶变换从频域转换回时域,得到最终的张量乘积结果。

Algorithm 2 T-SVD

这个算法描述了如何对一个三维张量进行奇异值分解。具体步骤如下:

  1. 输入:
    • A ∈ R n 1 × n 2 × n 3 \mathbf{A} \in \mathbb{R}^{n_1 \times n_2 \times n_3} ARn1×n2×n3
    • 目标是计算 A \mathbf{A} A T − S V D T-SVD TSVD 组件: U , S , V \mathbf{U}, \mathbf{S}, \mathbf{V} U,S,V
  2. 步骤:
    1. 计算张量的傅里叶变换:

      • 计算张量 A \mathbf{A} A 在第三维度上的傅里叶变换:

        A ˉ = fft ( A , [ ] , 3 ) \mathbf{\bar{A}} = \text{fft}(\mathbf{A}, [ ], 3) Aˉ=fft(A,[],3)

    2. 计算 A ˉ \mathbf{\bar{A}} Aˉ 的每个正面切片的 SVD:

      • 对每个正面切片 A ˉ ( i ) \mathbf{\bar{A}}^{(i)} Aˉ(i) 执行以下操作:

        [ U ˉ ( i ) , S ˉ ( i ) , V ˉ ( i ) ] = SVD ( A ˉ ( i ) ) [\mathbf{\bar{U}}^{(i)}, \mathbf{\bar{S}}^{(i)}, \mathbf{\bar{V}}^{(i)}] = \text{SVD}(\mathbf{\bar{A}}^{(i)}) [Uˉ(i),Sˉ(i),Vˉ(i)]=SVD(Aˉ(i))

      • 其中, i = 1 , … , ⌈ n 3 + 1 2 ⌉ i = 1, \ldots, \left\lceil \frac{n_3 + 1}{2} \right\rceil i=1,,2n3+1

      • 对于剩余的切片,执行以下操作:

        U ˉ ( i ) = conj ( U ˉ ( n 3 − i + 2 ) ) \mathbf{\bar{U}}^{(i)} = \text{conj}(\mathbf{\bar{U}}^{(n_3 - i + 2)}) Uˉ(i)=conj(Uˉ(n3i+2))

        S ˉ ( i ) = S ˉ ( n 3 − i + 2 ) \mathbf{\bar{S}}^{(i)} = \mathbf{\bar{S}}^{(n_3 - i + 2)} Sˉ(i)=Sˉ(n3i+2)

        V ˉ ( i ) = conj ( V ˉ ( n 3 − i + 2 ) ) \mathbf{\bar{V}}^{(i)} = \text{conj}(\mathbf{\bar{V}}^{(n_3 - i + 2)}) Vˉ(i)=conj(Vˉ(n3i+2))

      • 其中, i = ⌈ n 3 + 1 2 ⌉ + 1 , … , n 3 i = \left\lceil \frac{n_3 + 1}{2} \right\rceil + 1, \ldots, n_3 i=2n3+1+1,,n3

    3. 计算逆傅里叶变换:

      • 计算 U , S , V \mathbf{U}, \mathbf{S}, \mathbf{V} U,S,V 的逆傅里叶变换,以得到最终结果:

        U = ifft ( U ˉ , [ ] , 3 ) \mathbf{U} = \text{ifft}(\mathbf{\bar{U}}, [ ], 3) U=ifft(Uˉ,[],3)

        S = ifft ( S ˉ , [ ] , 3 ) \mathbf{S} = \text{ifft}(\mathbf{\bar{S}}, [ ], 3) S=ifft(Sˉ,[],3)

        V = ifft ( V ˉ , [ ] , 3 ) \mathbf{V} = \text{ifft}(\mathbf{\bar{V}}, [ ], 3) V=ifft(Vˉ,[],3)

解释

  1. 傅里叶变换:傅里叶变换将张量从时域转换到频域,使得在频域中的计算更加简便和高效。
  2. SVD计算:在频域中,对每个正面切片进行奇异值分解(SVD)。对于前一半的切片,直接进行SVD计算;对于后一半的切片,通过前一半的复共轭和对称性来确定。
  3. 复共轭:在频域中,通过取另一个切片的复共轭来获得剩余的切片,以保证计算的对称性和正确性。
  4. 逆傅里叶变换:最终结果通过逆傅里叶变换从频域转换回时域,得到最终的张量奇异值分解结果。

Algorithm 3 Tensor Singular Value Thresholding (t-SVT)

这个算法描述了如何对一个三维张量进行奇异值阈值化处理。具体步骤如下:

  1. 输入:
    • Y ∈ R n 1 × n 2 × n 3 \mathbf{Y} \in \mathbb{R}^{n_1 \times n_2 \times n_3} YRn1×n2×n3
    • 一个阈值 τ > 0 \tau > 0 τ>0
    • 目标是计算张量 Y \mathbf{Y} Y 的奇异值阈值化结果 D τ ( Y ) \mathcal{D}_{\tau}(\mathbf{Y}) Dτ(Y)
  2. 步骤:
    1. 计算张量的傅里叶变换:

      • 计算张量 Y \mathbf{Y} Y 在第三维度上的傅里叶变换:

        Y ˉ = fft ( Y , [ ] , 3 ) \mathbf{\bar{Y}} = \text{fft}(\mathbf{Y}, [ ], 3) Yˉ=fft(Y,[],3)

    2. 对每个正面切片进行矩阵奇异值阈值化(SVT):【就是消除噪声的过程】

      • 对每个正面切片 Y ˉ ( i ) \mathbf{\bar{Y}}^{(i)} Yˉ(i) 执行以下操作:

        [ U , S , V ] = SVD ( Y ˉ ( i ) ) [\mathbf{U}, \mathbf{S}, \mathbf{V}] = \text{SVD}(\mathbf{\bar{Y}}^{(i)}) [U,S,V]=SVD(Yˉ(i))

        W ˉ ( i ) = U ⋅ ( S − τ ) + ⋅ V ∗ \mathbf{\bar{W}}^{(i)} = \mathbf{U} \cdot (\mathbf{S} - \tau)_+ \cdot \mathbf{V}^* Wˉ(i)=U(Sτ)+V

        • 其中 ( S − τ ) + (\mathbf{S} - \tau)_+ (Sτ)+ 表示对 S \mathbf{S} S 中的每个奇异值减去阈值 τ \tau τ ,并将负值置零。
      • 对于剩余的切片,执行以下操作:

        W ˉ ( i ) = conj ( W ˉ ( n 3 − i + 2 ) ) \mathbf{\bar{W}}^{(i)} = \text{conj}(\mathbf{\bar{W}}^{(n_3 - i + 2)}) Wˉ(i)=conj(Wˉ(n3i+2))

      • 其中, i = 1 , … , ⌈ n 3 + 1 2 ⌉ i = 1, \ldots, \left\lceil \frac{n_3 + 1}{2} \right\rceil i=1,,2n3+1 i = ⌈ n 3 + 1 2 ⌉ + 1 , … , n 3 i = \left\lceil \frac{n_3 + 1}{2} \right\rceil + 1, \ldots, n_3 i=2n3+1+1,,n3

    3. 计算逆傅里叶变换:

      • 计算 D τ ( Y ) \mathcal{D}_{\tau}(\mathbf{Y}) Dτ(Y) 的逆傅里叶变换以得到最终结果:

        D τ ( Y ) = ifft ( W ˉ , [ ] , 3 ) \mathcal{D}_{\tau}(\mathbf{Y}) = \text{ifft}(\mathbf{\bar{W}}, [ ], 3) Dτ(Y)=ifft(Wˉ,[],3)

解释

  1. 傅里叶变换:傅里叶变换将张量从时域转换到频域,使得在频域中的计算更加简便和高效。
  2. 奇异值阈值化:在频域中,对每个正面切片进行奇异值分解(SVD)。然后,对奇异值进行阈值化处理,即减去阈值 τ \tau τ 并将负值置零。
  3. 复共轭:对于后半部分的切片,通过前一半的复共轭和对称性来确定,以保证计算的对称性和正确性。
  4. 逆傅里叶变换:最终结果通过逆傅里叶变换从频域转换回时域,得到最终的张量奇异值阈值化结果。

Algorithm 4 Solve (5) by ADMM

这个算法描述了如何使用 ADMM(交替方向乘子法)来求解以下优化问题

min ⁡ L , E ∥ L ∥ ∗ + λ ∥ E ∥ 1 st X = L + E \min_{\mathbf{L}, \mathbf{E}} \|\mathbf{L}\|_* + \lambda \|\mathbf{E}\|_1 \quad \text{st} \quad \mathbf{X} = \mathbf{L} + \mathbf{E} L,EminL+λE1stX=L+E

初始化

在进入迭代过程之前,首先需要初始化一些变量和参数:

  • L 0 = S 0 = Y 0 = 0 \mathbf{L}_0 = \mathbf{S}_0 = \mathbf{Y}_0 = 0 L0=S0=Y0=0 :所有变量初始化为零。
  • ρ = 1.1 \rho = 1.1 ρ=1.1 :一个固定的参数,用于更新乘子
  • μ 0 = 1 e − 3 \mu_0 = 1e-3 μ0=1e3 :初始的乘子参数。
  • μ max ⁡ = 1 e 10 \mu_{\max} = 1e10 μmax=1e10 :乘子参数的上限。
  • ϵ = 1 e − 8 \epsilon = 1e-8 ϵ=1e8 :收敛条件的阈值

迭代过程

算法通过一个循环不断更新变量,直到满足收敛条件。具体步骤如下:

  1. 更新 L k + 1 \mathbf{L}_{k+1} Lk+1

    L k + 1 = arg ⁡ min ⁡ L ∥ L ∥ ∗ + μ k 2 ∥ L + E k − X + Y k μ k ∥ F 2 \mathbf{L}_{k+1} = \arg\min_{\mathbf{L}} \|\mathbf{L}\|_* + \frac{\mu_k}{2} \left\| \mathbf{L} + \mathbf{E}_k - \mathbf{X} + \frac{\mathbf{Y}_k}{\mu_k} \right\|_F^2 Lk+1=argLminL+2μk L+EkX+μkYk F2

    这一步是通过最小化核范数(即矩阵的奇异值之和)和 Frobenius 范数(即矩阵元素平方和的平方根)的组合来更新 L \mathbf{L} L。可以想象成在优化一个带有惩罚项的矩阵,使其更符合我们的数据结构。

  2. 更新 E k + 1 \mathbf{E}_{k+1} Ek+1

    E k + 1 = arg ⁡ min ⁡ E λ ∥ E ∥ 1 + μ k 2 ∥ L k + 1 + E − X + Y k μ k ∥ F 2 \mathbf{E}_{k+1} = \arg\min_{\mathbf{E}} \lambda \|\mathbf{E}\|_1 + \frac{\mu_k}{2} \left\| \mathbf{L}_{k+1} + \mathbf{E} - \mathbf{X} + \frac{\mathbf{Y}_k}{\mu_k} \right\|_F^2 Ek+1=argEminλE1+2μk Lk+1+EX+μkYk F2

    这一步是通过最小化 E \mathbf{E} E ℓ 1 \ell_1 1 范数(即矩阵元素的绝对值之和)和Frobenius范数的组合来更新 E \mathbf{E} E。可以想象成在寻找一个稀疏矩阵 E \mathbf{E} E,使其与 L k + 1 \mathbf{L}_{k+1} Lk+1 X \mathbf{X} X 的差异最小。

  3. 更新 Y k + 1 \mathbf{Y}_{k+1} Yk+1

    Y k + 1 = Y k + μ k ( L k + 1 + E k + 1 − X ) \mathbf{Y}_{k+1} = \mathbf{Y}_k + \mu_k (\mathbf{L}_{k+1} + \mathbf{E}_{k+1} - \mathbf{X}) Yk+1=Yk+μk(Lk+1+Ek+1X)

    这一步是更新乘子 Y \mathbf{Y} Y 的值。可以想象成一种累积误差的调整,使得 L \mathbf{L} L E \mathbf{E} E 更接近于 X \mathbf{X} X

  4. 更新 μ k + 1 \mu_{k+1} μk+1

    μ k + 1 = min ⁡ ( ρ μ k , μ max ⁡ ) \mu_{k+1} = \min(\rho \mu_k, \mu_{\max}) μk+1=min(ρμk,μmax)

    这一步是更新惩罚参数 μ \mu μ,逐步增加其值,使得优化过程更快收敛。

  5. 检查收敛条件:

    ∥ L k + 1 − L k ∥ ∞ ≤ ϵ , ∥ E k + 1 − E k ∥ ∞ ≤ ϵ , ∥ L k + 1 + E k + 1 − X ∥ ∞ ≤ ϵ \|\mathbf{L}_{k+1} - \mathbf{L}_k\|_{\infty} \leq \epsilon, \|\mathbf{E}_{k+1} - \mathbf{E}_k\|_{\infty} \leq \epsilon, \|\mathbf{L}_{k+1} + \mathbf{E}_{k+1} - \mathbf{X}\|_{\infty} \leq \epsilon Lk+1Lkϵ,Ek+1Ekϵ,Lk+1+Ek+1Xϵ

    如果所有这些条件都满足,则算法收敛,循环结束。

  • ADMM 算法

    在交替方向乘子法(ADMM)中,我们通过增广拉格朗日函数来处理约束优化问题。我们从以下增广拉格朗日函数开始:

    L ( L , E , Y ) = ∥ L ∥ ∗ + λ ∥ E ∥ 1 + ⟨ Y , X − L − E ⟩ + μ 2 ∥ X − L − E ∥ F 2 L(\mathbf{L}, \mathbf{E}, \mathbf{Y}) = \|\mathbf{L}\|_* + \lambda \|\mathbf{E}\|_1 + \langle \mathbf{Y}, \mathbf{X} - \mathbf{L} - \mathbf{E} \rangle + \frac{\mu}{2} \|\mathbf{X} - \mathbf{L} - \mathbf{E}\|_F^2 L(L,E,Y)=L+λE1+Y,XLE+2μXLEF2

    分解拉格朗日乘子项:

    ⟨ Y , X − L − E ⟩ = Y T ( X − L − E ) \langle \mathbf{Y}, \mathbf{X} - \mathbf{L} - \mathbf{E} \rangle = \mathbf{Y}^T (\mathbf{X} - \mathbf{L} - \mathbf{E}) Y,XLE=YT(XLE)

    分解增广项:

    μ 2 ∥ X − L − E ∥ F 2 = μ 2 ( X − L − E ) T ( X − L − E ) \frac{\mu}{2} \|\mathbf{X} - \mathbf{L} - \mathbf{E}\|_F^2 = \frac{\mu}{2} (\mathbf{X} - \mathbf{L} - \mathbf{E})^T (\mathbf{X} - \mathbf{L} - \mathbf{E}) 2μXLEF2=2μ(XLE)T(XLE)

    ⇒ μ 2 ( ∥ X ∥ F 2 − 2 X T ( L + E ) + ∥ L + E ∥ F 2 ) \Rightarrow \frac{\mu}{2} (\|\mathbf{X}\|_F^2 - 2 \mathbf{X}^T (\mathbf{L} + \mathbf{E}) + \|\mathbf{L} + \mathbf{E}\|_F^2) 2μ(XF22XT(L+E)+L+EF2)

    结合项:

    L ( L , E , Y ) = ∥ L ∥ ∗ + λ ∥ E ∥ 1 + Y T X − Y T L − Y T E + μ 2 ( ∥ X ∥ F 2 − 2 X T ( L + E ) + ∥ L + E ∥ F 2 ) \begin{aligned} L(\mathbf{L}, \mathbf{E}, \mathbf{Y}) = & \|\mathbf{L}\|_* + \lambda \|\mathbf{E}\|_1 + \mathbf{Y}^T \mathbf{X} - \mathbf{Y}^T \mathbf{L} - \mathbf{Y}^T \mathbf{E} & + \frac{\mu}{2} (\|\mathbf{X}\|_F^2 - 2 \mathbf{X}^T (\mathbf{L} + \mathbf{E}) + \|\mathbf{L} + \mathbf{E}\|_F^2) \end{aligned} L(L,E,Y)=L+λE1+YTXYTLYTE+2μ(XF22XT(L+E)+L+EF2)

    提取常数项:

    Y T X \mathbf{Y}^T \mathbf{X} YTX μ 2 ∥ X ∥ F 2 \frac{\mu}{2} \|\mathbf{X}\|_F^2 2μXF2 是常数项,因为它们不依赖于 L \mathbf{L} L E \mathbf{E} E。所以将这些常数项分离出来,只关注那些与 L \mathbf{L} L E \mathbf{E} E 相关的项:

    L ( L , E , Y ) = ∥ L ∥ ∗ + μ 2 ∥ L ∥ F 2 + μ 2 ∥ E ∥ F 2 + ( μ E − Y − μ X ) T L + 常数项 \begin{aligned} L(\mathbf{L}, \mathbf{E}, \mathbf{Y}) = & \|\mathbf{L}\|_* + \frac{\mu}{2} \|\mathbf{L}\|_F^2 + \frac{\mu}{2} \|\mathbf{E}\|_F^2 & + (\mu \mathbf{E} - \mathbf{Y} - \mu \mathbf{X})^T \mathbf{L} + \text{常数项} \end{aligned} L(L,E,Y)=L+2μLF2+2μEF2+(μEYμX)TL+常数项

    ⇒ L ( L , E , Y ) = ∥ L ∥ ∗ + μ 2 ∥ L ∥ F 2 + ( E − X + Y μ ) T μ L + 常数项 \Rightarrow L(\mathbf{L}, \mathbf{E}, \mathbf{Y}) = \|\mathbf{L}\|_* + \frac{\mu}{2} \|\mathbf{L}\|_F^2 + \left(\mathbf{E} - \mathbf{X} + \frac{\mathbf{Y}}{\mu}\right)^T \mu \mathbf{L} + \text{常数项} L(L,E,Y)=L+2μLF2+(EX+μY)TμL+常数项

    $$
    \Rightarrow L(\mathbf{L}, \mathbf{E}, \mathbf{Y}) = |\mathbf{L}|_* + \frac{\mu}{2} |\mathbf{L}|_F^2 +

    \frac{\mu}{2}{(\mathbf{E}^T - \mathbf{X}^T + \frac{\mathbf{Y}^T}{\mu}})*2\mathbf{L}
    $$

    $$
    \Rightarrow L(\mathbf{L}, \mathbf{E}, \mathbf{Y}) = |\mathbf{L}|_* + \frac{\mu}{2} |\mathbf{L}|_F^2 +

    \frac{\mu}{2}{(2\mathbf{E}^T\mathbf{L} - 2\mathbf{X}^T\mathbf{L} + 2\frac{\mathbf{Y}^T }{\mu}}\mathbf{L})
    $$

    $$
    \Rightarrow L(\mathbf{L}, \mathbf{E}, \mathbf{Y}) = |\mathbf{L}|_* + \frac{\mu}{2}
    (

    |\mathbf{L}|_F^2 + {2\mathbf{E}^T\mathbf{L} - 2\mathbf{X}^T\mathbf{L} + 2\frac{\mathbf{Y}^T }{\mu}}\mathbf{L})
    $$

    $$
    \Rightarrow L(\mathbf{L}, \mathbf{E}, \mathbf{Y}) = |\mathbf{L}|_* + \frac{\mu}{2}
    (
    |\mathbf{L}|_F^2 +

    2(\mathbf{E} - \mathbf{X} + \frac{\mathbf{Y}}{\mu})\mathbf{L}^T+

    | \mathbf{E} - \mathbf{X} + \frac{\mathbf{Y}}{\mu} |_F^2

    • | \mathbf{E} - \mathbf{X} + \frac{\mathbf{Y}}{\mu} |_F^2
      )
      $$

    $$
    \Rightarrow L(\mathbf{L}, \mathbf{E}, \mathbf{Y}) = |\mathbf{L}|_* + \frac{\mu}{2}

    | \mathbf{L} + \mathbf{E} - \mathbf{X} +\frac{\mathbf{Y}}{\mu}
    |_F^2

    • \frac{\mu}{2}| \mathbf{E} - \mathbf{X} + \frac{\mathbf{Y}}{\mu} |_F^2

    $$

    整理公式

    最后,我们重新整理公式并只关注与 L \mathbf{L} L 相关的项:【即省掉了末尾不含 L L L 的项】

    L ( L , E , Y ) = ∥ L ∥ ∗ + μ 2 ∥ L + E − X + Y μ ∥ F 2 + 常数项 L(\mathbf{L}, \mathbf{E}, \mathbf{Y}) = \|\mathbf{L}\|_* + \frac{\mu}{2} \|\mathbf{L} + \mathbf{E} - \mathbf{X} + \frac{\mathbf{Y}}{\mu}\|_F^2 + \text{常数项} L(L,E,Y)=L+2μL+EX+μYF2+常数项

    这就得到了我们要优化的目标函数形式:

    L k + 1 = arg ⁡ min ⁡ L ∥ L ∥ ∗ + μ k 2 ∥ L + E k − X + Y k μ k ∥ F 2 \mathbf{L}_{k+1} = \arg\min_{\mathbf{L}} \|\mathbf{L}\|_* + \frac{\mu_k}{2} \left\| \mathbf{L} + \mathbf{E}_k - \mathbf{X} + \frac{\mathbf{Y}_k}{\mu_k} \right\|_F^2 Lk+1=argLminL+2μk L+EkX+μkYk F2!](https://i-blog.csdnimg.cn/direct/ee4a8dea1fee4a3fa3cb55c9d0408d6c.png)

相关推荐

  1. PyTorch

    2024-07-09 22:36:03       39 阅读
  2. Pytorch广播

    2024-07-09 22:36:03       28 阅读
  3. TensorFlow

    2024-07-09 22:36:03       23 阅读
  4. 【Pytorch笔记】

    2024-07-09 22:36:03       19 阅读
  5. PyTorch形状

    2024-07-09 22:36:03       17 阅读
  6. tensorflow中tensor

    2024-07-09 22:36:03       62 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 22:36:03       50 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 22:36:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 22:36:03       43 阅读
  4. Python语言-面向对象

    2024-07-09 22:36:03       54 阅读

热门阅读

  1. DP学习——设计模式实现参考

    2024-07-09 22:36:03       19 阅读
  2. 考研408-数据结构(上机) --华中科技大学

    2024-07-09 22:36:03       22 阅读
  3. git push之后回滚到某个版本

    2024-07-09 22:36:03       18 阅读
  4. 使用工业自动化的功能块实现大语言模型应用

    2024-07-09 22:36:03       22 阅读
  5. Linux 内核编译与模块开发:深入掌握系统核心

    2024-07-09 22:36:03       24 阅读