3. 张量秩与CANDECOMP/PARAFAC分解法
3.0 CANDECOMP/PARAFAC分解法的定义
CANDECOMP(canonical decomposition)和PARAFAC(parallel factors)是一种对张量进行拆分的方法, 其核心思想是用有限个的秩1张量的和来(近似地)表示该张量. 这种方法被很多人独立的发现, 不考虑历史上的因素, 我们将其称为CP分解法 (CP decomposition).
例: 如果我们要把一个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},
\]
通过外积的定义, 对每个元素都有:
\[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.$}
\]
我们称那些上式中通过外积组成秩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.
\]
为了便利, 我们通常假设\(\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.
\]
到现在为止, 我们都只把注意力放在了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).\)
3.1 张量秩(tensor rank)的基本
与矩阵时的定义类似, 张量秩写作$ \text{rank}(\mathcal{X}) \(, 为还原张量所需秩1张量的最小数目. 换句话说, 也就是精确(exact)CP分解中的最小成分数. 当CP分解是精确的, 也就是\)R=\text{rank}(\mathcal{X})$时, 我们也称之为秩分解(rank decomposition).
虽然张量秩的定义和矩阵类似, 但他们的性质之间存在很