0. 前言
本笔记主要是围绕这篇学术期刊文章进行的:
Tensor Decomposition and Applications
此笔记本为笔者接触该领域的第一步,最适合从未接触过该领域的朋友。
希望能抛砖引玉,吸引更多的爱好者。
未来将以张量如何切入深度学习及强化学习领域等方面进行研究和探讨。希望这个长篇能够坚持下去。
如果对应定义暂时无法寻找到中文名,将直接采用英文名。忘谅解。(反正写文献的时候也肯定是用英文嘛)
1. 介绍
- 什么是张量(tensor)?简单地说,就是个多维数组。在本研究范围内, 不考虑任何物理和工学领域内的张量定义,而仅仅考虑其数学领域。正式的说,应该叫张量域(tensor fields)。第一阶张量(first-order tensor)是个向量(vector),第二阶张量(second-order tensor)是矩阵(matrix),更多阶的张量我们称之为高阶张量(higher-order tensor)。
- 一个简单的3阶张量如图下所示。注意 i i i 是在我们平时所认为的 y y y 轴上,索引也不是从0开始,从1开始。1开始的地方也值得注意。虽然这不影响什么重要的推理,但会影响后面公式中的一些顺序和例子的结果。
- 在接下来的文章中将启用以下常规字体设定。小写加粗字母例如 x 代表向量,大写加粗字母 X 代表矩阵,花体 X \mathcal{X} X 代表张量。
2. 基本定义
2.1 Fiber 与 Slice
- 当我们将一个张量沿着他的第k个维展开的时候,我们就获得了mode-k fiber。例如,三阶张量 X \mathcal{X} X 的mode-1 fiber为: X : j k X_{:jk} X:jk。换句话说,所有维度的index都维持不变,除了第k个维度被展开。
- 同理,当我们除了2个维度展开以外维持所有index不变时,我们就获得了slice。例如,三阶张量 X \mathcal{X} X 的horizontal slice为: X i : : X_{i::} Xi::。最为常用的slice为下图第二行第三个的frontal slice X : : k X_{::k} X::k。我们常常可以缩写为 X k X_k Xk。请务必牢记。
2.2 Norm 范数 与 inner product内积
- 张量norm的定义和矩阵范数的定义类似,均为所有元素的平方之和开根。对于张量 X ∈ R I 1 × I 2 × ⋯ × I N \mathcal{X} \in\mathbb{R}^{I_1 \times I_2 \times \dots \times I_N} X∈RI1×I2×⋯×IN来说:
∣ ∣ X ∣ ∣ = ∑ i 1 = 1 I 1 ∑ i 2 = 1 I 2 ⋯ ∑ i N = 1 I N x i 1 i 2 ⋯ N 2 ||\mathcal{X}|| = \sqrt{\sum_{i1=1}^{I_1}\sum_{i2=1}^{I_2}\dots\sum_{iN=1}^{I_N}x^2_{i_1i_2\dotsi_N}} ∣∣X∣∣=i1=1∑I1i2=1∑I2⋯iN=1∑INxi1i2⋯N2
- 类似的,我们定义内积为2个维度相等的张量之间对应位置元素之积的和。这和矩阵定义是类似的。对于张量 X , Y ∈ R I 1 × I 2 × ⋯ × I N \mathcal{X}, \mathcal{Y} \in\mathbb{R}^{I_1 \times I_2 \times \dots \times I_N} X,Y∈RI1×I2×⋯×IN来说:
KaTeX parse error: Got function '\mskip' with no arguments as argument to '\mathcal' at position 24: …ath{\kern#1#3}{\̲m̲s̲k̲i̲p̲#1#2}\relax
- 显然, ⟨ X , X ⟩ = ∣ ∣ X ∣ ∣ 2 \langle\mathcal{X},\:\mathcal{X}\rangle = ||X||^2 ⟨X,X⟩=∣∣X∣∣2
2.3 Rank-One Tensors 秩1张量
- 即使范数和内积与矩阵类似,我们要对秩(rank)万分小心。后面我们马上会提到这是个非常棘手的概念。我们很多时候无法轻易地决定一个张量的秩是多少。 不过,秩1张量比较特别。他可以被向量(vector)的外积(outer product)所定义。
- 对于一个N阶张量 X ∈ R I 1 × I 2 × ⋯ × I N \mathcal{X} \in\mathbb{R}^{I_1 \times I_2 \times \dots \times I_N} X∈RI1×I2×⋯×IN来说,当可以被写成N个向量的外积时,此张量的秩为1:
X = a ( 1 ) ∘ a ( 2 ) ∘ ⋯ ∘ a ( N ) \mathcal{X} = a^{(1)} \circ a^{(2)} \circ \dots \circ a^{(N)} X=a(1)∘a(2)∘⋯∘a(N)
-
∘ \circ ∘ 是外积的符号。每个张量的元素都可以被写成这些向量对应位置元素之积:
x i 1 i 2 … i N = a i 1 ( 1 ) ∘ a i 2 ( 2 ) ∘ ⋯ ∘ a i N ( N ) x_{i_1i_2\dots i_N} = a^{(1)}_{i_1} \circ a^{(2)}_{i_2} \circ \dots \circ a^{(N)}_{i_N} xi1i2…iN=ai1(1)∘ai2(2)∘⋯∘aiN(N)
2.4 cubical 立方,Symmetry 对称 与 Supersymmetric 超对称
- 当张量的所有维度大小相等时,我们称之为立方(cubical)。
- 当立方张量中的任何一个元素的index被置换后(permutation)元素值不变时,我们称这个张量为超对称。
- 例:对于3阶张量 X ∈ R I × I × I \mathcal{X} \in\mathbb{R}^{I \times I \times I} X∈RI×I×I来说,如果满足以下等式,则被称之为超对称。
x i j k = x i k j = x j i k = x j k i = x k i j = x k j i for all i , j , k = 1 , … , I . x_{ijk} = x_{ikj} = x_{jik} = x_{jki} = x_{kij} = x_{kji} \quad \text{ for all $ i, j, k = 1,\dots,I.$} xijk=xikj=xjik=xjki=xkij=xkji for all i,j,k=1,…,I.
- 张量在某些mode下符合对称的条件, 这时候我们只叫他在
对应的mode下对称。例如,3阶张量 X ∈ R I × I × K \mathcal{X} \in\mathbb{R}^{I \times I \times K} X∈RI×I×K 的frontal slice对称时,我们称该张量在mode 1和2之下对称。(这里有些拗口,可以理解为,展开1和2的情况,固定剩余维度的情况下,所获得的的slice是对称的)
X k = X k T for all k = 1 , … , K . X_k = X_k^\mathsf{T} \quad \text{ for all $ k = 1,\dots,K.$} Xk=XkT for all k=1,…,K.
2.5 Diagonal Tensors 对角张量
- 如果一个张量 X ∈ R I 1 × I 2 × ⋯ × I N \mathcal{X} \in\mathbb{R}^{I_1 \times I_2 \times \dots \times I_N} X∈RI1×I2×⋯×IN的任何元素只有在 i 1 = i 2 = … = i N i_1 \: = \: i_2 \: = \: \dots \: = i_N i1=i2=…=iN的时候不为0,也就是 x i 1 i 2 … i N ≠ 0 x_{i_1i_2 \dots i_N} \neq 0 xi1i2…iN=0时,被称之对角张量。
- 如果对角张量同时是立方的,则只有超对角线(superdiagonal)所经过的元素不为0
- 值得注意的是,对角张量对任何维度比例的张量其实都成立。
2.6 Matricization 矩阵化
- 矩阵化讲述了如何将高维张量拆解成2阶的矩阵。这是个极为重要的概念,日后将频繁出现在各种公式与定理之中。其文字化定义意外的简单,而数学定义较为繁琐。
- 文字化定义:对于张量 X ∈ R I 1 × I 2 × ⋯ × I N \mathcal{X} \in\mathbb{R}^{I_1 \times I_2 \times \dots \times I_N} X∈RI1×I2×⋯×IN来说,我们称其mode-n的矩阵化为 $ X_{(n)} 。 通 过 把 。通过把 。通过把\mathcal{X} $的每一根mode-n fiber按序插入这个矩阵的列中,我们就完成了矩阵化。
- 数学定义必须定义其顺序所以稍显复杂。我们定义一个从张量元素 ( i 1 , i 2 , … , i N ) (i_1, i_2, \dots , i_N) (i1,i2,…,iN)到矩阵元素 (