张量分解--CP、Tucker分解

本文详细介绍了张量的基本概念、符号表示,如Fiber和Slice,以及各种张量分解方法(如CP分解、Tucker分解、SVD的高阶扩展),涉及norm、mode-nproduct、矩阵乘积和张量的矩阵化与向量化。文章还探讨了PCA的高阶形式——Tucker分解及其在降维中的应用。

目录

符号和准备工作

张量

实例

Fiber

Slice

norm

张量内积

(超)对称与(超)对角

秩一张量

对角张量

张量的矩阵化与向量化

Kolda水平展开

 具体例子

mode-n product

矩阵的Kronecker乘积-(张量积)

矩阵的Khatri-Rao乘积

矩阵的Hadamard乘积

CP分解

张量CP分解的定义

向量的内积与外积

CP秩

张量CP分解的理解

Tucker分解

线性变化改变向量维度例子


这两种张量分解算法可以被看做是张量奇异值分解的高阶扩展:CP分解将张量分解为秩一张量之和,Tucker分解是主成成分分析(PCA)的高阶形式。

符号和准备工作

张量

张量可以理解为高阶矩阵

实例

在网络测量领域,如果我们想要测量 n 个网络设备之间的延迟,那么,很自然地,在具体的某一时刻,我们会将这 n 个网络设备两两之间通信的延迟表示为一个 n×n 矩阵。接下来,如果我们收集了许多不同时刻的数据,比方说 n3 个时刻,我们将这些数据排列起来,这样就构成了一个 n×n×n3 张量,如下图所示

Fiber

Fiber在张量分解中指的是张量的一维切片。在三维张量中,Fiber可以是沿着某一特定方向的线段,类似于矩阵的行或列。它是张量结构的一个重要组成部分。

Slice

在张量分解中,"slice"指的是张量的二维切片。对于三维张量,一个slice可以看作是沿着特定方向的一个平面切片,就像三维立方体的一面。每个slice都是一个矩阵,张量可以看作是这些矩阵的堆叠。

正面切片也就对应这上文提到的网络延迟的样子。

我们可以对比一下Fiber以及切片的符号表示,可以看出来,Fiber是固定三阶张量的两个维度,切片是固定三阶张量的一个维度。如果扩展到更 n 阶的张量,那么Fiber是固定张量的 n−1 个维度,切片是固定张量的 n−2 个维度

norm

norm"是一个数学术语,用于衡量向量或矩阵的大小。对于向量,norm通常表示向量的长度,对于矩阵,norm可以表示矩阵的某种“大小”或“长度”。

常见的norm包括:

  • L1范数:向量元素的绝对值之和。
  • L2范数:向量元素的平方和的平方根,也称为欧几里得范数。
  • 无穷范数:向量元素的最大绝对值。
  • Frobenius范数:矩阵元素的平方和的平方根。

假设现在有张量 \chi \in R^{I_{1}\times I_{2}\times \cdots I_{N}} ,张量的范数定义为张量的各个元素\chi _{ijk}的平方和开根号,用公式表示如下:

$\|\boldsymbol{X}\|=\sqrt{\sum_{i_{1}=1}^{I_{1}} \sum_{i_{2}=1}^{I_{2}} \cdots \sum_{i_{N}}^{I_{N}} x_{i_{1} i_{2} \cdots i_{N}}^{2}}$

张量内积

向量的内积就是两个向量对应元素乘积之和,结果是个标量,两个向量外积结果是一个矩阵,三个向量外积是一个三阶张量。

此处张量内积的定义和向量内积是类似的,即张量对应元素乘积之和:

\langle\boldsymbol{x}, \boldsymbol{y}\rangle=\sum_{i_{1}=1}^{I_{1}} \sum_{i_{2}=1}^{I_{2}} \cdots \sum_{i_{N}=1}^{I_{N}} x_{i_{1} i_{2} \cdots i_{N}} y_{i_{1} i_{2} \cdots i_{N}}

(超)对称与(超)对角

  • 立方张量:各个mode的长度相等
  • 对称:一个立方张量是对称的,如果其元素在下标的任意排列下是常数。如一个三阶立方张量是超对称的,如果   x_{i j k}=x_{i k j}=x_{j i k}=x_{j k i}=x_{k i j}=x_{k j i}, \forall i, j, k
  • 对角:仅当 $i_{1}=i_{2}=\cdots=i_{N} \quad x_{i_{1} i_{2} \cdots i_{N}} \neq 0$时,

秩一张量

秩一张量的定义是:如果一个张量可以被表示为一组向量的外积,那么这个张量就被称为秩一张量。具体来说,如果张量 $\mathcal{A} \in R^{n_{1} \times \ldots \times n_{d}}$ 可以被写成 $d$ 个向量的外积,即$\mathcal{A} = \mathbf{v}_{1} \otimes \mathbf{v}_{2} \otimes \ldots \otimes \mathbf{v}_{d}$,那么我们就说张量$\mathcal{A}$ 是秩一的。这里的 $\otimes$ 表示外积运算。

 回顾一下SVD分解

一个矩阵可以分解为左右奇异向量矩阵以及一个奇异值矩阵的乘积形式我们现在不妨以另外一种角度来看待矩阵的SVD分解:

我们如果拿出第一个左奇异向量以及第一个右奇异向量,这两个向量做外积,我们就可以得到一个矩阵,同时这两个奇异向量对应同一个奇异值,我们尝试将奇异值理解为这两个向量外积得到的这个矩阵的在原始矩阵中所占的权重,以此类推我们就可以得到所有奇异值对应的左右奇异向量外积的结果矩阵,然后将这些矩阵加起来就得到了原始矩阵。

矩阵SVD分解就是将矩阵分解为许多因子矩阵之和

1.奇异值分解(SVD): 给定一个矩阵M,SVD分解将其分解为三个部分:左奇异向量(U)、奇异值对角矩阵(Σ)和右奇异向量的转置V^T。数学上表示为:
                                                               M = U \cdot \Sigma \cdot V^T

2. 左右奇异向量的外积: 左奇异向量和右奇异向量可以看作矩阵空间的一组基。外积所得的矩阵可以看作这些基的线性组合。

3. 带有权重的因子矩阵: 奇异值对角矩阵Σ包含了矩阵的奇异值,这些值可以看作权重。将权重与左右奇异向量的外积相乘,得到的就是所谓的因子矩阵

4. 因子矩阵之和: 将所有的因子矩阵相加,就可以重构原始矩阵。这就是说,原始矩阵可以看作许多因子矩阵之和。

矩阵做SVD分解以后,奇异值矩阵中第一个奇异值为1,剩下的奇异值都为0。因此,奇异值为1对应的左右奇异向量的外积所得到的矩阵就是原始矩阵。

对角张量

张量的矩阵化与向量化

在张量的分析与计算中,经常希望用一个矩阵代表一个三阶张量。此时,就需要有一种运算,能够将一个三阶张量(三路阵列)经过重新组织或者排列,变成一个矩阵(二路阵列)。将一个三路或N路阵列重新组织成一个矩阵形式的变换称为张量的矩阵化。张量的矩阵化有时也称张量的展开或张量的扁平化。

                                        将N阶张量$\mathcal{X}$ 沿mode-n展开成一个矩阵 $\mathbf{X}_{(n)}$
除了高阶张量的唯一矩阵表示外,一个高阶张量的唯一向量表示也是很多场合感兴趣的。高阶向量的向量化是一种将张量排列成唯一一个向量的变换。

在张量的矩阵化过程中,首先可以分为水平展开与纵向展开,然后可以进一步细分为Kiers展开、LMV展开、Kolda展开。在此,我们仅介绍Kolda水平展开

Kolda水平展开

Kolda于2006年提出该方法,将 $N$阶张量元素$a_{i_{1}, i_{2}, \cdots, i_{N}}$ 映射为模式-n矩阵 $A_{(n)}$ 的元素 $a_{i_{n}, j}^{I_{n} \times I_{1} \cdots I_{n-1} I_{n+1} \cdots I_{N}}$ ,其中

j=1+\sum_{\substack{k=1 \\ k \neq n}}^{N}\left(i_{k}-1\right) J_{k} \quad$ with $\quad J_{k}=\prod_{\substack{m=1 \\ \text { c. }}}^{k-1} I_{m}

 具体例子

$\mathbf{X}_{1}=\left[\begin{array}{llll}1 & 4 & 7 & 10 \\ 2 & 5 & 8 & 11 \\ 3 & 6 & 9 & 12\end{array}\right], \quad \mathbf{X}_{2}=\left[\begin{array}{llll}13 & 16 & 19 & 22 \\ 14 & 17 & 20 & 23 \\ 15 & 18 & 21 & 24\end{array}\right]$

X_{1}X_{2} 代表张量

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值