张量、向量、矩阵有什么关联和差别?

299 阅读2分钟

张量、向量和矩阵都是数学和计算中的基本概念,主要用于表示数据和运算。虽然它们有相似之处,但也有显著的区别和具体的应用场景。

向量(Vector)

定义:向量是一个有序数列,可以看作是一个一维的数组。可以看作点+原点到它的方向

表示方法v1,v2,...,vnv_1, v_2, ..., v_n

维度:一维

应用场景:这个最好理解,中学物理表示力、加速度都是向量的概念。机器学习中最常见的就是词向量的概念。

示例v=[123]\mathbf{v} = \begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix}

矩阵(Matrix)

定义:矩阵是一个二维的数组,包含了行(row)和列(column)。

表示方法[a11a12a1na21a22a2nam1am2amn] \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix}

维度:二维

应用场景:学过线性代数的应该都不陌生这个概念(注意别和行列式搞混了就行),而实际应用中最长用来表示的是图像或图像卷积的特征,或者一批Embedding之后的文本向量。

示例M=[123456789]\mathbf{M} = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix}

张量(Tensor)

定义:张量是一个通用化的n维数组,可以是0维、1维、2维甚至更高维度。

表示方法Aijk...,其中i,j,k,...是索引A_{ijk...} \text{,其中} i, j, k, ... \text{是索引}

维度:n维(n>=0)

应用场景:机器学习中的深度学习模型,如TensorFlow和PyTorch中的数据表示。在训练神经网络的时候经常会遇到nn.tensor的操作

示例: 三个维度的张量可以表示为: mathbfT=[[1234],[5678]]mathbf{T} = \begin{bmatrix} \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix} \end{bmatrix}

它们之间的关系

  1. 维度关系:向量是一维的,矩阵是二维的,而张量可以是n维的。
  2. 组成关系:向量是多个Number组成的一维的行向量或者列向量,矩阵用多个同形的行向量或者列向量堆叠合并形成,张量则直接用多个同形的矩阵堆叠组合而成。
  3. 应用层次:向量可以看作是特定情况下的矩阵(单行或单列),矩阵可以看作是特定情况下的张量(二维),张量是最通用、最泛化的表达形式。

我的理解

简单来说,向量是可以描述为一维数组的对象,用来表示点和所处空间中的位置,矩阵是二维数组,而张量则是更高维的通用化数组。它们在不同的应用领域都非常重要,尤其是在现代计算和机器学习中。

之后会整理更多学习、工作中遇到的问题和思考,欢迎大家关注Global AI Pro