【系统认识张量(一)】基础篇:什么是张量?
【系统认识张量(一)】基础篇:什么是张量?
文章目录
【系统认识张量(一)】基础篇:什么是张量?前言一、基础概念1. 纤维、切片2. 矩阵化3. 秩一张量
二、张量的基础运算1.张量的N模乘法2. Kronecker积、Khatri-Rao积、Hadamard积
总结
前言
随着人工智能、大数据的发展,我们常常会得到高维数据,对其 认识 和 处理方法 与普通二维数据有着许多不同,对于三维及三维以上的数据,我们统称为 张量 。张量是对向量和矩阵的一种高维拓展。
一、基础概念
1. 纤维、切片
类似于矩阵的行、列,张量也有类似的概念,即纤维。 纤维(fiber),即只保留一个自由度,固定其他所有维度,呈现出条状。 切片(slices),只保留两个自由度,固定其他所有维度,呈现出片状(矩阵)。
2. 矩阵化
一个N阶张量的N模展开,如图所示,将一个三阶
(
3
×
3
×
3
)
(3\times3\times3)
(3×3×3)的张量
χ
\chi
χ的切片合成为一个大的矩阵,按照切片的分割方式不同,可以分为N种模式。 具体例子如下: 一个3x4x2的张量
χ
\chi
χ按照N模展开,即按照第n个维度展开,如下所示,为张量
χ
\chi
χ的两个切片 其按照三种模态展开,即按照不同方向的切片,进行合并。
3. 秩一张量
如果一个张量能被写成N个向量的 外积 ,则称这个张量为秩一张量。 这里需要注明的是:外积(Outer Product)这一概念与高中数学三维向量的外积(Exterior Product)的概念不同。
u
∘
v
=
u
v
T
=
[
u
1
u
2
u
3
u
4
]
[
v
1
v
2
v
3
]
=
[
u
1
v
1
u
2
v
2
u
1
v
3
u
2
v
1
u
2
v
2
u
2
v
3
u
3
v
1
u
3
v
2
u
3
v
3
u
4
v
1
u
4
v
2
u
4
v
3
]
u \circ v = uv^T = \left[ \begin {array} {c} u_1 \\ u_2 \\ u_3 \\ u_4 \end {array} \right] \left[ \begin {array} {ccc} v_1 & v_2 & v_3 \end {array} \right] = \left[ \begin {array} {ccc} u_1v_1 & u_2v_2 & u_1v_3 \\ u_2v_1 & u_2v_2 & u_2v_3 \\ u_3v_1 & u_3v_2 & u_3v_3 \\ u_4v_1 & u_4v_2 & u_4v_3 \\ \end {array} \right]
u∘v=uvT=⎣⎢⎢⎡u1u2u3u4⎦⎥⎥⎤[v1v2v3]=⎣⎢⎢⎡u1v1u2v1u3v1u4v1u2v2u2v2u3v2u4v2u1v3u2v3u3v3u4v3⎦⎥⎥⎤
二、张量的基础运算
1.张量的N模乘法
张量
χ
\chi
χ与矩阵
U
U
U的N模乘法的公式如下: 看公式可能很难理解,具体通俗语言可以表示为:
首先按照张量
χ
\chi
χ的某一维度展开,得到相应矩阵
X
(
n
)
X_ {\left( n \right)}
X(n);随后将得到的矩阵
X
(
n
)
X_ {\left( n \right)}
X(n)与矩阵
U
U
U相乘,得到新的矩阵
Y
Y
Y;最后将
Y
Y
Y矩阵恢复为原矩阵的相应维度(具体看如下例子)。
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 = \left[ \begin{array} {cccc} 1 & 4 & 7 & 10 \\ 2 & 5 & 8 &11 \\ 3 & 6 & 9 & 12 \end{array} \right] , X_2 = \left[ \begin{array} {cccc} 13 & 16 & 19 & 22 \\ 14& 17& 20&23\\ 15& 18& 21& 24 \end{array} \right]
X1=⎣⎡123456789101112⎦⎤,X2=⎣⎡131415161718192021222324⎦⎤
U
=
[
1
3
5
2
4
6
]
U = \left[ \begin{array}{ccc} 1&3&5\\ 2&4&6 \end{array} \right]
U=[123456]
Y
=
χ
×
n
U
⇔
Y
(
n
)
=
U
X
(
n
)
Y = \chi \times_n U \Leftrightarrow Y _ {\left( n \right)} = UX_ {\left( n \right)}
Y=χ×nU⇔Y(n)=UX(n)
Y
1
=
[
22
49
76
103
28
64
100
136
]
,
Y
2
=
[
130
157
184
211
172
208
244
280
]
Y_1 = \left[ \begin{array} {cccc} 22&49&76&103\\ 28&64&100&136 \end{array} \right] , Y_2 = \left[ \begin{array} {cccc} 130&157&184&211\\ 172&208&244&280 \end{array} \right]
Y1=[2228496476100103136],Y2=[130172157208184244211280]
2. Kronecker积、Khatri-Rao积、Hadamard积
这里提前介绍一些矩阵的乘积,与后面张量分解的介绍有关。
Kronecker积 ----
⊗
\otimes
⊗ 对于矩阵
A
∈
R
I
×
J
\mathbf{A} \in \mathbb{R}^{I \times J}
A∈RI×J 和
B
∈
R
K
×
L
\mathbf{B} \in \mathbb{R}^{K \times L}
B∈RK×L
A
⊗
B
=
[
a
11
B
a
12
B
⋯
a
1
J
B
a
21
B
a
22
B
⋯
a
2
J
B
⋮
⋮
⋱
⋮
a
I
1
B
a
I
2
B
⋯
a
I
J
B
]
=
[
a
1
⊗
b
1
a
1
⊗
b
2
a
1
⊗
b
3
⋯
a
J
⊗
b
L
−
1
a
J
⊗
b
L
]
\mathbf{A} \otimes \mathbf{B}=\left[\begin{array}{cccc} a_{11} \mathbf{B} & a_{12} \mathbf{B} & \cdots & a_{1 J} \mathbf{B} \\ a_{21} \mathbf{B} & a_{22} \mathbf{B} & \cdots & a_{2 J} \mathbf{B} \\ \vdots & \vdots & \ddots & \vdots \\ a_{I 1} \mathbf{B} & a_{I 2} \mathbf{B} & \cdots & a_{I J} \mathbf{B} \end{array}\right] \\ =\left[\begin{array}{lll}\mathbf{a}_{1} \otimes \mathbf{b}_{1} & \mathbf{a}_{1} \otimes \mathbf{b}_{2} \quad \mathbf{a}_{1} \otimes \mathbf{b}_{3} \quad \cdots \quad \mathbf{a}_{J} \otimes \mathbf{b}_{L-1} & \mathbf{a}_{J} \otimes \mathbf{b}_{L}\end{array}\right]
A⊗B=⎣⎢⎢⎢⎡a11Ba21B⋮aI1Ba12Ba22B⋮aI2B⋯⋯⋱⋯a1JBa2JB⋮aIJB⎦⎥⎥⎥⎤=[a1⊗b1a1⊗b2a1⊗b3⋯aJ⊗bL−1aJ⊗bL]A的每个元素乘以B矩阵构成新的大矩阵
其结果为
(
I
K
)
×
(
J
L
)
(IK) \times (JL)
(IK)×(JL)大小的矩阵
Khatri–Rao积 ----
⊙
\odot
⊙ 注意这里的定义与上述Kronecker积是嵌套的
A
⊙
B
=
[
a
1
⊗
b
1
a
2
⊗
b
2
⋯
a
K
⊗
b
K
]
\mathbf{A} \odot \mathbf{B} = \left[ \begin{array} {cccc} a_1 \otimes b_1 & a_2 \otimes b_2 & \cdots & a_K \otimes b_K \end {array} \right]
A⊙B=[a1⊗b1a2⊗b2⋯aK⊗bK] 对应列向量的Kronecker积 当a和b是向量时,有:
a
⊗
b
=
a
⊙
b
a\otimes b = a \odot b
a⊗b=a⊙bHadamard积 ----
∗
\ast
∗ 对于矩阵
A
∈
R
I
×
J
\mathbf{A} \in \mathbb{R}^{I \times J}
A∈RI×J 和
B
∈
R
K
×
L
\mathbf{B} \in \mathbb{R}^{K \times L}
B∈RK×L
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
]
\mathbf{A} \ast \mathbf{B}=\left[\begin{array}{cccc} a_{11} b_{11} & a_{12} b_{12} & \cdots & a_{1 J} b_{1 J} \\ a_{21} b_{21} & a_{22} b_{22} & \cdots & a_{2 J} b_{2 J} \\ \vdots & \vdots & \ddots & \vdots \\ a_{I 1} b_{I 1} & a_{I 2} b_{I 2} & \cdots & a_{I J} b_{I J} \end{array}\right]
A∗B=⎣⎢⎢⎢⎡a11b11a21b21⋮aI1bI1a12b12a22b22⋮aI2bI2⋯⋯⋱⋯a1Jb1Ja2Jb2J⋮aIJbIJ⎦⎥⎥⎥⎤ 对应位置的元素相乘
总结
以上就是张量的基础知识,这一部分较为简单,希望通过自己的总结能让后来者有所收获。