Resumen
En este proyecto se estudia el funcionamiento y entrenamiento de un perceptrón, un modelo básico dentro del aprendizaje automático supervisado. Se parte del problema de clasificación binaria y se propone una aproximación continua mediante funciones de activación diferenciables, como la sigmoide. A través de una serie de ejercicios, se exploran aspectos teóricos y prácticos del modelo, incluyendo el cálculo de derivadas, la definición de funciones de pérdida y la implementación del algoritmo de descenso por gradiente.
Se entrena el perceptrón para imitar el comportamiento de puertas lógicas simples (AND, OR) y se analiza su limitación frente al caso XOR. Finalmente, se introduce el perceptrón multicapa como solución a estas limitaciones, extendiendo la capacidad del modelo para representar funciones más complejas.
1. Introducción
El proyecto comienza presentando el problema de clasificación binaria, donde el objetivo es asignar a un objeto una categoría (0 o 1) en función de sus características. Esta forma de clasificar es sencilla, pero no permite estudiar con claridad la influencia de cada característica sobre la decisión, ya que la función de salida es discreta.
Para superar esta limitación, se propone reemplazar la función binaria por una función continua que permita aplicar herramientas del cálculo diferencial y analizar cómo variaciones en las características afectan al resultado de la clasificación.
De forma más formal, el perceptrón busca aproximar una función de clasificación
que asigna el valor \(1\) si el objeto posee las características adecuadas para pertenecer a una categoría de interés y \(0\) en caso contrario.
La aproximación se realiza mediante la composición de:
- Una función de nivel \( u : \mathbb{R}^n \rightarrow \mathbb{R} \), que representa una combinación lineal de las características del objeto.
- Una función de activación \( \phi : \mathbb{R} \rightarrow \mathbb{R} \), que transforma la salida de \(u\) y valora su relevancia. Su resultado se compara después con un umbral de decisión.
El modelo resultante puede escribirse como
y se decide que el objeto pertenece a la categoría de interés si el valor obtenido supera un umbral prefijado \(\tau_0\), es decir, si
2. El perceptrón
La función de nivel empleada en el perceptrón es:
donde se ha considerado \(w = (w_1,\ldots,w_n)^\mathrm{t}\) y \(x = (x_1,\ldots,x_n)^\mathrm{t}\) como vectores columna, y se ha introducido un sesgo \(b \in \mathbb{R}\).
La propuesta histórica más relevante para la función de activación es la sigmoide:
que es diferenciable y cuyos valores cambian suavemente entre 0 y 1 (en \(z = 0\) toma un valor intermedio).
Se usará la función
para aproximar el clasificador \(C(x_1,\ldots,x_n)\). La función \(u\) (y por tanto \(F\)) depende también de los parámetros \(\theta = (b, w_1,\ldots,w_n)\).
Estrictamente hablando,
Finalmente, la función de pérdida a minimizar es
3. Derivadas y gradiente del perceptrón de una capa
3.1 Derivadas parciales de \(u\)
Partiendo de
las derivadas parciales respecto a los parámetros son:
3.2 Derivadas parciales de \(F = \phi \circ u\)
Escribimos
Aplicando la regla de la cadena:
3.3 Derivada de la función sigmoide
Partiendo de \(\phi(z) = \dfrac{1}{1+e^{-z}}\), se calcula:
Es decir,
3.4 Gradiente de la función de pérdida \(L\)
La función de pérdida es:
Aplicando la regla de la cadena:
4. Puertas lógicas AND y OR
Un caso sencillo de clasificación binaria viene dado por las puertas lógicas AND y OR. Se consideran como funciones \(\mathbb{R}^2 \rightarrow \mathbb{R}\) con cuatro datos:
Puerta AND:
Puerta OR:
El objetivo es obtener funciones \(F = \phi \circ u\) que aproximen el comportamiento de estas puertas utilizando descenso por gradiente sobre la función de pérdida \(L\).
4.1 Valores de \(F(x^{(k)})\)
Para los cuatro puntos \(x^{(1)}=(0,0)\), \(x^{(2)}=(0,1)\), \(x^{(3)}=(1,0)\), \(x^{(4)}=(1,1)\), se tiene:
4.2 Función de pérdida para AND
Para la puerta AND, con \(y_1 = y_2 = y_3 = 0\) y \(y_4 = 1\), la pérdida es:
4.3 Función de pérdida para OR
Para la puerta OR, con \(y_1 = 0\), \(y_2 = y_3 = y_4 = 1\), se obtiene:
4.4 Gradiente completamente desarrollado para AND y OR
Aprovechando los cálculos anteriores y las derivadas de \(L\) en función de los parámetros, se desarrollan explícitamente las expresiones.
Tabla AND:
En la derivada respecto a \(w_1\), se multiplica cada sumando por \(x_1^{(k)}\), que es 0 para \(k=1,2\):
En la derivada respecto a \(w_2\), se multiplica cada sumando por \(x_2^{(k)}\), que es 0 para \(k=1,3\):
Tabla OR:
En la derivada respecto a \(w_1\), se multiplica cada sumando por \(x_1^{(k)}\), que es 0 para \(k=1,2\):
En la derivada respecto a \(w_2\), se multiplica cada sumando por \(x_2^{(k)}\), que es 0 para \(k=1,3\):
(Al desarrollar \(\phi'\), las expresiones quedan en función de \(\phi\) y \(1-\phi\)).
4.5 Curva de nivel \(u(x)=\tfrac{1}{2}\)
La curva en \(\mathbb{R}^2\) de puntos que cumplen \(w_1x_1 + w_2x_2 + b = \tfrac{1}{2}\) se obtiene despejando:
Con los parámetros ajustados para AND y OR se comprueba gráficamente que esta recta separa correctamente los cuatro puntos del plano de acuerdo con el comportamiento de cada puerta.
5. Limitación del perceptrón para XOR
Se intenta ahora entrenar \(F\) para que clasifique los puntos según la puerta lógica XOR:
Estos datos no son linealmente separables. El perceptrón de una sola capa sólo puede generar fronteras de decisión lineales (rectas en \(\mathbb{R}^2\)), por lo que no existe ninguna combinación de parámetros \((b,w_1,w_2)\) que haga que el error sea prácticamente cero para los cuatro puntos simultáneamente.
Aunque el entrenamiento se lleve a cabo correctamente, la arquitectura por sí sola no tiene capacidad para representar el patrón XOR. Las visualizaciones muestran que puntos de la misma clase quedan en lados opuestos de la frontera de decisión. Este hecho motiva la introducción de redes con más capas: el perceptrón multicapa.
6. Perceptrón multicapa
El perceptrón de una única capa sólo puede hacer clasificaciones mediante rectas. La clasificación de XOR, o la separación de puntos dentro/fuera de una circunferencia, no es posible así. Esta limitación se puede solventar añadiendo capas al perceptrón. Con suficientes capas, un perceptrón con función de activación sigmoide puede aproximar cualquier función continua (aproximador universal).
Se trabaja con una capa adicional. Una forma de interpretarla es usar \(n\) perceptrones de una sola capa, de manera que las características originales \(x = (x_1,\dots,x_n)\) se transforman en nuevas características \(\tilde{x} = (\tilde{x}_1,\dots,\tilde{x}_n)\), a las cuales se les aplica después un único perceptrón para obtener un valor escalar de salida.
El primer bloque es la transformación lineal:
donde \(W = (w_{ij})_{i,j=1}^n \in \mathbb{R}^{n\times n}\) y \(b = (b_1,\dots,b_n)^\mathrm{t} \in \mathbb{R}^n\). El resultado es un vector
A continuación se aplica la activación componente a componente:
Sobre este vector \(z\) se aplica un perceptrón de salida:
En resumen, el perceptrón de dos capas se escribe como:
6.1 Jacobiano de \(\Phi\)
Interpretamos \(\Phi\) como una función vectorial \(\vec{\Phi}:\mathbb{R}^n\to\mathbb{R}^n\) dada por \(\vec{\Phi}(z) = (\phi_1(z),\dots,\phi_n(z))\), donde
El jacobiano es:
ya que cada \(\phi_i\) sólo depende de su coordenada \(z_i\).
7. Derivadas en el perceptrón multicapa
7.1 Derivadas parciales en la capa de salida
Para distinguir los parámetros de cada capa se emplean superíndices: \(b^{[2]}\) y \(w^{[2]} = (w^{[2]}_1,\dots,w^{[2]}_n)\) en la capa de salida, y \(b^{[1]}_i\), \(w^{[1]}_{ij}\) para la capa oculta. Si \(z = \Phi(U(x))\), entonces
Las derivadas en la capa de salida son:
7.2 Derivadas parciales en la capa oculta
Recordamos las definiciones:
Aplicando la regla de la cadena:
Calculando cada factor por separado:
7.3 Desarrollo completo de las expresiones
Por último, desarrollando completamente las expresiones se obtiene:
8. Número de parámetros y diagrama de la red
En el caso del estudio de las puertas lógicas de dos entradas y una salida, se considera una red con dos neuronas ocultas. La salida puede escribirse como:
donde \(z_1, z_2\) son las activaciones lineales de las dos neuronas de la capa oculta.
Contando parámetros:
En total, la red tiene 9 parámetros.
9. Aproximación de XOR con un perceptrón de dos capas
Se entrena una red de dos capas (una oculta y una de salida) para aproximar la puerta XOR. La arquitectura considerada tiene:
- 2 neuronas de entrada,
- 2 neuronas en la capa oculta,
- 1 neurona de salida con activación sigmoide.
Tras el entrenamiento mediante descenso por gradiente, se obtienen valores de salida muy cercanos a los esperados:
La superficie \(F(x_1,x_2)\) en el cuadrado \([0,1]\times[0,1]\) muestra picos en \((0,1)\) y \((1,0)\) y valles en \((0,0)\) y \((1,1)\), reproduciendo el comportamiento de la puerta XOR.
Con esto se completa el desarrollo: se ha pasado del perceptrón simple y su entrenamiento sobre problemas linealmente separables (AND, OR) a un perceptrón multicapa capaz de resolver problemas no linealmente separables como XOR.
Nota: en esta sección se ha incluido todo el desarrollo teórico del documento original (texto y fórmulas), omitiendo únicamente los bloques de código Matlab.