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

Las funciones son máquinas reutilizables para los cálculos de IA

Pasa de las variables a las funciones: evalúa correspondencias entre entrada, regla y salida, combina cálculos sencillos y descubre por qué un modelo puede procesar muchos ejemplos.

Comparte este artículo

En la lección 1, las variables daban nombre a las entradas, los parámetros y las salidas. Una función empaqueta la relación entre esas variables en una regla reutilizable.

Esta estructura ya basta para describir el acto central de la inferencia. Un modelo recibe una entrada, aplica una regla determinada por sus parámetros y devuelve una salida. Al terminar esta lección, podrás evaluar una función, separar la regla de un cálculo concreto y traducir esa misma relación a Python.

Una regla, muchas evaluaciones

Considera la función

f(x)=2x+1.f(x)=2x+1.

La notación f(x)f(x) se lee «ff de xx». Nombra la salida producida cuando la función ff recibe el valor de entrada xx.

Para x=3x=3:

f(3)=2(3)+1=6+1=7.\begin{aligned} f(3) &= 2(3)+1 \\ &= 6+1 \\ &= 7. \end{aligned}

Para x=2x=-2:

f(2)=2(2)+1=4+1=3.\begin{aligned} f(-2) &= 2(-2)+1 \\ &= -4+1 \\ &= -3. \end{aligned}

Estas son dos evaluaciones de una misma función. La regla 2x+12x+1 no cambió.

Una función es una regla, no una sola respuesta. Cambia la entrada o selecciona una regla y sigue el mismo recorrido de tres etapas.
Entrada2
Reglaf(x) = 2x
Salida4

En este estado, f((2)) = 2x da 4. Volver a introducir 2 con la misma regla siempre produce la misma salida.

La imagen de la máquina resulta útil siempre que recordemos qué deja fuera. Una función matemática no tiene por qué implementarse mediante pasos físicos dentro de una caja. La promesa clave es la correspondencia: entra una entrada permitida y sale una única salida determinada.

Un modelo es una función con parámetros

La regla de puntuación pequeña de la lección 1 era

s=wx+b.s=wx+b.

Podemos darle nombre como función:

f(x;w,b)=wx+b.f(x;w,b)=wx+b.

El punto y coma es una convención útil. Separa la entrada ordinaria xx de los parámetros ww y bb. No crea un nuevo tipo de aritmética.

Cuando termina el entrenamiento, supón que los parámetros almacenados son w=1.5w=1.5 y b=1b=-1. El modelo desplegado es entonces la función

f(x)=1.5x1.f(x)=1.5x-1.

Puede procesar muchas entradas:

f(1)=0.5,f(3)=3.5,f(2)=4.f(1)=0.5, \qquad f(3)=3.5, \qquad f(-2)=-4.

El entrenamiento elige los valores de los parámetros que definen la regla desplegada. La inferencia evalúa esa regla para entradas nuevas.

La notación de funciones mantiene legible una canalización

Supón que una aplicación convierte primero una medición sin procesar xx en un valor normalizado y después convierte ese valor en una puntuación.

Sea

n(x)=x105n(x)=\frac{x-10}{5}

la función de normalización, y sea

g(z)=2z+1g(z)=2z+1

la función de puntuación. Para x=20x=20, evalúa la canalización desde dentro hacia fuera:

n(20)=20105=2,g(n(20))=g(2)=2(2)+1=5.\begin{aligned} n(20) &= \frac{20-10}{5}=2, \\ g(n(20)) &= g(2)=2(2)+1=5. \end{aligned}

La notación combinada

(gn)(x)=g(n(x))(g\circ n)(x)=g(n(x))

se llama composición. La salida de nn se convierte en la entrada de gg.

Este patrón aparece en todos los sistemas de IA. El preprocesamiento produce características; las capas del modelo transforman representaciones; una función final convierte las puntuaciones en probabilidades o decisiones. Las lecciones posteriores mostrarán que la regla de la cadena utilizada en la retropropagación sigue el mismo recorrido de dependencias en sentido inverso.

La misma regla en Python

La sintaxis de funciones de Python hace visible la estructura entrada-regla-salida. El tutorial de Python describe def como la forma de introducir una definición de función.

def normalize(x):
    return (x - 10) / 5


def score(z):
    return 2 * z + 1


def model(x):
    normalized = normalize(x)
    return score(normalized)


print(model(20))  # 5.0
print(model(5))   # -1.0

El nombre local normalized registra la salida intermedia. La función model compone las dos reglas sin duplicar ninguna.

La notación matemática y la sintaxis de Python difieren:

IdeaMatemáticasPython
Definir una reglaf(x)=2x+1f(x)=2x+1def f(x): return 2*x + 1
Evaluarlaf(3)f(3)f(3)
Componer reglasg(f(x))g(f(x))g(f(x))
Nombrar un resultado intermedioz=f(x)z=f(x)z = f(x)

La correspondencia resulta útil, pero no es perfecta. Las funciones de Python pueden leer archivos, modificar estados externos, usar aleatoriedad o devolver resultados diferentes en momentos distintos. Una función matemática, por definición, asigna una salida a cada entrada. Cuando un texto de ML llama función a un procedimiento estocástico, el estado aleatorio debe considerarse parte de la entrada completa o de la descripción del modelo.

Casos límite: no toda regla define una salida válida en todas partes

Considera

h(x)=1x.h(x)=\frac{1}{x}.

La expresión no puede producir una salida real cuando x=0x=0 porque la división por cero no está definida. Por tanto, decir solamente que «hh toma un número real» es demasiado impreciso. Sus entradas reales permitidas excluyen el cero.

Esto importa en el código de IA. Una función de normalización que divide por la desviación estándar de una característica necesita un plan para la varianza cero. Un logaritmo utilizado en una pérdida necesita una entrada positiva. Una función tensorial espera una forma compatible. Las funciones tienen condiciones de validez; la lección 3 dará nombres precisos a esas condiciones.

Comprueba lo que has entendido

Pregunta 1

Evalúa f(x) = 3x - 2 en x = 4 y en x = -1.

Mostrar la solución paso a paso

Para x=4x=4, sustituye 44 donde aparezca xx:

f(4)=3(4)2=122=10.f(4)=3(4)-2=12-2=10.

Para x=1x=-1:

f(1)=3(1)2=32=5.f(-1)=3(-1)-2=-3-2=-5.

La regla de la función permaneció fija. Solo cambió el valor de entrada.

Pregunta 2

Una regla envía la entrada 2 a la salida 5 en una evaluación y a la salida 7 en otra, sin nombrar ninguna otra entrada o estado. ¿Es una función matemática de esa entrada por sí sola?

Mostrar la solución paso a paso

No. Una función debe asignar exactamente una salida a cada entrada permitida. La misma entrada 22 no puede corresponder tanto a 55 como a 77 bajo una función que no haya cambiado.

El procedimiento podría depender de una entrada omitida, como un estado aleatorio o el tiempo. Si se incluye ese estado, podría definirse una función mayor; por ejemplo, f(2,r)f(2,r), donde rr es una semilla aleatoria. Pero no es una función únicamente de la entrada indicada.

Pregunta 3

Sea n(x) = (x - 4) / 2 y g(z) = z². Calcula g(n(10)) paso a paso.

Mostrar la solución paso a paso

Evalúa primero la función interna:

n(10)=1042=62=3.n(10)=\frac{10-4}{2}=\frac{6}{2}=3.

Usa esa salida como entrada de gg:

g(n(10))=g(3)=32=9.g(n(10))=g(3)=3^2=9.

Por tanto, la función compuesta asigna 1010 a 99.

Pregunta 4

En f(x; w, b) = wx + b, ¿qué cambia durante la inferencia normal y qué cambió durante el entrenamiento?

Mostrar la solución paso a paso

Durante la inferencia normal, el modelo recibe distintos valores de xx, mientras que los parámetros almacenados ww y bb normalmente permanecen fijos. El entrenamiento es el proceso que cambió ww y bb para ajustarse a los datos.

Ambas fases evalúan funciones, pero los roles de sus variables son distintos:

inferencia: variar x,entrenamiento: actualizar w,b.\text{inferencia: variar }x, \qquad \text{entrenamiento: actualizar }w,b.

Pregunta 5

¿Por qué una implementación de h(x) = 1/x debe ocuparse de x = 0 antes de evaluar?

Mostrar la solución paso a paso

Para x=0x=0, la regla solicita 1/01/0, que no tiene un valor real. La entrada está fuera del dominio real válido de la regla.

Una implementación debe rechazar la entrada, elegir un valor alternativo definido por separado o reformular la operación. Añadir silenciosamente un número pequeño cambia la función que se calcula y debe documentarse como una convención numérica, no presentarse como una igualdad exacta.

Fuentes

  1. Mathematics for Machine Learning companion website
  2. Mathematics for Machine Learning book PDF
  3. Python documentation: defining functions