乘法与点积
“乘法”和“点积”不是同一层面的概念,它们描述的是不同维度的事情。在公式 w*x + b 里,w 和 x 通常不是两个单独的数,而是两个向量:
w = [w₁, w₂, ..., wₙ]x = [x₁, x₂, ..., xₙ]
这时候 w*x 的实际计算是:
w₁*x₁ + w₂*x₂ + ... + wₙ*xₙ
也就是:对应位置相乘,然后全部加起来,得到一个标量。数学上就叫点积(dot product),也叫内积。
那为什么有人叫它“乘法”?因为当 w 和 x 都是单个数字(标量)时,w*x 确实就是普通乘法。但在机器学习/神经网络里,w 和 x 几乎总是向量,所以说“乘法”的人,只是在口语化地指“这里有个乘号”。
容易混淆的是,向量之间还有另一种“乘法”叫逐元素乘法(element-wise product):
[w₁*x₁, w₂*x₂, ..., wₙ*xₙ]
它得到的是一个向量,不是标量。
| 运算 | 写法 | 结果 |
|---|---|---|
| 逐元素乘法 | w ⊙ x |
向量 |
| 点积 | w · x 或 wᵀx |
标量 |
在 w*x + b 这种线性模型里,w*x 必须是点积,因为:
b是一个标量;- 只有
w*x也是标量,才能相加; - 最终输出
y是一个标量。
如果你是在看代码,比如 Python 里的 w * x,那还要小心:NumPy 里 * 默认是逐元素乘法,点积要写 np.dot(w, x) 或 w @ x。
附:
“点积”这个名字,直接来自它的书写符号。在数学里,两个向量的点积写成:
w · x
中间那个小圆点 ·,英文叫 dot。所以这种用点号表示的乘积,就叫 dot product,直译过来就是“点积”。
“内积”这个名字,来自它更抽象的数学定义,关键词是“内”。
点积的本质是:把两个向量“对应位置相乘再求和”,得到一个标量。这个结果落在哪儿?落在原来的向量空间“里面”,而不是产生一个新向量跑到空间外面去。
对比一下:
| 运算 | 输入 | 输出 | 名字来源 |
|---|---|---|---|
| 点积/内积 | 两个向量 | 一个标量 | 结果在空间“内” |
| 叉积 | 两个向量 | 一个新向量 | 结果“叉”出去,垂直向外 |
| 外积 | 两个向量 | 一个矩阵 | 结果在空间“外” |
所以:
- 内积:结果是标量,可以理解为“向内收缩”成一个数;
- 外积:结果维度变高(向量→矩阵),是“向外扩张”。
“内”和“外”是一对相对的概念,描述的是运算结果的维度和归属。
在欧几里得空间里,两者指的是同一个东西。但在更一般的数学里(比如函数空间),内积可以定义得更广,而“点积”通常专指向量那种对应相乘再求和的运算。两者在初等线性代数里是一回事,只是命名的角度不同:一个看符号,一个看结构。
- 点赞
- 收藏
- 关注作者
评论(0)