Producto punto de vectores -- de la proyección a la multiplicación
El producto punto (dot product) es la operación vectorial más utilizada en IA.
El cálculo de las capas totalmente conectadas y la coincidencia de similitud en el mecanismo de atención — su núcleo es el producto punto.
El producto punto tienedos perspectivas equivalentes, y entender el puente entre ellas es la conclusión principal de este capítulo.
Perspectiva 1: Cálculo algebraico
Multiplica los elementos en posiciones correspondientes y luego suma.
\( \mathbf{a} \cdot \mathbf{b} = \sum a_i b_i \)
Por ejemplo: (2,3) · (4,1) = 2×4 + 3×1 = 11
Perspectiva 2: Intuición geométrica
Proyecta un vector sobre el otro y luego multiplica las dos longitudes.
\( \mathbf{a} \cdot \mathbf{b} = \|\mathbf{a}\| \|\mathbf{b}\| \cos\theta \)
Cuanto menor es el ángulo θ, mayor es el producto punto
Ambos métodos dan el mismo valor — esta es una ecuación extremadamente elegante en matemáticas.
El signo del producto punto revela la relación de dirección
Ejemplo de la vida real
Factura de compra: cantidad × precio unitario
Compraste 2 botellas de cola (3 yuanes cada una), 3 bolsas de papas fritas (5 yuanes cada una) y 1 tazón de fideos instantáneos (4 yuanes cada uno).
El producto punto del vector de cantidades (2, 3, 1) y el vector de precios (3, 5, 4) es el precio total: 2×3 + 3×5 + 1×4 = 25 yuanes.
Empujar el carrito: fuerza × desplazamiento
La fuerza con la que empujas el carrito es un vector (con magnitud y dirección), y el desplazamiento del carrito es otro vector.
En física, trabajo = componente de la fuerza en la dirección del desplazamiento × magnitud del desplazamiento = producto punto del vector fuerza y el vector desplazamiento.
Si empujas hacia un lado (dirección perpendicular), no haces ningún trabajo: el producto punto es cero.
Definición matemática
Definición algebraica
\[ \mathbf{a} \cdot \mathbf{b} = \sum_{i=1}^{n} a_i b_i = a_1 b_1 + a_2 b_2 + \cdots + a_n b_n \]Definición geométrica
\[ \mathbf{a} \cdot \mathbf{b} = \|\mathbf{a}\| \|\mathbf{b}\| \cos\theta \]El puente entre las dos definiciones: calcular el ángulo
\[ \cos\theta = \frac{\mathbf{a} \cdot \mathbf{b}}{\|\mathbf{a}\| \|\mathbf{b}\|} \]Esto significa:Dadas las coordenadas de dos vectores, se puede calcular el ángulo entre ellos sin necesidad de un transportador.。
Propiedades de la operación
| Propiedad | Fórmula | Descripción |
|---|---|---|
| Conmutatividad | \( \mathbf{a} \cdot \mathbf{b} = \mathbf{b} \cdot \mathbf{a} \) | El orden no afecta |
| Distributividad | \( \mathbf{a} \cdot (\mathbf{b} + \mathbf{c}) = \mathbf{a}\cdot\mathbf{b} + \mathbf{a}\cdot\mathbf{c} \) | Se puede sumar primero y luego hacer el producto punto |
| Producto punto consigo mismo | \( \mathbf{a} \cdot \mathbf{a} = \|\mathbf{a}\|^2 \) | El producto punto de un vector consigo mismo = el cuadrado de su magnitud |
Práctica con Python
Ejemplo
a_ejemplo = np.array([2, 3, 1])
b_ejemplo = np.array([4, 1, 2])
# Método 1: np.dot()
dot1 = np.dot(a_ejemplo, b_ejemplo)
# Método 2: operador @ (recomendado)
dot2 = a_ejemplo @ b_ejemplo
# Método 3: verificación manual
dot3 = sum(a_ejemplo[i] * b_ejemplo[i] for i in range(len(a_ejemplo)))
print("a · b =", dot1) # 13
print("Los tres métodos dan el mismo resultado:", dot1 == dot2 == dot3)
# Calcular el ángulo usando la definición geométrica
norm_a = np.linalg.norm(a_ejemplo)
norm_b = np.linalg.norm(b_ejemplo)
cos_theta = dot1 / (norm_a * norm_b)
theta_deg = np.degrees(np.arccos(cos_theta))
print(f"||a||={norm_a:.2f}, ||b||={norm_b:.2f}, cosθ={cos_theta:.4f}")
print(f"Ángulo = {theta_deg:.1f}°")
# Verificar la fórmula geométrica
verify = norm_a * norm_b * cos_theta
print(f"||a||·||b||·cosθ = {verify:.4f} (coincide con el producto punto)")
# Demostración con diferentes ángulos
print("\n[1,0] · [0.8,0.6] =", np.array([1,0]) @ np.array([0.8,0.6]), " (ángulo agudo, positivo)")
print("[1,0] · [0,1] =", np.array([1,0]) @ np.array([0,1]), " (ángulo recto, cero)")
print("[1,0] · [-1,0] =", np.array([1,0]) @ np.array([-1,0]), " (ángulo obtuso, negativo)")
a · b = 13 三种方法结果一致: True ||a||=3.74, ||b||=4.58, cosθ=0.7580 夹角 = 40.7° [1,0] · [0.8,0.6] = 0.8 (锐角,正) [1,0] · [0,1] = 0 (直角,零) [1,0] · [-1,0] = -1.0 (钝角,负)
Demostración interactiva del producto punto
Arrastra los extremos de los vectores a y b, y observa cómo cambian el valor del producto punto y el ángulo. El signo del producto punto determina si el ángulo es agudo/obtuso/recto:
Escenarios de aplicación en IA
Capa totalmente conectada = cálculo por lotes del producto punto
Una neurona calcula \( y = w_1x_1 + w_2x_2 + \cdots + w_nx_n + b \). La parte de la suma es elproducto punto del vector de pesos w y el vector de entrada x.。
Cuando ves una capa totalmente conectadann.Linear(784, 256), lo que hace matemáticamente es: 256 neuronas, cada neurona toma su propio vector de pesos (784 dimensiones) y hace el producto punto con el vector de entrada, luego suma el sesgo. 256 productos punto en paralelo = multiplicación de matrices.
Mecanismo de atención = producto punto + Softmax
La operación central del Transformer: el vector Query y el vector Key hacen un producto punto; cuanto mayor es el resultado, más "relevantes" son entre sí.
\[ \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V \]\( QK^T \) es la multiplicación de una matriz de seq_len × d_k por una matriz de d_k × seq_len; el valor en la posición (i, j) de la matriz resultante = elproducto puntoentre el i-ésimo Query y el j-ésimo Key. Cuanto mayor es este valor, mayor es la "atención" de la posición i hacia la posición j.
Dividir por \( \sqrt{d_k} \) es para evitar que los valores del producto punto sean demasiado grandes y provoquen la desaparición del gradiente en Softmax. Todos los modelos de lenguaje grandes modernos como GPT, BERT, Claude se basan en este mecanismo de atención por producto punto.
Cálculo de similitud en sistemas de recomendación
El producto punto entre el vector del usuario y el vector del artículo produce la "puntuación de preferencia" del usuario por ese artículo. Este es el núcleo del algoritmo de recomendación por factorización de matrices: la matriz de calificaciones ≈ matriz de vectores latentes de usuarios × transpuesta de la matriz de vectores latentes de artículos.
Otras extensiones