parafac 分解_张量分解与应用-学习笔记[02]

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).

虽然张量秩的定义和矩阵类似, 但他们的性质之间存在很

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值