Curso de Matemáticas para IA · Lección 17 de 180
Combinaciones lineales para IA: cómo los vectores ponderados construyen una nueva representación
Escala y combina vectores, inspecciona cada coordenada con NumPy y descubre por qué las salidas de atención son un tipo especial de representación ponderada.
Un sistema de IA suele tener varios vectores candidatos y necesitar un solo resultado. Elegir únicamente uno descartaría los demás. Sumarlos sin cambios daría a cada candidato la misma intensidad. Una combinación lineal ofrece una operación más flexible: escala cada vector con su propio coeficiente y después suma las contribuciones escaladas.
Por ejemplo, dos vectores pueden codificar partes diferentes del contexto. Los coeficientes y permiten que el primero contribuya tres veces más que el segundo. El resultado sigue siendo un vector en el mismo sistema de coordenadas, listo para el cálculo siguiente.
Al terminar esta lección podrás construir una combinación lineal coordenada a coordenada, interpretar qué cambia cada coeficiente, implementar la operación con comprobaciones de forma en NumPy e identificar las condiciones adicionales que convierten una combinación lineal general en una salida de atención parecida a un promedio ponderado.
Resultado de aprendizaje: Construir e interpretar una suma ponderada de vectores.
La lección 16: Multiplicación escalar para IA mostró cómo un escalar controla la intensidad y la dirección de un vector. La lección 15 presentó la suma de vectores. Esta lección une esas operaciones. El sitio web complementario de Mathematics for Machine Learning sitúa las operaciones escalares y matriciales en la sección 2.2 y define las combinaciones lineales en la sección 2.5 del libro. El reportaje, los cálculos, el código, la visualización y las evaluaciones siguientes son originales.
Da a cada candidato su propio coeficiente
Sean vectores. La notación significa que cada vector tiene coordenadas reales. Sean coeficientes reales. Un coeficiente es el escalar asignado a un vector.
Llamarlo “suma ponderada” describe la misma aritmética: los coeficientes son los pesos. Pero “peso” aquí no significa necesariamente un parámetro aprendido del modelo ni una probabilidad. Su función es simplemente escalar una contribución.
Todos los vectores de entrada deben pertenecer al mismo espacio vectorial para que su suma tenga sentido. En un cálculo con arrays, eso normalmente significa que tienen la misma forma y el mismo significado de coordenadas. Un vector de dos coordenadas para [temperature, humidity] no se puede sumar con sentido a un vector de dos coordenadas para [height, age] solo porque ambos tienen forma (2,).
Sigue dos contribuciones hasta el resultado
Supón que una representación pequeña usa las coordenadas [topic, urgency]. Dos vectores candidatos son
Elige los coeficientes y . La combinación lineal solicitada es .
Este ejemplo también muestra por qué “coeficiente mayor” no equivale a “coordenada final mayor”. Un coeficiente escala todo un vector. El signo y el tamaño de cada coordenada del vector siguen determinando si esa contribución eleva o reduce la coordenada correspondiente del resultado.
La regla por componentes explica la operación
Escribe los vectores de entrada por coordenadas:
El símbolo significa la coordenada del vector . La escala y la suma actúan coordenada a coordenada, por lo que la coordenada del resultado es
Esta identidad explica por qué funciona la receta en dos pasos. La multiplicación escalar hace que la contribución sea . La suma de vectores agrega entonces todas las primeras coordenadas para obtener , todas las segundas para obtener , y así sucesivamente. Como cada cálculo de coordenadas es un cálculo con números reales, el resultado vuelve a tener coordenadas reales.
La misma regla proporciona comprobaciones algebraicas útiles. Reagrupar las contribuciones no cambia el resultado porque la suma de números reales es asociativa. Reordenarlas tampoco lo cambia porque la suma es conmutativa:
Eso no significa que se puedan intercambiar los coeficientes entre vectores. Normalmente porque cada escala se aplica a un vector distinto.
Mueve los coeficientes, no el significado de las coordenadas
El explorador fija y y permite modificar y . Las flechas continua y discontinua muestran las dos contribuciones escaladas desde el origen. Una copia trasladada de empieza en la punta de , mostrando el camino de la suma. La flecha punteada del resultado conecta directamente el origen con su suma.
Los patrones de línea y las etiquetas distinguen todas las flechas sin depender del color. La flecha discontinua trasladada tiene la misma longitud y dirección que bv; mover su punto inicial muestra la suma sin cambiar la contribución. Si el resultado es cero, un anillo punteado marca el origen.
| Cantidad | Coeficiente | Vector original | Contribución escalada |
|---|---|---|---|
| Primer candidato u | +0,75 | (+3, +1) | (+2,25, +0,75) |
| Segundo candidato v | +0,25 | (-1, +3) | (-0,25, +0,75) |
| Resultado r | No corresponde | No corresponde | (+2, +1,5) |
En el estado inicial renderizado en el servidor, y , así que la flecha punteada termina en , como en el ejemplo resuelto. Pon un coeficiente a cero y su contribución desaparece. Mueve un coeficiente por debajo de cero y su flecha se invierte. Pon ambos coeficientes a cero y todas las contribuciones colapsan en el vector cero. Ninguno de esos cambios renombra ni reordena las coordenadas.
Una combinación lineal es más amplia que un promedio
Varios términos relacionados usan la misma operación de escalar y sumar, pero imponen reglas distintas a los coeficientes.
| Tipo de combinación | Condiciones de los coeficientes | Consecuencia geométrica para dos puntos de entrada |
|---|---|---|
| Combinación lineal | Puede recorrer toda la recta o el plano generado por los vectores | |
| Combinación afín | Permanece en la recta o el plano afín que pasa por los puntos de entrada, pero puede extenderse más allá | |
| Combinación convexa | y | Permanece entre las entradas o dentro de su envolvente convexa |
En esta lección, promedio ponderado significa la forma habitual con pesos no negativos normalizados, por lo que es una combinación convexa. Algunos campos usan el término “media ponderada” con convenciones diferentes, que deben indicarse explícitamente. El ejemplo inicial cumple esta convención porque y ambos coeficientes son no negativos. En cambio, es una combinación lineal y afín válida, pero no convexa: su coeficiente negativo puede llevar el resultado más allá del segmento entre los dos vectores.
El vector cero siempre se puede alcanzar como combinación lineal si se ponen todos los coeficientes a cero. Eso no significa que las entradas sean cero; solo significa que la operación permite la combinación trivial sin contribuciones activas.
La atención usa una suma ponderada restringida de valores
El artículo original de Transformer define una salida de atención como una suma ponderada de vectores de valores. Cada vector de valores es una representación candidata con la misma dimensión de características. El mecanismo de atención calcula cuánto contribuye cada valor para la posición actual y después realiza la combinación lineal. La ecuación de atención de producto punto escalado del artículo escribe muchas de estas sumas de forma compacta como una operación matricial.
Para una salida ilustrativa, supón que los pesos de atención ya calculados son , y , y que los vectores de valores son
Entonces la representación de estilo atención es
En la operación de atención del artículo, la normalización que produce estos pesos los hace no negativos y hace que cada conjunto sume uno. Por tanto, la suma final es una combinación convexa de los vectores de valores para esa salida de atención. Esas restricciones pertenecen a este mecanismo de atención, no a la definición de combinación lineal.
Esta lección empieza deliberadamente después de producir los pesos. Todavía no enseña consultas, claves, puntuaciones de compatibilidad, normalización, múltiples cabezales ni la proyección de salida posterior. El punto matemático duradero es más concreto: una vez disponibles los coeficientes y los vectores de valores compatibles, la atención construye una representación escalando cada valor y sumando sus contribuciones.
NumPy debe revelar el eje de los vectores
Guarda los dos vectores candidatos como filas de un array. El array vectors tiene entonces forma (2, 2): dos vectores, cada uno con dos coordenadas. El array de coeficientes tiene forma (2,), un coeficiente por vector.
import numpy as np
vectors = np.array([
[3.0, 1.0], # u
[-1.0, 3.0], # v
])
coefficients = np.array([0.75, 0.25])
if vectors.ndim != 2:
raise ValueError("vectors must have shape (number_of_vectors, coordinates)")
if coefficients.shape != (vectors.shape[0],):
raise ValueError("need exactly one coefficient per vector")
scaled = coefficients[:, np.newaxis] * vectors
result = scaled.sum(axis=0)
print(scaled)
print(result)
La salida verificada es
[[ 2.25 0.75]
[-0.25 0.75]]
[2. 1.5]
coefficients[:, np.newaxis] cambia la forma de los coeficientes de (2,) a (2, 1). NumPy puede así transmitir un coeficiente por cada fila de vector. Las reglas oficiales de broadcasting comparan las dimensiones de los arrays desde la derecha y permiten dimensiones que coinciden o tienen tamaño uno. Después de la multiplicación, sum(axis=0) suma a lo largo del eje de filas de vectores y conserva las dos columnas de coordenadas.
Escribir solo coefficients * vectors también funciona en este ejemplo: las formas finales (2,) y (2, 2) casualmente alinean los dos coeficientes con las columnas de coordenadas, así que NumPy devuelve un array de aspecto razonable pero con el significado equivocado. La primera fila se convierte en [2.25, 0.25] en lugar de [2.25, 0.75]. Un broadcasting exitoso no demuestra que el eje de coeficientes sea correcto.
La compatibilidad de formas es necesaria, pero no suficiente. Si un candidato tiene tres coordenadas y otro tiene dos, no hay un array rectangular vectors de valores numéricos ordinarios que se pueda reducir así. Si ambos tienen dos coordenadas pero usan definiciones de características diferentes, el código funciona aunque el resultado siga siendo semánticamente inválido. Comprueba tanto la forma del array como el significado de las coordenadas.
Los coeficientes responden “cuánto”, no “qué significa”
Tres hábitos previenen la mayoría de los errores:
- Empareja cada coeficiente con un vector concreto antes de calcular.
- Escala los vectores completos y después suma las coordenadas correspondientes.
- Indica cualquier regla adicional de los coeficientes —como no negatividad o suma igual a uno— en vez de suponer que la expresión “suma ponderada” ya la incluye.
Los coeficientes negativos no son errores en una combinación lineal general: invierten una contribución. Los coeficientes mayores que uno también son válidos; pueden extender el resultado más allá de las flechas de entrada. Puede haber cancelación cuando las contribuciones apuntan en sentidos opuestos, y un coeficiente cero elimina un candidato sin cambiar la forma del vector.
El siguiente paso del curso que respeta los prerrequisitos, la lección 18, organiza números en matrices. La lección 19 mostrará después un producto matriz–vector como varias sumas ponderadas. Conserva la receta actual —emparejar, escalar, sumar—; la notación matricial la comprimirá, no la reemplazará. La página del curso Math for AI mantiene la ruta ordenada y los prerrequisitos publicados.
Comprueba lo que has entendido
Pregunta 1
Sean u = [2, −1]ᵀ y v = [4, 3]ᵀ. Calcula 1.5u − 0.5v e interpreta el signo de la segunda contribución.
Mostrar la solución paso a paso
Empareja los coeficientes con sus vectores y escala antes de sumar:
Ahora suma las coordenadas correspondientes:
El coeficiente negativo invierte antes de la suma. No significa “restar solo las coordenadas negativas”: cada coordenada de se multiplica por .
Pregunta 2
Clasifica cada par de coeficientes para au + bv: (0.4, 0.6), (1.2, −0.2) y (2, 1). ¿Cuáles son combinaciones lineales, afines o convexas?
Mostrar la solución paso a paso
Cada par contiene coeficientes reales, por lo que los tres producen combinaciones lineales.
- Para , los coeficientes suman y son no negativos. Es una combinación afín y convexa.
- Para , también suman , así que es afín. El coeficiente negativo impide que sea convexa.
- Para , suman , no . No es ni afín ni convexa, aunque sigue siendo una combinación lineal válida.
La clasificación depende de las restricciones sobre los coeficientes, no de las coordenadas concretas de y .
Pregunta 3
En el explorador, ¿qué debe ocurrirle a au cuando a cambia de 0.75 a 0 y después a −0.75 mientras u permanece fijo?
Mostrar la solución paso a paso
Con , la contribución es . Con ,
por lo que la primera contribución colapsa en el origen y no tiene dirección. Con ,
La flecha final tiene la misma longitud que la contribución de , pero apunta en dirección opuesta. El vector y el significado de sus coordenadas no cambiaron; solo cambió su coeficiente.
Pregunta 4
Una operación de estilo atención usa los pesos (0.2, 0.5, 0.3) con los valores x₁ = [1, 2]ᵀ, x₂ = [3, 0]ᵀ y x₃ = [−1, 4]ᵀ. Calcula la salida y explica por qué es una combinación convexa.
Mostrar la solución paso a paso
Calcula las tres contribuciones:
Súmalas coordenada a coordenada:
Los tres pesos son no negativos y . Esos dos hechos hacen que esta suma ponderada sea una combinación convexa de los vectores de valores. Son condiciones adicionales de la configuración de estilo atención indicada, no requisitos de toda combinación lineal.
Pregunta 5
Un desarrollador intenta combinar vectores con formas (3,) y (2,). ¿Por qué la expresión no es válida y por qué rellenar el vector más corto con ceros no arregla automáticamente el significado?
Mostrar la solución paso a paso
La suma de vectores requiere coordenadas correspondientes. Un vector de forma (3,) tiene tres posiciones de coordenadas, mientras que uno de forma (2,) solo tiene dos; por tanto, al segundo le falta una tercera coordenada que sumar. La expresión no está definida en un mismo tal como está escrita.
Rellenar con ceros crea formas de array compatibles, pero inventa silenciosamente una afirmación sobre una coordenada: dice que el valor de la tercera característica que falta en el vector corto es exactamente cero. Solo puede ser válido si la especificación de codificación define la misma tercera característica y define su ausencia como cero. Arreglar la forma no sustituye un significado de coordenadas compatible.
Pregunta 6
¿Por qué coefficients * vectors puede ponderar silenciosamente las coordenadas en lugar de las filas de vectores en NumPy, y qué remodelado explícito arregla el cálculo?
Mostrar la solución paso a paso
Con vectors.shape == (2, 2) y coefficients.shape == (2,), NumPy compara las dimensiones desde la derecha. La longitud 2 de los coeficientes coincide con la última dimensión de coordenadas 2, así que el broadcasting aplica los dos números a las columnas. La operación funciona, pero el coeficiente 1 pondera la coordenada 1 y el coeficiente 2 pondera la coordenada 2.
Inserta una dimensión de coordenadas de tamaño uno:
scaled = coefficients[:, np.newaxis] * vectors
result = scaled.sum(axis=0)Ahora coefficients[:, np.newaxis].shape == (2, 1). La primera dimensión empareja un coeficiente con cada fila de vectores y la dimensión de tamaño uno transmite ese coeficiente a todas las coordenadas de su fila. Después, sumar en el eje 0 agrega las filas escaladas coordenada a coordenada.
Pregunta 7
Demuestra coordenada a coordenada que a(u + v) = au + av para dos vectores u, v ∈ ℝ².
Mostrar la solución paso a paso
Escribe y . El lado izquierdo es
La distributividad de los números reales da
La primera coordenada coincide y la segunda también, así que los dos vectores son iguales. El mismo argumento funciona para cualquier número finito de coordenadas.
Pregunta 8
Un modelo tiene vectores compatibles u y v. Compara r = 2u + 0v con concatenar u y v. ¿Qué información y forma produce cada operación?
Mostrar la solución paso a paso
La combinación lineal escala primero y suma después:
Si , el resultado sigue estando en . El vector no aporta nada porque su coeficiente es cero, mientras que cada coordenada de se duplica.
La concatenación no suma coordenadas correspondientes. Coloca las coordenadas de junto a las coordenadas de y produce un objeto de coordenadas. La concatenación conserva ambos bloques de entrada y cambia la forma; la combinación lineal fusiona sus contribuciones escaladas en el espacio de coordenadas original. Responden a preguntas distintas sobre la representación.