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

Dominio y codominio: el contrato de entrada que necesita toda función de IA

Aprende cómo los dominios y codominios especifican las entradas válidas de un modelo y los tipos de salida prometidos, y diagnostica fallos de forma, rango y operaciones indefinidas.

Comparte este artículo

La lección 2 describió una función como una regla que asigna una salida a cada entrada permitida. La palabra permitida tiene más peso del que parece a primera vista.

Un clasificador de texto no puede recibir de forma segura un bloque arbitrario de bytes cuando espera identificadores de tokens. Una multiplicación de matrices no puede aceptar formas incompatibles. Un logaritmo no puede producir un valor real para una entrada negativa. La regla es solo una parte del contrato de una función; el conjunto de entradas válidas y el conjunto de salidas prometidas son las otras partes.

Al terminar esta lección, podrás escribir una función con su dominio y codominio, distinguir un codominio de los valores que realmente alcanza y explicar los fallos habituales de entrada en IA como infracciones de un contrato matemático.

La flecha lleva información de tipo

Una declaración compacta de función tiene este aspecto:

f:AB.f:A\to B.

Se lee «ff asigna elementos de AA a elementos de BB».

  • AA es el dominio, el conjunto de entradas permitidas.
  • BB es el codominio, el conjunto en el que se promete que vive cada salida.
  • La regla indica qué elemento de BB se asigna a cada elemento de AA.

La notación xAx\in A significa «xx es un elemento de AA». Permite escribir juntos el contrato y la evaluación:

xAf(x)B.x\in A \quad\Longrightarrow\quad f(x)\in B.
Una función promete una correspondencia entre un conjunto de entradas permitidas y un conjunto de salidas. No promete que todas las salidas lleguen a producirse.
Mapa de dominio, función y codominioTres entradas numéricas válidas pasan por una función de puntuación de riesgo y producen salidas entre cero y uno. Una entrada de texto queda fuera del dominio y se rechaza antes de evaluarla.Dominio0.10.50.9riskScoref(x)Codominio [0, 1]0.180.500.82“high” está fuera del dominio
Alternativa textual del diagrama de correspondencia
Entrada¿Válida?Salida
0.10.18
0.50.50
0.90.82
“high”No—tipo de entrada incorrectoNo evaluada

La entrada de texto “high” del diagrama no es una predicción numérica fallida. No es una entrada permitida para esta función numérica, así que la evaluación no debería comenzar.

Un codominio es una promesa, no una lista de salidas observadas

Considera la función de elevar al cuadrado sobre los números reales:

q:RR,q(x)=x2.q:\mathbb{R}\to\mathbb{R}, \qquad q(x)=x^2.

Aquí R\mathbb{R} representa el conjunto de los números reales. Se puede elevar al cuadrado toda entrada real y todo resultado también es real, por lo que la declaración es válida.

Pero q(x)q(x) nunca es negativo. El conjunto de valores que la función alcanza realmente es

[0,)={yR:y0}.[0,\infty)=\{y\in\mathbb{R}:y\ge 0\}.

Ese conjunto alcanzado se llama imagen o rango. Puede ser menor que el codominio declarado.

ConceptoPara q:RRq:\mathbb{R}\to\mathbb{R}, q(x)=x2q(x)=x^2
DominioTodos los números reales
CodominioTodos los números reales
ImagenLos números reales no negativos

Cambiar el dominio puede reparar una regla indefinida

La expresión

r(x)=1xr(x)=\frac{1}{x}

no define una salida real en x=0x=0. Podemos declarar la función válida excluyendo el cero:

r:R{0}R,r(x)=1x.r:\mathbb{R}\setminus\{0\}\to\mathbb{R}, \qquad r(x)=\frac{1}{x}.

El símbolo \setminus significa diferencia de conjuntos. El dominio es «los números reales sin el cero». Del mismo modo,

(x)=logx\ell(x)=\log x

tiene un dominio de valores reales restringido a entradas positivas:

:(0,)R.\ell:(0,\infty)\to\mathbb{R}.

No son adornos quisquillosos. Indican a una implementación qué debe comprobar antes de evaluar.

Los dominios de IA incluyen forma y estructura

Hasta ahora, los dominios han parecido intervalos de números. Las entradas de los modelos suelen ser vectores o matrices. Sus formas pertenecen al contrato.

Sea

f:R3R2.f:\mathbb{R}^3\to\mathbb{R}^2.

La notación R3\mathbb{R}^3 significa una lista ordenada de tres coordenadas reales, y R2\mathbb{R}^2 una lista ordenada de dos coordenadas reales. Una entrada válida es

x=[0.21.03.4].x=\begin{bmatrix}0.2\\-1.0\\3.4\end{bmatrix}.

Un vector de dos coordenadas está fuera del dominio declarado. Sus elementos pueden ser reales, pero el objeto tiene una forma incorrecta.

Esta es la versión matemática de un error de tensor conocido:

def project_three_features(x):
    if x.shape != (3,):
        raise ValueError("expected exactly three features")
    return [x[0] + x[1], x[2] - x[1]]

La comprobación protege el dominio. La función devuelve dos números, de acuerdo con la forma de su codominio.

En los modelos basados en tokens, un dominio completo puede ser aún más estricto. Las entradas pueden necesitar:

  • identificadores de tokens enteros en lugar de valores reales arbitrarios;
  • identificadores dentro de un rango fijo de vocabulario;
  • una longitud máxima de secuencia;
  • formas de lote y de máscara de atención compatibles; y
  • la codificación de imagen, audio o texto que espera ese modelo concreto.

Decir «el modelo acepta un tensor» oculta estas restricciones. Las buenas interfaces matemáticas y de software las hacen visibles.

Las promesas de salida limitan el código posterior

Supón que un clasificador se declara como

c:Rd[0,1]K.c:\mathbb{R}^{d}\to[0,1]^K.

Acepta dd características reales y devuelve KK números, cada uno entre cero y uno. Ese codominio por sí solo no garantiza que los KK números sumen uno. Si la salida prevista es una distribución de probabilidad sobre KK clases mutuamente excluyentes, el codominio necesita una condición adicional:

ΔK1={p[0,1]K:k=1Kpk=1}.\Delta^{K-1} = \left\{ p\in[0,1]^K: \sum_{k=1}^{K}p_k=1 \right\}.

Este conjunto se llama simplex de probabilidad. Lo estudiaremos más adelante. Por ahora, observa cómo un codominio más rico comunica una promesa más fuerte al código posterior.

Una lista de comprobación para leer funciones de modelos

Cuando encuentres una nueva correspondencia matemática, hazte cuatro preguntas:

  1. ¿Qué objetos pertenecen al dominio?
  2. ¿Qué objetos están explícitamente excluidos o indefinidos?
  3. ¿Qué conjunto de salidas promete el codominio?
  4. ¿La regla alcanza realmente todo el codominio o solo una imagen más pequeña?

Estas preguntas convierten muchos errores vagos de «forma incompatible», «probabilidad no válida» y «pérdida indefinida» en infracciones precisas del contrato. La próxima lección usará conjuntos para describir colecciones de datos y eventos de forma más sistemática.

Comprueba lo que has entendido

Pregunta 1

Para q(x) = x² declarado como q: R → R, identifica el dominio, el codominio y la imagen.

Mostrar la solución paso a paso

La declaración indica que el dominio es R\mathbb{R} y el codominio también es R\mathbb{R}. Elevar al cuadrado cualquier entrada real está definido y devuelve un número real.

Como x20x^2\ge 0 para todo xx real, los valores alcanzados son exactamente los reales no negativos:

image(q)=[0,).\operatorname{image}(q)=[0,\infty).

Por tanto, la imagen es un subconjunto propio del codominio.

Pregunta 2

¿Por qué 0 está fuera del dominio de valores reales de r(x) = 1/x?

Mostrar la solución paso a paso

Sustituir cero pide calcular

r(0)=10.r(0)=\frac{1}{0}.

No existe un número real yy que satisfaga 0y=10\cdot y=1, por lo que la división no tiene un valor real. Una declaración correcta excluye el cero:

r:R{0}R.r:\mathbb{R}\setminus\{0\}\to\mathbb{R}.

Pregunta 3

Una función espera un elemento de R³. ¿Es válido [1, 2] si ambas entradas son reales? Explica.

Mostrar la solución paso a paso

Pertenecer a R3\mathbb{R}^3 exige exactamente tres coordenadas reales ordenadas. El vector [1,2][1,2] pertenece a R2\mathbb{R}^2, no a R3\mathbb{R}^3.

El tipo de valor individual es correcto, pero la forma no lo es. Tanto el tipo de valor como la forma forman parte del contrato del dominio.

Pregunta 4

Un clasificador devuelve [0.6, 0.6]. Cada entrada está en [0, 1]. ¿Por qué esto aún podría infringir su codominio?

Mostrar la solución paso a paso

Si el clasificador solo promete [0,1]2[0,1]^2, el vector satisface ese contrato débil. Pero si promete una distribución de probabilidad sobre dos clases mutuamente excluyentes, los valores también deben sumar uno.

Aquí, 0.6+0.6=1.210.6+0.6=1.2\ne1, así que el vector no pertenece al simplex de probabilidad. Que infrinja el codominio depende del conjunto de salida que se haya declarado realmente.

Pregunta 5

Una implementación sustituye log(p) por log(max(p, 0.000001)). ¿Calcula exactamente la misma función para todo p real?

Mostrar la solución paso a paso

No. Para p0.000001p\ge0.000001, ambas expresiones coinciden. Para valores positivos de pp más pequeños, la implementación recortada devuelve la constante log(0.000001)\log(0.000001) en lugar de logp\log p. Para pp cero o negativo, también produce un valor finito allí donde el logaritmo real original está indefinido.

El recorte puede ser una protección numérica deliberada, pero cambia la función fuera de la región de coincidencia. Una explicación precisa debe indicar esa convención y su motivo.

Fuentes

  1. Mathematics for Machine Learning companion website
  2. Mathematics for Machine Learning book PDF