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

3. 張量秩與CANDECOMP/PARAFAC分解法

3.0 CANDECOMP/PARAFAC分解法的定義

  • CANDECOMP(canonical decomposition)和PARAFAC(parallel factors)是一種對張量進行拆分的方法, 其核心思想是用有限個的秩1張量的和來(近似地)表示該張量. 這種方法被不少人獨立的發現, 不考慮歷史上的因素, 咱們將其稱爲CP分解法 (CP decomposition).
    image-20191216104141980算法

  • 例: 若是咱們要把一個3階張量\(\mathcal{X}\in\mathbb{R}^{I \times J \times K}\)進行CP分解, 咱們期待其結果以下.
    \[ \begin{equation} \mathcal{X} \approx \sum_{r=1}^R a_r \circ b_r \circ c_r \end{equation}, \]app

  • 經過外積的定義, 對每一個元素都有:
    \[ x_{ijk} \approx \sum_{r=1}^R a_{ir}b_{jr}c_{kr} \text{ for $i=1,\dots,I,\,j=1,\dots,J, \, k=1,\dots,K.$} \]ide

  • 咱們稱那些上式中經過外積組成秩1張量元素的向量集合爲因子矩陣(factor matrices). 例如, \(\mathrm{A} = \begin{bmatrix} a_1 & a_2 & \dots & a_R \end{bmatrix}\), 相似的,咱們構造\(\mathrm{B}\)\(\mathrm{C}\). 利用這些定義, CP分解能夠被等價寫做如下矩陣形式. 注意, 其左側都是張量的對應mode的矩陣化.
    \[ \mathrm{X}_{(1)} \approx \mathrm{A}(\mathrm{C}\odot \mathrm{B})^\mathsf{T},\\ \mathrm{X}_{(2)} \approx \mathrm{B}(\mathrm{C}\odot \mathrm{A})^\mathsf{T},\\ \mathrm{X}_{(3)} \approx \mathrm{C}(\mathrm{B}\odot \mathrm{A})^\mathsf{T}. \]函數

  • 以上3維模型也能夠用張量的frontal slices來表示:
    \[ \mathcal{X} \approx \mathrm{A}\mathrm{D}^{(k)}\mathrm{B}^\mathsf{T},\, \text{ where }\, \mathrm{D}^{(k)} \equiv \text{diag}(c_{k::}) \, \text{ for $\, k=1,...,K.$} \]學習

  • 咱們也能夠將上式子改寫爲horizontal slices和lateral slices的版本, 須要注意的是, 這種以slice爲主體的表達很難延伸到超過3維的張量之中. 利用Kolda的命名方式, 咱們也能夠進一步簡化CP模型:
    \[ \mathcal{X} \approx [\![\mathrm{A,B,C]}\!] \equiv \sum_{r=1}^R \mathrm{a}_r \circ \mathrm{b}_r \circ \mathrm{c}_r. \]ui

  • 爲了便利, 咱們一般假設\(\mathrm{A, B}\)\(\mathrm{C}\)的列向量都是歸一化的(normalized). 而本來的比重(weights)則被一個向量\(\lambda\in\mathbb{R}^R\)所吸取, 寫做如下形式:
    \[ \mathcal{X} \approx [\![\lambda \, ; \, \mathrm{A,B,C}]\!] \equiv \sum_{r=1}^R \lambda_r \: \mathrm{a}_r \circ \mathrm{b}_r \circ \mathrm{c}_r. \]spa

  • 到如今爲止, 咱們都只把注意力放在了3維張量上. 這是由於3維張量偏偏是應用當中最爲普遍也每每是足夠知足咱們需求的張量. 對於一個N階的張量, \(\mathcal{X}\in\mathbb{R}^{I_1\times I_2 \times \dots \times I_N}\)來講, 他的CP分解能夠被寫爲
    \[ \mathcal{X} \approx [\![\lambda \:; \mathrm{A}^{(1)}, \mathrm{A}^{(2)},\dots,\mathrm{A}^{(N)}]\!] \equiv \sum_{r=1}^R \lambda_r \: \mathrm{a}_r^{(1)} \circ \mathrm{a}_r^{(1)}\circ \dots \circ \mathrm{a}_r^{(N)}, \]
  • 其中\(\lambda \in \mathbb{R}^R\)以及\(\mathrm{A}^{(n)}\in \mathbb{R}^{I_n\,\times\,\mathbb{R}}\). 在這種狀況下, mode-n 矩陣化的版本將爲以下:
    \[ \mathrm{X}_{(n)}\approx \mathrm{A}^{(n)}\Lambda(\mathrm{A}^{(N)}\circ \dots \circ \mathrm{A}^{(n+1)} \circ \mathrm{A}^{(n-1)} \cdot \dots \cdot \mathrm{A^{(1)})^\mathsf{T}} \]
  • 其中 \(\Lambda = diag(\lambda).\)3d

3.1 張量秩(tensor rank)的基本

  • 與矩陣時的定義相似, 張量秩寫做$ \text{rank}(\mathcal{X}) \(, 爲還原張量所需秩1張量的最小數目. 換句話說, 也就是精確(exact)CP分解中的最小成分數. 當CP分解是精確的, 也就是\)R=\text{rank}(\mathcal{X})$時, 咱們也稱之爲秩分解(rank decomposition).orm

  • 雖然張量秩的定義和矩陣相似, 但他們的性質之間存在不少不一樣. 其中一個不一樣即是在 \(\mathbb{R}\)\(\mathbb{C}\) 之下, 實數值得張量能夠存在不一樣的秩. 舉例來講, 令張量\(\mathcal{X}\)的frontal slice爲:
    \[ \mathrm{X}_1 = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} \quad \text{and} \quad \mathrm{X}_2 = \begin{bmatrix} 0 & 1 \\ -1 & 0\end{bmatrix}. \]
  • 這個張量在 \(\mathbb{R}\) 下的秩爲3, 但在 \(\mathbb{C}\) 下的秩爲2. 其 \(\mathbb{R}\) 之下的秩分解\(\mathcal{X} = [\![\mathrm{A}, \mathrm{B}, \mathrm{C}]\!]\)爲:blog

\[ \mathrm{A} = \begin{bmatrix}1 & 0 & 1 \\ 0 & 1 & -1 \end{bmatrix}, \quad \mathrm{B} = \begin{bmatrix}1 & 0 & 1 \\ 0 & 1 & 1 \end{bmatrix}, \quad and \quad \mathrm{C} = \begin{bmatrix}1 & 1 & 0 \\ -1 & 1 & 1 \end{bmatrix}, \]

  • \(\mathbb{C}\) 之下, 其秩分解則爲:
    \[ \mathrm{A} = \frac{1}{\sqrt{2}}\begin{bmatrix} 1 & 1 \\ -i & i \end{bmatrix}, \quad \mathrm{B} = \frac{1}{\sqrt{2}}\begin{bmatrix} 1 & 1 \\ i & -i \end{bmatrix}, \quad and \quad \mathrm{C} = \frac{1}{\sqrt{2}}\begin{bmatrix} 1 & 1 \\ i & -i \end{bmatrix} \]
  • 或許讀者已經注意到了, 咱們給出了張量秩的定義, 但咱們沒有給出如何求他的方法. 這是張量秩和矩陣秩的第二個巨大不一樣. 張量秩沒有一個簡單直接的求法, 以致於任何張量秩都伴隨着證實他確實爲秩的過程. 即便咱們對秩的最大值有必定程度的瞭解, 直接求秩自己已被證實是NP-hard.

  • 除了最大秩之外, 咱們定義典型秩爲那些出現機率不爲0的秩. 當給定尺寸的張量中填上隨機實數值,咱們用monte-carlo法等檢測其秩爲某數的機率. 當其機率不爲0時, 咱們稱之爲典型秩. 好比, 咱們發現\(2 \times 2 \times 2\)張量中, 79%的可能性是秩2, 21%可能性是秩3. 秩1理論可能,但機率爲0. (試想隨機生成的一個張量剛好爲3個秩1向量外積的可能性).

  • 下圖是一些在某些狀況下咱們知道的最大秩(maximum rank)和典型秩(typical rank), 其中最詳細的是某維度下只有兩層slice的3階張量:

  • 對於任意的一個3階張量\(\mathcal{X}^{I\times J \times K}\), 咱們只知道其秩最大秩的弱上限:

\[ \text{rank}(\mathcal{X}) \leq \text{min}\{IJ, IK, JK\}. \]

  • 當咱們知道張量的某一個slice是對稱的時候, 咱們從這個限制中推測出更多信息. 因爲秩與維度的順序無關, 在不失通常性的狀況下,咱們假設其frontal slice是對稱的. 其秩的相關信息可見下圖:
  • 對於超對稱(supersymmetric)的張量來講, 咱們能夠藉由定義一個新的概念:對稱秩(symmetric rank)來研究他. 設張量\(\mathcal{X}\in \mathcal{C}^{I\times I\times \dots \times I}\)是超對稱的, 則其在\(\mathcal{C}\)上的對稱秩被定義爲:
    \[ \text{rank}_S(\mathcal{X}) = \text{min} \Big\{ R: \mathcal{X} = \sum_{r=1}^{R} \mathrm{a}_r \circ \mathrm{a}_r \circ \dots \circ \mathrm{a}_r, \text{ where $\mathrm{A} \in \mathbb{C}^{I \times R}$} \Big\}, \]
  • 也就是其對稱秩1因子的最小數目. Comon et al.指出, 除了\((N,I) \in \{ (3,5), (4,3), (4,4), (4,5)\}\)的時候等式須要加1之外,如下等式成立的機率爲1.

\[ \text{rank}_S(\mathcal{X}) = \Bigg\lceil \frac{{I+N-1}\choose{N}}{I} \Bigg\rceil, \]

3.2 惟一性 Uniqueness

  • 高維張量的另外一個很神奇的特性在於他們的秩分解每每是惟一的. 而矩陣並非, 他們每每有多個秩分解解法. 咱們能夠從一個簡單的例子來複習如何輕易構造出無窮多個這樣的矩陣秩分解.

  • 令矩陣\(\mathrm{X} \in \mathbb{R}^{I \times J}\), 則他的秩分解爲:
    \[ \mathrm{X} = \mathrm{A}\mathrm{B}^\mathsf{T} = \sum_{r=1}^R \mathrm{a}_r \circ \mathrm{b}_r. \]

  • 若是\(\mathrm{X}\)的SVD爲\(\mathrm{U\Sigma V}^\mathsf{T}\)那麼, 咱們能夠選擇\(\mathrm{A} = \mathrm{U \Sigma}\)\(\mathrm{B} = \mathrm{V}.\) 然而, 這也等效於選擇\(\mathrm{A} = \mathrm{U \Sigma W}\)\(\mathrm{B} = \mathrm{VW}\), 其中 \(\mathrm{W}\) 是任意一個 \(R\times R\)的正交矩陣(orthogonal matrix)

  • 換句話說, 咱們能夠找到無窮多個知足上述要求的矩陣秩分解. SVD的結果是惟一理由僅僅是由於其正交限制及對奇異值排序上的約束所致使.

  • 然而, CP分解在弱的多的前提下也是惟一的.令\(\mathcal{X} \in \mathbb{R}^{I \times J \times K}\)爲一個秩\(R\)三階張量, 那麼咱們有以下分解:
    \[ \mathcal{X} = \sum_{r=1}^R \mathrm{a}_r \circ \mathrm{b}_r \circ \mathrm{c}_r = [\![\mathrm{A},\mathrm{B},\mathrm{C}]\!]. \quad\quad\quad\quad\quad(3.1) \]

  • 上述的惟一性指的是, 咱們只能找到一種可能的秩1張量的組合使得他們的和爲\(\mathcal{X}\). 請注意, 因爲張量的特殊性, 咱們在講惟一時排除了張量的度量(scaling)和置換(permutation)上的內在不肯定性(indeterminacy).

  • 置換不肯定性是由於任何秩1張量均可以被隨意交換維度. 寫成數學語言即是:
    \[ \mathcal{X} = [\![\mathrm{A}, \mathrm{B}, \mathrm{C}]\!] = [\![\mathrm{A\Pi}, \mathrm{B\Pi}, \mathrm{C\Pi}]\!] \,\text{ for any $R \times R$ permutaton matrix $\mathrm{\Pi}$}. \]

  • 而度量的不肯定性則來自於咱們能夠縮放組成秩1張量的向量, 只要保證他們最後的外積不便便可:

\[ \mathcal{X} = \sum_{r=1}^{R}(\alpha_r \mathrm{a}_r) \circ (\beta_r \mathrm{b}_r) \circ (\gamma_r \mathrm{c}_r), \quad \alpha_r \beta_r \gamma_r = 1 \text{ for }r=1,\dots,R. \]

  • 在惟一性這方面最有建樹的理論之一來自於Kruskal和新概念k-rank. 對於一個矩陣\(\mathrm{A}\)來講, k-rank, 寫做\(k_\mathrm{A}\),是知足A的任意k個列向量都是線性不相關的條件下的k的最大值. 該k揭示了CP分解法(3.1)惟一性的充分條件:
    \[ k_{\mathrm{A}} + k_{\mathrm{B}} + k_{\mathrm{C}} \geq 2R + 2. \]

  • 隨後, Kruskal的結論被其餘人延伸至N階張量. 設\(\mathcal{X}\)是一個N階的秩R張量, 並假設其CP分解以下:

\[ \mathcal{X} = \sum_{r=1}^R \mathrm{a}_r^{(1)}\circ \mathrm{a}_r^{(2)} \circ \dots \circ \mathrm{a}_r^{(N)} = [\![\mathrm{A}^{(1)}, \mathrm{A}^{(2)},\dots,\mathrm{A}^{(N)}]\!]. \]

  • 那麼, 其惟一性的充分條件爲:

\[ \sum_{n=1}^N k_\mathrm{A}^{(n)} \geq 2R + (N-1). \]

  • 上述分解惟一性的充分條件, 對秩2或秩3張量來講同時也是必要條件. 而當秩大於3的時候, 就不必定了. 一個更爲通常的CP分解的必要條件集以下:
    \[ \min_{n=1,\dots,N} \text{rank} \Big(\mathrm{A}^{(1)} \cdot \dots \cdot \mathrm{A}^{(n-1)} \cdot \mathrm{A}^{(n+1)}\cdot \dots \cdot \mathrm{A}^{(N)}\Big) = R. \]
  • 然而咱們經過觀察發現, \(\text{rank}(\mathrm{A} \odot \mathrm{B}) \leq \text{rank} (\mathrm{A} \otimes \mathrm{B}) \leq \text{rank}(\mathrm{A}) \cdot \text{rank}(\mathrm{B})\), 咱們能夠甚至能夠得出一個更簡單的必要條件:
    \[ \min_{n=1,\dots,N}\Bigg(\prod_{m=1 \\ m \neq n} \text{rank}(\mathrm{A}^{(m)})\Bigg) \geq R. \]

  • De Lathauwer 提出了觀察張量秩是否爲肯定惟一(deterministically unique)或generically unique (通常惟一, 也就是機率爲1). CP分解法對一個\(\mathcal{X} \in \mathbb{R}^{I \times J \times K}\)的通常惟一條件以下:
    \[ R \leq K \quad \text{and} \quad R(R-1) \leq I(I-1)J(J-1)/2. \]

  • 相似的, 對於一個4階秩R張量$\mathcal{X} \in \mathbb{R}^{I \times J \times K \times L}來講, CP分解法的通常惟一條件爲:
    \[ R \leq L \quad \text{and} \quad R(R-1) \leq IJK(3IJK - IJ - IK - JK - I - J - K +3)/4 \]

3.3 低秩近似(Low-Rank Approximations)與邊界秩(the Border Rank)

  • 對矩陣來講, 咱們知道使用SVD的前k個因子便可得到其最好的秩k近似(rank-k approximation). 咱們來複習一下. 若秩R矩陣\(\mathrm{A}\)的SVD以下:
    \[ \mathrm{A} = \sum_{r=1}^R \sigma_r \mathrm{u}_r \circ \mathrm{v}_r \quad \text{with }\sigma_1 \geq \sigma_2 \geq \dots \geq \sigma_R > 0. \]

  • 最小化\(||\mathrm{A} - \mathrm{B}||\)的秩k近似爲:

\[ \mathrm{B}= \sum_{r=1}^k \sigma_r \mathrm{u}_r \circ \mathrm{v}_r. \]

  • 然而, 這種類型的近似法對高維張量來講不成立. 例如: 考慮一個3階秩R張量的以下CP分解:
    \[ \mathcal{X} = \sum_{r=1}^R \lambda_r \mathrm{a}_r \circ \mathrm{b}_r \circ \mathrm{c}_r. \]
  • 理想狀態下, 咱們期待將其中k個分解因子相加來得到一個最佳k秩近似. 但實際上, 這並不可行. Kolda已經給出一個反例, 其中最佳秩1近似的因子, 並不存在於其最佳秩2分解的因子中. 換句話說, 咱們不能經過尋找秩N分解因子集, 來按序給出秩N如下的最佳近似. 咱們必須獨立的面對每一個秩k問題, 並同時找出其全部因子.

  • 然而, 問題可能更爲複雜. 由於在高維張量可能根本不存在其最佳秩K近似. 咱們稱那些能夠被低秩因子近似到任意程度的張量爲退化的(degenerate)張量. 舉例來講, 令\(\mathcal{X}\in \mathbb{R}^{I \times J \times K}\) 爲一個被以下式所定義的3階張量
    \[ \mathcal{X} = \mathrm{a}_1 \circ \mathrm{b}_1 \circ \mathrm{c}_2 + \mathrm{a}_1 \circ \mathrm{b}_2 \circ \mathrm{c}_1 + \mathrm{a}_2 \circ \mathrm{b}_1 \circ \mathrm{c}_1 , \]
  • 其中, \(\mathrm{A} \in \mathbb{R}^{I \times 2}, \, \mathrm{B} \in \mathbb{J \times 2}, \quad \mathrm{C} \in \mathbb{R}^{K \times 2}\) 而且其列向量均爲線性無關. 那麼, 這個張量就能夠被一個秩2張量近似至任意程度:

\[ \mathcal{Y} = \alpha \, \Big( \mathrm{a}_1 + \frac{1}{\alpha} \mathrm{a}_2 \Big) \circ \Big( \mathrm{b}_1 + \frac{1}{\alpha} \mathrm{b}_2 \Big) \circ \Big( \mathrm{c}_1 + \frac{1}{\alpha} \mathrm{c}_2 \Big) - \alpha \, \mathrm{a}_1 \circ \mathrm{b}_1 \circ \mathrm{c}_1. \]

  • 具體來講:
    \[ ||\mathcal{X} - \mathcal{Y}|| = \frac{1}{\alpha} \Bigg|\Bigg| \, \mathrm{a}_2 \circ \mathrm{b}_2 \circ \mathrm{c}_1 + \mathrm{a}_2 \circ \mathrm{b}_1 \circ \mathrm{c}_2 + \mathrm{a}_1 \circ \mathrm{b}_2 \circ \mathrm{c}_2 + \frac{1}{\alpha} \mathrm{a}_2 \circ \mathrm{b}_2 \circ \mathrm{c}_2 \,\Bigg|\Bigg| \]

  • 很顯然, 此式能夠被縮小至任意程度. 所以上述張量爲退化的. 從這個例子中咱們還能夠發現, 秩2張量空間並非閉合(closed)的. 此例中, 以下圖所示的那樣, 秩2向量的序列收斂於秩3張量.

  • 接下來快速的敘述一些關於此性質的重要發現. Lundy, Harshman 和 Kruskal發現結合Tucker分解法能夠避免退化. De Silva和Lima指出, 那些沒有最優秩k近似的張量, 至少對某些k來講有正體積(Lebesgue measure 勒貝格測度). 換句話說, 沒有最優秩k近似並非一個罕見的事件. Comon給出了對稱矩陣和對稱近似的類似退化例子. Stegeman證實了維度爲\(I\times \times 2\)時, 任何秩爲\(I+1\)的張量都不存在最佳秩\(I\)近似. 他接下來又證實了當張量的維度爲\(I\times J\times 3\), 秩爲其2種典型秩時, 絕大多數狀況下咱們能夠找到一個近似至任意程度的低秩近似.

  • 當最佳低秩近似不存在時, 考慮其邊界秩(border rank)變得十分有用. 他被定義爲容許咱們近似至任意精度時, 所需秩1張量的數量的最小值:
    \[ \begin{aligned} \widetilde{\text{rank}} (\mathcal{X}) = \min \{ \, r \, | \, \text{ for any $\epsilon > 0$, exists tensor $\mathcal{E}$ such that $||\mathcal{E}|| < \epsilon$, rank $(\mathcal{X} + \mathcal{\mathcal{E}}) = r$}\} \end{aligned} \]

  • 顯然, 邊界秩知足:

\[ \widetilde{\text{rank}}(\mathcal{X}) \leq \text{rank}(\mathcal{X}). \]

3.4 計算CP分解 Computing the CP Decomposition

  • 就如前文所述, 並無一個肯定的算法來得出一個張量的秩. 因而, 當咱們試圖計算CP分解時遇到的第一個問題, 即是如何選擇其秩1成分的個數. 許多計算方法同時選擇了幾個不一樣的秩1成分個數來計算CP分解, 直到發現某一種選擇看起來"最好". 理想上來講, 若是數據是沒有噪音並且秩1成分數量給定後的CP計算方法是已知的, 那麼咱們只要在分解的擬合精度達到100%以前, 對\(R= 1,2,3,\dots\)依序進行計算便可.

  • 然而, 就如同你可能預料的那樣, 這樣的方法有許多問題.
    • 咱們發現即便給定秩1成分的數量, 也沒有完美的方法去求出CP.
    • 並且, 就和咱們在以前的例子中看到的那樣, 有些張量是退化的, 他們擁有能夠精確至任意精度的低秩分解. 這在應用之中引發了一些麻煩.
    • 最後, 數據中常常是有噪音的. 當有噪時, 任何擬合都不能決定秩的大小.
  • 給定秩1成分數量後計算CP的主流算法有許多. 咱們將目光先焦距在流行算法ALS(alternating least squares)(交替最小方差法)身上. 原始算法以下圖. 爲了簡化, 接下來咱們只會推導3階算法, 原始論文是針對N階的.
  • 假設三階張量\(\mathcal{X} \in \mathbb{R}^{I \times J \times K}\). 咱們的目標是算出他的CP分解, 使得其中R個秩1元素的和可以最好的近似\(\mathcal{X}\). 也就是說, 咱們要尋找
    \[ \min_{\hat{\mathcal{X}}} ||\mathcal{X} - \hat{\mathcal{X}}|| \, \text{ with } \, \hat{\mathcal{X}} = \sum_{t=1}^R \lambda_r \, \mathrm{a}_r \circ \mathrm{b} \circ \mathrm{c}_r = [\![\mathrm{\lambda}\, ; \, \mathrm{A}, \mathrm{B}, \mathrm{C}]\!]. \]

  • 交替最小方差法先固定\(\mathrm{B}\)\(\mathrm{C}\)來求出\(\mathrm{A}\), 而後固定\(\mathrm{A}\)\(\mathrm{C}\)來求\(\mathrm{B}\), 最後固定\(\mathrm{A}\)\(\mathrm{B}\)來求出\(\mathrm{C}\). 而後將重複整個流程直到一些收斂條件被符合.

  • 經過固定除了一個矩陣之外的全部矩陣, 問題就被簡化成了一個線性最小方差問題. 好比, 假設\(\mathrm{B}\)\(\mathrm{C}\)被固定, 回憶在上一章中咱們說起如下性質:
    \[ \mathrm{X}_{(1)} \approx \mathrm{A}(\mathrm{C}\odot \mathrm{B})^\mathsf{T},\\ \mathrm{X}_{(2)} \approx \mathrm{B}(\mathrm{C}\odot \mathrm{A})^\mathsf{T},\\ \mathrm{X}_{(3)} \approx \mathrm{C}(\mathrm{B}\odot \mathrm{A})^\mathsf{T}. \]

  • 所以, 最小化問題能夠被寫成如下矩陣形式

\[ \min_{\hat{\mathrm{A}}}||\mathrm{X}_{(1)} - \hat{\mathrm{A}}(\mathrm{C}\odot\mathrm{B})^\mathsf{T}||_F, \]

  • 其中. \(\hat{\mathrm{A}} = \mathrm{A} \cdot \text{diag}(\lambda)\) . 最優解爲:

\[ \hat{\mathrm{A}} = \mathrm{X}_{(1)}\big[(\mathrm{C}\odot \mathrm{B})^{\mathsf{T}}\big]^\dagger. \]

  • 因爲Khatri-Rao乘積的性質, 其僞逆矩陣有特殊形式. (可參考本筆記開頭介紹Khatri-Rao性質的部分). 常常將解寫做
    \[ \hat{\mathrm{A}} = \mathrm{X}_{(1)}(\mathrm{C} \odot \mathrm{B})(\mathrm{C}^{\mathsf{T}}\mathrm{C} * \mathrm{B}^{\mathsf{T}}\mathrm{B})^\dagger. \]

  • 這個版本的優點在於咱們僅僅須要計算一個\(R\times R\)而不是\(JK\times R\)矩陣的僞逆矩陣. 然而, 因爲存在數值病態條件的可能, 咱們並不老是推薦這個版本.

  • 最後, 咱們還須要歸一化\(\hat{\mathrm{A}}\)的列向量來得到\(\mathrm{A}\). 換句話說, 令\(\lambda_r = ||\hat{\mathrm{a}}_r||\)\(\mathrm{a}_r = \hat{\mathrm{a}}_r / \lambda_r \, \text{ for } r = 1,\dots , R.\)

  • 完整的ALS算法參照上面的Figure3.3. 他假設CP分解的成分數R是被給定的. 其因子矩陣能夠用任何方式初始化, 能夠是隨機的, 也能夠令其爲對應mode下的矩陣化結果的從左側起R個奇異向量
    \[ \mathrm{A}^{(n)} = R \,\text{ leading left singular vectors of }\mathrm{X}_{(n)} \,\text{ for }\, n=1,\dots,N. \]
  • 如圖中所述, 在每一個內迭代中, 都必須計算矩陣\(\mathrm{V}\)的僞逆矩陣. 雖然這只是個\(R\times R\)尺寸的矩陣. 迭代將持續到某些中止條件都被符合爲止. 常見的選擇有: 目標函數的提高爲0或低於閾值; 因子矩陣幾乎或沒有被改變; 目標值爲0或幾乎爲0以及預設的最大迭代次數被超過等. (熟悉深度學習的朋友應該都很熟悉這些常見的中止模式)

  • ALS算法簡單易懂, 實現輕鬆, 但每每須要不少次迭代才能收斂, 顯得效率有些低. 並且, 該算法並不保證咱們能達到一個全局最小值, 甚至不能保證是一個駐點. 他其實只是給出了一個上述最小化目標的函數的解, 使得最小化目標函數開始慢慢中止減小, 他沒有保證這個最小化目標函數處於最低值或者不會繼續減小.

  • 替代ALS的可行算法有許多, 但在時間不是緊缺的狀況下, 研究代表並無一個比ALS全面優秀的算法存在. 研究ALS的變種算法的論文更是不可勝數. 他成爲了一個分支研究的起點, 人們期待從他出發, 尋找張量分解的新的可能.

下一章咱們將引入另外一種分解法: Tucker分解法及張量壓縮, 敬請期待!!

相關文章
相關標籤/搜索