Todas las construcciones del curso comparten una exigencia que no se ha discutido: pasan por el origen. Un subespacio contiene por definición, una aplicación lineal cumple , y el espacio columna de una matriz es el conjunto de salidas alcanzables desde el de partida. Esta lección levanta esa restricción, que es lo que separa el marco desarrollado hasta aquí de una capa densa real.
Subespacios trasladados
Sea un espacio vectorial, un subespacio y un punto. El conjunto
es un espacio afín con espacio de dirección y punto de apoyo . Su dimensión es la de . Una recta afín corresponde a y un hiperplano afín a .
import numpy as np
x0 = np.array([1., 2.])
d = np.array([2., 1.])
L = x0 + np.outer(np.linspace(0, 1, 5), d)
Dos observaciones delimitan el objeto. La primera es que no es un subespacio salvo en un caso: contiene a si y solo si , es decir, si y solo si , y entonces . Un espacio afín que no pasa por el origen no es cerrado bajo suma ni bajo producto por escalares, de modo que ninguna de las herramientas de las lecciones anteriores se le aplica directamente.
La segunda es que el punto de apoyo no está determinado por . Si , entonces con , y
porque . Cualquier punto de sirve como apoyo; el espacio de dirección, en cambio, es único. El apoyo es una elección de representación, no una propiedad del conjunto.
La combinación afín
La descripción anterior depende de un punto elegido a mano. Existe una caracterización intrínseca. Dados y escalares , la expresión es una combinación afín cuando
La restricción es exactamente lo que hace falta para que el resultado no dependa del origen. Al trasladar todos los puntos por un mismo , la combinación se traslada por : se mueve con los datos en lugar de deformarse. Sin la restricción, la traslación introduce un factor arbitrario.
Si además todos los pesos son no negativos, la combinación se llama convexa y el conjunto de todas ellas es la envolvente convexa de los puntos.
Dos pesos son libres; el tercero queda fijado por la suma. Los vértices se alcanzan con peso 1.
λ₃ = 1 − λ₁ − λ₂ = 0.30
λ₁ + λ₂ + λ₃ = 1.00
combinación convexa: dentro de la envolvente
Los pesos de una softmax son no negativos y suman uno: la salida de la atención no abandona la envolvente.
La distinción no es un tecnicismo. El mecanismo de atención calcula con pesos producidos por una softmax, que son positivos y suman uno por construcción. La salida de una cabeza de atención es, por tanto, una combinación convexa de los vectores de valor, y queda encerrada en su envolvente convexa: no puede producir nada que esté fuera del casco que forman los valores disponibles. La interpolación entre ejemplos que emplea la técnica de aumento mixup es igualmente una combinación convexa de dos puntos, y el paso a pesos negativos —permitido por la definición afín, prohibido por la convexa— es exactamente lo que la sacaría del segmento que une los ejemplos.
El conjunto de soluciones, otra vez
La lección sobre la solución particular y general estableció que el conjunto de soluciones de es , y la lección sobre la imagen y el núcleo lo situó dentro de la descomposición ortogonal del dominio. El objeto tiene ahora nombre: es un espacio afín de dirección y dimensión .
from scipy.linalg import null_space
A = np.array([[1., 1., 1.]])
b = np.array([6.])
x0, *_ = np.linalg.lstsq(A, b, rcond=None) # un apoyo concreto
U = null_space(A) # la dirección, 3 × 2
El apoyo que devuelve lstsq es el de norma mínima, según se vio en la lección sobre la imagen y el núcleo, pero cualquier otra solución describe el mismo conjunto. Que el sistema homogéneo dé un subespacio y el inhomogéneo un espacio afín es la misma distinción con la que abre esta lección: es lo que ancla el conjunto al origen.
El hiperplano y el margen
Un hiperplano afín en admite una descripción por una sola ecuación:
con . El vector es normal al hiperplano —si e pertenecen a , restar las dos ecuaciones da — y controla el desplazamiento respecto del origen.
Arrastrar la normal w o el punto x; deslizar el desplazamiento b.
wᵀx + b = 4.00 · lado positivo
distancia = |wᵀx + b| / ‖w‖ = 1.79
La cantidad no es una distancia, y la diferencia importa. Para cualquier , la componente de a lo largo de la normal unitaria vale
donde la última igualdad usa . El resultado no depende del elegido, y su valor absoluto es la distancia de a . El signo indica el semiespacio.
La consecuencia práctica se enuncia así: sustituir por deja el hiperplano intacto —la ecuación define el mismo conjunto— pero duplica todas las puntuaciones. En una regresión logística, donde la probabilidad es , esto significa que la confianza del modelo puede crecer sin que la frontera de decisión se mueva un milímetro. La magnitud del logit mezcla dos cosas distintas: a qué distancia de la frontera está el punto, y cuánto se ha permitido crecer a . Solo la primera es una propiedad de la geometría del problema, y es la razón de que la penalización sobre la norma de los pesos afecte a la calibración de las probabilidades sin alterar necesariamente las predicciones.
La misma escala explica la formulación de la máquina de vectores de soporte. Fijando la normalización sobre los ejemplos más próximos, la separación entre los dos hiperplanes resultantes es
de modo que maximizar el margen equivale a minimizar . El problema geométrico y el problema de optimización son el mismo escrito dos veces.
La aplicación afín y el sesgo
Una aplicación afín entre espacios vectoriales es la composición de una lineal con una traslación:
Es la definición exacta de una capa densa. El término es el sesgo, y su papel geométrico es el de punto de apoyo: sin él, y toda frontera de decisión estaría obligada a pasar por el origen del espacio de características.
A = np.random.randn(3, 2)
a = np.random.randn(3)
def capa(x):
return A @ x + a # exactamente nn.Linear(2, 3)
Una aplicación afín no conserva combinaciones lineales arbitrarias, pero sí conserva las afines. La comprobación es inmediata y la restricción es justo lo que la hace funcionar:
Como corolario, una capa densa transforma envolventes convexas en envolventes convexas: la imagen del casco es el casco de las imágenes.
Queda una consecuencia que matiza un resultado anterior. La composición de dos aplicaciones afines es afín:
La lección sobre aplicaciones lineales mostró que una red sin funciones de activación colapsa en una sola matriz. La igualdad anterior cierra la única escapatoria que quedaba: añadir sesgos no lo impide. Una pila de capas densas sin activaciones colapsa en una sola capa densa, con matriz y sesgo acumulado. El sesgo aporta el desplazamiento respecto del origen, que es imprescindible, pero no aporta capacidad expresiva: la no linealidad tiene que venir de otro sitio.
El recorrido
El curso partió de resolver y termina describiendo con precisión qué es una capa densa. Entre ambos extremos, los objetos fueron apareciendo por necesidad: la eliminación para resolver, los factores para no repetir el trabajo, el rango para saber cuánta información contiene de verdad una matriz, la base para elegir la representación, los valores propios para encontrar la mejor, y el núcleo para saber qué se pierde por el camino. La capa contiene todo salvo , y lo que hay dentro del paréntesis ya no tiene nada de opaco.
Ejercicio. Generar dos nubes de puntos separables en y ajustar una regresión logística con scikit-learn. Extraer coef_ e intercept_, dibujar el hiperplano y comprobar que las distancias con signo tienen el signo correcto en cada clase. Repetir el ajuste con C diez veces mayor y verificar que crece mientras la frontera apenas se mueve.