张量分解-CP分解

来源:互联网 发布:中国电信网络测试 编辑:程序博客网 时间:2024/04/27 20:45

原文地址:http://www.xiongfuli.com/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/2016-06/tensor-decomposition-cp.html,原地址是一个非常好的个人博客。

CP分解(Canonical Polyadic Decomposition)

1927年Hitchcock提出了CP 分解。CP 分解将一个NN阶的张量XRI1×I2××INX∈RI1×I2×⋯×IN分解为RR个秩为1的张量和的形式即:

X=r=1Rλra(1)ra(2)ra(N)rX=∑r=1Rλrar(1)∘ar(2)∘⋯ar(N)
通常情况下a(n)rar(n)是一个单位向量。定义A(n)=[an1an2anR]A(n)=[a1na2n⋯aRn],D=diag(λ)D=diag(λ) 那么上面的公式可以写为:
X=D×1A(1)×2A(2)×NA(N)X=D×1A(1)×2A(2)⋯×NA(N)
矩阵的表达形式即为:
X(n)=AnD(A(N)A(n+1)A(n1)A1)TX(n)=AnD(A(N)⨀⋯A(n+1)⨀A(n−1)⋯⨀A1)T
特殊的时候当张量XX的阶数为3的时候,它的分解的形式下图所示。

三阶张量的CP 分解

张量的低秩近似

在矩阵中定义最小的秩为1的矩阵和的个数为矩阵的秩,类似于矩阵的定义,RR的最小值为张量的秩,记作Rank(X)=RRank(X)=R,这样的CP分解也称为张量的秩分解。值得注意的是在张量中秩的定义是不唯一的,张量秩的个数求解是一个NP问题。对于一个矩阵AA它的SVD分解定义为:

A=r=1Rσrurvr,σ1σ2σR0A=∑r=1Rσrur∘vr,σ1≥σ2≥⋯σR≥0
取SVD分解得到的前kk个因子作为矩阵AA的近似可以得到矩阵AA的低秩近似。类似于矩阵中的定义我们取张量的前kk个因子作为张量XX 的低秩近似即:
X=k=1Kλka(1)ka(2)ka(N)KX=∑k=1Kλkak(1)∘ak(2)∘⋯aK(N)
,不同于矩阵的低秩近似,张量的最佳Rank-n近似并不包括在其最佳Rank-n+1近似中,即张量的秩Rank-n 近似无法渐进地得到。

CP的求解

CP分解的求解首先要确定分解的秩1张量的个数,正如前面介绍的由于张量的秩Rank-n 近似无法渐进地得到。通常我们通过迭代的方法对RR从1开始遍历直到找到一个合适的解。当数据无噪声时,重构误差为0所对应的解即为CP分解的解,当数据有噪声的情况下,可以通过CORCONDIA算法估计RR。当分解的秩1张量的个数确定下来之后,可以通过交替最小二乘方法对CP分解进行进行求解。下面我们以三阶张量为例对ALS 算法进行阐述。

假设XRI×J×KX∈RI×J×K是一个三阶张量,对它进行张量分解的目标表达式为

minX^XX^,X^=r=1Rλrarbrcr=[[λ;A,B,C]]minX^‖X−X‖^,X^=∑r=1Rλrar∘br∘cr=[[λ;A,B,C]]
ALS算法首先固定BB,CC去求解AA,接着固定AACC去求解BB,然后固定BB 和CC去求解AA,这样不断地重复迭代直到达到收敛条件。固定矩阵BBCC,可以得到上面的式子在mode-1矩阵展开的时候形式为
minA^=X(1)A^(CB)TFminA^=‖X(1)−A^(C⊙B)T‖F
其中A^=A.diag(λ)A^=A.diag(λ),那么上述式子的最优解为
A^=X(1)[(CB)T]A^=X(1)[(C⊙B)T]†
为了防止数值计算的病态问题,通常把A^A^的每一列单位化,即 λr=|ar^|,ar=ar^/λrλr=|ar^|,ar=ar^/λr 将上述式子推广到高阶形式可以得到
A(n)=Xn(A(N)A(n+1)A(n1)A1)V whereV=A(1)T(A(1)A(n1)A(n+1)A(N)TA(N))A(n)=Xn(A(N)⨀⋯A(n+1)⨀A(n−1)⋯⨀A1)V† whereV=A(1)T(A(1)⨀⋯A(n−1)⨀A(n+1)⋯⨀A(N)TA(N))
对于一个NN阶的张量XX它的ALS求解的步骤如下图所示。它假设分解出Rank-1 张量的个数RR是事先知道的,对于各个因子的初始化,可以采用随机初始化也可以通过下面的式子进行初始化。
A(n)=R leading left singular vectors ofX(n)forn=1,NA(n)=R leading left singular vectors ofX(n)forn=1,⋯N

CP分解算法

可加约束

在一些应用中,为了使得CP分解更加的鲁棒和精确,可以在分解出的因子上加上一些先验知识即约束。比如说平滑约束(smooth)、正交约束、非负约束(nonegative) 、稀疏约束(sparsity)等。

CP分解应用

CP分解已经在信号处理,视频处理,语音处理,计算机视觉、机器学习等领域得到了广泛的应用 下面,以去噪为例,对CP分解在高光谱图像处理中的应用进行阐述。

高光谱图像(HSI)是上个世纪80年代以来新兴的一种新型成像技术,它包括了可见光和不可见光范围的几十到几百个连续光谱窄波段构成,形成了一种数据立方体结构的图像。高光谱图像可以看作是一个三阶张量,图像的空间域和光谱域构成了数据的三个维度。采用低秩CP分解对高光谱图像去噪认为低秩的部分是无噪声的部分,剩下的部分认为是噪声数据,它的示意图如下图所示。CP decomposition  algorithm for HSI noise reduction从图中可以看到一个高光谱图像数据XX 可以由两部分组成即:

X=S+NX=S+N
其中SS认为是低秩的部分即干净的图像,NN是噪声的部分(这里的噪声包括白噪声,高斯噪声等)。可以通过对原始数据XX 进行低秩CP分解来得到SS。在Urban数据上进行去噪得到去噪前的数据和去噪之后的数据图分别如图下面的两幅图所示。从图中可以看到采用CP分解可以对高光谱图像进行去噪。有噪声图像处理之后的图像


0 1