向量和矩阵

这一节我们将会讨论向量和矩阵的基础概念,这些概念在机器学习中是非常重要的。

向量 Vector

高中中,可能不少同学已经接触过向量的概念,不过我们还是简单的复习一下。

向量在数学中表示一个有方向和大小的量,通常在坐标系用一个箭头表示,箭头的长度表示向量的大小,箭头的方向表示向量的方向。与向量相对应的是标量,标量是只有大小而没有方向的量。

来自作者的建议

你可以将向量看作是一个有序的数列,这个数列中的每一个元素都是一个标量。
在机器学习中的绝大多数时间,我们将向量看待成一个存储了 个数值的列表,而不去担心其具体的几何意义。

对于一个 维的向量 其形式为:

在机器学习中,我们通常认为向量是一个列向量,即是竖着的向量,而不是横着的。

符号标记

在高中,我们通常使用 或者 来表示向量,而在机器学习中,我们通常使用 (粗体小写) 来表示向量。

向量的长度被定义为几何距离,即每一个维度的平方和的平方根:

向量运算

向量的基础运算包括:

  • 向量的加法
  • 向量的减法
  • 向量的乘法

向量的加法

向量的加法是指两个向量的对应元素相加,即:

向量的减法

向量的减法是指两个向量的对应元素相减,即:

向量的乘法

向量的乘法是一个复杂的系统我们可以将其分为很多种情况。

向量的数乘:标量与向量的乘法是将标量与向量的每一个元素相乘,即:

向量的点乘(Dot Product):又叫内积(inner product)。点乘是指两个向量对应元素相乘再相加,即:

向量的点乘有一个重要的性质,即:

其中 为两个向量之间的夹角。

符号标记

在高中,我们通常使用 来表示点乘,而在机器学习中,我们通常使用 来表示点乘。我们将在后面的章节中详细介绍这个符号的含义。
有些书籍中也使用 来表示两个向量的点乘。

向量的转置(Transpose)

看到转置这个词,你可能会很困惑,不过不用担心,这个概念很简单。

简单来说,转置是将整个向量逆时针旋转 90 度。

对于向量的转置,对于向量来说就是将一个行向量转换为列向量,或者将一个列向量转换为行向量。即:

因此我们有一个非常良好的性质:

即转置的转置等于原向量。

我们通常使用转置来表示向量的点乘,即:

矩阵 Matrix

如果你已经掌握了向量的知识,那么矩阵就是一个非常简单的概念了。

矩阵是很多向量的集合,其表示为:

我们通常使用大写字母来表示矩阵。

矩阵的大小通常表示为 ,即有 列。因此我们也可以认为 维向量是一个 的矩阵。

方阵是指行数和列数相等的矩阵,即

矩阵运算

转置 Transpose

矩阵的转置和向量的转置类似,即将矩阵的行和列互换:

转置会让一个 的矩阵变为一个 的矩阵。其中,原本位于 列的元素,会在转置后位于 列。

和向量一样,矩阵的转置也有

矩阵的加法和减法

矩阵的加法和减法是指两个矩阵的对应元素相加或相减。因此两个矩阵必须有相同的大小。考虑两个矩阵 ,其大小均为 ,则:

减法同理。

矩阵的数乘

矩阵的数乘是指一个标量与矩阵的每一个元素相乘。考虑一个矩阵 ,其大小为 ,标量为 则:

矩阵的乘法(点积)

矩阵的乘法是一个比较复杂的运算,其的运算规则被作者称为横平竖直

考虑两个矩阵 ,其大小分别为 ,则其乘积 的大小为

矩阵的乘法的规则是:

我们可以改写成:

上文描述了内积中的规则,即 的矩阵和 的矩阵相乘得到一个 的矩阵。记作

为什么我们使用转置表示向量的点积?

如果我们将向量看作一个 的矩阵,则如果想使用和矩阵一致的乘法规则,则需要使得将原来 的运算其转化为 ,最终会得到一个 的矩阵,即一个标量。而这个对于第一个乘子,我们就需要使用转置,即 。这也是为什么我们使用 来表示向量的点乘。