Tucker 分解
Tucker 分解
Tucker 分解法可以被视作一种高阶 PCA. 它将张量分解为核心张量在每个mode上与矩阵的乘积. 因此, 对三阶张量 X∈RI×J×K ,我们有如下分解:
X≈G×1A×2B×3C=p=1∑Pq=1∑Qr=1∑Rgpqrap∘bq∘cr=[[G;A,B,C]]
其中,A∈RI×P,B∈RJ×Q 和 C∈RK×R 被称为因子矩阵,它们通常是正交的,可以视为沿相应 mode 下的主成分。张量 G∈RP×Q×R 被称为核心张量,其每个数字元素代表了不同成分之间的互动程度。三阶张量的 Tucker 分解可以用下图表示:

对于每个元素来说,Tucker 分解法可以写作
xijk≈p=1∑Pq=1∑Qr=1∑Rgpqraipbjqckr,i=1,…,I,j=1,…,J,k=1,…,K
其中,P,Q,R 为对应因子矩阵里列的个数。
容易看出 CP 分解是 Tucker 分解的一种特殊形式,如果核心张量的为超对角张量而且 P=Q=R ,Tucker 分解就退化成了权重 CP 分解。
Tucker 分解可以写成如下的矩阵化形式:
X(1)≈AG(1)(C⊗B)T
X(2)≈BG(2)(C⊗A)T
X(3)≈CG(3)(B⊗A)T
Tucker 分解的高维推广
对于 N 维张量,Tucker 分解可以写作:
X=G×1A(1)×2A(2)⋯×NA(N)=[[G;A(1),A(2),…,A(N)]]
矩阵化可以写为:
X(n)=A(n)G(n)(A(N)⊗⋯⊗A(n+1)⊗A(n−1)⊗⋯⊗A(1))T
Tucker 2 分解法
对于三阶张量,固定一个因子矩阵为单位矩阵,就可以得到 Tucker 分解的一个重要的特例,Tucker 2 分解。例如,固定 C=I,若 I 是 K×K 的单位矩阵,则再使 G∈RP×Q×R,那么我们就可以得到:
X≈G×1A×2B=[[G;A,B,I]]
Tucker 1 分解法
更近一步,如果我们固定两个因子矩阵,只利用一个矩阵来分解,并将剩余矩阵设为单位矩阵。例如,如果设 B=C=I,那么我们可以得到:
X≈G×1A=[[G;A,I,I]]
这等价于一个标准的二维 PCA ,即:
X(1)=AG(1)
n - rank (n 秩)
若 X 是一个大小为 I1×I2×⋯×IN 的 N 阶张量,那么它的 n 秩为:X 在 mode - n 矩阵化后得到的矩阵 X(n) 的列秩,表示为 rankn(X) 。如果在 Tucker 分解中,令
Rn=rankn(X),n=1,2,⋯,N
那么就称张量 X 是一个 rank−(R1,R2,…,RN) 张量。
如果一个张量是 rank−(R1,R2,…,RN) 张量,那么我们很容易找到一个 Rn=rankn(X) 的精确 Tucker 分解。但是如果我们计算某些 n 满足 Rn<rankn(X) 的 Tucker 分解,那么我们将必然无法获得精确的结果,即该分解不能精确地还原 X 。
Tucker 分解法的计算
1. HOSVD (高阶 SVD)
该方法是利用 SVD 对每个 mode 做一次 Tucker 1 分解,其结果为将一个张量分解为一个核心张量和三个正交矩阵,即
X=G×1U(1)×2U(2)×3U(3)
其中,U(1),U(2),U(3) 分别为先将张量进行 mode - n 矩阵化,得到 X(n) 矩阵,然后对得到的矩阵进行奇异值分解,使得
X(n)=U(n)ΣV(n)T
对于不同的 mode 矩阵 X(n) ,我们可以得到上面的式子中的 U(n) ,如果对三个 mode 矩阵都做上式的运算,就可以得到 U(1),U(2),U(3) 。
根据
X=G×1U(1)×2U(2)×3U(3)
我们可以得到:
G=X×1U(1)T×2U(2)T×3U(3)T
从而我们得到 HOSVD 的分解结果,即 G,U1,U2,U3 。
如果至少存在一个 Rn<rankn(X) ,则称为截断 HOSVD 。
HOSVD 不能保证得到一个较好的近似,但是 HOSVD 的结果可以作为一个其他迭代算法(如下面的 HOOI)的很好的初始解。
2. HOOI 迭代算法
HOOI 秩去计算 X(n) 的主奇异向量,并且运用 SVD 来代替特征值分解,或者只计算其主子空间的单位正交基底向量即可。
设 X 是一个 I1×I2×⋯×IN 尺寸的张量,那么我们可以将要分解问题转化为求:
min∣∣∣∣∣∣X−[[G;A(1),A(2),…,A(N)]]∣∣∣∣∣∣
其中,G∈RR1×R2×⋯×RN ,矩阵 A(n)∈RIn×Rn 且列正交。
对于上式的最优解,显然其核心张量 G 必须满足
G=X×1A(a)T×2A(2)T⋯×NA(N)T
则目标函数的平方为:
∣∣∣∣∣∣X−[[G;A(1),(2),…,A(N)]]∣∣∣∣∣∣2=∣∣X∣∣2−2⟨X,[[G;A(1),A(2),…,A(N)]]⟩+∣∣G;A(1),A(2),…,A(N)∣∣2=∣∣X∣∣2−2⟨X×1A(1)T⋯×NA(N)T,G⟩+∣∣G∣∣2=∣∣X∣∣2−2⟨G,G⟩+∣∣G∣∣2=∣∣X∣∣2−∣∣G∣∣2=∣∣X∣∣2−∣∣X×1A(1)T×2⋯×NA(N)T∣∣2
如果使目标函数取值最小,那么我们可以使得上面结果的第二项取最大值,即
max∣∣∣∣∣∣X×1A(1)T×2A(2)T⋯×NA(N)T∣∣∣∣∣∣
进一步,我们可以将上式写为
max∣∣∣∣∣∣A(n)TW∣∣∣∣∣∣
其中
W=X(n)(A(N)⊗⋯⊗A(n+1)⊗A(n−1)⊗⋯⊗A(1))
我们可以将 A(n) 定义为 W 的前 Rn 个左奇异向量就可以求出解。