【漫话机器学习系列】039.点积(dot product)

点积(Dot Product)

点积是线性代数中的一种基本运算,用于两个向量的操作。它是将两个向量按分量相乘并求和的结果,用于衡量两个向量在同一方向上的相似性。


点积的定义

给定两个相同维度的向量 ,它们的点积定义为:

其中:

  • 是两个向量对应位置的分量。

结果是一个标量值。


几何意义

点积也可以从几何的角度定义为:

其中:

  • 是向量 的模(长度)。
  • 之间的夹角。

通过点积可以判断:

  1. :向量夹角小于90°,方向相同。
  2. :向量正交,互相垂直。
  3. :向量夹角大于90°,方向相反。

性质

  1. 交换律

  2. 分配律

  3. 结合标量运算

    其中 k 是标量。

  4. 自身点积


应用场景

  1. 向量投影: 点积用于计算一个向量在另一个向量上的投影:

  2. 相似性计算: 在机器学习中,用点积计算向量(如文本特征向量、图像特征向量)的相似性。

  3. 能量或功的计算: 力学中,点积用于计算力和位移的乘积(功)。

  4. 线性代数与神经网络: 神经网络中的全连接层核心运算是点积,用于权重和输入的线性组合。


Python实现

1. 基础实现
python 复制代码
import numpy as np

# 定义两个向量
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 点积计算
dot_product = np.dot(a, b)
print(f"点积结果: {dot_product}")

运行结果

Matlab 复制代码
点积结果: 32
2. 几何应用
python 复制代码
# 计算点积和夹角
import numpy as np

a = np.array([1, 2])
b = np.array([3, 4])

# 点积
dot = np.dot(a, b)

# 向量模
norm_a = np.linalg.norm(a)
norm_b = np.linalg.norm(b)

# 夹角
cos_theta = dot / (norm_a * norm_b)
theta = np.arccos(cos_theta)

print(f"点积: {dot}")
print(f"夹角(弧度): {theta}")
print(f"夹角(度数): {np.degrees(theta)}")

运行结果

Matlab 复制代码
点积: 11
夹角(弧度): 0.17985349979247847
夹角(度数): 10.304846468766044

总结

点积是一种简单而强大的运算,广泛应用于几何、物理和数据科学中。它不仅能描述向量间的相似性,还可以延伸到矩阵运算及其在机器学习中的核心应用。理解点积的几何意义和性质有助于解决复杂的实际问题。

相关推荐
用户277844910499311 分钟前
借助DeepSeek智能生成测试用例:从提示词到Excel表格的全流程实践
人工智能·python
机器之心17 分钟前
刚刚,DeepSeek公布推理时Scaling新论文,R2要来了?
人工智能
算AI2 小时前
人工智能+牙科:临床应用中的几个问题
人工智能·算法
凯子坚持 c3 小时前
基于飞桨框架3.0本地DeepSeek-R1蒸馏版部署实战
人工智能·paddlepaddle
老歌老听老掉牙3 小时前
平面旋转与交线投影夹角计算
python·线性代数·平面·sympy
你觉得2053 小时前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义下载方法
大数据·人工智能·python·gpt·学习·机器学习·aigc
8K超高清4 小时前
中国8K摄像机:科技赋能文化传承新图景
大数据·人工智能·科技·物联网·智能硬件
hyshhhh4 小时前
【算法岗面试题】深度学习中如何防止过拟合?
网络·人工智能·深度学习·神经网络·算法·计算机视觉
薛定谔的猫-菜鸟程序员4 小时前
零基础玩转深度神经网络大模型:从Hello World到AI炼金术-详解版(含:Conda 全面使用指南)
人工智能·神经网络·dnn
币之互联万物4 小时前
2025 AI智能数字农业研讨会在苏州启幕,科技助农与数据兴业成焦点
人工智能·科技