Curso de Matemáticas para IA · Lección 34 de 180

Las aplicaciones lineales conservan las combinaciones que necesitan los modelos de IA

Comprueba si una transformación conserva las sumas y los escalados, identifica sus espacios de entrada y salida y distingue una capa neuronal de su activación.

Comparte este artículo

Una red neuronal transforma repetidamente una representación en otra. Para entender qué hace una capa, conviene plantear dos preguntas: ¿qué tipos de vectores pueden entrar y cuáles pueden salir? Una aplicación lineal responde a ambas y conserva la forma en que se combinan los vectores. Así podemos razonar sobre los pesos de una matriz como transformaciones entre espacios e identificar exactamente dónde introduce la red un comportamiento no lineal.

Al terminar, podrás comprobar si una aplicación es lineal, indicar sus espacios de entrada y salida, y distinguir la transformación matricial de una capa neuronal de su función de activación.

Objetivo de aprendizaje: Comprobar la linealidad y describir los espacios de entrada y salida de una aplicación.

Esta lección se apoya en las reglas de los espacios vectoriales de la Lección 027. La sección 2.7 de Mathematics for Machine Learning introduce las aplicaciones lineales cuando las combinaciones de vectores empiezan a conectar las coordenadas con las matrices. Los cálculos, el ejemplo de una capa neuronal, el recurso visual y las actividades de esta lección son originales.

Una transformación debe respetar cómo se combinan sus entradas

Los vectores se pueden sumar y escalar. Para dos espacios vectoriales reales VV y WW, una aplicación T:V→WT:V\to W es lineal cuando respeta ambas operaciones:

Aquí u,v∈Vu,v\in V y a,b∈Ra,b\in\mathbb{R}. El resultado pertenece a WW, y los coeficientes de la derecha escalan las salidas correspondientes.

Puedes comprobar esta regla combinada o dividirla en dos condiciones:

T(u+v)=T(u)+T(v),T(au)=aT(u).T(u+v)=T(u)+T(v), \qquad T(au)=aT(u).

La primera indica que sumar dos entradas antes de transformarlas da el mismo resultado que transformar cada una y después sumarlas. La segunda indica que escalar una entrada antes de transformarla equivale a escalar su salida por el mismo factor. Ambas deben cumplirse para todas las entradas válidas y todos los escalares reales, incluidos los negativos.

Una aplicación lineal transforma una suma en la suma de sus imágenesPara T(x₁, x₂) = (2x₁ + x₂, −x₁ + x₂), la imagen de e₁ + e₂ es la suma de las imágenes de e₁ y e₂.

Espacio de entrada ℝ²

Espacio de entrada ℝ²Tres flechas parten del origen: e₁ = (1, 0), e₂ = (0, 1) y e₁ + e₂ = (1, 1).e₁e₂e₁ + e₂x₁x₂
  • e₁ = (1, 0)
  • e₂ = (0, 1)
  • e₁ + e₂ = (1, 1)

Espacio de salida ℝ²

Espacio de salida ℝ²Las flechas correspondientes son T(e₁) = (2, −1), T(e₂) = (1, 1) y T(e₁ + e₂) = (3, 0). La tercera salida es igual a la suma de las dos primeras.T(e₁)T(e₂)T(e₁ + e₂)y₁y₂
  • T(e₁) = (2, −1)
  • T(e₂) = (1, 1)
  • T(e₁ + e₂) = (3, 0)

Comprobación de la combinación: T(e₁ + e₂) = T(e₁) + T(e₂)

Las tres flechas muestran un caso concreto de suma. Aquí, T(e1+e2)=(3,0)T(e_1+e_2)=(3,0), y T(e1)+T(e2)=(2,−1)+(1,1)=(3,0)T(e_1)+T(e_2)=(2,-1)+(1,1)=(3,0). El recurso visual ofrece una interpretación geométrica; la fórmula expresa la propiedad general, que debe cumplirse para todos los vectores y escalares, no solo para estos dos vectores de la base.

Una matriz indica qué espacios conecta la aplicación

Sea AA una matriz de tamaño m×nm\times n, es decir, con mm filas y nn columnas. Multiplica un vector columna de nn coordenadas y produce un vector columna de mm coordenadas:

T:Rn→Rm,T(x)=Ax.T: \mathbb{R}^n\to\mathbb{R}^m, \qquad T(x)=Ax.

El dominio es el conjunto de entradas admitidas por la aplicación; el codominio es el espacio de salida al que promete llegar. Para esta regla matricial, las entradas pertenecen a Rn\mathbb{R}^n y las salidas a Rm\mathbb{R}^m. Las dimensiones no tienen por qué coincidir: una aplicación puede ampliar un vector para obtener más coordenadas o comprimirlo para obtener menos.

La multiplicación de matrices es lineal porque distribuye sobre la suma y la multiplicación por escalares. Para cualesquiera vectores u,vu,v de longitud nn y escalares a,ba,b,

T(au+bv)=A(au+bv)=aAu+bAv=aT(u)+bT(v).T(au+bv)=A(au+bv)=aAu+bAv=aT(u)+bT(v).

Veamos un pequeño ejemplo numérico:

Un sesgo desplaza el origen; una activación cambia la regla

En el código de aprendizaje automático, «capa lineal» es una abreviación habitual. En matemáticas, los detalles determinan si la operación es lineal. Para lotes organizados por filas, PyTorch torch.nn.Linear calcula xAT+bxA^\mathsf{T}+b e incluye el sesgo bb de forma predeterminada. Si el sesgo no es cero, la regla es afín: conserva las combinaciones cuyos coeficientes suman uno, pero por lo general no conserva sumas ni escalados arbitrarios. La documentación de PyTorch la denomina transformación afín y permite desactivar el sesgo con bias=False (documentación de torch.nn.Linear). Aun así, conserva una combinación ponderada cuando los pesos suman uno:

F(λu+(1−λ)v)=λAu+(1−λ)Av+b=λ(Au+b)+(1−λ)(Av+b).F(\lambda u+(1-\lambda)v) =\lambda Au+(1-\lambda)Av+b =\lambda(Au+b)+(1-\lambda)(Av+b).

La última igualdad se cumple porque λb+(1−λ)b=b\lambda b+(1-\lambda)b=b. La suma vectorial ordinaria usa los coeficientes 11 y 11, cuya suma no es uno, así que el sesgo no se cancela en F(u+v)F(u+v).

El vector cero permite hacer un diagnóstico rápido. Toda aplicación lineal debe enviar el cero al cero, porque T(0)=T(0⋅x)=0⋅T(x)=0T(0)=T(0\cdot x)=0\cdot T(x)=0. Para la regla afín F(x)=Ax+bF(x)=Ax+b,

F(0)=A0+b=b.F(0)=A0+b=b.

Si b≠0b\ne0, entonces FF no puede ser lineal. El sesgo no hace que la capa sea incorrecta; permite que el modelo desplace la salida incluso cuando la entrada es cero.

Las redes neuronales añaden otra operación después de la transformación de pesos. Un patrón habitual es h=ReLU⁡(Ax+b)h=\operatorname{ReLU}(Ax+b), donde ReLU sustituye cada coordenada negativa por cero. Es una operación no lineal. Por ejemplo, sea r(t)=max⁡(0,t)r(t)=\max(0,t). Entonces r(−1+1)=r(0)=0r(-1+1)=r(0)=0, mientras que r(−1)+r(1)=0+1=1r(-1)+r(1)=0+1=1. La prueba de suma falla. La documentación de PyTorch define torch.nn.ReLU como esta operación de máximo elemento a elemento (documentación de ReLU).

Esta diferencia explica por qué las redes combinan estos pasos. Si dos capas fueran únicamente aplicaciones lineales, su composición seguiría siendo una sola aplicación lineal: B(Ax)=(BA)xB(Ax)=(BA)x. Añadir capas cambiaría la matriz, pero no crearía una regla no lineal entre entrada y salida. Una activación impide esa reducción y permite que la red represente relaciones más variadas. La matriz de pesos mezcla las características de entrada; la activación cambia la regla que se aplica a las coordenadas resultantes.

Examina la transformación con código

Puedes comprobar los mismos cálculos con NumPy. Los vectores columna hacen que la convención de matriz a la izquierda coincida con la derivación anterior:

import numpy as np

A = np.array([[2, 1],
              [-1, 1]])
u = np.array([1, 0])
v = np.array([0, 1])

def T(x):
    return A @ x
print(T(u + v))              # [3 0]
print(T(u) + T(v))           # [3 0]
print(T(-2 * u))             # [-4  2]
print(-2 * T(u))             # [-4  2]

En PyTorch, los vectores de un lote suelen almacenarse como filas, por lo que la matriz de pesos de la biblioteca aparece transpuesta en la fórmula mostrada. La dimensión del lote se mantiene, mientras que la última dimensión, la de características, pasa de in_features a out_features:

import torch
from torch import nn

x = torch.tensor([[1.0, 0.0], [0.0, 1.0]])  # shape: (2 examples, 2 features)
linear_part = nn.Linear(2, 3, bias=False)
activation = nn.ReLU()

pre_activation = linear_part(x)  # shape: (2, 3); a linear map
hidden = activation(pre_activation)  # shape: (2, 3); nonlinear elementwise step

En este caso, la aplicación lineal transforma cada vector de características de R2\mathbb{R}^2 en uno de R3\mathbb{R}^3. Este ejemplo omite el sesgo, de modo que la primera operación sí es lineal. Con el sesgo predeterminado, PyTorch describe esa operación como afín. La activación conserva la forma de la salida, pero no supera la prueba de combinación de vectores. Que las formas coincidan no permite saber si una operación es lineal; lo determina la regla algebraica.

Una aplicación lineal aún puede perder información

La linealidad no significa que una aplicación sea reversible, conserve longitudes o resulte útil para todas las tareas posteriores. La matriz nula transforma cualquier entrada en el vector cero y aun así satisface las dos reglas de linealidad. Una aplicación lineal de R3\mathbb{R}^3 a R2\mathbb{R}^2 no puede ser inyectiva: necesariamente desaparece al menos una dirección de la información de entrada. Para determinar si se conserva la información, se necesitan otros conceptos, como la independencia lineal, el rango y la invertibilidad.

Al inspeccionar un bloque neuronal, escribe el espacio anterior y posterior a cada operación y después comprueba la regla que aplica. La multiplicación matricial transforma las combinaciones de forma predecible; un sesgo desplaza el origen; una activación cambia cómo se comportan las combinaciones. Esa es la distinción que conviene llevar a la siguiente lección, donde las aplicaciones lineales adquieren representaciones matriciales concretas.

Comprueba lo que has entendido

Pregunta 1

¿Qué dos propiedades debe satisfacer una aplicación para ser lineal? ¿Qué queda sin comprobar con una prueba de suma de vectores?

Mostrar la solución paso a paso

Una aplicación lineal debe conservar la suma y la multiplicación por escalares: T(u+v)=T(u)+T(v)T(u+v)=T(u)+T(v) y T(cu)=cT(u)T(cu)=cT(u) para cualesquiera u,vu,v válidos y cualquier escalar real cc. La regla combinada se obtiene aplicando ambas propiedades: T(au+bv)=T(au)+T(bv)=aT(u)+bT(v)T(au+bv)=T(au)+T(bv)=aT(u)+bT(v). Una prueba de suma solo abarca las sumas de entradas; para comprobar directamente la definición, también hay que probar el escalado por cada número real.

Pregunta 2

Para T(x₁, x₂) = (2x₁ + x₂, −x₁ + x₂), calcula T(3, 2). Muestra las dos coordenadas de salida e indica los espacios de entrada y salida.

Mostrar la solución paso a paso

La matriz tiene dos columnas, así que admite vectores de R2\mathbb{R}^2. Tiene dos filas, por lo que la salida pertenece a R2\mathbb{R}^2. Multiplica la entrada por cada fila:

T(32)=(2⋅3+1⋅2−1⋅3+1⋅2)=(8−1).T\begin{pmatrix}3\\2\end{pmatrix} =\begin{pmatrix}2\cdot3+1\cdot2\\-1\cdot3+1\cdot2\end{pmatrix} =\begin{pmatrix}8\\-1\end{pmatrix}.

Por tanto, es una aplicación T:R2→R2T:\mathbb{R}^2\to\mathbb{R}^2 y la salida es (8,−1)(8,-1).

Pregunta 3

Con la matriz de esta lección, verifica que T((1, 0) + (0, 1)) = T(1, 0) + T(0, 1).

Mostrar la solución paso a paso

Sean u=(1,0)u=(1,0) y v=(0,1)v=(0,1). El ejemplo resuelto da T(u)=(2,−1)T(u)=(2,-1) y T(v)=(1,1)T(v)=(1,1), por lo que su suma es (3,0)(3,0). La suma de las entradas es u+v=(1,1)u+v=(1,1), y la multiplicación matricial da T(1,1)=(3,0)T(1,1)=(3,0). Ambos lados coinciden, así que se verifica este caso concreto de suma. El ejemplo respalda la regla, pero no la demuestra para todos los vectores; la propiedad distributiva de la multiplicación matricial proporciona la demostración general.

Pregunta 4

Con la misma matriz y u = (1, 0), calcula T(−2u) y compáralo con −2T(u). ¿Qué comprueba este cálculo?

Mostrar la solución paso a paso

Primero, T(u)=(2,−1)T(u)=(2,-1), así que −2T(u)=(−4,2)-2T(u)=(-4,2). Además, −2u=(−2,0)-2u=(-2,0) y

T(−2u)=(21−11)(−20)=(−42).T(-2u)=\begin{pmatrix}2&1\\-1&1\end{pmatrix} \begin{pmatrix}-2\\0\end{pmatrix} =\begin{pmatrix}-4\\2\end{pmatrix}.

Los resultados coinciden. Esto comprueba que se conserva el escalado por un escalar negativo, algo importante porque la linealidad exige que la regla se cumpla para todos los escalares reales.

Pregunta 5

Una capa propuesta es F(x) = Ax + (0, 2). ¿Puede ser lineal F? Usa la prueba del vector cero y explica qué hace el vector añadido.

Mostrar la solución paso a paso

Para una aplicación lineal, T(0)T(0) debe ser cero: al multiplicar cualquier entrada por 00, su salida también debe multiplicarse por 00. Aquí, F(0)=A0+(0,2)=(0,2)≠(0,0)F(0)=A0+(0,2)=(0,2)\ne(0,0). Por tanto, FF no es lineal. El vector añadido desplaza cada salida en (0,2)(0,2) y convierte la regla en una aplicación afín.

Pregunta 6

Un bloque de PyTorch aplica <code>nn.Linear(4, 8)</code> seguido de <code>nn.ReLU()</code>. Indica los espacios de características de entrada y salida y clasifica cada operación.

Mostrar la solución paso a paso

Cada ejemplo de entrada tiene cuatro características, así que es un vector de R4\mathbb{R}^4. La capa lineal produce ocho coordenadas, un elemento de R8\mathbb{R}^8. PyTorch activa el sesgo de forma predeterminada, por lo que nn.Linear(4, 8) suele ser afín y no lineal en sentido matemático. nn.ReLU() conserva la forma de ocho coordenadas, pero aplica t↦max⁡(0,t)t\mapsto\max(0,t) a cada una; es una operación no lineal. Con bias=False, la primera operación sí es una aplicación lineal R4→R8\mathbb{R}^4\to\mathbb{R}^8.

Pregunta 7

Muestra que ReLU no conserva la suma usando las entradas −1 y 1. ¿Su fallo cambia la dimensión de salida?

Mostrar la solución paso a paso

ReLU transforma tt en max⁡(0,t)\max(0,t). Si conservara la suma, aplicarla a la suma de las entradas daría lo mismo que sumar los valores transformados por separado. Sin embargo, ReLU⁡(−1+1)=ReLU⁡(0)=0\operatorname{ReLU}(-1+1)=\operatorname{ReLU}(0)=0, mientras que ReLU⁡(−1)+ReLU⁡(1)=0+1=1\operatorname{ReLU}(-1)+\operatorname{ReLU}(1)=0+1=1. Como los valores difieren, ReLU es no lineal. Aun así, devuelve un número por cada número de entrada, así que la forma de la salida coincide con la de la entrada aunque la regla sea no lineal.

Pregunta 8

¿Toda aplicación lineal es reversible o conserva longitudes? Da un contraejemplo lineal para una de esas afirmaciones.

Mostrar la solución paso a paso

No. La aplicación nula T(x)=0T(x)=0 es lineal porque T(u+v)=0=0+0T(u+v)=0=0+0 y T(cu)=0=cT(u)T(cu)=0=cT(u), pero envía todas las entradas a la misma salida y no se puede invertir. Tampoco se garantiza la conservación de longitudes: S(x1,x2)=(2x1,x2)S(x_1,x_2)=(2x_1,x_2) es lineal, pero S(1,0)=(2,0)S(1,0)=(2,0) tiene longitud 22, no 11. La linealidad describe cómo se comportan las combinaciones, no si se mantienen las longitudes o la información.

Fuentes

  1. Mathematics for Machine Learning book PDF, Section 2.7
  2. PyTorch documentation: torch.nn.Linear
  3. PyTorch documentation: torch.nn.ReLU