1. 张量的定义
首先我们来了解一下什么是张量,张量有四个定义:
- 张量是多维数组
- 张量是一种不随坐标系的改变而改变的几何对象
- 张量是向量和余向量,不会随着坐标系的改变而改变
- 张量是多重线性映射,即
T : V ∗ × ⋯ × V ∗ ⏟ m × V × ⋯ × V ⏟ n → R , V 是 矢 量 空 间 , V ∗ 是 对 应 的 对 偶 空 间 T:\underbrace{V^* \times \cdots \times V^*}_m \times \underbrace{V \times \cdots \times V}_n \rightarrow \mathbb{R},\scriptsize V 是矢量空间,V^*是对应的对偶空间 T:m V∗×⋯×V∗×n V×⋯×V→R,V是矢量空间,V∗是对应的对偶空间
这里我们要学习的是张量与深度学习的相关知识,下面的几个定义是物理和工学领域内的张量定义,我们这里只考虑其在数学领域内的定义,也就是第一个:张量是一个多维数组 。
数组是有序的元素序列,我们将 不同维度的数组 定义为不同阶的张量:
-
将 标量 (只有大小没有方向的数) 定义为 0 阶张量 ,如
-
将 一维数组 定义为 一阶张量 ,如下所示
-
将多个一维数组的拼接,即 矩阵 定义为 二阶张量 :
-
将多个 矩阵的叠加 定义为 三阶张量 :
-
下面我们类比一阶张量,将三阶张量排列为一个数组,数组的元素是三阶张量,如果我们将三阶张量记为
那么多个元素组成的数组就定义为 四阶张量 ,如下所示
-
同样,将四阶张量拼接,组成三阶张量的矩阵,称为 五阶张量 ,如下所示
-
对上面的定义进行循环重复,我们就可以定义更高阶的张量了
有了对不同张量的理解后,我们看一下张量具体可以 描述的对象 有哪些。
-
一阶张量是一个一维数组,即一组数,我们可以将一组数表示为一个矢量,二阶张量是一个矩阵,因此我们可以将张量作为矢量和矩阵概念的推广。
-
三阶张量
对于 RGB 图片,我们可以理解为由三张分别表示 R,G,B 分量的图片堆叠而成,如下
对于每个分量图片,我们都可以看成一个矩阵,那么一张 RGB 图片就可以用三阶的张量进行表示。 -
四阶张量
对于多张 RGB 图片,我们可以用四阶张量进行表示,可以看作是三阶张量(单张RGB图像)的数组(多张 RGB 图片)。
-
五阶张量
视频是由多张图片组成的,因此每个视频可以用一个四阶张量表示,显然,多个视频可以用五阶张量表示。
2. 指标符号
在张量的讨论中,我们对于分量的表示和区分都使用下表字母来表示,下面我们来了解一下用指标符号表示表达式。
2.1 自由指标
对于下面的一组数:
a
1
,
a
2
,
a
3
,
⋯
,
a
n
a_1,a_2,a_3,\cdots,a_n
a1,a2,a3,⋯,an
我们可以用以下的表达项来简写:
a
i
,
i
=
1
,
2
,
⋯
,
n
a_i,i=1,2,\cdots,n
ai,i=1,2,⋯,n
即用 i \pmb{i} iii (指标) 来表示将该项罗列,我们称这种在取值范围内对表达项进行罗列的指标为 自由指标,自由指标在表达项中只出现一次。
2.2 求和约定与哑指标
对于求和表达式:
S
=
∑
i
=
1
n
a
i
x
i
=
a
1
x
1
+
a
2
x
2
+
⋯
+
a
n
x
n
S=\sum_{i=1}^n a_ix_i=a_1x_1+a_2x_2+ \cdots +a_nx_n
S=i=1∑naixi=a1x1+a2x2+⋯+anxn
我们约定将其简写为
S
=
a
i
x
i
S=a_ix_i
S=aixi
求和约定的表达项 a i x i a_ix_i aixi 中 i i i 出现两次,我们称在一个 表达项 中重复出现两次的指标为 哑指标 ,哑指标表示要对该表达项罗列后再求和 ,只有在表达项中出现两次的才称为哑指标。
现在,我们利用自由指标和哑指标来表示下式:
A
11
x
1
+
A
12
x
2
+
A
13
x
3
=
b
1
A_{11}x_1+A_{12}x_2+A_{13}x_3=b_1
A11x1+A12x2+A13x3=b1
A 21 x 1 + A 22 x 2 + A 23 x 3 = b 2 A_{21}x_1+A_{22}x_2+A_{23}x_3=b_2 A21x1+A22x2+A23x3=b2
A 31 x 1 + A 32 x 2 + A 33 x 3 = b 3 A_{31}x_1+A_{32}x_2+A_{33}x_3=b_3 A31x1+A32x2+A33x3=b3
因为一个自由指标表示将表达式的罗列,我们可以用自由指标将三个式子合并为一个:
A
i
1
x
1
+
A
i
2
x
2
+
A
i
3
x
3
=
b
i
A_{i1}x_1+A_{i2}x_2+A_{i3}x_3=b_i
Ai1x1+Ai2x2+Ai3x3=bi
之后可以用哑指标将多个表达项合为一项:
A
i
j
x
j
=
b
i
A_{ij}x_j=b_i
Aijxj=bi
- i → i \rightarrow i→ 自由指标
- j → j \rightarrow j→ 哑指标
指标可以用任意的字母表示,我们约定
- 拉丁指标 i , j , k , ⋯ i,j,k,\cdots i,j,k,⋯ 为三维指标,即取值范围为 1 , 2 , 3 1,2,3 1,2,3
- 希腊指标 α , β , γ , ⋯ \alpha,\beta,\gamma,\cdots α,β,γ,⋯ 为二维指标,取值范围为 1 , 2 1,2 1,2
我们可以用一个表达式中出现多对哑指标来表示 多重求和 ,如
a
i
j
x
i
x
j
=
∑
i
=
1
3
∑
j
=
1
3
a
i
j
x
i
x
j
a_{ij}x_ix_j=\sum_{i=1}^3 \sum_{j=1}^3 a_{ij} x_i x_j
aijxixj=i=1∑3j=1∑3aijxixj
2.3 δ i j \delta_{ij} δij 符号(Kronecker delta)
δ
i
j
\delta_{ij}
δij 是张量中的一个基本符号,也称为单位张量,它的定义为
δ
i
j
=
{
1
i
=
j
0
i
≠
j
(
i
,
j
=
1
,
2
,
⋯
,
n
)
\delta_{ij}= \begin{cases} 1 & i=j \\ 0 & i\neq j \end{cases}\ \ \ \ (i,j=1,2,\cdots,n)
δij={10i=ji=j (i,j=1,2,⋯,n)
特性:
-
δ i j \delta_{ij} δij 对于指标 i i i 和 j j j 是对称的,即 δ i j = δ j i \pmb{\delta_{ij}=\delta_{ji}} δij=δjiδij=δjiδij=δji 。
-
δ i j \delta_{ij} δij 的分量集合是一个单位矩阵。在三维空间中
[ δ 11 δ 12 δ 13 δ 21 δ 22 δ 23 δ 31 δ 32 δ 33 ] = [ 1 0 0 0 1 0 0 0 1 ] \left[\begin{matrix} \delta_{11} & \delta_{12} & \delta_{13} \\ \delta_{21} & \delta_{22} & \delta_{23} \\ \delta_{31} & \delta_{32} & \delta_{33} \\ \end{matrix}\right]= \left[\begin{matrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{matrix}\right] ⎣⎡δ11δ21δ31δ12δ22δ32δ13δ23δ33⎦⎤=⎣⎡100010001⎦⎤ -
δ i j \delta_{ij} δij 具有换标作用。如
d s 2 = δ i j d x i d x j = d x i d x i = d x j d x j \mathrm{d} s^2= \delta_{ij} \mathrm{d} \textcolor{red}{x_i} \mathrm{d} \textcolor{red}{x_j} = \mathrm{d} \textcolor{red}{x_i} \mathrm{d} \textcolor{red}{x_i} = \mathrm{d} \textcolor{red}{x_j} \mathrm{d} \textcolor{red}{x_j} ds2=δijdxidxj=dxidxi=dxjdxj如果符号 δ i j \delta_{ij} δij 的两个指标中,有一个和同项中其它因子的指标相同,则可以把该因子的那个相同指标换成 δ i j \delta_{ij} δij 的另一个指标,而 δ i j \delta_{ij} δij 自动消失。这是因为:
δ i j d x i d x j = δ 1 j d x 1 d x j + δ 2 j d x 2 d x j + δ 3 j d x 3 d x j \begin{aligned} \delta_{ \textcolor{red}{i} j} \mathrm{d} \textcolor{red}{x_i} \mathrm{d} x_j & =\delta_{ \textcolor{red}{1} j} \mathrm{d} \textcolor{red}{x_1} \mathrm{d} x_j + \delta_{ \textcolor{red}{2} j} \mathrm{d} \textcolor{red}{x_2} \mathrm{d} x_j + \delta_{ \textcolor{red}{3} j} \mathrm{d} \textcolor{red}{x_3} \mathrm{d} x_j \end{aligned} δijdxidxj=δ1jdx1dxj+δ2jdx2dxj+δ3jdx3dxj根据上面 δ i j \delta_{ij} δij 的定义我们可以知道,只有 i = j i=j i=j 时,对应的项不为 0 0 0 ,因此上式变为
δ i j d x i d x j = δ 1 1 d x 1 d x 1 + δ 2 2 d x 2 d x 2 + δ 3 3 d x 3 d x 3 = d x 1 d x 1 + d x 2 d x 2 + d x 3 d x 3 = d x i d x i = d x j d x j \begin{aligned} \delta_{ \textcolor{red}{i} j} \mathrm{d} \textcolor{red}{x_i} \mathrm{d} x_j & =\delta_{ \textcolor{red}{1} 1} \mathrm{d} \textcolor{red}{x_1} \mathrm{d} x_1 + \delta_{ \textcolor{red}{2} 2} \mathrm{d} \textcolor{red}{x_2} \mathrm{d} x_2 + \delta_{ \textcolor{red}{3} 3} \mathrm{d} \textcolor{red}{x_3} \mathrm{d} x_3 \\ &=\mathrm{d} \textcolor{red}{x_1}\mathrm{d} x_1 + \mathrm{d} \textcolor{red}{x_2}\mathrm{d} x_2 + \mathrm{d} \textcolor{red}{x_3}\mathrm{d} x_3 \\ &= \mathrm{d} \textcolor{red}{x_i} \mathrm{d} x_i = \mathrm{d} \textcolor{red}{x_j} \mathrm{d} x_j \end{aligned} δijdxidxj=δ11dx1dx1+δ22dx2dx2+δ33dx3dx3=dx1dx1+dx2dx2+dx3dx3=dxidxi=dxjdxj类似的我们可以得到:
δ i j a j k = a i k \delta_{ij}a_{jk}=a_{ik} δijajk=aikδ i j a k j = a k i \delta_{ij}a_{kj}=a_{ki} δijakj=aki
δ i j δ j k = δ i k \delta_{ij} \delta_{jk}=\delta_{ik} δijδjk=δik
δ i j δ j k δ k l = δ i l \delta_{ij} \delta_{jk} \delta_{kl}=\delta_{il} δijδjkδkl=δil
应用:
-
三个相互正交的单位基矢量构成正交标准化基,它们具有如下的性质:
- 每个基矢的模为 1 1 1 ,即 e i ⋅ e j = 1 ( i = j ) e_i \cdot e_j=1 (i=j) ei⋅ej=1(i=j)
- 不同的矢量相互正交,即 e i ⋅ e j = 0 ( i ≠ j ) e_i \cdot e_j =0 (i\neq j) ei⋅ej=0(i=j)
上面的两个性质可以用 δ i j \delta_{ij} δij 的形式统一表示,即:
e i ⋅ e j = δ i j e_i \cdot e_j=\delta_{ij} ei⋅ej=δij
- 矢量的点积可以表示为:
a ⋅ b = ( a j e j ) ⋅ ( b k e k ) = a j b k ( e j e k ) = a j b k δ j k = a j b j = a k b k \begin{aligned} \pmb{a \cdot b} & =(a_j e_j)\cdot(b_k e_k)=a_j b_k (e_j e_k) \\ & = a_j b_k \delta_{jk} =a_j b_j =a_k b_k \end{aligned} a⋅ba⋅ba⋅b=(ajej)⋅(bkek)=ajbk(ejek)=ajbkδjk=ajbj=akbk
2.4 e r s t e_{rst} erst 符号(排列符号或置换符号)
该符号在笛卡尔坐标系下的定义为
e
r
s
t
=
{
1
当
r
,
s
,
t
为
正
序
排
列
时
−
1
当
r
,
s
,
t
为
逆
序
排
列
时
0
当
r
,
s
,
t
中
有
两
个
指
标
相
同
时
e_{rst}=\left\{ \begin{array}{rcl} 1 & &\small{当\ r,s,t \ 为正序排列时} &\\ -1 & &\small{当\ r,s,t \ 为逆序排列时} &\\ 0 & &\small{当\ r,s,t \ 中有两个指标相同时}& \end{array} \right.
erst=⎩⎨⎧1−10当 r,s,t 为正序排列时当 r,s,t 为逆序排列时当 r,s,t 中有两个指标相同时
或
e
r
s
t
=
1
2
(
r
−
s
)
(
s
−
t
)
(
t
−
r
)
e_{rst}=\frac{1}{2}(r-s)(s-t)(t-r)
erst=21(r−s)(s−t)(t−r)
其中
- ( 1 , 2 , 3 ) (1,2,3) (1,2,3) 及其轮流换位得到的 ( 2 , 3 , 1 ) (2,3,1) (2,3,1) 和 ( 3 , 1 , 2 ) (3,1,2) (3,1,2) 称为正序排列
- ( 3 , 2 , 1 ) (3,2,1) (3,2,1) 及其轮流换位得到的 ( 2 , 1 , 3 ) (2,1,3) (2,1,3) 和 ( 1 , 3 , 2 ) (1,3,2) (1,3,2) 称为逆序排列
特性:
- e r s t e_{rst} erst 共有 27 27 27 个元素,其中三个元素为 1 1 1 ,三个元素为 − 1 -1 −1 ,其余的都是 0 0 0
- 对其任意两个指标交换都是反对称的,即
e r s t = − e s r t = − e r t s = − e t s r e_{rst}=-e_{srt}=-e_{rts}=-e_{tsr} erst=−esrt=−erts=−etsr - 当三个指标循环移位时,
e
r
s
t
e_{rst}
erst 的值不发生改变
e r s t = e s t r = e t r s e_{rst}=e_{str}=e_{trs} erst=estr=etrs
2.5 张量方程
每一项都是由张量组成的方程称为 张量方程 ,如:
σ
i
j
=
C
i
j
k
l
ε
k
l
⟹
σ
=
C
:
ε
\sigma_{ij}=C_{ijkl} \ \varepsilon_{kl} \ \ \ \ \Longrightarrow \pmb{\sigma}=\pmb{C:\varepsilon}
σij=Cijkl εkl ⟹σσσ=C:εC:εC:ε
σ i j + f i = 0 ⟹ ∇ ⋅ σ + f = 0 \sigma_{ij} +f_i=0 \ \ \ \ \ \Longrightarrow \nabla \pmb{\cdot \ \sigma} + \pmb{f} = \pmb{0} σij+fi=0 ⟹∇⋅ σ⋅ σ⋅ σ+fff=000
特性:张量方程具有与坐标选择无关的性质,可用于描述客观物理线性的固有特性和普遍规律。
3. 张量代数
在了解张量的各种代数运算之前,我们先来看一下张量的表示方法。
高阶张量我们使用粗体字母表示, χ ∈ R I 1 × I 2 × ⋯ × I N \pmb{\chi} \in \mathbb{R}^{I_1 \times I_2 \times \cdots \times I_N} χχχ∈RI1×I2×⋯×IN,其表示 N N N 阶的张量, I n I_n In 表示第 n n n 维的大小。 N N N 阶张量 χ \pmb{\chi} χχχ 中的元素可以记为 x i 1 i 2 ⋯ i n x_{i_1 i_2 \cdots i_n } xi1i2⋯in 。如 χ ∈ R 2 × 3 × 4 \pmb{\chi} \in \mathbb{R}^{2 \times 3 \times 4} χχχ∈R2×3×4 ,表示大小为 2 × 3 × 4 2 \times 3 \times 4 2×3×4 的三维数组, x 214 x_{214 } x214 表示第二行、第一列、第四层的元素。
3.1 几种矩阵的特殊乘法
-
Kronecker 乘积(张量积)
对于两个矩阵 A ∈ R I × J \mathrm{A} \in \mathbb{R}^{I \times J} A∈RI×J 和 B ∈ R K × L \mathrm{B}\in\mathbb{R}^{K\times L} B∈RK×L ,其 Kronecker 积被定义为如下的 ( I K ) × ( J L ) (IK) \times (JL) (IK)×(JL) 的矩阵,即将 A A A 的每个元素乘以矩阵 B B B ,我们用符号 ⊗ \otimes ⊗ 来表示 Kronecker 乘积:
A ⊗ B = [ a 11 B a 12 B … a 1 J B a 21 B a 22 B … a 2 J B ⋮ ⋮ ⋱ ⋮ a l 1 B a 12 B … a I J B ] \begin{aligned} \mathrm{A} \otimes \mathrm{B} &= \begin{bmatrix} a_{11}\mathrm{B} & a_{12}\mathrm{B} & \dots & a_{1J}\mathrm{B} \\ a_{21}\mathrm{B} & a_{22}\mathrm{B} & \dots & a_{2J}\mathrm{B} \\ \vdots & \vdots & \ddots & \vdots \\ a_{l1}\mathrm{B} & a_{12}\mathrm{B} & \dots & a{IJ}\mathrm{B} \end{bmatrix}\end{aligned} A⊗B=⎣⎢⎢⎢⎡a11Ba21B⋮al1Ba12Ba22B⋮a12B……⋱…a1JBa2JB⋮aIJB⎦⎥⎥⎥⎤ -
Hadamard 乘积
Hadamard 是对 相同大小的矩阵 进行的,它让相同位置的元素相乘,对矩阵 A , B ∈ R I × J A, B \in \mathbb{R}^{I \times J} A,B∈RI×J ,其 Hadamard 乘积记作 A ∗ B A*B A∗B :
A ∗ B = [ a 11 b 11 a 12 b 12 … a 1 J b 1 J a 21 b 21 a 22 b 22 … a 2 J b 2 J ⋮ ⋮ ⋱ ⋮ a I 1 b I 1 a I 2 b I 2 … a I J b I J ] \mathrm{A} * \mathrm{B} = \begin{bmatrix} a_{11}b_{11} & a_{12}b_{12} & \dots & a_{1J}b_{1J}\\ a_{21}b_{21} & a_{22}b_{22} & \dots & a_{2J}b_{2J}\\ \vdots & \vdots & \ddots & \vdots \\ a_{I1}b_{I1} & a_{I2}b_{I2} & \dots & a_{IJ}b_{IJ} \end{bmatrix} A∗B=⎣⎢⎢⎢⎡a11b11a21b21⋮aI1bI1a12b12a22b22⋮aI2bI2……⋱…a1Jb1Ja2Jb2J⋮aIJbIJ⎦⎥⎥⎥⎤ -
Khatri - Rao 乘积
Khatri - Rao 乘积是列对列的乘积,相乘的两个矩阵必须有相同的列数,矩阵 A ∈ R I × K \mathrm{A}\in\mathbb{R}^{I \times K} A∈RI×K 和 B ∈ R L × K \mathrm{B}\in\mathbb{R}^{L\times K} B∈RL×K 的 Khatri - Rao 乘积记为 A ⊙ B \mathrm{A} \odot \mathrm{B} A⊙B ,即将矩阵 A A A 的每一列和矩阵 B B B 的对应列进行 Kronecker 积:
A ⊙ B = [ a 1 ⊗ b 1 a 2 ⊗ b 2 … a K ⊗ b K ] \mathrm{A}\odot \mathrm{B} = \begin{bmatrix} a_1 \otimes b_1 & a_2 \otimes b_2 & \dots & a_K \otimes b_K \end{bmatrix} A⊙B=[a1⊗b1a2⊗b2…aK⊗bK]如,对矩阵 A = [ 1 2 3 4 ] = ( a 1 , b 1 ) A=\left[ \begin{matrix} 1 & 2 \\ 3 & 4 \end{matrix} \right]=(\boldsymbol{a_1},\boldsymbol{b_1} ) A=[1324]=(a1,b1) 和 B = [ 5 6 7 8 9 10 ] = ( a 2 , b 3 ) B=\left[ \begin{matrix} 5 & 6 \\ 7 & 8 \\ 9 & 10 \end{matrix} \right]=(\boldsymbol{a_2},\boldsymbol{b_3} ) B=⎣⎡5796810⎦⎤=(a2,b3) 的 Khatri - Rao 乘积为
A ⊙ B = ( a 1 ⊗ a 2 , b 1 ⊗ b 2 ) = [ [ 1 3 ] ⊗ [ 5 7 9 ] [ 2 4 ] ⊗ [ 6 8 10 ] ] A \odot B=(\boldsymbol{a_1}\otimes \boldsymbol{a_2},\boldsymbol{b_1}\otimes \boldsymbol{b_2})= \left[ \begin{matrix} \left[ \begin{matrix} 1 \\ 3 \end{matrix} \right] \otimes \left[ \begin{matrix} 5 \\ 7 \\ 9 \end{matrix} \right] & \left[ \begin{matrix} 2 \\ 4 \end{matrix} \right] \otimes \left[ \begin{matrix} 6 \\ 8 \\ 10 \end{matrix} \right] \end{matrix}\right] A⊙B=(a1⊗a2,b1⊗b2)=⎣⎡[13]⊗⎣⎡579⎦⎤[24]⊗⎣⎡6810⎦⎤⎦⎤
3.2 特殊张量,主方向与主分量
-
常用特殊张量
-
零张量
若张量 T = 0 T=0 T=0 ,则
T i j = 0 , T i j ′ = 0 T_{ij}=0,T_{ij}^{'}=0 Tij=0,Tij′=0 -
单位张量
笛卡尔坐标系中分量为 δ i j \delta_{ij} δij 的二阶张量 I I I ,即:
I = δ i j e i e j = e 1 e 1 + e 2 e 2 + e 3 e 3 I=\delta_{ij}e_i e_j=e_1 e_1 + e_2 e_2 +e_3 e_3 I=δijeiej=e1e1+e2e2+e3e3I i j = δ i j 且 I i j ′ = δ i j I_{ij}=\delta_{ij} \ \ \ \small{且}\ \ \ \ I_{ij}^{'}=\delta_{ij} Iij=δij 且 Iij′=δij
单位张量和任意张量的点积就等于该张量本身。
-
转置张量
对于二阶张量 T = T i j e i e j T=T_{ij}e_i e_j T=Tijeiej ,由对换分量指标而基矢量顺序保持不变所得到的新张量
T T = T j i e i e j = T i j e j e i T^T=T_{ji}e_i e_j=T_{ij} e_j e_i TT=Tjieiej=Tijejei称为张量 T T T 的转置张量。
-
对称张量
满足 T = T T T=T^T T=TT,即 T i j = T j i T_{ij}= T_{ji} Tij=Tji 的张量。 -
反对称张量
满足 T = − T T T=-T^T T=−TT,即 T i j = − T j i T_{ij}= -T_{ji} Tij=−Tji 的张量。 -
加法分解
任意二阶张量 T T T 均可以分解为对称张量 S S S 和反对称张量 A A A 之和:
T = S + A T=S+A T=S+A其中 S = 1 2 ( T + T T ) S=\frac{1}{2}(T+T^T) S=21(T+TT) , A = 1 2 ( T − T T ) A=\frac{1}{2}(T-T^T) A=21(T−TT)
-
置换张量
笛卡尔系中以置换符号 e r s t e_{rst} erst 为分量的三阶张量为置换张量
e = e r s t e r e s e t \pmb{e}=e_{rst} \pmb{e_r} \pmb{e_s} \pmb{e_t} eee=ersterereresesesetetet
-
-
主方向与主分量
二阶张量可以定义为一种由矢量 a \pmb{a} aaa, b \pmb{b} bbb 的线性变换,即
T ⋅ a = b ; T i j a j = b i \pmb{T \cdot a = b} \ \ ; \ \ T_{ij}a_j=b_i T⋅a=bT⋅a=bT⋅a=b ; Tijaj=bi一般来说,矢量 a \pmb{a} aaa 与 b \pmb{b} bbb 并不同向。对于给定的任意二阶张量 T \pmb{T} TTT 能否找到某个矢量 v \pmb{v} vvv ,它在线性变换后能保持方向不变,即:
T ⋅ v = λ v ; T i j v j = λ v i \pmb{T \cdot v }= \lambda \pmb{v} \ \ \ ; \ \ \ T_{ij} v_{j} =\lambda v_i T⋅vT⋅vT⋅v=λvvv ; Tijvj=λvi根据上式,类比矩阵的特征向量的求法可以得到:
( T i j − λ δ i j ) v j = 0 ( i = 1 , 2 , 3 ) (T_{ij}-\lambda \delta_{ij})v_j=0 \ \ \ (i=1,2,3) (Tij−λδij)vj=0 (i=1,2,3)其中 λ \lambda λ 是标量 , δ i j \delta_{ij} δij 是单位矩阵,该问题就转换为求 v j v_j vj 的线性齐次代数方程组,其存在非零解的充分必要条件是系数行列式为零,即:
∣ T 11 − λ T 12 T 13 T 21 T 22 − λ T 33 T 31 T 32 T 33 − λ ∣ = 0 \begin{vmatrix} T_{11}-\lambda & T_{12} & T_{13} \\ T_{21}& T_{22}-\lambda & T_{33} \\ T_{31}& T_{32} & T_{33}-\lambda \end{vmatrix}=0 ∣∣∣∣∣∣T11−λT21T31T12T22−λT32T13T33T33−λ∣∣∣∣∣∣=0将左边行列式展开可得:
λ 3 − I 1 λ 2 + I 2 λ − I 3 = 0 \lambda ^3 - I_1 \lambda ^2 +I_2 \lambda - I_3 = 0 λ3−I1λ2+I2λ−I3=0这是关于 λ \lambda λ 的特征方程,我们可以求出特征方程的三个解,是三个特征值,称为张量 T T T 的 主分量 。当 T T T 是是对称张量时,存在三个实特征值 λ ( k ) \lambda_{(k)} λ(k) ,根据每个特征值,我们带入上面的等式,可以求出每个特征值对应的特征向量 v j ( k ) v_{j(k)} vj(k),通过该方法求得的三个单位矢量 v ( k ) = v j ( k ) e j \pmb{v}_{(k)}=v_{j(k)}\pmb{e}_j vvv(k)=vj(k)eeej 称为 张量 T T T 的主方向 。
沿主方向 v ( 1 ) , v ( 2 ) , v ( 3 ) \pmb{v}_{(1)},\pmb{v}_{(2)},\pmb{v}_{(3)} vvv(1),vvv(2),vvv(3) 的正交坐标系称为张量 T T T 的 主坐标系 。在主坐标系中,有
T = λ ( 1 ) e ( 1 ) e ( 1 ) + λ ( 2 ) e ( 2 ) e ( 2 ) + λ ( 3 ) e ( 3 ) e ( 3 ) T=\lambda_{(1)}\pmb{e}_{(1)}\pmb{e}_{(1)}+ \lambda_{(2)}\pmb{e}_{(2)}\pmb{e}_{(2)}+ \lambda_{(3)}\pmb{e}_{(3)}\pmb{e}_{(3)} T=λ(1)eee(1)eee(1)+λ(2)eee(2)eee(2)+λ(3)eee(3)eee(3)
4. 张量展开
首先我们对于一个如下的三阶张量,来了解几个概念。
-
纤维(fiber)
纤维是从张量中抽取向量的操作。对于上面的张量来说,如果固定其中的两个维度,只保留一个维度可以变换,可以得到一个向量。
如果保留第 k k k 个下标度可以改变,则我们称为张量的 mode-k fiber ,我们记为 χ i 1 ⋯ k − 1 : k + 1 ⋯ i n \pmb{\chi}_{i_1\cdots k-1\ \pmb{:} \ k+1\cdots i_n} χχχi1⋯k−1 ::: k+1⋯in,也就是将第 k 维的下标用 : \pmb{:} ::: 代替,表示其可以变化。对于三阶张量,其各维的 mode fiber 如下所示:
-
切片(slice)
切片是从张量中抽取矩阵的操作。和纤维类似,我们可以保持两个下标可以改变,其余维度的下标固定,就可以得到切片,对于三阶张量的切片,我们分别记为 X i : : 、 X : j : 、 X : : k \pmb{X_{i::}}、\pmb{X_{:j:}}、\pmb{X_{::k}} Xi::Xi::Xi::、X:j:X:j:X:j:、X::kX::kX::k ,分别表示水平切片、侧面切片和正面切片,如下所示:
4.1 张量展开(张量的矩阵化)
- 将 N N N 阶张量 χ \pmb{\chi} χχχ 沿 mode - n 展开成一个矩阵 X ( n ) \pmb{X}_{(n)} XXX(n) 的过程,也就是张量的矩阵化,它可以将高维的张量拆解为 2 阶的矩阵,基本操作 为:把张量 χ \pmb{\chi} χχχ 的每一根 mode - n fiber 按顺序插入矩阵的列中。
对于一个三维的张量如下:
我们可以用数据表示为:
τ
=
t
5
t
6
t
7
t
8
t
1
t
2
t
3
t
4
\pmb{\tau}=\begin{matrix} & & t_5 & t_6 \\ & & t_7 & t_8 \\ t_1 & t_2 & & \\ t_3 & t_4 & & \end{matrix}
τττ=t1t3t2t4t5t7t6t8
如果我们对张量的每个维度进行索引,如下图所示:
那么我们可以用索引表示每个元素,如下:
τ
=
t
112
t
122
t
212
t
222
t
111
t
121
t
211
t
221
\pmb{\tau}=\begin{matrix} & & t_{112} & t_{122} \\ & & t_{212} & t_{222} \\ t_{111} & t_{121} & & \\ t_{211} & t_{221} & & \end{matrix}
τττ=t111t211t121t221t112t212t122t222
对于张量
τ
=
5
6
7
8
1
2
3
4
\pmb{\tau}=\begin{matrix} & & 5 & 6 \\ & & 7 & 8 \\ 1 & 2& & \\ 3 & 4 & & \end{matrix}
τττ=13245768
其 mode - 1 矩阵 χ ( 1 ) \pmb{\chi}_{(1)} χχχ(1) 可以表示如下:
mode - 2 矩阵
χ
(
2
)
\pmb{\chi}_{(2)}
χχχ(2) 可以表示如下:
mode - 3 矩阵
χ
(
3
)
\pmb{\chi}_{(3)}
χχχ(3) 表示为:
注意:同一个 mode 下的矩阵化时,如果选择对 mode-n fiber 按不同的排列顺序组成矩阵,可能会得到不同的结果,但是只要这些排序方法时前后统一的,一般来说不会对计算带来影响。
例:假设某张量 X ∈ R 3 × 4 × 2 \mathcal{X} \in \mathbb{R}^{3 \times 4 \times 2} X∈R3×4×2 的正面切片如下:
X : : 1 = [ 1 4 7 10 2 5 8 11 3 6 9 12 ] , X : : 2 = [ 13 16 19 22 14 17 20 23 15 18 21 24 ] X_{::1} = \begin{bmatrix} 1 & 4 & 7 & 10 \\ 2 & 5 & 8 & 11 \\ 3 & 6 & 9 & 12 \end{bmatrix} \text{,}\quad X_{::2} = \begin{bmatrix} 13 & 16 & 19 & 22 \\ 14 & 17 & 20 & 23 \\ 15 & 18 & 21 & 24 \end{bmatrix} X::1=⎣⎡123456789101112⎦⎤,X::2=⎣⎡131415161718192021222324⎦⎤
根据上面的矩阵化,我们可以得到三个 mode 下的矩阵化结果如下:
X
(
1
)
=
[
1
4
7
10
13
16
19
22
2
5
8
11
14
17
20
23
3
6
9
12
15
18
21
24
]
X_{(1)} = \begin{bmatrix} 1 & 4 & 7 & 10 & 13 & 16 & 19 & 22 \\ 2 & 5 & 8 & 11 & 14 & 17 & 20 & 23 \\ 3 & 6 & 9 & 12 & 15 & 18 & 21 & 24 \end{bmatrix}
X(1)=⎣⎡123456789101112131415161718192021222324⎦⎤
X ( 2 ) = [ 1 2 3 13 14 15 4 5 6 16 17 18 7 8 9 19 20 21 10 11 12 22 23 24 ] X_{(2)} = \begin{bmatrix} 1 & 2 & 3 & 13 & 14 & 15 \\ 4 & 5 & 6 & 16 & 17 & 18 \\ 7 &8 & 9 & 19 & 20 & 21 \\ 10 & 11 & 12 & 22 & 23 & 24 \end{bmatrix} X(2)=⎣⎢⎢⎡147102581136912131619221417202315182124⎦⎥⎥⎤
X ( 3 ) = [ 1 2 3 4 5 … 9 10 11 12 13 14 15 16 17 … 21 22 23 24 ] X_{(3)} = \begin{bmatrix} 1 & 2 & 3 & 4 & 5 & \dots & 9 & 10 & 11 & 12 \\ 13 & 14 & 15 & 16 & 17 & \dots & 21 & 22 & 23 & 24 \end{bmatrix} X(3)=[113214315416517……921102211231224]
4.2 张量乘以矩阵
张量和矩阵相乘就是先将张量矩阵化,然后用矩阵乘以矩阵化的张量,就转变为了矩阵和矩阵的乘积。两个矩阵相乘得到一个矩阵,再按照原来的方式将矩阵还原为张量就得到了结果张量。
根据不同 mode 的矩阵化方式,我们可以计算张量在不同 mode 下和矩阵的乘积。
我们直接来看例子,如果我们有一个张量
T
=
5
6
7
8
1
2
3
4
\pmb{\mathcal{T}}=\begin{matrix} & & 5 & 6 \\ & & 7 & 8 \\ 1 & 2& & \\ 3 & 4 & & \end{matrix}
TTT=13245768
和一个矩阵
A
=
[
a
b
c
d
]
A=\begin{bmatrix} a & b \\ c & d \end{bmatrix}
A=[acbd]
先对张量进行 mode - 1 矩阵化,得到如下结果:
T
(
1
)
=
[
1
2
5
6
3
4
7
8
]
\pmb{\mathcal{T}}_{(1)}=\begin{bmatrix} 1 & 2 & 5 & 6 \\ 3 & 4 & 7 & 8 \end{bmatrix}
TTT(1)=[13245768]
则张量和矩阵相乘可以表示为:
P
=
T
×
1
A
→
P
(
1
)
=
A
T
(
1
)
=
[
a
b
c
d
]
[
1
2
5
6
3
4
7
8
]
=
[
a
+
3
b
2
a
+
4
b
5
a
+
7
b
6
a
+
8
b
c
+
3
d
2
c
+
4
d
5
c
+
7
d
6
c
+
8
d
]
\begin{aligned} \mathcal{P}=\mathcal{T} \times_1 A \rightarrow \mathcal{P}_{(1)}=A \mathcal{T}_{(1)}& = \begin{bmatrix} a & b \\ c & d \end{bmatrix} \begin{bmatrix} 1 & 2 & 5 & 6 \\ 3 & 4 & 7 & 8 \end{bmatrix} \\ & =\begin{bmatrix} a+3b & 2a+4b & 5a+7b & 6a+8b \\ c+3d & 2c+4d & 5c+7d & 6c+8d \end{bmatrix} \end{aligned}
P=T×1A→P(1)=AT(1)=[acbd][13245768]=[a+3bc+3d2a+4b2c+4d5a+7b5c+7d6a+8b6c+8d]
之后将还原为张量:
P
=
5
a
+
7
b
6
a
+
8
b
5
c
+
7
d
6
c
+
8
d
a
+
3
b
2
a
+
4
b
c
+
3
d
2
c
+
4
d
\mathcal{P}= \begin{matrix} & & 5a+7b & 6a+8b\\ & & 5c+7d & 6c+8d\\ a+3b & 2a+4b & & \\ c+3d & 2c+4d & & \end{matrix}
P=a+3bc+3d2a+4b2c+4d5a+7b5c+7d6a+8b6c+8d
注意,并不是任意 mode - n 的矩阵化的张量都是可以和矩阵相乘的,必须要保证 mode - n 的张量的行数等于要相乘矩阵的列数。