张量的概念及基本运算
文章目录
- 张量的概念及基本运算
- 1 张量的定义
- 2 纤维(Fibers)与 切片(Slices)
- 2.1 纤维(Fibers)
- 2.2 切片(Slices)
- 3 张量的范数(norm)
- 4 张量的内积(inner product)
- 5 秩1张量(Rank-One Tensors)
- 6 对称性与张量(Symmetry and Tensors)
- 6.1 立方张量(cubical tensors)
- 6.2 超对称张量(super symmetric)
- 6.3 部分对称张量(partically symmetric)
- 7 对角张量(Diagonal Tensors)
- 8 矩阵化:将张量转化为矩阵(Matricization: Transforming a Tensor into a Matrix)
- 9 张量乘积:n模乘(Tensor Multiplication : The n-Mode Product)
- 9.1 n模矩阵积(n-mode matrix product)
- 9.2 n模向量积(The n-mode vector product)
- 10 矩阵Kronecker积、Khatri–Rao积与Hadamard积
- 10.1 Kronecker积
- 10.2 Khatri–Rao积
- 10.3 Hadamard积
- 10.4 性质
1 张量的定义
? 张量是一个多维数组。更正式地说,一个 N 阶张量是 N 个向量空间元素的张量积,每个向量空间都有自己的坐标系。
? 张量的阶数(the order of a tensor)也称为维数(dimensions)、模态(modes)、或方式(ways)。
一阶张量是一个矢量,二阶张量是一个矩阵,三阶或更高阶的张量叫做高阶张量。
2 纤维(Fibers)与 切片(Slices)
2.1 纤维(Fibers)
纤维(Fibers) 是矩阵的行和列的高阶类似物。(纤维是指从张量中抽取的向量)
例如,矩阵 A 的列为mode-1纤维,行为mode-2纤维;
三阶张量有 列(column) 、行(row) 、管(tube) 纤维,分别用
x:,j,k? ,
xi,:,k? ,
xi,j,:? 表示。
2.2 切片(Slices)
切片 (Slices) 是一个张量的二维切片,通过固定除两个维度之外的索引来定义。(切片是指从张量中抽取的矩阵)
3 张量的范数(norm)
张量
X∈RI1?×I2?×?×IN? 的范数是其所有元素平方和的平方根,即:
∥X∥=i1?=1∑I1??i2?=1∑I2???iN?=1∑IN??xi1?i2??iN?2?
A 的 F范数(Frobenius norm).
4 张量的内积(inner product)
两个相同大小张量
X,Y∈RI1?×I2?×?×IN? 的内积,即
?X,Y?=i1?=1∑I1??i2?=1∑I2???iN?=1∑IN??xi1?i2??iN??yi1?i2??iN??
且有
?X,X?=∥X∥2
5 秩1张量(Rank-One Tensors)
一个 N 维张量
X∈RI1?×I2?×?×IN? ,如果可以被写成 N 个向量的张量外积(outer product) ,
X=a(1)°a(2)°?°a(N)
则这个张量的秩为1.
其中,符号“?”代表张量外积,即,张量的每个元素都是对应的向量元素的乘积:
xi1?i2??iN??=ai1?(1)?ai2?(2)??aiN?(N)? for all 1≤in?≤In?
下图展示了
X=a°b°c,一个三阶秩1张量
- 注:
① 张量外积(Outer Product) 是线性代数中的外积, 也就是张量积(Tensor Product);克罗内克积(Kronecker Product)是张量积在矩阵中的特殊形式。
② 向量外积(Exterior Product) 是解析几何中的外积,也叫叉积(Cross Product)。
6 对称性与张量(Symmetry and Tensors)
6.1 立方张量(cubical tensors)
如果一个张量的每个维度大小相同,
X∈RI×I×I×?×I,那么这个张量就叫做立方(cubical)张量;
6.2 超对称张量(super symmetric)
如果立方张量在任何索引排列下都保持不变,则立方张量称为超对称张量(supersymmetric)(或对称张量)。
- 例如,如果满足以下条件,则三阶张量
X∈RI×I×I 是超对称的
xijk?=xikj?=xjik?=xjki?=xkij?=xkji? for all i,j,k=1,…,I
6.3 部分对称张量(partically symmetric)
张量也可在两个或多个维度下(部分)对称。
- 例如,对于三阶张量
X∈RI×I×K ,如果所有的正面切片都是对称的,
Xk?=Xk?? for all k=1,…,K
则该三阶张量在mode-1 和 mode-2 下是对称的。
7 对角张量(Diagonal Tensors)
如果一个张量
X∈RI1?×I2?×?×IN? ,当且仅当
xi1?i2??iN???=0 时,有
i1?=i2?=?=iN? ,则该张量是对角(diagonal)张量。
下图展示了一个沿超对角线分布的立方张量。
8 矩阵化:将张量转化为矩阵(Matricization: Transforming a Tensor into a Matrix)
矩阵化(Matricization),也就是所谓的“展开”(unfolding)或“压扁”(flattening),是将一个 n 维数组中的元素重新排列成一个矩阵的过程。
- 例如,一个2×3×4张量可以被重排成一个 6×4 或 3×8 的矩阵等。
张量
X∈RI1?×I2?×?×IN? 的 mod-n 矩阵化记为
X(n)? ,它是将第 n 维纤维作为结果矩阵的列。即将张量元素
(i1?,i2?,…,iN?) 映射到矩阵元素
(in?,j) 中
j=1+k?=nk=1?∑N?(ik??1)Jk? with Jk?=m?=nm=1?∏k?1?Im?
则三个mode-n的展开分别是
X(1)?X(2)?X(3)??=???123?456?789?101112?131415?161718?192021?222324????=?????14710?25811?36912?13161922?14172023?15182124??????=[113?214?315?416?517????921?1022?1123?1224?]?
最后,向量化一个张量也是可以。同样,只要元素的顺序是一致的,它就不重要。在上面的例子中,向量化的版本是:
vec(X)=??????12?24???????
9 张量乘积:n模乘(Tensor Multiplication : The n-Mode Product)
张量可以相乘,尽管显然它的符号和符号要比矩阵复杂得多。对于张量乘法的完整处理参见:Bader, MATLAB Tensor Classes forFast Algorithm Prototyping,2006.
这里我们只考虑张量n模乘(n-mode product),即用一个张量乘以一个n维矩阵(或向量)。
9.1 n模矩阵积(n-mode matrix product)
(1)定义
张量
X∈RI1?×I2?×?×IN? 与矩阵
U∈RJ×In? 的n模(矩阵)积记为
X×n?U ,尺寸为
I1?×?×In?1?×J×In+1?×?×IN? 。从元素上看有:
(X×n?U)i1??in?1?jin+1??iN??=in?=1∑In??xi1?i2??iN??ujin??
即每个n模纤维都乘以矩阵
U。这个想法也可以用矩阵化张量表示:
Y=X×n?U?Y(n)?=UX(n)?
(2)例题
设张量
x∈R3×4×2 的前切片为:
X1?=???123?456?789?101112????,X2?=???131415?161718?192021?222324????
矩阵:
U=[12?34?56?]
则张量与矩阵的1模乘为:
Y=X×1?U∈R2×4×2
其中,
Y1?=[2228?4964?76100?103136?],Y2?=[130172?157208?184244?211280?]
(3)基本运算法则
① 连模乘
对于一系列乘法中的不同mode,乘法的顺序是不相关的,即
X×m?A×n?B=X×n?B×m?A(m?=n)
如果mode相同,则
X×n?A×n?B=X×n?(BA)
② 特殊地,矩阵情形为:
ABC=B×1?A×2?CT
xTAy=A×1?xT×2?yT=A×1?x×2?y
9.2 n模向量积(The n-mode vector product)
(1)定义
张量
X∈RI1?×I2?×?×IN? 与向量
v∈RIn? 的n模(向量)积记为
X×?n?v ,尺寸为
I1?×?×In?1?×In+1?×?×IN? 。从元素上看有:
(X×?n?v)i1??in?1?in+1??iN??=in?=1∑In??xi1?i2??iN??vin??
(2)例题
设张量
x∈R3×4×2 的前切片为:
X1?=???123?456?789?101112????,X2?=???131415?161718?192021?222324????
向量:
v=[1?2?3?4?]T
则张量与向量的2模乘为:
X×?2?v=???708090?190200210????
(3)基本运算法则
当涉及到模n向量乘法时,优先级很重要,因为中间结果的顺序会改变。即
X×?m?a×?n?b=(X×?m?a)×?n?1?b=(X×?n?b)×?m?a for m
10 矩阵Kronecker积、Khatri–Rao积与Hadamard积
10.1 Kronecker积
矩阵
A∈RI×J 与
B∈RK×L 的 Kronecker 积记为
A?B ,其结果大小为
(IK)×(JL) 的矩阵:
A?B?=??????a11?Ba21?B?aI1?B?a12?Ba22?B?aI2?B??????a1J?Ba2J?B?aIJ?B???????=[a1??b1?a1??b2?a1??b3??aJ??bL?1?aJ??bL?]?
10.2 Khatri–Rao积
Khatri–Rao积是Kronecker积的“matching columnwise”
矩阵
A∈RI×K 与
B∈RJ×K 的 Khatri–Rao 积记为
A?B ,其结果大小为
(IJ)×K 的矩阵:
A⊙B=[a1??b1??a2??b2????aK??bK??]
向量的Kronecker积与Khatri-Rao积相等:
a?b=a⊙b
10.3 Hadamard积
Hadamard积是矩阵的元素积(按元素点乘)
矩阵
A和
B尺寸均为
I×J,它们的Hadamard积记为
A?B,其结果为大小
I×J的矩阵
A?B=??????a11?b11?a21?b21??aI1?bI1??a12?b12?a22?b22??aI2?bI2???????a1J?b1J?a2J?b2J??aIJ?bIJ????????
10.4 性质
上面讨论的各种积,有如下性质:
(A?B)(C?D)(A?B)?A⊙B⊙C(A⊙B)?(A⊙B)(A⊙B)??=AC?BD=A??B?=(A⊙B)⊙C=A⊙(B⊙C)=A?A?B?B=((A?A)?(B?B))?(A⊙B)??
其中,
A? 为
A 的Moore-Penrose伪逆。
参考文献:
[1] Kolda T G , Bader B W . Tensor Decompositions and Applications[J]. SIAM Review, 2009, 51(3):455-500.