2.6 向量内积:结果为标量
向量内积(inner product),又叫标量积(scalar product)、点积(dot product)、点乘。注意,向量内积的运算结果为标量,而非向量。
给定a和b两个等行数列向量,即
列向量a和b的内积定义为
式(2.34)也适用于两个等列数行向量计算内积。注意,向量内积也是一种“向量→标量”的运算规则。
图2.16所示的两个列向量a和b的内积为
图2.16 a和b两个平面向量
Bk4_Ch2_06.py计算上述向量内积。此外,还可以用numpy.dot()计算向量内积。值得注意的是,如果输入为一维数组,则numpy.dot()输出结果为内积。
如果输入为矩阵,则numpy.dot()输出结果为矩阵乘积,相当于矩阵运算符@,如Bk4_Ch2_07.py给出的例子。
numpy.vdot()函数也可以计算两个向量内积。如果输入是矩阵,则矩阵会按照先行后列顺序展开成向量之后,再计算向量内积。Bk4_Ch2_08.py给出相关示例。
常用的向量内积性质如下:
请读者格外注意以下几个向量内积运算和Σ求和运算的关系:
其中
本书第5章还会从矩阵乘法角度介绍更多求和运算。
几何视角
如图2.16所示,从几何角度看,向量内积相当于两个向量的模(L2范数)与它们之间夹角余弦值三者之积,即
注意:式(2.39)中θ代表向量a和b的“相对夹角”。
此外,向量内积还可以从投影(projection)角度来解释,这是本书第9章要介绍的内容。
a的L2范数也可以通过向量内积求得,即有
左右等式平方得到
式(2.41)相当于“距离的平方”。
柯西-施瓦茨不等式
观察,我们可以发现cosθ的取值范围为[−1, 1],因此a和b内积的取值范围为
图2.17所示为7个不同向量的夹角状态。
θ=0°时,cosθ=1,a和b同向,此时向量内积最大;θ=180°时,cosθ=−1,a和b反向,此时向量内积最小。
平面上,非零向量a与b垂直,a与b夹角为90°,两者向量内积为0,即
多维向量a与b向量内积为0,我们称a与b正交(orthogonal)。本书上一章提到,正交是线性代数的概念,是垂直的推广。
图2.17 向量夹角
有了以上分析,我们就可以引入一个重要的不等式——柯西-施瓦茨不等式(Cauchy–Schwarz inequality)
即
其中:为a与b向量内积的绝对值。
用尖括号来表达向量内积,可以写成
即
在空间中,上述不等式等价于
余弦定理
回忆丛书第一本书讲解的余弦定理(law of cosines)
其中:a、b和c分别为图2.18所示三角形的三边的边长。下面,我们用余弦定理来推导式(2.39)。
如图2.18所示,将三角形三个边视作向量,将三个向量长度代入式(2.49),可以得到
向量a和b之差为向量c,即
图2.18 余弦定理
式(2.51)等式左右分别和自身计算向量内积,得到等式
整理得到
利用式(2.41),式(2.53)可以写作
比较式(2.50)和式(2.54),可以得到
在概率统计、数据分析、机器学习等领域,向量内积无处不在。下面举几个例子。
在多维空间中,给定A和B坐标为
计算A和B两点的距离AB为
用起点位于原点的向量a和b分别代表A和B点,AB距离就是a−b的L2范数,也就是欧几里得距离
回忆《数学要素》一册中介绍的样本方差公式,具体为
注意:对于总体方差,式(2.59)分母中的n–1应改为n。还默认X为有n个相等概率值的平均分布。
令x为
式(2.59)可以写成
根据广播原则,x−µ相当于向量x的每一个元素分别减去µ。
回忆总样本协方差公式
同样,对于总体协方差,式(2.62)分母中的n–1改为n即可。
同样利用向量内积运算法则,式(2.62)可以写成
本书第22章将从线性代数角度再和大家探讨概率统计的相关内容。