1. 张量的定义
首先我们来了解一下什么是张量,张量有四个定义:
- 张量是多维数组
- 张量是一种不随坐标系的改变而改变的几何对象
- 张量是向量和余向量,不会随着坐标系的改变而改变
- 张量是多重线性映射,即
这里我们要学习的是张量与深度学习的相关知识,下面的几个定义是物理和工学领域内的张量定义,我们这里只考虑其在数学领域内的定义,也就是第一个:张量是一个多维数组 。
数组是有序的元素序列,我们将 不同维度的数组 定义为不同阶的张量:
- 将 标量 (只有大小没有方向的数) 定义为 0 阶张量 ,如
- 将 一维数组 定义为 一阶张量 ,如下所示
- 将多个一维数组的拼接,即 矩阵 定义为 二阶张量 :
- 将多个 矩阵的叠加 定义为 三阶张量 :
- 下面我们类比一阶张量,将三阶张量排列为一个数组,数组的元素是三阶张量,如果我们将三阶张量记为
- 那么多个元素组成的数组就定义为 四阶张量 ,如下所示
- 同样,将四阶张量拼接,组成三阶张量的矩阵,称为 五阶张量 ,如下所示
- 对上面的定义进行循环重复,我们就可以定义更高阶的张量了
有了对不同张量的理解后,我们看一下张量具体可以 描述的对象 有哪些。
- 一阶张量是一个一维数组,即一组数,我们可以将一组数表示为一个矢量,二阶张量是一个矩阵,因此我们可以将张量作为矢量和矩阵概念的推广。
- 三阶张量
对于 RGB 图片,我们可以理解为由三张分别表示 R,G,B 分量的图片堆叠而成,如下 - 对于每个分量图片,我们都可以看成一个矩阵,那么一张 RGB 图片就可以用三阶的张量进行表示。
- 四阶张量
对于多张 RGB 图片,我们可以用四阶张量进行表示,可以看作是三阶张量(单张RGB图像)的数组(多张 RGB 图片)。 - 五阶张量
视频是由多张图片组成的,因此每个视频可以用一个四阶张量表示,显然,多个视频可以用五阶张量表示。
2. 指标符号
在张量的讨论中,我们对于分量的表示和区分都使用下表字母来表示,下面我们来了解一下用指标符号表示表达式。
2.1 自由指标
对于下面的一组数:
我们可以用以下的表达项来简写:
即用 (指标) 来表示将该项罗列,我们称这种在取值范围内对表达项进行罗列的指标为 自由指标,自由指标在表达项中只出现一次。
2.2 求和约定与哑指标
对于求和表达式:
我们约定将其简写为
求和约定的表达项 中 出现两次,我们称在一个 表达项 中重复出现两次的指标为 哑指标 ,哑指标表示要对该表达项罗列后再求和 ,只有在表达项中出现两次的才称为哑指标。
现在,我们利用自由指标和哑指标来表示下式:
因为一个自由指标表示将表达式的罗列,我们可以用自由指标将三个式子合并为一个:
之后可以用哑指标将多个表达项合为一项:
指标可以用任意的字母表示,我们约定
- 拉丁指标 为三维指标,即取值范围为
- 希腊指标 为二维指标,取值范围为
我们可以用一个表达式中出现多对哑指标来表示 多重求和 ,如
2.3
是张量中的一个基本符号,也称为单位张量,它的定义为
特性:
- 对于指标 和 是对称的,即
- 的分量集合是一个单位矩阵。在三维空间中
- 具有换标作用。如
的两个指标中,有一个和同项中其它因子的指标相同,则可以把该因子的那个相同指标换成 的另一个指标,而 自动消失。这是因为:
根据上面 的定义我们可以知道,只有 时,对应的项不为 ,因此上式变为
类似的我们可以得到:
应用:
- 三个相互正交的单位基矢量构成正交标准化基,它们具有如下的性质:
- 每个基矢的模为 ,即
- 不同的矢量相互正交,即
上面的两个性质可以用 的形式统一表示,即:
- 矢量的点积可以表示为:
2.4
该符号在笛卡尔坐标系下的定义为
或
其中
- 及其轮流换位得到的 和
- 及其轮流换位得到的 和
特性:
- 共有 个元素,其中三个元素为 ,三个元素为 ,其余的都是
- 对其任意两个指标交换都是反对称的,即
- 当三个指标循环移位时, 的值不发生改变
2.5 张量方程
每一项都是由张量组成的方程称为 张量方程 ,如:
特性:张量方程具有与坐标选择无关的性质,可用于描述客观物理线性的固有特性和普遍规律。
3. 张量代数
在了解张量的各种代数运算之前,我们先来看一下张量的表示方法。
,其表示 阶的张量, 表示第 维的大小。 阶张量 中的元素可以记为 。如 ,表示大小为 的三维数组,
3.1 几种矩阵的特殊乘法
- Kronecker 乘积(张量积)
对于两个矩阵 和 ,其 Kronecker 积被定义为如下的 的矩阵,即将 的每个元素乘以矩阵 ,我们用符号 来表示 Kronecker 乘积: - Hadamard 乘积
Hadamard 是对 相同大小的矩阵 进行的,它让相同位置的元素相乘,对矩阵 ,其 Hadamard 乘积记作 : - Khatri - Rao 乘积
Khatri - Rao 乘积是列对列的乘积,相乘的两个矩阵必须有相同的列数,矩阵 和 的 Khatri - Rao 乘积记为 ,即将矩阵 的每一列和矩阵 的对应列进行 Kronecker 积:
如,对矩阵 和 的 Khatri - Rao 乘积为
3.2 特殊张量,主方向与主分量
- 常用特殊张量
- 零张量
若张量 ,则 - 单位张量
笛卡尔坐标系中分量为 的二阶张量 ,即:
单位张量和任意张量的点积就等于该张量本身。 - 转置张量
对于二阶张量 ,由对换分量指标而基矢量顺序保持不变所得到的新张量
称为张量 - 对称张量
满足 ,即 - 反对称张量
满足 ,即 - 加法分解
任意二阶张量 均可以分解为对称张量 和反对称张量 之和:
其中 , - 置换张量
笛卡尔系中以置换符号 为分量的三阶张量为置换张量
- 主方向与主分量
二阶张量可以定义为一种由矢量 , 的线性变换,即
一般来说,矢量 与 并不同向。对于给定的任意二阶张量 能否找到某个矢量 ,它在线性变换后能保持方向不变,即:
根据上式,类比矩阵的特征向量的求法可以得到:
其中 是标量 , 是单位矩阵,该问题就转换为求 的线性齐次代数方程组,其存在非零解的充分必要条件是系数行列式为零,即:
将左边行列式展开可得:
这是关于 的特征方程,我们可以求出特征方程的三个解,是三个特征值,称为张量 的 主分量 。当 是是对称张量时,存在三个实特征值 ,根据每个特征值,我们带入上面的等式,可以求出每个特征值对应的特征向量 ,通过该方法求得的三个单位矢量 称为 张量 。
的正交坐标系称为张量 的 主坐标系 。在主坐标系中,有
4. 张量展开
首先我们对于一个如下的三阶张量,来了解几个概念。
- 纤维(fiber)
纤维是从张量中抽取向量的操作。对于上面的张量来说,如果固定其中的两个维度,只保留一个维度可以变换,可以得到一个向量。
个下标度可以改变,则我们称为张量的 mode-k fiber ,我们记为 ,也就是将第 k 维的下标用 代替,表示其可以变化。对于三阶张量,其各维的 mode fiber 如下所示: - 切片(slice)
,分别表示水平切片、侧面切片和正面切片,如下所示:
4.1 张量展开(张量的矩阵化)
- 将 阶张量 沿 mode - n 展开成一个矩阵 的过程,也就是张量的矩阵化,它可以将高维的张量拆解为 2 阶的矩阵,基本操作 为:把张量
对于一个三维的张量如下:
我们可以用数据表示为:
如果我们对张量的每个维度进行索引,如下图所示:
那么我们可以用索引表示每个元素,如下:
对于张量
其 mode - 1 矩阵
mode - 2 矩阵 可以表示如下:
mode - 3 矩阵
注意:同一个 mode 下的矩阵化时,如果选择对 mode-n fiber 按不同的排列顺序组成矩阵,可能会得到不同的结果,但是只要这些排序方法时前后统一的,一般来说不会对计算带来影响。
例:假设某张量
根据上面的矩阵化,我们可以得到三个 mode 下的矩阵化结果如下:
4.2 张量乘以矩阵
张量和矩阵相乘就是先将张量矩阵化,然后用矩阵乘以矩阵化的张量,就转变为了矩阵和矩阵的乘积。两个矩阵相乘得到一个矩阵,再按照原来的方式将矩阵还原为张量就得到了结果张量。
根据不同 mode 的矩阵化方式,我们可以计算张量在不同 mode 下和矩阵的乘积。
我们直接来看例子,如果我们有一个张量
和一个矩阵
先对张量进行 mode - 1 矩阵化,得到如下结果:
则张量和矩阵相乘可以表示为:
之后将还原为张量:
注意,并不是任意 mode - n 的矩阵化的张量都是可以和矩阵相乘的,必须要保证 mode - n 的张量的行数等于要相乘矩阵的列数。