Suma y multiplicación escalar de vectores -- Perspectiva geométrica

Suma de vectores: unir dos desplazamientos

Un vector puede entenderse como una flecha que parte del origen — tiene longitud y dirección.

Sumar dos vectores es «empalmar» dos desplazamientos.

Regla del triángulo

Conecta el punto inicial del segundo vector b con el punto final del primer vector a.

El segmento desde el punto inicial de a hasta el punto final de b es a + b.

Intuición: «primero recorre a, luego recorre b»

Regla del paralelogramo

Dibuja un paralelogramo con a y b como dos lados adyacentes.

La diagonal que parte del origen es a + b.

Intuición: ambas reglas dan exactamente el mismo resultado

Multiplicación escalar: estirar o acortar un vector

Multiplicar un vector por un escalar (un número normal) produce:Cambiar la longitud del vector, pero mantener la dirección de la recta en la que se encuentra.。

|c| > 1

Estirar

Por ejemplo, 2v: longitud ×2

0 < |c| < 1

Acortar

Por ejemplo, 0.5v: longitud ÷2

c < 0

Invertir la dirección

Por ejemplo, -v: dirección opuesta

c = 0

Reducir a un punto

Por ejemplo, 0v = vector cero

La multiplicación escalar solo cambia la «longitud» del vector, no cambia la dirección de la recta que lo contiene (un número negativo invierte la dirección, pero permanece en la misma recta).

Esta propiedad se llamacolinealidad—los dos vectores, antes y después de la multiplicación escalar, están siempre sobre la misma recta.


Ejemplos cotidianos

Suma de vectores: tramos múltiples en la navegación

Sales de casa, caminas 300 metros hacia el este (vector a = (300, 0)), y luego 400 metros hacia el norte (vector b = (0, 400)).

Finalmente, estás a 500 metros al noreste de casa — esto es a + b = (300, 400).

Multiplicación escalar: reproducción de video a velocidad múltiple

A velocidad normal, caminar 5 pasos toma 5 segundos. A doble velocidad —misma dirección, mismos pasos— solo toma 2.5 segundos.

El vector de desplazamiento no cambió de dirección, pero el «tamaño de cada paso» se duplicó — ese es el efecto de 2v.

Dirección opuesta: deshacer el camino

Caminaste 100 metros hacia el este (v = (100, 0)), y luego quieres volver al origen — necesitas caminar 100 metros hacia el oeste (-v = (-100, 0)).

El signo negativo es la instrucción de «dar la vuelta» a la dirección del vector.


Definición matemática

Suma de vectores

Sumar dos vectores de la misma dimensión consiste en sumar los elementos en las posiciones correspondientes.

\[ \mathbf{a} + \mathbf{b} = \begin{bmatrix} a_1 \\ a_2 \\ \vdots \\ a_n \end{bmatrix} + \begin{bmatrix} b_1 \\ b_2 \\ \vdots \\ b_n \end{bmatrix} = \begin{bmatrix} a_1 + b_1 \\ a_2 + b_2 \\ \vdots \\ a_n + b_n \end{bmatrix} \]

Condición previa: los dos vectores deben tener la misma dimensiónde lo contrario, la suma no tiene sentido.

Resta de vectores

Resta de vectores = sumar el vector en dirección opuesta: \( \mathbf{a} - \mathbf{b} = \mathbf{a} + (-\mathbf{b}) \)

Multiplicación escalar de vectores

Multiplicar un vector por un escalar c consiste en multiplicar cada elemento del vector por c:

\[ c \cdot \mathbf{v} = c \cdot \begin{bmatrix} v_1 \\ v_2 \\ \vdots \\ v_n \end{bmatrix} = \begin{bmatrix} c \cdot v_1 \\ c \cdot v_2 \\ \vdots \\ c \cdot v_n \end{bmatrix} \]

Referencia rápida de las propiedades de las operaciones

PropiedadFórmulaIntuición
Conmutatividad\( \mathbf{a} + \mathbf{b} = \mathbf{b} + \mathbf{a} \)Da igual qué tramo recorras primero
Asociatividad\( (\mathbf{a}+\mathbf{b})+\mathbf{c} = \mathbf{a}+(\mathbf{b}+\mathbf{c}) \)Da igual cómo agrupes los tramos
Distributividad\( c(\mathbf{a}+\mathbf{b}) = c\mathbf{a} + c\mathbf{b} \)Primero sumar y luego estirar = primero estirar y luego sumar

Práctica con Python

Ejemplo

import numpy as np

# Crear dos vectores
a_ejemplo = np.array([3, 1])    # a = (3, 1)
b_ejemplo = np.array([1, 2])    # b = (1, 2)

# Suma de vectores: sumar posiciones correspondientes
add_result = a_ejemplo + b_ejemplo
print("a + b =", add_result)    # [4, 3]

# Resta de vectores
sub_result = a_ejemplo - b_ejemplo
print("a - b =", sub_result)    # [2, -1]

# Multiplicación escalar: multiplicar cada elemento por el escalar
c = 2.5
scale_result = c * a_ejemplo
print(f"{c} * a =", scale_result)  # [7.5, 2.5]

# Vector negativo: dirección completamente opuesta
neg = -a_ejemplo
print("-a =", neg)              # [-3, -1]

# Difusión de NumPy: operaciones directas entre el escalar y cada elemento del vector
print("a + 10 =", a_ejemplo + 10)   # Sumar 10 a cada elemento
print("a * 3  =", a_ejemplo * 3)    # Multiplicar cada elemento por 3
a + b = [4 3]
a - b = [2 -1]
2.5 * a = [7.5 2.5]
-a = [-3 -1]
a + 10 = [13 11]
a * 3  = [9 3]

Ejemplo

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['Arial Unicode MS', 'SimHei', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False

example_a = np.array([3, 1])
example_b = np.array([1, 2])
example_sum = example_a + example_b

fig, axes = plt.subplots(1, 2, figsize=(12, 5))

# Figura izquierda: regla del triángulo
for ax, title in zip(axes, ['Regla del triángulo', 'Regla del paralelogramo']):
    ax.set_xlim(-1, 6); ax.set_ylim(-1, 5)
    ax.axhline(y=0, color='gray', lw=0.5); ax.axvline(x=0, color='gray', lw=0.5)
    ax.set_aspect('equal'); ax.grid(True, alpha=0.3); ax.set_title(title)

# Dibujar la regla del triángulo
ax = axes[0]
ax.arrow(0, 0, example_a[0], example_a[1], head_width=0.2, head_length=0.2,
         fc='#e74c3c', ec='#e74c3c', lw=2, label='a')
ax.arrow(example_a[0], example_a[1], example_b[0], example_b[1],
         head_width=0.2, head_length=0.2, fc='#3498db', ec='#3498db', lw=2, label='b')
ax.arrow(0, 0, example_sum[0], example_sum[1], head_width=0.2, head_length=0.2,
         fc='#2E7DCC', ec='#2E7DCC', lw=2, ls='dashed', label='a+b')
ax.legend()

# Dibujar la regla del paralelogramo
ax = axes[1]
ax.arrow(0, 0, example_a[0], example_a[1], head_width=0.2, head_length=0.2,
         fc='#e74c3c', ec='#e74c3c', lw=2, label='a')
ax.arrow(0, 0, example_b[0], example_b[1], head_width=0.2, head_length=0.2,
         fc='#3498db', ec='#3498db', lw=2, label='b')
ax.arrow(example_a[0], example_a[1], example_b[0], example_b[1],
         head_width=0.2, head_length=0.2, fc='#3498db', ec='#3498db', lw=1.5, ls='dotted', alpha=0.6)
ax.arrow(example_b[0], example_b[1], example_a[0], example_a[1],
         head_width=0.2, head_length=0.2, fc='#e74c3c', ec='#e74c3c', lw=1.5, ls='dotted', alpha=0.6)
ax.arrow(0, 0, example_sum[0], example_sum[1], head_width=0.2, head_length=0.2,
         fc='#2E7DCC', ec='#2E7DCC', lw=2, ls='dashed', label='a+b')
ax.legend()
plt.tight_layout(); plt.show()

Demostración interactiva de suma de vectores

Arrastra los extremos de los vectores rojo a y azul b de abajo, y observa cómo el vector suma verde a+b cambia en tiempo real. Comprende la regla del triángulo y la del paralelogramo:


Casos de uso en IA

Operaciones semánticas con vectores de palabras

El descubrimiento más famoso de modelos de incrustación de palabras como Word2Vec y GloVe es que la suma y la resta de vectores tienen significado semántico.

\[ \text{vec}(\text{rey}) - \text{vec}(\text{hombre}) + \text{vec}(\text{mujer}) \approx \text{vec}(\text{reina}) \]

La resta elimina el componente de la característica «masculino», y la suma añade el componente de la característica «femenino». El vector resultante es el más cercano a «reina» en el espacio de incrustaciones.

Esta operación semántica no se limita al género — «París - Francia + Italia ≈ Roma» también sigue el mismo principio. La suma y la resta de vectores actúan aquí como una «edición de características».

El sesgo en redes neuronales

En el cálculo de cada neurona \( y = Wx + b \), +b es una suma de vectores: el sesgo desplaza todo el resultado de wx.

Sin el sesgo b, el modelo tendría que dar una salida 0 cuando x=0, lo que limita gravemente la capacidad expresiva del modelo. El sesgo equivale a dar a cada neurona un «valor de activación predeterminado».

Actualización de gradiente

La actualización de parámetros durante el entrenamiento \( \theta_{new} = \theta_{old} - \eta \nabla J \) es una combinación de multiplicación escalar (tasa de aprendizaje × gradiente) y resta de vectores.

La multiplicación escalar controla el tamaño de cada actualización (a mayor tasa de aprendizaje, mayor paso), y la resta mueve los parámetros en la dirección en que disminuye la pérdida.

Preprocesamiento de datos: centrado en la media

Antes de entrenar una red neuronal, normalmente se aplica a los datos la operación de «restar la media»: \( x_{norm} = x - \mu \). Esto es una resta de vectores: traslada el centro de los datos al origen, lo que ayuda a que el descenso de gradiente converja más rápido.


Otras extensiones