2.2 张量代数的基本概念
一个张量就是一个多维数组,是矩阵在高维空间的扩展。张量的阶也就是它的维度数,也称为模。我们遵循一般文献中的惯例,使用小写字母a,b,c表示标量,加粗的小写字母a,b,c表示向量,矩阵使用粗体的大写字母A,B,C表示,张量用花体大写字母X,Y,Z表示。ar:表示矩阵A的第r行,a:r表示矩阵A的第r列。矩阵或者张量的元素用带下标的小写字母表示,即N阶张量的第(i1,i2,…,iN)个元素表示为。
本节将直接介绍本书用到的张量代数的一些基本定义及性质。
2.2.1 Hadamard积、Kronecker积和Khatri-Rao积
定义2.3 Hadamard积。两个相同维度张量的Hadamard积就是将两个张量相同位置上的元素相乘,又称为元素积。的Hadamard积记为,它的元素定义如下:
在这里需要特别说明的是,与两个矩阵的Hadamard积相对应的是两个矩阵的元素商,也称为Hadamard商。与Hadamard积的定义类似,两个相同规模矩阵A,B∈ℝI×J的元素商记为,是对应位置上的元素相除,其元素定义如下:
定义2.4 Kronecker积。两个矩阵A∈ℝI×J和B∈ℝK×L的Kronecker积记为A⊗B,是一个(IK)×(JL)的矩阵:
矩阵的Kronecker积具有以下性质:令A∈ℝI×J,B∈ℝK×L,C∈ℝJ×M,D∈ℝL×N,则
(1)(A⊗B)(C⊗D)=AC⊗BD;
(2)(A⊗B)†=A†⊗B†;
(3)(A⊗B)⊤=A⊤⊗B⊤.
其中,矩阵的上标“†”表示矩阵的Moore-Penrose伪逆,也称为矩阵的广义逆矩阵,而矩阵的上标“⊤”表示矩阵的转置。
定义2.5 Khatri-Rao积。两个矩阵A=[a:1,a:2,…,a:K]∈ℝI×K和B=[b:1,b:2,…,b:K]∈ℝJ×K的Khatri-Rao积记为A⊙B,是将两个矩阵对应列向量做Kronecker积,其结果是一个(IJ)×K的矩阵:
A ⊙B=[a:1⊗b:1,a:2⊗b:2,…,a:K⊗b:K]
并且有两个向量a和b的Khatri-Rao积等于它们的Kronecker积,即a⊙b=a⊗b。
矩阵的Khatri-Rao积具有以下性质:令A∈ℝI×L,B∈ℝJ×L,C∈ℝK×L,则
(1)A⊙B⊙C=(A⊙B)⊙C=A⊙(B⊙C);
(2)A⊙B≠B⊙A;
(3)(A⊙B)⊤(A⊙B)=(A⊤A)*(B⊤B);
(4)(A⊙B)†=((A⊤A)*(B⊤B))-1(A⊙B)⊤.
2.2.2 张量的矩阵化、张量与矩阵的n模乘
定义2.6 矩阵化(Matricization)。矩阵化是将一个N阶张量中的所有元素都沿着某个指定阶按照一定的顺序排列为一个矩阵的操作,又称为张量的矩阵展开。
例如,一个张量沿着第n阶的矩阵化记为,张量X中的元素对应于矩阵化X(n)中的,其中
张量矩阵化的一个特殊情况就是张量向量化,即将一个张量转化为一个向量。张量的向量化记为。
定义2.7 张量与矩阵的n模乘。一个张量与一个矩阵的n模乘积记为X×nU,规模为I1×…×In-1×J×In+1×…×IN。其元素记为。
一个张量和一个矩阵的n模乘,相当于首先将X沿着第n阶矩阵化,然后再做X(n)和U的矩阵乘法运算,最后将结果再还原为一个张量。
张量的矩阵化和张量与矩阵的n模乘具有以下性质:
令是一个N阶的张量,则
(1)给定矩阵和,m≠n,有
Y×mA×nB=(Y×mA)×nB=(Y×nB)×mA
(2)给定矩阵和,有
Y×nA×nB=Y×n(BA)
(3)如果矩阵,那么
X=Y×nA⇔X(n)=AY(n)
(4)如果矩阵是列满秩的,那么
X=Y×nA⇒Y=X×nA†
(5)如果矩阵是正交的,那么
X=Y×nA⇒Y=X×nA⊤
(6)令,n=1,2,…,N,有
X=Y×1A(1)×2A(2)…×NA(N)⇔
X(n )=A(n)Y(n)(A(N)⊗…⊗A(n+1)⊗A(n-1)⊗…⊗A(1))⊤
(7)令矩阵A,B∈ℝI×J,有
(8)令矩阵A∈ℝI×J,B∈ℝJ×K,C∈ℝK×L,有
2.2.3 内积、外积和Frobenius范数
定义2.8 内积。两个相同维度的张量的内积记为〈X,Y〉。内积的结果就是Hadamard积中所有元素的和,即
定义2.9 向量的外积。将两个向量做外积可以得到一个矩阵,记为X=a◦b。令,n=1,2,…,N,则这N个向量做外积得到一个N阶的张量,即
X=a(1)◦a(2)◦…◦a(N)
其元素定义为
定义2.10 Frobenius范数。一个张量的Frobenius范数定义为。
张量的内积、向量的外积和张量的Frobenius范数之间存在以下性质:
(1)令,有
(2)令,有
(3)令,且X=a(1)◦a(2)◦…◦a(N),Y=b(1)◦b(2)◦…◦b(N),有
(4)令张量,,矩阵A∈ℝJ×K,有
〈X,Y×nA〉=〈X×nA⊤,Y〉
(5)令张量,矩阵是一个标准正交矩阵,有
‖X‖F=‖X×nA‖F
2.2.4 张量分解
运用张量代数对张量进行分解是对高阶数据降维的一种有效手段,通过张量分解还能够挖掘出高阶数据中隐含的语义信息和结构特征。张量分解也是数据挖掘领域的一个新兴工具。张量分解中两个最著名的分解模型就是TUCKER分解模型和CP分解模型。
TUCKER分解是将一个给定的N阶张量分解为一个指定维度(J1×J2×…×Jn,Jn≤In)的核张量G与一系列特征矩阵A(n)(A(n)∈,n=1,2,…,N)的n模乘形式,即
X≈G×1A(1)×2A(2)…×NA(N)
令
则张量的TUCKER分解可以表示为
图2.2所示为一个三阶张量的TUCKER分解示意图。张量的TUCKER分解用一个小规模的核张量与一系列的特征矩阵进行n模乘来逼近一个大规模的张量。在经典的TUCKER分解中,一般都假设特征矩阵是正交的。一般情况下,张量的TUCKER分解并不是唯一的,例如,令矩阵是一个正交矩阵,那么。
图2.2 三阶张量的TUCKER分解示意图
张量分解中另一种应用广泛的模型就是CP分解。CP分解是将一个张量表示为多个秩一张量(Rank-one Tensor)的和。如果一个N阶张量可以用N个向量的外积表示,即X=a(1)◦a(2)◦…◦a(N),其中,n=1,2,…,N,那么张量X就称为秩一张量(Rank-one Tensor),三阶秩一张量示意图如图2.3所示。而CP分解是将一个张量X表示为R个秩一张量的和,即,其中R是一个正整数,并且;r=1,2,…,R;n=1,2,…,N。张量的秩定义为使CP分解成立的最小的R,记为rank(X)=minR。实际上,要确定一个张量的秩是非常困难的。
图2.3 三阶秩一张量示意图
令特征矩阵,其中n=1,2,…,N。记
从而,张量的CP分解可以表示为
实际上,从TUCKER分解和CP分解的形式上可以看出,CP分解是TUCKER分解的一种特殊形式。令TUCKER分解中的核张量G为一个超对角线全为1的超对角张量,TUCKER分解就变成了CP分解。