【张量分解(二)】CP分解
本文是对论文Tensor Decompositions and Applications进行了翻译、整理、筛选和适当的补充,如何希望深入理解可以阅读原文。
相关文章:
【张量分解(一)】符号与基础知识
【张量分解(二)】CP分解
【张量分解(三)】Tucker分解
一、CP分解
1.1 定义
CP分解就是将一个张量分解成多个单秩张量的和。例如,给定一个三阶张量X∈RI×J×K\mathcal{X}\in\mathbb{R}^{I\times J\times K}X∈RI×J×K,则CP分解可以写为
X≈∑r=1Rar∘br∘cr\mathcal{X}\approx\sum_{r=1}^{R}\textbf{a}_r\circ\textbf{b}_r\circ\textbf{c}_rX≈r=1∑Rar∘br∘cr
其中,∘\circ∘是指向量外积,RRR是正整数且ar∈RI\textbf{a}_r\in\mathbb{R}^Iar∈RI,br∈RJ\textbf{b}_r\in\mathbb{R}^Jbr∈RJ,cr∈RK\textbf{c}_r\in\mathbb{R}^Kcr∈RK。下图展示了三阶张量的CP分解
将上面的CP分解展开,也可以写作
xijk≈∑r=1Rairbjrckr,i=1,2,…,I,j=1,2,…,J,k=1,2,…,Kx_{ijk}\approx\sum_{r=1}^R a_{ir}b_{jr}c_{kr},\quad i=1,2,\dots,I,j=1,2,\dots,J, k=1,2,\dots,Kxijk≈r=1∑Rairbjrckr,i=1,2,…,I,j=1,2,…,J,k=1,2,…,K
此外,对于三阶张量来说,可以从通道切片(frontal slice)的角度表示CP分解
Xk≈AD(k)BT,D(k)≡diag(ck:),k=1,…,K\textbf{X}_k\approx\textbf{A}\textbf{D}^{(k)}\textbf{B}^T,\textbf{D}^{(k)}\equiv diag(\textbf{c}_{k:}),k=1,\dots,KXk≈AD(k)BT,D(k)≡diag(ck:),k=1,…,K
其中,Xk\textbf{X}_kXk表示张量X\mathcal{X}X的第k个通道切片。对于行切片和列切片也可以写出类似的公式。
1.2 张量矩阵化后的CP分解
在文章【张量分解(一)】符号与基础知识中介绍过张量的矩阵化。这里主要介绍将张量转换为矩阵后的CP分解。
首先,定义因子矩阵(factor matrices)为CP分解中组成单秩张量的同一维度的向量合并成的矩阵(这个表述有点绕)。具体来说,就是把所有的a\textbf{a}a向量合并成一个矩阵A=[a1a2…aR]\textbf{A}=[\textbf{a}_1\quad\textbf{a}_2\quad\dots\quad\textbf{a}_R]A=[a1a2…aR]。同理,还可以合成因子矩阵B\textbf{B}B和C\textbf{C}C。那么矩阵化后的张量CP分解形式如下:
X(1)≈A(B⊙C)T\textbf{X}_{(1)}\approx\textbf{A}(\textbf{B}\odot\textbf{C})^TX(1)≈A(B⊙C)T
X(2)≈B(C⊙A)T\textbf{X}_{(2)}\approx\textbf{B}(\textbf{C}\odot\textbf{A})^TX(2)≈B(C⊙A)T
X(3)≈C(B⊙A)T\textbf{X}_{(3)}\approx\textbf{C}(\textbf{B}\odot\textbf{A})^TX(3)≈C(B⊙A)T
其中,⊙\odot⊙表示Khatri-Rao积,X(i)\textbf{X}_{(i)}X(i)表示张量X\mathcal{X}X的模i矩阵化后的矩阵。
1.3 符号表示
为了更加简洁的表达,CP分解可以简写如下X≈⟮A,B,C⟯\mathcal{X}\approx\lgroup\textbf{A},\textbf{B},\textbf{C}\rgroupX≈⟮A,B,C⟯
实在是打不出空心方括号(摊手),只能用⟮⟯\lgroup\rgroup⟮⟯代替了。
通常,假设矩阵A\textbf{A}A,B\textbf{B}B和C\textbf{C}C的列向量是标准化后的向量,并且将提取出来的权重合并入向量λ∈RR\mathrm{\lambda}\in\mathbb{R}^Rλ∈RR,因此CP分解还可以写成X≈∑r=1Rλrar∘br∘cr=⟮λ;A,B,C⟯\mathcal{X}\approx\sum_{r=1}^{R}\lambda_{r}\textbf{a}_r\circ\textbf{b}_r\circ\textbf{c}_r=\lgroup\mathrm{\lambda};\textbf{A},\textbf{B},\textbf{C}\rgroupX≈r=1∑Rλrar∘br∘cr=⟮λ;A,B,C⟯
1.4 高维扩展
先前主要介绍的是三阶张量的CP分解,主要是因为其具有广泛的适用性。对于N阶张量X∈RI1×I2×⋯×IN\mathcal{X}\in\mathbb{R}^{I_1\times I_2\times \dots \times I_N}X∈RI1×I2×⋯×IN,其CP分解为
X≈∑r=1Rλrar(1)∘ar(2)∘⋯∘ar(N)=⟮λ;A(1),A(2),…,A(N)⟯\mathcal{X}\approx\sum_{r=1}^{R}\lambda_{r}\textbf{a}_r^{(1)}\circ\textbf{a}_r^{(2)}\circ\dots\circ\textbf{a}_r^{(N)}=\lgroup\mathrm{\lambda};\textbf{A}^{(1)},\textbf{A}^{(2)},\dots,\textbf{A}^{(N)}\rgroupX≈r=1∑Rλrar(1)∘ar(2)∘⋯∘ar(N)=⟮λ;A(1),A(2),…,A(N)⟯
其中,λ∈RR\mathrm{\lambda}\in\mathbb{R}^Rλ∈RR且A(n)∈RIn×R,n=1,2,…,N\textbf{A}^{(n)}\in\mathbb{R}^{I_n\times R},n=1,2,\dots,NA(n)∈RIn×R,n=1,2,…,N
类似的,N阶张量X\mathcal{X}X进行模n矩阵化后的CP分解为
X(n)≈A(n)Λ(A(N)⊙⋯⊙An+1⊙An−1⊙⋯⊙A(1))T\textbf{X}_{(n)}\approx\textbf{A}^{(n)}\mathrm{\Lambda}(\textbf{A}^{(N)}\odot\dots\odot\textbf{A}^{n+1}\odot\textbf{A}^{n-1}\odot\dots\odot\textbf{A}^{(1)})^TX(n)≈A(n)Λ(A(N)⊙⋯⊙An+1⊙An−1⊙⋯⊙A(1))T
其中,对角矩阵Λ=diag(λ)\mathrm{\Lambda}=diag(\mathrm{\lambda})Λ=diag(λ)。
二、张量的秩(Tensor Rank)
2.1 张量秩的定义
用于生成张量X\mathcal{X}X所需要的单秩张量的最小数量即为张量X\mathcal{X}X的秩,用rank(X)rank{\mathcal{(X)}}rank(X)表示。换个角度,张量的秩就是CP分解时单秩张量数量的最小值。
2.2 张量秩与矩阵秩
此外,张量的秩与矩阵秩的定义非常相似,但是二值的性质非常的不同。例如,实数张量的秩在实数域R\mathbb{R}R和复数域C\mathbb{C}C上可能会不同。另一个张量秩和矩阵秩的显著不同是,当前没有一个直接的方法来确定给定张量的秩。例如,Krushkal对特定的9×9×99\times9\times99×9×9的张量进行分析,只能确定其秩在18到23之间。在实际应用中,张量的秩是通过CP分解来确定的。
2.3 张量的最大秩和典型秩
最大秩:一类张量能够达到的最大的秩称为张量的最大秩(maximum rank)。典型秩:一个从均匀连续分别中随机抽取元素所组成的张量中,出现概率大于0的任何秩。
具体来说,对于所有形状为I×JI\times JI×J的矩阵,最大秩和典型秩均等于min{I,J}min\{I,J\}min{I,J}。但是对于张量来说,最大秩和典型秩可能不相同,而且典型秩可能不只一个。例如2×2×22\times 2\times 22×2×2张量的典型秩为2或3,通过蒙特卡洛实验也可以发现秩为2的张量占79%,秩为3的张量占21%,秩为1的张量在理论上虽然可能,但是实际概率为0。
对于一般的三阶张量X∈RI×J×K\mathcal{X}\in\mathbb{R}^{I\times J\times K}X∈RI×J×K,当前只知道其最大秩的一个弱上界
rank(X)≤min{IJ,IK,JK}rank(\mathcal{X})\leq min\{IJ,IK,JK\}rank(X)≤min{IJ,IK,JK}
对于特定形状或类型的张量来说,有可能存在一些确定最大秩和典型秩的具体值或者范围的方法,可以参考原文Tensor Decompositions and Applications
三、唯一性
高阶张量的一个有趣的特性是它的秩分解是唯一的,而通常矩阵分解不是。
3.1 矩阵分解的不唯一性
对于秩为RRR的矩阵X∈RI×J\textbf{X}\in\mathbb{R}^{I\times J}X∈RI×J,其秩分解可以写为
X=ABT=∑r=1Rar∘br\textbf{X}=\textbf{AB}^T=\sum_{r=1}^R\textbf{a}_r\circ\textbf{b}_rX=ABT=r=1∑Rar∘br
具体来说,对于矩阵X\textbf{X}X的SVD分解为UΣVT\mathrm{U\Sigma V}^TUΣVT,为了与上面的秩分解对于,令A=UΣ\textbf{A}=\mathrm{U\Sigma}A=UΣ且B=V\textbf{B}=\mathrm{V}B=V。但是,如果令A=UΣW\textbf{A}=\mathrm{U\Sigma W}A=UΣW且B=VW\textbf{B}=\mathrm{VW}B=VW,其中W\mathrm{W}W是R×RR\times RR×R的正交矩阵(WTW=EW^TW=EWTW=E),同样也满足矩阵秩分解的定义。
换句话说,我们可以轻易的构造两个完全不同的单秩矩阵集合,但是集合中的矩阵相加就等于原始矩阵。而SVD分解的唯一性仅仅是因为正交约束的加入。
3.2 张量分解的唯一性
通常,在十分微弱的约束条件下,张量的CP分解就是唯一的。对于秩为RRR的三阶张量X∈RI×J×K\mathcal{X}\in\mathbb{R}^{I\times J\times K}X∈RI×J×K,其CP分解为
X=∑r=1Rar∘br∘cr=⟮A,B,C⟯\mathcal{X}=\sum_{r=1}^{R}\textbf{a}_r\circ\textbf{b}_r\circ\textbf{c}_r=\lgroup\textbf{A},\textbf{B},\textbf{C}\rgroupX=r=1∑Rar∘br∘cr=⟮A,B,C⟯
而唯一性就是指上面的分解中是唯一可能的单秩矩阵的组合。当然,这是排除了缩放和重新排列后的唯一性。例如这里使用置换矩阵对分解后的单秩矩阵的列进行重排列
X=⟮A,B,C⟯=⟮AΠ,BΠ,CΠ⟯\mathcal{X}=\lgroup\textbf{A},\textbf{B},\textbf{C}\rgroup=\lgroup\textbf{A}\Pi,\textbf{B}\Pi,\textbf{C}\Pi\rgroupX=⟮A,B,C⟯=⟮AΠ,BΠ,CΠ⟯
其中,Π\PiΠ是R×RR\times RR×R的置换矩阵。同样,对于将CP分解中的向量进行缩放也不影响CP分解的结果,例如
X=∑r=1R(αrar)∘(βrbr)∘(γrcr)\mathcal{X}=\sum_{r=1}^R(\alpha_r\textbf{a}_r)\circ(\beta_r\textbf{b}_r)\circ(\gamma_r\textbf{c}_r)X=r=1∑R(αrar)∘(βrbr)∘(γrcr)
其中,αrβrγr=1,r=1,...,R\alpha_r\beta_r\gamma_r=1,r=1,...,Rαrβrγr=1,r=1,...,R
3.3 CP分解唯一性的充分条件
对于CP分解X=⟮A,B,C⟯\mathcal{X}=\lgroup\textbf{A},\textbf{B},\textbf{C}\rgroupX=⟮A,B,C⟯,令kAk_AkA、kBk_BkB、kCk_CkC分别表示矩阵A\textbf{A}A、B\textbf{B}B、C\textbf{C}C的秩,那么CP分解唯一的充分条件是kA+kB+kC≥2R+2k_A+k_B+k_C\ge2R+2kA+kB+kC≥2R+2
将上面的条件扩展至N维,对于张量X=∑r=1Rar(1)∘ar(2)∘⋯∘ar(N)=⟮A(1),A(2),…,A(N)⟯\mathcal{X}=\sum_{r=1}^R\textbf{a}_{r}^{(1)}\circ \textbf{a}_{r}^{(2)}\circ\dots\circ\textbf{a}_{r}^{(N)}=\lgroup\textbf{A}^{(1)},\textbf{A}^{(2)},\dots,\textbf{A}^{(N)}\rgroupX=r=1∑Rar(1)∘ar(2)∘⋯∘ar(N)=⟮A(1),A(2),…,A(N)⟯,其CP分解唯一性的充分条件为
∑n=1NkA(n)≥2R+(N−1)\sum_{n=1}^N k_{\textbf{A}^{(n)}}\ge2R+(N-1)n=1∑NkA(n)≥2R+(N−1)
3.4 CP分解唯一性的必要条件
上面的充分条件在R=2R=2R=2或R=3R=3R=3的条件下,也是CP分解唯一性的必要条件,但是当R>3R>3R>3则不成立。更加广泛的CP分解唯一性的必要条件为
min{rank(A⊙B),rank(A⊙C),rank(B⊙C)}=Rmin\{rank(\textbf{A}\odot\textbf{B}),rank(\textbf{A}\odot\textbf{C}),rank(\textbf{B}\odot\textbf{C})\}=Rmin{rank(A⊙B),rank(A⊙C),rank(B⊙C)}=R
推广的N维情况下,则
minn=1,…,Nrank(A(1)⊙⋯⊙A(n−1)⊙A(n+1)⊙⋯⊙A(N))=Rmin_{n=1,\dots,N}rank(\textbf{A}^{(1)}\odot\dots\odot\textbf{A}^{(n-1)}\odot\textbf{A}^{(n+1)}\odot\dots\odot\textbf{A}^{(N)})=Rminn=1,…,Nrank(A(1)⊙⋯⊙A(n−1)⊙A(n+1)⊙⋯⊙A(N))=R
但是,由于性质
rank(A⊙B)≤rank(A⊗B)≤rank(A)⋅rank(B)rank(\textbf{A}\odot\textbf{B})\le rank(\textbf{A}\otimes\textbf{B})\le rank(\textbf{A})\cdot rank(\textbf{B})rank(A⊙B)≤rank(A⊗B)≤rank(A)⋅rank(B)
因此,N维下的必要条件可以扩展为
minn=1,…,N(rank(A(1))⋅⋯⋅rank(A(n−1))⋅rank(A(n+1))⋅⋯⋅rank(A(N)))≥Rmin_{n=1,\dots,N}\Big(rank(\textbf{A}^{(1)})\cdot\dots\cdot rank(\textbf{A}^{(n-1)})\cdot rank(\textbf{A}^{(n+1)})\cdot\dots\cdot rank(\textbf{A}^{(N)})\Big)\ge Rminn=1,…,N(rank(A(1))⋅⋯⋅rank(A(n−1))⋅rank(A(n+1))⋅⋯⋅rank(A(N)))≥R
3.5 CP分解唯一性的判断标准
对于秩为RRR的三阶张量X∈RI×J×K\mathcal{X}\in\mathbb{R}^{I\times J\times K}X∈RI×J×K,当满足条件
R≤K并且R(R−1)≤I(I−1)J(J−1)/2R\le K并且R(R-1)\le I(I-1)J(J-1)/2R≤K并且R(R−1)≤I(I−1)J(J−1)/2
则,其CP分解是唯一的。
类似的,对于秩为R的四阶张量X∈RI×J×K×L\mathcal{X}\in\mathbb{R}^{I\times J\times K\times L}X∈RI×J×K×L,其CP分解唯一的条件是
R≤L并且R(R−1)≤IJK(3IJK−IJ−IK−JK−I−J−K+3)/4R\le L并且R(R-1)\le IJK(3IJK-IJ-IK-JK-I-J-K+3)/4R≤L并且R(R−1)≤IJK(3IJK−IJ−IK−JK−I−J−K+3)/4
四、低秩近似与边界秩(border rank)
4.1 矩阵的低秩近似
给定一个秩为RRR的矩阵A\textbf{A}A,那么该矩阵的SVD分解可以写作:
A=∑r=1Rσrur∘vr,其中σ1≥σ2≥⋯≥σR\textbf{A}=\sum_{r=1}^R\sigma_r\textbf{u}_r\circ\textbf{v}_r,其中\sigma_1\ge\sigma_2\ge\dots\ge\sigma_RA=r=1∑Rσrur∘vr,其中σ1≥σ2≥⋯≥σR
那么该矩阵的秩k近似,可以直接使用SVD分解中前k个部分,即
B=∑r=1kσrur∘vr\textbf{B}=\sum_{r=1}^k\sigma_r\textbf{u}_r\circ\textbf{v}_rB=r=1∑kσrur∘vr
4.2 张量的低秩近似
上面对于矩阵的结果并不适用于张量。给定一个秩为RRR的三阶张量,其CP分解为
X=∑r=1Rλrar∘br∘cr\mathcal{X}=\sum_{r=1}^R\lambda_r\textbf{a}_r\circ\textbf{b}_r\circ\textbf{c}_rX=r=1∑Rλrar∘br∘cr
按上面矩阵的低秩近似来看,三阶张量的秩k近似也应该是其中k个部分的和,但实际情况并非如此。
Kolda提供过一个例子,对于一个三阶张量的单秩近似并不是秩2近似的组成部分(在矩阵的低秩分解中一定成立)。因此会得出一个推论,一个张量的最优秩k近似中的k个组成部分并不是按顺序求得的,而是需要同时被发现的。
总的来说,这个问题比较复杂,有时一个张量的最优秩k近似不一定存在。如果一个张量可以通过低秩的因式分解任意逼近,那么该张量就是一个退化张量。
举一个具体的例子来说,给定一个秩为3的具体三阶张量X∈RI×J×K\mathcal{X}\in\mathbb{R}^{I\times J\times K}X∈RI×J×K为
X=a1∘b1∘c2+a1∘b2∘c1+a2∘b1∘c1\mathcal{X}=\textbf{a}_1\circ\textbf{b}_1\circ\textbf{c}_2+\textbf{a}_1\circ\textbf{b}_2\circ\textbf{c}_1+\textbf{a}_2\circ\textbf{b}_1\circ\textbf{c}_1X=a1∘b1∘c2+a1∘b2∘c1+a2∘b1∘c1
其中,A∈RI×2,B∈RJ×2,C∈RK×2\textbf{A}\in\mathbb{R}^{I\times 2},\textbf{B}\in\mathbb{R}^{J\times 2},\textbf{C}\in\mathbb{R}^{K\times 2}A∈RI×2,B∈RJ×2,C∈RK×2是由于上式中对应的向量组成的,且这三个矩阵的列向量线性无关。
上面描述的张量可以使用下面的下面的秩2张量进行任意的近似
Y=n(a1+1na2)∘(b1+1nb2)∘(c1+1nc2)−na1∘b1∘c1\mathcal{Y}=n\Big(\textbf{a}_1+\frac{1}{n}\textbf{a}_2\Big)\circ\Big(\textbf{b}_1+\frac{1}{n}\textbf{b}_2\Big)\circ\Big(\textbf{c}_1+\frac{1}{n}\textbf{c}_2\Big)-n\textbf{a}_1\circ\textbf{b}_1\circ\textbf{c}_1Y=n(a1+n1a2)∘(b1+n1b2)∘(c1+n1c2)−na1∘b1∘c1
原始的秩3张量X\mathcal{X}X和近似的秩2张量Y\mathcal{Y}Y之间的误差为
∥X−Y∥=1n∥a2∘b2∘c1+a2∘b1∘c2+a1∘b2∘c2+1na2∘b2∘c2∥\Vert\mathcal{X}-\mathcal{Y}\Vert=\frac{1}{n}\Big\Vert\textbf{a}_2\circ\textbf{b}_2\circ\textbf{c}_1+\textbf{a}_2\circ\textbf{b}_1\circ\textbf{c}_2+\textbf{a}_1\circ\textbf{b}_2\circ\textbf{c}_2+\frac{1}{n}\textbf{a}_2\circ\textbf{b}_2\circ\textbf{c}_2\Big\Vert∥X−Y∥=n1∥∥∥a2∘b2∘c1+a2∘b1∘c2+a1∘b2∘c2+n1a2∘b2∘c2∥∥∥
当然,这个误差可以任意的小。
4.3 边界秩(border rank)
在不存在最优低秩近似的情况下,可以考虑边界秩。其定义为,能够以任意非零误差充分近似给定张量的最小单秩张量的数量。形式化的定义为
rank~(X)=min{r∣对于任意ϵ>0,均存在一个张量E满足∥E∥<ϵ且rank(X+E)=r}\widetilde{rank}(\mathcal{X})=min\{r|对于任意\epsilon>0,均存在一个张量\mathcal{E}满足\Vert\mathcal{E}\Vert<\epsilon且rank(\mathcal{X}+\mathcal{E})=r\}rank(X)=min{r∣对于任意ϵ>0,均存在一个张量E满足∥E∥<ϵ且rank(X+E)=r}
显然,rank~(X)≤rank(X)\widetilde{rank}(\mathcal{X})\le rank(\mathcal{X})rank(X)≤rank(X)
五、计算CP分解
本小节介绍怎么计算一个张量的CP分解。
在前面的小节中提到过,没有一个有限的算法可以确定张量的秩。而CP分解则是将待分解张量分解成RRR个单秩张量,其中RRR就是待分解张量的秩。因此,计算CP分解的第一个问题就是如何确定张量的秩。
大多数的CP求解思路是尝试不同的RRR值来拟合待分解张量,直至找到一个最佳的分解。对于无噪声的数据,那么可以对RRR的值从1,2,…这样逐步尝试,从而得到一个最优的CP分解。但是,前面介绍了张量的低秩近似,一个张量可以被一个更低秩的张量任意逼近,这在实际中有一些问题。
5.1 计算三阶张量的CP分解
假设CP分解中的RRR取值已经确定,那么这里介绍一种求解CP分解的ALS(交替最小二乘法)算法。
令X∈RI×J×K\mathcal{X}\in\mathbb{R}^{I\times J\times K}X∈RI×J×K,该算法的目标是计算一个包含RRR个单秩张量的CP分解,使其尽量近似X\mathcal{X}X,即
minX^∥X−X^∥,其中X^=∑r=1Rλrar∘br∘cr=⟮λ;A,B,C⟯min_{\hat{\mathcal{X}}}\Vert\mathcal{X}-\hat{\mathcal{X}}\Vert,其中\hat{\mathcal{X}}=\sum_{r=1}^{R}\lambda_r\textbf{a}_r\circ\textbf{b}_r\circ\textbf{c}_r=\lgroup\mathrm{\lambda};\textbf{A},\textbf{B},\textbf{C}\rgroupminX^∥X−X^∥,其中X^=r=1∑Rλrar∘br∘cr=⟮λ;A,B,C⟯
交替最小二乘法(ALS)就是固定B和C,求解A;再固定A和C,求解B;再固定A和B,求解C。重复上面的过程,直至满足收敛条件。这就是ALS的思路。
固定两个张量来求解另外一个张量,这就变成了线性最小二乘的问题。例如,B和C固定,那么依照1.2节中张量矩阵化后的CP分解,那么就能把上面的最小化问题重写为
minA^∥X(1)−A^(C⊙B)T∥F,其中A^=A⋅diag(λ)min_{\hat{\textbf{A}}}\Vert\textbf{X}_{(1)}-\hat{\textbf{A}}(\textbf{C}\odot\textbf{B})^T\Vert_F,其中\hat{\textbf{A}}=\textbf{A}\cdot diag(\lambda)minA^∥X(1)−A^(C⊙B)T∥F,其中A^=A⋅diag(λ)
上面的最小化问题的最优解为
A^=X(1)[(C⊙B)T]−1\hat{\textbf{A}}=\textbf{X}_{(1)}[(\textbf{C}\odot\textbf{B})^T]^{-1}A^=X(1)[(C⊙B)T]−1
其中,-1是指张量的伪逆,而Khatri-Rao积的伪逆可以进行变换,因此上面的最优解还可以写作
A^=X(1)(C⊙B)(CTC∗BTB)−1\hat{\textbf{A}}=\textbf{X}_{(1)}(\textbf{C}\odot\textbf{B})(\textbf{C}^T\textbf{C}*\textbf{B}^T\textbf{B})^{-1}A^=X(1)(C⊙B)(CTC∗BTB)−1
这个版本写法的最优解有一个优势,仅需要求解一个R×RR\times RR×R矩阵的伪逆,而不是JK×RJK\times RJK×R矩阵的伪逆。最后,对矩阵A^\hat{\textbf{A}}A^的列进行标准化后就得到了矩阵A\textbf{A}A。
5.2 ALS算法在高维张量上的应用
给定N阶张量X∈RI1×I2×⋯×IN\mathcal{X}\in\mathbb{R}^{I_1\times I_2\times\dots\times I_N}X∈RI1×I2×⋯×IN,使用CP分解将其分解为RRR个单秩矩阵的ALS算法。
【张量分解(二)】CP分解相关推荐
- 张量分解算法(CP分解)
博主今天阅读文献<PARAFAC-Based Channel Estimation for Intelligent Reflective Surface Assisted MIMO System ...
- 浅谈张量分解(五):稀疏张量的CP分解
在前面的文章中,我们已经讨论了稀疏张量的Tucker分解,并介绍了如何采用梯度下降训练出一个合理的分解结构,与Tucker分解略有不同,这篇文章将介绍在数学表达式上更为简洁的CP分解,同时讨论如何利用 ...
- java求秩_张量分解浅谈(二 CP NMF 张量秩)
欢迎大家来到这一期的张量分解博客学习,本期博客的主要内容就是标题,难度会加大,本人也有写的错误的地方,烦请大家不吝赐教! 一. CANDECOMP/PARAFAC分解法 CANDECOMP(canon ...
- 张量分解(二):CP分解
张量分解系列: 张量分解(一):基础知识 张量分解(二):CP分解 张量分解(三):Tucker分解 张量分解(四):Tensor-train Decomposition 张量分解(五):Tensor ...
- 『矩阵论笔记』张量CP分解的详细数学推导以及Python实现
张量CP分解的详细数学推导以及Python实现! 文章目录 一. 张量的基本概念 1.1 张量定义以及张量空间 1.2 阶和纤维(fiber)及切片 1.3 内积和范数及秩一张量/可合张量 1.4 超 ...
- cp分解实现_如何用贝叶斯高斯张量分解修复缺失数据?(Jupyter notebook - Python)
本文来源于BGCP Imputation - transdim,主要讨论如何利用贝叶斯高斯张量分解(Bayesian Gaussian CP decomposition, BGCP) 估计矩阵中的缺失 ...
- 张量分解——CP分解与Tucker分解详解
关于张量分解一些简单的介绍,可以看我的这篇 张量的CP分解模型 一般而言,给定一个大小为 n 1 × n 2 × n 3 n_1 \times n_2 \times n_3 n
- CP分解和HOSVD分解
一.CP分解(CANDECAMP/PARAFAC) 这是较为古老的一种张量分解方法.最早的研究历史可以追溯到1927年. 在上一节,学习向量乘积的时候,我们看到两个向量外积产生一个矩阵.我们可以推断出 ...
- matlab实现CP分解 代码
使用tensor-box,在matlab中实现cp分解 1.X = sptenrand([5 4 3], 10) //随机生成一个稀疏三维张量5*4* 3,其中有10条数据 X is a sparse ...
最新文章
- C#的常见算法(面试)(转)
- Codeforces Round #599 (Div. 2) E. Sum Balance 图转换 + 子集dp + 环
- 在Kafka中发布订阅模型
- ltrim函数php,php ltrim函数怎么用?
- 死锁发生的条件和预防
- BeX5平台简明部署过程
- 人工智能必备知识储备之“数学篇”
- C++11之内联名字空间(inline namespace)和ADL特性(Argument-Dependent name Lookup)
- 计算机技能大赛简讯内,【报道】2010学西城区职业高中计算机排版技能竞赛简讯...
- Java学习笔记(9)-StringBuilder类二
- 华硕的主板装的服务器系统改win7,华硕主板win10改win7系统怎么操作
- uni-app 超详细教程(二)(从菜鸟到大佬)
- Date与Calander使用及异同
- 自动解锁Bitlocker加密硬盘
- 转一次排障经历以供学习
- SitePoint播客#38:猫的大脑
- Oracle命令行工具基本操作及SQL 命令
- android 来电压力测试,50次之后,来电无法唤醒屏幕
- 如何清除“远程桌面连接”的历史记录?
- 计算机软件申请专利的认定难点在哪里,计算机软件可专利性问题研究
热门文章
- loot recycler_范海辛的奇妙冒险2 全隐藏地点一览
- Layui查看内置jquery版本
- 无瘤技术护理配合在妇科腹腔镜恶性肿瘤手术中的应用
- 忻州计算机cad培训,忻州CAD三维建模培训cad三维绘图视频
- The SourceSet 'instrumentTest' is not recognized by the Android Gradle Plugin
- 【Maven】使用插件拷贝jar包到指定目录
- codeblock 问题集锦
- 在Win10以及SDK为33的环境下——小米便签项目的搭建
- 一文图解前端WebSocket 实时通信
- 正态分布、Q函数、误差函数erf()和互补误差函数erfc()