本文是對論文Tensor Decompositions and Applications進行了翻譯、整理、篩選和適當的補充,如何希望深入理解可以閱讀原文。
相關文章:
【張量分解(一)】符號與基礎知識
【張量分解(二)】CP分解
【張量分解(三)】Tucker分解
一、Tucker分解
1.1 定義
Tucker分解可以看作是主成分分析(PCA)的一種高階版本,其將張量分解爲一個核張量與每一維度上對應矩陣的乘積。具體來說,以三階張量X∈RI×J×K爲例,其Tucker分解寫爲
X≈G×1A×2B×3C=p=1∑Pq=1∑Qr=1∑R=gpqrap∘bq∘cr=⟮G;A,B,C⟯
其中,A∈RI×P,B∈RJ×Q,C∈RK×R是不同維度上的因子矩陣,這些矩陣通常被認爲是不同維度上的主成分。G∈RP×Q×R稱爲核張量,其中的每個元素代表了不同成分之間的交互程度。
從元素的角度看,Tucker分解可以寫爲
xijk≈p=1∑Pq=1∑Qr=1∑Rgpqraipbjqckr,i=1,...,I,j=1,...,J,k=1,...,K
P,Q和R是因子矩陣A,B,C的成分數(例如因子矩陣的列數)。如果P,Q和R小於I,J,K,那麼張量G可以被認爲是張量X的壓縮版本。在某些情況下,壓縮版本的張量可以節省大量的存儲空間。Tucker分解形象展示如下圖:
1.2 張量矩陣化後的Tucker分解
Tucker分解的矩陣化版本爲
X(1)≈AG(1)(C⊗B)T
X(2)≈BG(2)(C⊗A)T
X(3)≈CG(3)(B⊗A)T
1.3 Tucker分解的N維推廣
上面僅介紹了三維張量的Tucker分解,其在N維張量上的分解爲
X=G×1A(1)×2A(2)⋯×NA(N)=⟮G;A(1),A(2),…,A(N)⟯
元素角度的N維張量Tucker分解爲:
xi1i2…iN=r1=1∑R1r2=1∑R2⋯rN=1∑RNgr1r2…rNai1r1(1)ai2r2(2)…aiNrN(N)
矩陣化版本爲
X(n)=A(n)G(n)(A(N)⊗⋯⊗A(n+1)⊗A(n−1)⊗⋯⊗A(1))T
二、n秩(n-rank)與截斷Tucker分解
2.1 n秩(n-rank)
若X是一個大小爲I1×I2×⋯×IN的N階張量,那麼其n秩的含義是:X在模n矩陣化後的矩陣X(n)的列秩,其表示爲rankn(X)。如果在Tucker分解中,令Rn=rankn(X),n=1,...,N
那麼就稱張量X是一個rank−(R1,R2,…,RN)的張量。(注:不要混淆張量n秩和張量秩的概念)
2.2 截斷Tucker分解
X是一個n秩爲rank−(R1,R2,…,RN)的數據張量。如果令Rn=rankn(X),則可以很容易找到X的精確Tucker分解。但是,如果存在至少一個維度滿足Rn<rankn(X),那麼Tucker分解必然不準確且計算困難,在這種情況下的Tucker分解稱爲截斷Tucker分解,如原理如下圖所示。
截斷Tucker分解無法準確的再生張量X
三、計算Tucker分解
3.1 高階SVD(HOSVD)
高階SVD(HOSVD)的思想是找到那些能很好的捕獲維度n上變化的矩陣,而且其不受到其他維度的影響。HOSVD是矩陣的SVD(奇異值分解)在高維張量上的推廣。其算法如下所示:
當至少存在一個Rn<rankn(X),則稱爲截斷HOSVD。
3.2 HOOI
截斷HOSVD並不能直接得到最優值,但是其結果可以作爲迭代交替最小二乘法(ALS)的一個很好的迭代起點。HOOI就是一種ALS算法,其算法如下圖所示:
HOOI原理:
若X是一個大小爲I1×I2×⋯×IN的N階張量,那麼計算Tucker分解要解決的優化問題爲
min∥X−⟮G;A(1),A(2),…,A(N)⟯∥(1)
其中,G∈RR1×R2×⋯×RN,矩陣A(n)∈RIn×Rn且列正交。
如果在最優解處,那麼核張量G必然滿足
G=X×1A(1)T×2A(2)T⋯×NA(N)T
將上式代入到公式(1)中,那麼優化目標可以重寫爲
max∥X×1A(1)T×2A(2)T⋯×NA(N)T∥(2)
其中,矩陣A(n)∈RIn×Rn且列正交。將公式(2)重寫爲矩陣形式
∥A(n)TW∥且W=X(n)(A(N)⊗⋯⊗A(n+1)⊗A(n−1)⊗⋯⊗A(1))
使用SVD可以求解上面的優化問題,僅需要令A(n)爲矩陣W的左奇異向量。但是,這個方法不能保證收斂到全局最優值。
四、缺失唯一性
Tucker分解是不唯一的。對於三維張量的分解,如果令U∈RP×P,V∈RQ×Q,W∈RR×R爲非奇異矩陣。那麼對Tucker分解可以做下面的變換
⟮G;A,B,C⟯=⟮G×1U×2V×3W;AU−1,BV−1,CW−1⟯
換句話說,我們可以在不影響擬合結果的情況下修改核張量G,只要同時對因子矩陣進行反向修改即可。
這種特性提供了一個渠道,讓我們可以簡化核張量G,從而是G中的大多數元素爲0,這樣就可以消除各個維度上成分的相互作用。