Redes neuronales de capa única
Las redes neuronales de capa única son redes artificiales compuestas por una capa de neuronas que procesan la entrada y generan una salida. Se consideran una forma básica de red neuronal, con una sola capa de nodos (o neuronas) que conecta directamente la entrada con la salida, sin capas ocultas. Este tipo de red se conoce también como perceptrón de una capa y es adecuado para problemas de clasificación lineal.
Estructura de una red neuronal de capa única
En una red neuronal de capa única:
- Entradas: Cada nodo de entrada se asocia con una característica del conjunto de datos. Si tenemos ( n ) características, entonces tendremos ( n ) nodos de entrada.
- Pesos y Sesgo: Cada entrada está asociada con un peso, que ajusta la importancia de esa característica, y un sesgo que permite desplazar la función de activación.
- Función de Activación: La suma ponderada de las entradas (entradas multiplicadas por sus respectivos pesos) pasa por una función de activación, como la función escalón o sigmoide, que decide la salida final de la red.
La salida de una neurona en una red de capa única se calcula como: [ y = f\left(\sum_{i=1}^n w_i x_i + b\right) ] donde:
- ( w_i ): peso asociado a cada entrada ( x_i ),
- ( b ): sesgo,
- ( f ): función de activación (escalón, sigmoide, etc.).
Funcionamiento
El entrenamiento en una red de capa única consiste en ajustar los pesos y el sesgo para minimizar el error en la predicción. Esto se realiza mediante el algoritmo de aprendizaje del perceptrón o usando un algoritmo de optimización como el descenso de gradiente en modelos de activación continua.
Ejemplo en Python usando un perceptrón de capa única
En este ejemplo, construimos un perceptrón básico usando scikit-learn
para un problema de clasificación binaria, donde tratamos de clasificar puntos en dos categorías basándonos en dos características.
import numpy as np
from sklearn.linear_model import Perceptron
from sklearn.datasets import make_blobs
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
# Generar datos de prueba (clasificación binaria)
X, y = make_blobs(n_samples=100, centers=2, random_state=42)
# Dividir datos en conjunto de entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Crear y entrenar el perceptrón
perceptron = Perceptron(max_iter=1000, tol=1e-3)
perceptron.fit(X_train, y_train)
# Evaluar el modelo
accuracy = perceptron.score(X_test, y_test)
print(f"Precisión en el conjunto de prueba: {accuracy:.2f}")
# Graficar resultados
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='coolwarm', edgecolors='k')
xlim = plt.gca().get_xlim()
ylim = plt.gca().get_ylim()
xx, yy = np.meshgrid(np.linspace(xlim[0], xlim[1], 100), np.linspace(ylim[0], ylim[1], 100))
Z = perceptron.decision_function(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)
plt.contourf(xx, yy, Z > 0, cmap='coolwarm', alpha=0.2)
plt.title('Clasificación con Perceptrón de Capa Única')
plt.xlabel('Característica 1')
plt.ylabel('Característica 2')
plt.show()
Interpretación del Ejemplo
- Generación de datos: Se crean datos que pertenecen a dos categorías distintas, lo que facilita su clasificación.
- Entrenamiento: El perceptrón ajusta los pesos para clasificar correctamente las muestras.
- Predicción y visualización: La frontera de decisión, graficada como una línea en el gráfico, separa las dos clases en función de sus características.
Limitaciones de las Redes de Capa Única
Las redes neuronales de capa única son muy limitadas, ya que solo pueden resolver problemas linealmente separables. Esto significa que si las clases no se pueden dividir mediante una línea recta en el espacio de características, el perceptrón de capa única no logrará una clasificación correcta.
Para problemas más complejos que requieren límites de decisión no lineales, es necesario recurrir a redes de múltiples capas o perceptrones multicapa (MLP), que incluyen capas ocultas y funciones de activación no lineales.