張量分解與應用-學習筆記[03]

4 壓縮與Tucker分解法

4.0 Tucker分解法定義

  • Tucker分解法能夠被視做一種高階PCA. 它將張量分解爲核心張量(core tensor)在每一個mode上與矩陣的乘積. 所以, 對三維張量\(\mathcal{X}\in\mathbb{R}^{I \times J \times K}\)來講, 咱們有以下分解:
    \[ (4.1) \mathcal{X} \approx \mathcal{G}\times_1 \mathrm{A} \times_2 \mathrm{B} \times_3 \mathrm{C} = \sum_{p=1}^P\sum_{q=1}^Q\sum_{r=1}^R g_{pqr} \: \mathrm{a}_p\circ \mathrm{b}_q\circ \mathrm{c}_r = [\![\mathcal{G}\,;A,B,C]\!]. \]算法

  • 其中, \(\mathrm{A}\in \mathbb{R}^{I\times P}\), \(\mathrm{B}\in\mathbb{R}^{J\times Q}\), 和 \(\mathrm{C} \in \mathbb{R}^{K\times R}\)被稱之爲因子矩陣, 他們一般是正交的(orthogonal). 他們一般能夠被做每一個mode下的主成分principal components. 其中, 張量\(\mathcal{G} \in \mathbb{R}^{P \times Q \times R}\) 被稱之爲核心張量(core tensor). 他的每一個數字元素表明了不一樣成分之間的互動程度.
    app

  • 對每一個元素來講, Tucker分解法能夠寫做:
    \[ x_{ijk} \approx \sum_{p=1}^P \sum_{q=1}^Q \sum_{r=1}^R g_{pqr}a_{ip}b_{jq}c_{kr} \quad \text{for} \quad i = 1,\dots,I, j =1,\dots,J, k=1,\dots,K. \]dom

  • \(P,Q\)\(R\)爲對應的因子矩陣\(A,B\)\(C\)的成分數(例如列向量的數目). 若是\(P,Q,R\)小於\(I,J,K\), 咱們能夠將核心張量\(\mathcal{G}\)視做\(\mathcal{X}\)的一個壓縮版本. 在某些狀況下, 壓縮版本所需的空間遠遠小於原始張量.函數

  • 大多數的擬合算法假設因子矩陣的列向量是單位正交(orthnonormal)的, 但其實這並非必要的. 事實上, CP分解法能夠被視做爲Tucker分解法的一個特例: 也就是當知足核心向量爲超對角向量並\(P=Q=R\).優化

  • 矩陣化後的形式爲:
    \[ \mathrm{X}_{(1)} \approx \mathrm{A}\mathrm{G}_{(1)}(\mathrm{C}\otimes \mathrm{B})^\mathsf{T}, \]
    \[ \mathrm{X}_{(2)} \approx \mathrm{B}\mathrm{G}_{(1)}(\mathrm{C}\otimes \mathrm{A})^\mathsf{T}, \]
    \[ \mathrm{X}_{(3)} \approx \mathrm{C}\mathrm{G}_{(1)}(\mathrm{B}\otimes \mathrm{A})^\mathsf{T}. \]spa

  • 上述公式以3維張量爲例, 而這不妨礙其概念擴展到N維張量:3d

\[ \mathcal{X} = \mathcal{G} \times_1 \mathrm{A}^{(1)} \times_2 \mathrm{A}^{(2)}\dots \times_N \mathrm{A}^{(N)} = [\![\mathcal{G}; \mathrm{A}^{(1)}, \mathrm{A}^{(2)}, \dots , \mathrm{A}^{(N)}]\!] \]component

  • 對每一個元素來講

\[ x_{i_1i_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_1r_2\dots r_N}a^{(1)}_{i_1r_1}a^{(2)}_{i_2r_2}\dots a_{i_N r_N}^{(N)} \\ \quad \text{for} \quad i_n =1,\dots,I_n, n=1,\dots,N. \]orm

  • 矩陣化版本可寫爲
    \[ \mathrm{X}_{(n)} = \mathrm{A}^{(n)}\mathrm{G}_{(n)}(\mathrm{A}^{(N)}\otimes \dots \otimes \mathrm{A}^{(n+1)}\otimes \mathrm{A}^{(n-1)}\otimes \dots \otimes \mathrm{A}^{(1)})^\mathsf{T}. \]blog

  • 另有兩個Tucker分解法的變種值得特別注意. 首先是Tucker2分解法. 顧名思義, 他只使用某2個矩陣來分解, 第三個矩陣爲單位矩陣, 故一個三階張量的Tucker2分解能夠寫爲如下形式:
    \[ \mathcal{X} = \mathcal{G}\times_1 \mathrm{A} \times_2 \mathrm{B} = [\![\mathcal{G}\,;\mathrm{A,B,I}]\!]. \]
  • 這和原始的Tucker分解其實沒什麼不一樣, 惟獨\(\mathcal{G}\in\mathbb{R}^{P \times Q \times R}\)\(R=K\)\(\mathrm{C=I}\) (\(K\times K\)的單位矩陣). 相似的, Tucker1分解法只利用某一個矩陣來分解並將剩餘矩陣設爲單位矩陣. 例如, 若是設第二和第三因子矩陣爲單位矩陣, 咱們能夠獲得:

\[ \mathcal{X} = \mathcal{G} \times_1 \mathrm{A} = [\![\mathcal{G}\,;\mathrm{A,I,I}]\!]. \]

  • 這等價於一個標準的2維PCA(主成分分析). 由於
    \[ \mathrm{X}_{(1)} = \mathrm{A}\mathrm{G}_{(1)}. \]
  • 這些概念很輕鬆即可延伸至N維張量: 咱們能夠設任何因子矩陣們的子集爲單位矩陣.

  • 很顯然, 張量分解有着許多的選擇, 有時候會給咱們根據特定任務選擇模型時帶來麻煩. 想要了解3維下如何選擇模型的, 能夠參考此論文.

4.1. The n-Rank

  • \(\mathcal{X}\)爲一個尺寸爲\(I_1\times I_2 \times \dots \times I_N\)的N階張量. 那麼, 他的n-rank, 寫做\(\text{rank}_n(\mathcal{X})\)\(\mathrm{X}_{(n)}\)的列秩(column rank). 換句話說, n-rank是mode-n fiber所生成的(span)向量空間的維度.若是咱們令\(R_n=\text{rank}_n(\mathcal{X})\,\text{ for }\, n=1,\dots,N\), 那麼咱們能夠說\(\mathcal{X}\)是一個\(\text{rank}-(R_1,R_2,\dots,R_N)\)張量.

  • n-rank切記不能與秩(rank), 也就是最小的秩1成分數目, 所混淆.

  • 顯然, \(R_n \leq I_n \text{ for all }n=1,\dots,N.\)

  • 對於一個給定的張量\(\mathcal{X}\), 咱們能夠很輕易地找到一個秩爲 \(\big( R_1,R_2,\dots,R_N \text{ where }R_n = rank_n(\mathcal{X})\big)\)的精確( exact ) Tucker分解. 但若是咱們計算的Tucker分解的秩低於這組值, 也就是對某些n來講\(R_n < \text{rank}_n(\mathcal{X})\) 那麼, 咱們將必然沒法得到精確的結果而且其計算會變得更爲困難. 下圖展現了truncated Tucker Decomposition (並不必定要從一個精確Tucker分解中舍項得來). 該分解將不能精確地還原\(\mathcal{X}\)

4.2. Tucker分解法的計算

  • 計算Tucker分解的第一個可行的方法來自於前文所述的Tucker1算法, 即, 捨去一個矩陣來最大程度的捕捉其mode-n fiber的分佈變化(variation). 因爲後人的研究和分析, 此法後來又被稱之爲higher-order SVD(HOSVD). 研究者指出, HOSVD是一個可信的矩陣SVD的通常化理論, 而且討論了不少如何更有效率的計算\(\mathrm{X}_{(n)}\)的前排奇異向量的方法. 當對某些n, \(R_n<\text{rank}_n(\mathcal{X})\)的時候, 咱們稱之爲truncated HOSVD. 事實上, HOSVD的核心張量是全正交(all-orthogonal)的, 這與分解時的舍位(truncate)有關. 詳情請見此論文

  • truncatd HOSVD在最小化估計錯誤的範數這個角度上來講並非最優的, 但給迭代交替最小方差法(iterative ALS algorithm)提供了一個不錯的起點. 1980年, 計算三維張量的Tucker分解的ALS法TUCKALS3誕生了. 而後該法被延伸至對n維張量也有效. 同時, 一種更爲有效的計算因子矩陣的方法被運用: 簡單地說, 只去計算\(\mathrm{X}_{(n)}\)的主奇異向量(dominant singular vectors). 而且運用SVD來代替特徵值分解(eigenvalue decomposition)或者只計算其主子空間(dominant subspace)的單位正交基底向量(orthonomal basis)便可. 這種嶄新的提升效率的算法被稱之爲更高維正交遞歸(higher-order orthogonal iteration HOOI). 見下圖4.4.

  • \(\mathcal{X}\)是一個\(I_1 \times I_2 \times \dots \times I_N\)尺寸的張量, 那麼咱們渴望解決的優化問題能夠被寫做:
    \[ \begin{aligned} (4.3) \quad \min_{\mathcal{G}, \mathrm{A}^{(1)},\dots,\mathrm{A^{(N)}}} &\Big|\Big| \mathcal{X} - [\![\mathcal{G}\,;\mathrm{A}^{(1)},\mathrm{A}^{(2)},\dots,\mathrm{A}^{(N)}]\!]\Big|\Big| \\ &\mathcal{G}\in\mathbb{R}^{R_1\times R_2 \times \dots \times R_N},\,\mathrm{A}^{(n)}\in \mathbb{R}^{I_n \times R_n}, \text{columnwise orthogonal for all n} \end{aligned} \]

  • 上述目標函數改寫爲矩陣形式後以下:
    \[ \big|\big| \text{vec}(\mathcal{X}) - (\mathrm{A}^{(N)}\otimes\mathrm{A}^{(N-1)}\otimes \dots \otimes \mathrm{A}^{(1)})\text{vec}(\mathcal{G}) \big|\big| \]

  • 顯然, 核心張量\(\mathcal{G}\)必須知足
    \[ \mathcal{G} = \mathcal{X} \times_1 \mathrm{A}^{(a)\mathsf{T}} \times_2 \mathrm{A}^{(2)\mathsf{T}} \dots \times_N \mathrm{A}^{(N)\mathsf{T}}. \]

  • 那麼咱們就能把上述目標函數(的平方)寫爲:
    \[ \begin{aligned} \Big|\Big|\mathcal{X} - &[\![\mathcal{G}\,; \mathrm{A}^{(1)}, \mathrm{(2)},\dots,\mathrm{A}^{(N)}] \!]\Big|\Big|^2 \\&= ||\mathcal{X}{||}^2 - 2 \langle \mathcal{X}, [\![\mathcal{G}\,;\mathrm{A}^{(1)},\mathrm{A}^{(2)},\,\dots,\mathrm{A}^{(N)}]\!]\rangle + ||\mathcal{G}\,;\mathrm{A}^{(1)},\mathrm{A}^{(2)},\dots,\mathrm{A}^{(N)}{||}^2\\ &= ||\mathcal{X}{||}^2 - 2\langle \mathcal{X} \times_1 \mathrm{A}^{(1)\mathsf{T}}\dots \times_N \mathrm{A}^{(N)\mathsf{T}},\mathcal{G}\rangle + ||\mathcal{G}{||}^2\\ &= ||\mathcal{X}{||}^2 - 2\langle \mathcal{G},\,\mathcal{G}\rangle + ||\mathcal{G}{||}^2\\ &= ||\mathcal{X}{||}^2 - ||\mathcal{G}{||}^2\\ &= ||\mathcal{X}{||}^2 - ||\mathcal{X}\times_1 \mathrm{A}^{(1)\mathsf{T}} \times_2 \dots \times_N \mathrm{A}^{(N)\mathsf{T}}{||}^2. \end{aligned} \]

  • 此變形的細節在多篇論文中說起,如此篇論文,及這篇論文.

  • 咱們仍然可使用ALS來解(4.3)的目標函數, 因爲\(||\mathcal{X}||\)是個常數, (4.3)能夠被從新定義爲一系列包含以下最大化問題的子問題集, 其中每一個n對應了第n個成分矩陣:
    \[ (4.4)\quad\quad\max_{\mathrm{A}^{(n)}}\Big|\Big|\mathcal{X}\times_1 \mathrm{A}^{(1)\mathsf{T}} \times_2 \mathrm{A}^{(2)\mathsf{T}}\dots \times_N\mathrm{A}^{(N)\mathsf{T}}\Big|\Big|\\ \text{subject to $\mathrm{A}^{(n)}\in \mathbb{R}^{I_n\times R_n}$ and columnwise orthogonal.} \]
  • 目標函數(4.4)也能夠被寫做矩陣形式:
    \[ \Big|\Big|\mathrm{A}^{(n)\mathsf{T}}\mathrm{W}\Big|\Big| \text{ with } \mathrm{W} = \mathrm{X}_{(n)}(\mathrm{A}^{(N)}\otimes\dots\otimes\mathrm{A}^{(n+1)}\otimes\mathrm{A}^{(n-1)}\otimes\dots\otimes\mathrm{A}^{(1)}). \]
  • 其解能夠被SVD所肯定:只需將\(A^{(n)}\)定義爲W的前\(R_n\)個奇異向量便可. 這種方法會收斂至一個解使得目標函數再也不降低, 但並不確保收斂至一個全局最優解甚至是一個駐點.

  • 最近, Newton-Grassmann優化法也被考慮進計算Tucker分解法之中. 他使得解能夠收斂至一個駐點, 且速度更快(即便每次迭代的計算成本變高了). 詳情請參考
    此論文

  • 此論文着重講述瞭如何選擇Tucker分解法的rank, 和咱們CP分解法討論時相似, 他經過計算一個HOSVD來作出選擇.

4.3. 惟一性的缺少及克服它的方法

  • Tucker分解法的結果並非惟一的. 考察一個普通的3維分解(4.1, 見本文開頭), 令\(\mathrm{U}\in\mathbb{R}^{P\times P}\), \(\mathrm{V}\in \mathbb{R}^{Q\times Q}\)\(\mathrm{W}\in\mathbb{R}^{R\times R}\)爲非奇異矩陣. 那麼:
    \[ [\![\mathcal{G}\,;\mathrm{A},\mathrm{B},\mathrm{C}]\!] = [\![\mathcal{G} \times_1 \mathrm{U} \times_2 \mathrm{V} \times_3 \mathrm{W}\,;\mathrm{AU}^{-1}, \mathrm{BV}^{-1}, \mathrm{CW}^{-1}]\!]. \]

  • 換句話說, 咱們能夠經過將因子矩陣乘以相反的修改方式來抵消修改核心張量\(\mathcal{G}\)的影響,從而使得咱們能夠不影響擬合的狀況下隨意修改核心張量.

  • 這種自由度延伸出了一種新的分支: 選擇一種修正法使得核心矩陣的大部分元素爲0, 經過下降不一樣成分之間的互相影響來儘量提升惟一性. 核心矩陣的超對角被證實是不可能的, 但儘量多的使得元素爲0或接近於0是可能的. 一種方式是經過簡化核心來使得目標函數最小化; 另外一種方式是用Jacob及類型的算法最大化對角上的值; 最後, 咱們提到過HOSVD的解爲一個全正交的核, 這種特殊的類型也許會被證明有用.

Tucker分解法的介紹就到此結束了. 本文仍然缺乏一些例子與引用論文的原理講述, 將在往後補足. 下一章將是最後一章: 多種其餘分解法的介紹, 歡迎關注!

相關文章
相關標籤/搜索