第2 章 向量基本运算

2.1转置运算

向量的转置(Transpose)将列向量变成行向量,或将行向量变成列向量。
向量X的转置记为X^T
例1:X=\left[\begin{matrix} 2\cr 0 \cr 3\end{matrix}\right]X^T=[2,0,3]
用Python表示:

2.2 两个向量的点积

两个向量(如X、Y,它们的维数相同)的点积(或称为内积)定义为它们对应元素乘积之和,记为:X^T Y
例2:X=\left[\begin{matrix} 2\cr 0 \cr 3\end{matrix}\right]Y=\left[\begin{matrix} 1\cr 5 \cr 9\end{matrix}\right]
X^T Y=[2,0,3]\cdot \left[\begin{matrix} 1\cr 5 \cr 9\end{matrix}\right]=2\times 1+0\times 5+3\times 9=29
向量与自身的点积为所有元素的平方和:
X^T X=\sum_{i=1}^n x_i^2
如果两个向量的点积为0,则称它们正交。
点积运算满足如下规律:
X^TY=Y^TX
(kX^T)Y=kX^TY
(X+Y)^T)Z=X^TZ+Y^TZ
Z^T(X+Y)=Z^TX+Z^TY
利用点积可以简化线性函数的表述,这种方法在机器学习中经常可以看到。
如表示权重(\omega_i)与输入(x_i)、偏置项(b)的线性模型预测函数:
 \omega_1 x_1+\omega_2 x_2+\dots+\omega_n x_n+b \tag{2.5}
设权重向量w=[\omega_1, \omega_2,\dots, \omega_n] ,输入向量X=[x_1, x_2,\dots, x_n] ,式(2.5)可写成:
WX^T+b
点积运算用于在机器学习的正向传播过程。

2.3 两个向量的阿达马 (Hadamard) 积

两个向量的阿达马积或称为遂元乘积、对应元素的乘积,是它们对应元素相乘。
记为:X*Y X\bigodot Y
例3:X=[1 2 3] Y=[2 2 1]
X*Y=[1×2 2×2 3×1]=[2 4 3]
当向量X、Y的元素个数相同时,还可进行对应元素的加、减、乘、除等算术运算。
X+Y=[3 4 4 ]
X/Y=[0.5 1 3]
用Python代码实现

经过阿达马运算的向量或矩阵维度不变,如:

运行结果:
A向量运行后形状:(3,),B矩阵运行后形状:(2, 3)
阿达马积在机器学习中的正向传播和反向传播、梯度下降法中经常出现。

2.4向量的范数

数有大小,向量也有大小,向量的大小我们通过范数(Norm)来衡量。范数在机器学习、深度学习中运用非常广泛,特别在限制模型复杂度、提升模型的泛化能力方面效果不错。p范数的定义如下:
||x||_p=(\sum_i |x_i| ^p)^{\frac 1p}\tag{2.6}
其中p\in R,P\geq 1
直观上来看,向量x的范数是度量从原点到点x的距离,范数是将向量映射到非负值的函数,如果从广义来说,任意一个满足以下三个条件的函数,都可称为范数:
(1)非负性:f(x)≥0,且当f(x)=0时,必有x=0;
(2)三角不等式性:f(x+y)≤f(x)+f(y);
(3)齐次性:\forall \alpha\in R,\forall x \in R^n f(\alpha x)=| \alpha|f(x)

当p=1时,即L^1范数,也称为绝对值范数,大小等于向量的每个元素绝对值之和,即:
||x||=\sum_i|x_i|
当p=2时,即L^2范数,也称为欧几里得范数,其大小表示从原点到当前点的欧几里得距离,即:
||x||_2=\sqrt{(x_1^2+x_2^2+\cdots+x_n^2)}\tag{2.7}
当p为\infty时,即L^{\infty}范数,也称为最大范数,它的值等于向量中每个元素的绝对值的最大值,即:
||x||_{\infty}=max_i (|x_i|)\tag{2.8}
前面主要介绍了利用范数来度量向量的大小,矩阵的大小如何度量呢?我们可以用类似的方法。在深度学习中,常用Frobenius范数来描述,即:
||A||_F=\sqrt{(\sum_{i,j}A_{i,j}^2 )}
它有点类似向量的L^2范数。
两个向量的点积可以用范数来表示,即:
x^T y=||x||_2 ||y||_2 \cos\theta \tag{2.9}
其中\theta表示x与y之间的夹角。 以上说了向量一种度量方式,即通过范数来度量向量或矩阵的大小,并有具体公式,在实际编程中如何计算向量的范数呢?这里我们还是以Python为例进行说明。

打印结果如下:
[ 0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
4.5
1.68819430161
0.9
由此看出利用Python求向量的范数还是很方便的。
例3:点积与范数的应用实例:
在平面解析几何中,点(x_0,y_0)到直线ax+by+c=0的距离为:
d=\frac{|ax_0+by_0+c|}{a^2+b^2}
在空间解析几何中,点(x_0,y_0,z_0)到平面ax+by+cz+d=0的距离为:
l=\frac{|ax_0+by_0+cz_0+d|}{a^2+b^2+c^2}
将其推广到n维空间,点(x_1,x_2,\cdots,x_n)到超平面\omega_1 x_1+\omega_2 x_2+\cdots+\omega_n x_n+b=0(或w^T X+b=0)的距离为:
d=\frac{|w^T X+b|}{||w||_2}

2.5线性相关性

前面我们介绍了向量、矩阵等概念,接下来我们将介绍向量组、线性组合、线性相关性、秩等重要概念。
由多个同维度的列向量构成的集合称为向量组,矩阵可以看成是由行向量或列向量构成的向量组。

2.5.1线性组合

给定向量组X:x_1,x_2,\cdots,x_n其中x_i\in R^m,对任何一组实数k_1,k_2,\cdots,k_n,构成的表达式:
k_1 x_1+k_2 x_2+\cdots+k_n x_n\tag{2.10}
称为向量组X的一个线性组合,k_1,k_2,\cdots,k_n称为向量组的系数。
对于任意一个m维向量b,如果存在一组实数k_1,k_2,\cdots,k_n,使得:
k_1 x_1+k_2 x_2+\cdots+k_n x_n=b
成立,则称向量b可以被向量组X:x_1,x_2,\cdots,x_n线性表示。
对于任意实数集\{k_1,k_2,\cdots,k_n\},由(2.10)式构成的所有向量集合,称为向量空间\{k_1 x_1+k_2 x_2+\cdots+k_n x_n\},其中k_i\in R
向量空间的概念有点抽象,我们举一个简单实例来说明这个概念,比如由三个向量构成的向量组\{(1,0,0),(0,1,0),(0,0,1)\} 和任何一组实数\{k_1,k_2,k_3\}就构成了一个三维空间。

2.5.2线性相关

线性相关性主要分析向量之间的关系,一组向量他们之间有哪些关系呢?这些关系有何重要应用?
向量组x_1,x_2,\cdots,x_n线性相关 <=> 存在不全为0的实数k_1,k_2,\cdots,k_n,使得:
k_1 x_1+k_2 x_2+\cdots+k_n x_n=0\tag{2.11}

如果不存在一组不全为0的数使k_1 x_1+k_2 x_2+\cdots+k_n x_n=0<=>向量组x_1,x_2,\cdots,x_n线性无关或线性独立。

例1:x_1=\binom{1}{0}, x_2=\binom{0}{1}线性无关,因为k_1 x_1+k_2 x_2=k_1 \binom{1}{0}+k_2 \binom{0}{1}=\binom{k_1}{k_2}=0,只有k_1=k_2=0,所以x_1,x_2线性无关。
例2:x_1=\binom{1}{0}, x_2=\binom{0}{1},x_3=\binom{1}{1}线性有关,因为x_1+x_2-x_3=0,k_1=1,k_2=1,k_3=-1
都不为0(至少一个不为0),所以x_1,x_2,x_3线性相关。
线性相关和线性无关的等价定义:利用矩阵乘法公式,式(2.11)可表示为:
\left(x_1,\cdots,x_n\right)\left(\begin{matrix}k_1 \cr \vdots \cr k_n\end {matrix}\right)=0,\Rightarrow Ax=0
这里假设:A=(a_1,\cdots,a_n),x=\left(\begin{matrix}x_1 \cr \vdots \cr x_n\end {matrix}\right),由线性方程组的理论,可得:
Ax=0只有零解,\Rightarrow a_1,\cdots,a_n线性无关;
Ax=0有非零解,\Rightarrow a_1,\cdots,a_n线性相关;
由线性方程组解的存在性与矩阵的秩的关系,有如下定理:
R(A)=n,\Rightarrow a_1,\cdots,a_n线性无关;
R(A)<n, \Rightarrow a_1,\cdots,a_n线性相关;

2.5.3向量组的秩

假设在原向量组X:x_1,x_2,\cdots,x_n存在一个子向量组,不妨设为X_0:x_1,x_2,\cdots,x_r,r<n,满足: (1)x_1,x_2,\cdots,x_r线性无关; (2)向量组X的中任意r+1个向量构成的子向量组都是线性相关的。 那么,称向量组X_0:x_1,x_2,\cdots,x_r,r 秩是一个重要概念,运用非常广泛,实际上矩阵我们可以看成是一个向量组。如果把矩阵看成是由所有行向量构成的向量组,这样矩阵的行秩就等于行向量组的秩;如果把矩阵看成是由所有列向量构成的向量组,这样矩阵的列秩就等于列向量组的秩。矩阵的行秩与列秩相等,因此,把矩阵的行秩和列秩统称为矩阵的秩。

2.5.4.向量空间

如果在n维向量集合S上的加法、数乘运算封闭,则称S为向量空间或线性空间。
即,对任意x,y\in S,都有x+y\in S,kx\in S,其中k是任意实数.
如通常看到的2维向量构建的集合R^2,3维向量构成的集合R^3,就是向量空间或线性空间。