除了向量加法或标量乘法,另一个重要的运算是点积(也称为标量积或内积)。与产生另一个向量的加法或标量乘法不同,点积接受两个向量并返回一个标量。这个运算在许多方面都很常用,包括衡量向量间的相似性,以及作为矩阵乘法等更复杂运算的组成部分。计算点积点积定义于两个相同维度的向量。如果你有两个向量,比如 $a$ 和 $b$,它们都包含 $n$ 个元素:$$ a = \begin{bmatrix} a_1 \ a_2 \ \vdots \ a_n \end{bmatrix}, \quad b = \begin{bmatrix} b_1 \ b_2 \ \vdots \ b_n \end{bmatrix} $$它们的点积,通常表示为 $a \cdot b$ 或 $a^T b$,通过将对应元素相乘并求和来计算:$$ a \cdot b = a_1 b_1 + a_2 b_2 + \dots + a_n b_n = \sum_{i=1}^{n} a_i b_i $$示例:让我们计算两个3维向量的点积: $v = [1, 2, 3]$ $w = [4, -5, 6]$使用公式: $v \cdot w = (1 \times 4) + (2 \times -5) + (3 \times 6)$ $v \cdot w = 4 - 10 + 18$ $v \cdot w = 12$结果12是一个标量。请注意,向量必须具有相同数量的元素才能定义点积。你不能计算一个3元素向量和一个4元素向量的点积。在Python中使用NumPy计算点积NumPy提供了计算点积的便捷方法。使用 numpy.dot() 函数:import numpy as np v = np.array([1, 2, 3]) w = np.array([4, -5, 6]) # 使用 np.dot() 计算点积 dot_product = np.dot(v, w) print(f"向量 v: {v}") print(f"向量 w: {w}") print(f"点积 (使用 np.dot): {dot_product}")输出:向量 v: [1 2 3] 向量 w: [ 4 -5 6] 点积 (使用 np.dot): 12使用 @ 运算符: Python 3.5+ 引入了 @ 运算符用于矩阵乘法,它也适用于计算一维数组(向量)的点积。import numpy as np v = np.array([1, 2, 3]) w = np.array([4, -5, 6]) # 使用 @ 运算符计算点积 dot_product_operator = v @ w print(f"向量 v: {v}") print(f"向量 w: {w}") print(f"点积 (使用 @): {dot_product_operator}")输出:向量 v: [1 2 3] 向量 w: [ 4 -5 6] 点积 (使用 @): 12两种方法都得到相同的标量结果12,与我们手动计算的结果一致。在复杂表达式中,@ 运算符因其简洁性而常被选用。几何解释:角度与投影点积有一个重要的几何意义,它与两个向量之间的夹角有关。公式是:$$ a \cdot b = |a| |b| \cos(\theta) $$其中:$a \cdot b$ 是向量 $a$ 和 $b$ 的点积。$|a|$ 和 $|b|$ 是向量 $a$ 和 $b$ 的大小(或 $L_2$ 范数)。$\theta$ 是两个向量之间的夹角。这个公式使我们能够通过向量的分量来计算它们之间的夹角:$$ \cos(\theta) = \frac{a \cdot b}{|a| |b|} $$由此,我们可以根据点积看出向量间的关系:如果 $a \cdot b > 0$:向量之间的夹角 $\theta$ 小于90度($\cos(\theta) > 0$)。向量大致指向相似的方向。如果 $a \cdot b = 0$:夹角 $\theta$ 恰好是90度($\cos(\theta) = 0$),这意味着向量是正交的(垂直的)。这是在线性代数和机器学习中一个很有用的性质。请注意,这假定 $a$ 和 $b$ 是非零向量。如果 $a \cdot b < 0$:夹角 $\theta$ 大于90度($\cos(\theta) < 0$)。向量大致指向相反的方向。点积也与投影这个想法有关。向量 $a$ 在向量 $b$ 上的标量投影($a$ 有多少指向 $b$ 的方向)可以使用点积计算:$\frac{a \cdot b}{|b|}$。点积在机器学习中为何重要?点积在机器学习算法中频繁出现:相似度衡量: 余弦相似度,计算公式为 $\frac{a \cdot b}{|a| |b|}$,使用点积来衡量两个向量在方向上的相似性,而不考虑它们的大小。这在自然语言处理(NLP)中常用于比较文档或词向量,以及在推荐系统中。线性模型: 在线性回归或逻辑回归等模型中,预测通常是输入特征的加权和。这个加权和就是特征向量与模型权重向量之间的点积。神经网络: 许多神经网络层中的核心计算涉及矩阵乘法,这些矩阵乘法基本上由许多点积构成。理解点积的计算方法及其几何意义,有助于理解这些更高级的应用。在下一节中,我们将练习使用NumPy实现这些向量运算。