Curso de Matemáticas para IA · Lección 39 de 180
Las normas vectoriales miden el tamaño, no el significado
Calcula las normas vectoriales L1, L2 y L-infinity, comprueba sus reglas definitorias y descubre qué puede y qué no puede revelar la magnitud de un embedding.
Dos vectores embedding pueden apuntar en la misma dirección y, aun así, tener magnitudes distintas. Por ejemplo, y son versiones escaladas: el segundo es el doble de largo. Una norma convierte un vector en un número no negativo que resume su tamaño según una regla concreta. Ese número puede ayudar a comparar escalas o describir una penalización de parámetros, pero no clasifica la importancia semántica de un embedding.
Al terminar esta lección, podrás calcular las normas vectoriales , y , comprobar las propiedades que convierten una función en norma y usar NumPy para calcular tamaños de vectores sin confundir un conjunto de vectores con una sola matriz.
Resultado de aprendizaje: Calcular normas vectoriales comunes y comprobar sus propiedades.
Esta lección parte de la Lección 014: Vectores como datos de IA, donde las coordenadas eran características en un orden fijo. La sección 3.1 de Mathematics for Machine Learning presenta las normas como formas de medir la longitud de un vector. Los ejemplos, el código, la visualización y las evaluaciones de esta lección son originales.
Una norma es una regla de tamaño con tres promesas
Sean e vectores de , y sea cualquier número real. Una función es una norma vectorial si cumple estas tres reglas:
La primera regla dice que el tamaño de un vector no puede ser negativo y que solo el vector cero tiene tamaño cero. La segunda indica que multiplicar un vector por un número negativo también multiplica su tamaño por el valor absoluto de ese escalar. La tercera establece que la suma de dos vectores no puede tener un tamaño mayor que la suma de sus tamaños por separado.
Tres reglas habituales aplicadas al mismo vector
Para , las normas habituales son
El subíndice indica la regla. suma los tamaños absolutos de las coordenadas, usa la longitud euclídea habitual y toma la coordenada con mayor valor absoluto. Son tres resúmenes distintos del mismo vector; sus coordenadas no cambian.
Tomemos el vector . Que la segunda coordenada sea negativa importa para algunas operaciones, pero estas reglas de tamaño utilizan valores absolutos o cuadrados:
La bola unidad euclídea es el conjunto de vectores de dos coordenadas cuya norma no supera uno. El punto está en su borde porque .
Bola unidad L₂: ‖x‖₂ ≤ 1
La región sombreada representa una regla, no solo una forma: contiene el origen y todos los vectores cuya longitud no supera uno. En el borde, la longitud es exactamente uno. En dimensiones mayores, el mismo conjunto también se llama bola, aunque ya no se pueda dibujar como un disco.
Comprueba las tres promesas
La positividad definida se deduce directamente de cada fórmula. Una suma de valores absolutos o de cuadrados solo puede valer cero si todas las coordenadas son cero. El máximo de valores absolutos también solo vale cero cuando todas las coordenadas son cero. Cada fórmula es no negativa y devuelve cero para el vector cero.
Para comprobar la homogeneidad absoluta, toma y multiplícalo por :
El valor absoluto de es esencial. Un escalar negativo invierte la dirección del vector, pero la longitud no se vuelve negativa.
También se puede comprobar la desigualdad triangular a partir de las fórmulas. Para , se cumple en cada coordenada; al sumar esas desigualdades se obtiene . Para , se trata del conocido hecho geométrico de que un lado de un triángulo no supera la suma de los otros dos. Para ,
Por tanto, cada norma supera las tres comprobaciones. Un ejemplo numérico puede poner a prueba si entiendes una regla, mientras que el razonamiento anterior explica por qué se cumple para todos los vectores.
Calcula tamaños vectoriales con NumPy
NumPy ofrece estos cálculos mediante numpy.linalg.norm. Para un array unidimensional, especifica ord para elegir una norma vectorial:
import numpy as np
x = np.array([3.0, -4.0])
print(np.linalg.norm(x, ord=1))
print(np.linalg.norm(x, ord=2))
print(np.linalg.norm(x, ord=np.inf))
La salida es 7.0, 5.0 y 4.0. Si se omite ord en un array unidimensional, el valor predeterminado es la norma .
Una tabla de embeddings suele ser un array bidimensional, con un embedding por fila. Para obtener una norma por embedding, especifica el eje de las filas:
embeddings = np.array([[3.0, 4.0], [6.0, 8.0]])
row_norms = np.linalg.norm(embeddings, ord=2, axis=1)
print(row_norms)
La salida es [5. 10.]. La norma del segundo vector duplica la del primero, aunque ambos apunten en la misma dirección. Con una entrada bidimensional y sin axis, NumPy interpreta la entrada como una matriz; una norma matricial no equivale a calcular una norma vectorial para cada fila. La documentación describe axis como la dimensión a lo largo de la cual se calculan las normas vectoriales.
Una norma vectorial indica el tamaño de una representación según la regla elegida para sus coordenadas. No indica que un embedding más grande sea más relevante, preciso o importante desde el punto de vista semántico. Para llegar a esas conclusiones hacen falta una tarea específica del modelo y su evaluación; la magnitud escalar por sí sola no basta.
Una penalización de parámetros está relacionada con una norma, pero no siempre es la norma misma
Una función objetivo de optimización puede añadir un término que penalice vectores de parámetros grandes. Por ejemplo, una penalización añade , mientras que una penalización al cuadrado añade , con como peso de la penalización. Para , , mientras que .
El cuadrado de la segunda expresión importa: no es una norma. La homogeneidad de una norma escala el valor por , no por : . Además, las dos fórmulas de penalización tienen escalas numéricas distintas, así que usar el mismo no hace que sus efectos sean comparables. La norma vectorial explica qué mide una penalización; la función objetivo y su coeficiente determinan cómo afecta esa medida al entrenamiento.
Hay un detalle del software que conviene tener presente. El parámetro ord de NumPy admite valores menores que 1 con fines numéricos, pero su documentación indica explícitamente que esos resultados no son normas matemáticas. Por ejemplo, si , entonces y , mientras que . Como , falla la desigualdad triangular. Usa ord=0.5 cuando necesites específicamente esa expresión numérica, no cuando quieras una norma vectorial con las tres garantías anteriores.
Una vez claras las propiedades y la diferencia de implementación, el siguiente paso es comparar las geometrías que producen distintas normas válidas y cómo esas elecciones cambian las ideas de distancia y restricción.
Comprueba lo que has aprendido
Question 1
¿Qué tres propiedades debe cumplir una función para ser una norma vectorial?
Show the step-by-step solution
Una norma es positiva definida, absolutamente homogénea y cumple la desigualdad triangular. La positividad definida indica que su valor no es negativo y solo es cero para el vector cero. La homogeneidad absoluta requiere . La desigualdad triangular exige para cualquier par de vectores.
Question 2
Para x = (2, −1, 2), calcula sus normas L₁, L₂ y L-infinity. Muestra las operaciones.
Show the step-by-step solution
Para , suma los valores absolutos de las coordenadas: . Para , calcula la raíz cuadrada de la suma de cuadrados: . Para , toma el mayor valor absoluto, que es . Por tanto, los tres valores son , y .
Question 3
Sea x = (3, −4). Calcula las tres normas de −2x y comprueba la homogeneidad absoluta en cada caso.
Show the step-by-step solution
Primero, . Su norma es , que coincide con . Su norma es . Su norma es . Las tres coinciden con la norma original multiplicada por , así que el escalar negativo cambia la dirección sin hacer que el tamaño sea negativo.
Question 4
Para u = (1, −2) y v = (−3, 1), comprueba la desigualdad triangular L₁ calculando ambos lados.
Show the step-by-step solution
Primero suma los vectores: , por lo que . Por separado, y , de modo que el lado derecho es . Así, . Este ejemplo cumple la desigualdad; la desigualdad del valor absoluto en cada coordenada explica por qué se cumple para cualquier par en .
Question 5
¿Por qué f(x) = (Σᵢ |xᵢ|^(1/2))² no es una norma? Pruébala con (1, 0) y (0, 1).
Show the step-by-step solution
Cada uno de los dos vectores coordenados tiene . Su suma es , para la que . La desigualdad triangular exigiría , lo cual es falso. Por tanto, esta función incumple una de las propiedades necesarias de una norma. NumPy admite este tipo de resultado ord < 1 para usos numéricos, pero su documentación no lo denomina norma matemática.
Question 6
Para embeddings = [[3, 4], [6, 8]], ¿qué expresión de NumPy devuelve una norma L₂ por fila y cuáles son los resultados?
Show the step-by-step solution
Las dos filas son vectores distintos, así que hay que calcular a lo largo del eje de las coordenadas de cada fila: np.linalg.norm(embeddings, ord=2, axis=1). El primer resultado es ; el segundo, . La salida es [5. 10.]. Al fijar axis=1 se evita tratar todo el array bidimensional como una sola norma matricial.
Question 7
Para w = (3, −4), calcula la penalización L₁ y la penalización L₂ al cuadrado cuando λ = 0.1. ¿La cantidad L₂ al cuadrado es una norma en sí misma?
Show the step-by-step solution
La penalización es . La penalización al cuadrado es . La cantidad al cuadrado no es una norma: al multiplicar por , cambia por un factor , mientras que la homogeneidad de una norma exige un factor .
Question 8
Los embeddings (3, 4) y (6, 8) tienen normas L₂ de 5 y 10. ¿Qué demuestra esta comparación y qué no permite concluir sobre su significado?
Show the step-by-step solution
Demuestra que, con las coordenadas dadas, la magnitud euclídea del segundo vector duplica la del primero. Además, ambos vectores apuntan en la misma dirección porque . Sus normas por sí solas no permiten determinar cuál embedding es más relevante o más importante semánticamente; para eso hacen falta el contexto de entrenamiento del modelo y una evaluación adecuada para la tarea.