Perceptrón
El perceptrón es una unidad básica en redes neuronales artificiales, inspirado en las neuronas biológicas. Fue desarrollado por Frank Rosenblatt en 1957 y se utiliza principalmente en problemas de clasificación binaria. El perceptrón toma un conjunto de entradas, las multiplica por pesos asociados, aplica una función de activación, y genera una salida de clasificación basada en si la combinación ponderada de sus entradas supera un umbral.
Estructura y funcionamiento del perceptrón
- Entradas y Pesos: El perceptrón recibe múltiples entradas ((x_1, x_2, \dots, x_n)) y asigna un peso ((w_1, w_2, \dots, w_n)) a cada entrada. Estos pesos determinan la importancia de cada entrada.
- Función de Suma: Las entradas se multiplican por sus respectivos pesos y luego se suman. Esta suma ponderada es el valor que determina la salida del perceptrón: [ \text{suma_ponderada} = w_1 \cdot x_1 + w_2 \cdot x_2 + \dots + w_n \cdot x_n + b ] donde (b) es el sesgo, un término que permite desplazar la función de activación.
- Función de Activación: En el caso básico del perceptrón, se utiliza una función de activación escalón, que convierte la suma ponderada en una salida binaria (0 o 1). [ \text{salida} = \begin{cases} 1 & \text{si } \text{suma_ponderada} > \text{umbral} \ 0 & \text{si } \text{suma_ponderada} \leq \text{umbral} \end{cases} ]
- Actualización de Pesos: Durante el entrenamiento, los pesos se ajustan para minimizar el error de clasificación. Cada vez que el perceptrón clasifica incorrectamente, se ajustan los pesos de acuerdo con la diferencia entre la salida predicha y la salida real.
Ejemplo de un perceptrón para clasificación
Consideremos un ejemplo básico para resolver un problema de clasificación binaria: determinar si una fruta es “manzana” o “no manzana” en función de sus características como “peso” y “color”.
- Entradas y pesos iniciales:
- (x_1): Peso de la fruta (en gramos).
- (x_2): Color (valor numérico, por ejemplo, 1 para “rojo” y 0 para otros colores).
- Pesos iniciales: (w_1 = 0.5) y (w_2 = 0.5).
- Sesgo: (b = -0.7).
- Función de activación: Usamos una función de activación escalón que clasifica como 1 (manzana) si la suma ponderada supera el umbral y 0 (no manzana) si no lo hace.
import numpy as np
# Datos de prueba
peso = np.array([120, 140, 180]) # pesos en gramos
color = np.array([1, 0, 1]) # 1 para rojo, 0 para otros colores
etiqueta_real = np.array([1, 0, 1]) # 1: manzana, 0: no manzana
# Inicialización de pesos y sesgo
w1, w2 = 0.5, 0.5
b = -0.7
# Función de activación escalón
def escalon(suma):
return 1 if suma > 0 else 0
# Salidas del perceptrón
for i in range(len(peso)):
suma_ponderada = w1 * peso[i] + w2 * color[i] + b
salida = escalon(suma_ponderada)
print(f"Entrada ({peso[i]}, {color[i]}): Predicción = {salida}, Real = {etiqueta_real[i]}")
Interpretación de los resultados
El perceptrón compara la salida predicha con la real (en este caso, si la fruta es “manzana” o “no manzana”). Si hay un error en la clasificación, se puede ajustar cada peso aplicando una regla de aprendizaje que ajuste los pesos, minimizando el error en cada iteración.
Limitaciones del perceptrón
El perceptrón simple solo funciona para problemas de clasificación linealmente separables. Si los datos no son linealmente separables, como en el problema XOR (exclusivo OR), el perceptrón no puede encontrar una solución adecuada, limitando su aplicación en problemas complejos. Para resolver problemas no lineales, se pueden usar perceptrones multicapa (redes neuronales profundas) que combinan múltiples neuronas en capas interconectadas, capaces de aprender representaciones complejas.
Este ejemplo simple, sin embargo, ilustra cómo el perceptrón básico aplica el aprendizaje supervisado para clasificar entradas basándose en patrones lineales.