【張量分解(三)】Tucker分解

本文是對論文Tensor Decompositions and Applications進行了翻譯、整理、篩選和適當的補充,如何希望深入理解可以閱讀原文。

相關文章:

【張量分解(一)】符號與基礎知識
【張量分解(二)】CP分解
【張量分解(三)】Tucker分解

一、Tucker分解

1.1 定義

Tucker分解可以看作是主成分分析(PCA)的一種高階版本,其將張量分解爲一個核張量與每一維度上對應矩陣的乘積。具體來說,以三階張量XRI×J×K\mathcal{X}\in\mathbb{R}^{I\times J\times K}爲例,其Tucker分解寫爲
XG×1A×2B×3C=p=1Pq=1Qr=1R=gpqrapbqcr=G;A,B,C\mathcal{X}\approx\mathcal{G}\times_1\textbf{A}\times_2\textbf{B}\times_3\textbf{C}=\sum_{p=1}^P\sum_{q=1}^Q\sum_{r=1}^R=g_{pqr}\textbf{a}_p\circ\textbf{b}_q\circ\textbf{c}_r=\lgroup\mathcal{G};\textbf{A,B,C}\rgroup
其中,ARI×P,BRJ×Q,CRK×R\textbf{A}\in\mathbb{R}^{I\times P},\textbf{B}\in\mathbb{R}^{J\times Q},\textbf{C}\in\mathbb{R}^{K\times R}是不同維度上的因子矩陣,這些矩陣通常被認爲是不同維度上的主成分。GRP×Q×R\mathcal{G}\in\mathbb{R}^{P\times Q\times R}稱爲核張量,其中的每個元素代表了不同成分之間的交互程度。


從元素的角度看,Tucker分解可以寫爲
xijkp=1Pq=1Qr=1Rgpqraipbjqckr,i=1,...,I,j=1,...,J,k=1,...,Kx_{ijk}\approx\sum_{p=1}^P\sum_{q=1}^Q\sum_{r=1}^R g_{pqr}a_{ip}b_{jq}c_{kr},i=1,...,I,j=1,...,J,k=1,...,K
P,QRP,Q和R是因子矩陣A,B,C\textbf{A,B,C}的成分數(例如因子矩陣的列數)。如果P,QRP,Q和R小於I,J,KI,J,K,那麼張量G\mathcal{G}可以被認爲是張量X\mathcal{X}的壓縮版本。在某些情況下,壓縮版本的張量可以節省大量的存儲空間。Tucker分解形象展示如下圖:
在這裏插入圖片描述

1.2 張量矩陣化後的Tucker分解

Tucker分解的矩陣化版本爲
X(1)AG(1)(CB)T\textbf{X}_{(1)}\approx\textbf{AG}_{(1)}(\textbf{C}\otimes\textbf{B})^T
X(2)BG(2)(CA)T\textbf{X}_{(2)}\approx\textbf{BG}_{(2)}(\textbf{C}\otimes\textbf{A})^T
X(3)CG(3)(BA)T\textbf{X}_{(3)}\approx\textbf{CG}_{(3)}(\textbf{B}\otimes\textbf{A})^T

1.3 Tucker分解的N維推廣

上面僅介紹了三維張量的Tucker分解,其在N維張量上的分解爲
X=G×1A(1)×2A(2)×NA(N)=G;A(1),A(2),,A(N)\mathcal{X}=\mathcal{G}\times_1 \textbf{A}^{(1)}\times_2 \textbf{A}^{(2)}\dots\times_N \textbf{A}^{(N)}=\lgroup\mathcal{G};\textbf{A}^{(1)},\textbf{A}^{(2)},\dots,\textbf{A}^{(N)}\rgroup
元素角度的N維張量Tucker分解爲:
xi1i2iN=r1=1R1r2=1R2rN=1RNgr1r2rNai1r1(1)ai2r2(2)aiNrN(N)x_{i_1 i_2\dots i_N}=\sum_{r_1=1}^{R_1}\sum_{r_2=1}^{R_2}\dots\sum_{r_N=1}^{R_N}g_{r_1 r_2\dots r_N}a_{i_1 r_1}^{(1)}a_{i_2 r_2}^{(2)}\dots a_{i_N r_N}^{(N)}
矩陣化版本爲
X(n)=A(n)G(n)(A(N)A(n+1)A(n1)A(1))T\textbf{X}_{(n)}=\textbf{A}^{(n)}\textbf{G}_{(n)}(\textbf{A}^{(N)}\otimes\dots\otimes\textbf{A}^{(n+1)}\otimes\textbf{A}^{(n-1)}\otimes\dots\otimes\textbf{A}^{(1)})^T

二、n秩(n-rank)與截斷Tucker分解

2.1 n秩(n-rank)

X\mathcal{X}是一個大小爲I1×I2××INI_1\times I_2\times \dots \times I_N的N階張量,那麼其n秩的含義是:X\mathcal{X}在模n矩陣化後的矩陣X(n)\textbf{X}_{(n)}的列秩,其表示爲rankn(X)rank_n(\mathcal{X})。如果在Tucker分解中,令Rn=rankn(X),n=1,...,NR_n=rank_n(\mathcal{X}),n=1,...,N
那麼就稱張量X\mathcal{X}是一個rank(R1,R2,,RN)rank-(R_1,R_2,\dots,R_N)的張量。(注:不要混淆張量n秩和張量秩的概念)

2.2 截斷Tucker分解

X\mathcal{X}是一個n秩爲rank(R1,R2,,RN)rank-(R_1,R_2,\dots,R_N)的數據張量。如果令Rn=rankn(X)R_n=rank_n(\mathcal{X}),則可以很容易找到X\mathcal{X}的精確Tucker分解。但是,如果存在至少一個維度滿足Rn<rankn(X)R_n<rank_n(\mathcal{X}),那麼Tucker分解必然不準確且計算困難,在這種情況下的Tucker分解稱爲截斷Tucker分解,如原理如下圖所示。
在這裏插入圖片描述

截斷Tucker分解無法準確的再生張量X\mathcal{X}

三、計算Tucker分解

3.1 高階SVD(HOSVD)

高階SVD(HOSVD)的思想是找到那些能很好的捕獲維度n上變化的矩陣,而且其不受到其他維度的影響。HOSVD是矩陣的SVD(奇異值分解)在高維張量上的推廣。其算法如下所示:
在這裏插入圖片描述

當至少存在一個Rn<rankn(X)R_n<rank_n(\mathcal{X}),則稱爲截斷HOSVD。

3.2 HOOI

截斷HOSVD並不能直接得到最優值,但是其結果可以作爲迭代交替最小二乘法(ALS)的一個很好的迭代起點。HOOI就是一種ALS算法,其算法如下圖所示:
在這裏插入圖片描述

HOOI原理:


X\mathcal{X}是一個大小爲I1×I2××INI_1\times I_2\times \dots \times I_N的N階張量,那麼計算Tucker分解要解決的優化問題爲
minXG;A(1),A(2),,A(N)(1)min \|\mathcal{X}-\lgroup\mathcal{G};\textbf{A}^{(1)},\textbf{A}^{(2)},\dots,\textbf{A}^{(N)}\rgroup\|\tag{1}
其中,GRR1×R2××RN\mathcal{G}\in\mathbb{R}^{R_1\times R_2\times \dots \times R_N},矩陣A(n)RIn×Rn\textbf{A}^{(n)}\in\mathbb{R}^{I_n\times R_n}且列正交。
如果在最優解處,那麼核張量G\mathcal{G}必然滿足
G=X×1A(1)T×2A(2)T×NA(N)T\mathcal{G}=\mathcal{X}\times_1\textbf{A}^{(1)T}\times_2\textbf{A}^{(2)T}\dots\times_N\textbf{A}^{(N)T}
將上式代入到公式(1)中,那麼優化目標可以重寫爲
maxX×1A(1)T×2A(2)T×NA(N)T(2)max\|\mathcal{X}\times_1\textbf{A}^{(1)T}\times_2\textbf{A}^{(2)T}\dots\times_N\textbf{A}^{(N)T}\|\tag{2}
其中,矩陣A(n)RIn×Rn\textbf{A}^{(n)}\in\mathbb{R}^{I_n\times R_n}且列正交。將公式(2)重寫爲矩陣形式
A(n)TWW=X(n)(A(N)A(n+1)A(n1)A(1))\|\textbf{A}^{(n)T}\textbf{W}\|且\textbf{W}=\textbf{X}_{(n)}(\textbf{A}^{(N)}\otimes\dots\otimes\textbf{A}^{(n+1)}\otimes\textbf{A}^{(n-1)}\otimes\dots\otimes\textbf{A}^{(1)})
使用SVD可以求解上面的優化問題,僅需要令A(n)\textbf{A}^{(n)}爲矩陣W\textbf{W}的左奇異向量。但是,這個方法不能保證收斂到全局最優值。

四、缺失唯一性

Tucker分解是不唯一的。對於三維張量的分解,如果令URP×P,VRQ×Q,WRR×R\textbf{U}\in\mathbb{R}^{P\times P},\textbf{V}\in\mathbb{R}^{Q\times Q},\textbf{W}\in\mathbb{R}^{R\times R}爲非奇異矩陣。那麼對Tucker分解可以做下面的變換
G;A,B,C=G×1U×2V×3W;AU1,BV1,CW1\lgroup\mathcal{G};\textbf{A,B,C}\rgroup=\lgroup\mathcal{G}\times_1\textbf{U}\times_2\textbf{V}\times_3\textbf{W};\textbf{AU}^{-1},\textbf{BV}^{-1},\textbf{CW}^{-1}\rgroup
換句話說,我們可以在不影響擬合結果的情況下修改核張量G\mathcal{G},只要同時對因子矩陣進行反向修改即可。


這種特性提供了一個渠道,讓我們可以簡化核張量G\mathcal{G},從而是G\mathcal{G}中的大多數元素爲0,這樣就可以消除各個維度上成分的相互作用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章