Capas de Perceptrón
Desliza para mostrar el menú
Perceptrón como la red neuronal más simple—solo una neurona. Para tareas más complejas, uso de un perceptrón multicapa (MLP), que contiene una o más capas ocultas que permiten a la red aprender patrones más complejos.
Un MLP consta de:
- Capa de entrada — recibe los datos;
- Capas ocultas — extraen patrones;
- Capa de salida — produce predicciones.
Cada capa tiene múltiples neuronas; la salida de una capa se convierte en la entrada de la siguiente.
Pesos y sesgos de la capa
Anteriormente, una neurona almacenaba sus pesos como un vector y el sesgo como un escalar. Sin embargo, una capa contiene muchas neuronas, por lo que sus pesos se convierten en una matriz, donde cada fila almacena los pesos de una neurona. Los sesgos de todas las neuronas forman un vector.
Para una capa con 3 entradas y 2 neuronas:
W=[W11W21W12W22W13W23],b=[b1b2]Aquí, Wij es el peso desde la entrada j hasta la neurona i; bi es el sesgo de la neurona i.
Propagación hacia adelante
La propagación hacia adelante activa cada neurona calculando una suma ponderada, añadiendo el sesgo y aplicando la función de activación.
Anteriormente, una sola neurona utilizaba:
[ z = W \cdot x + b ]
Ahora, dado que cada fila de (W) es el vector de pesos de una neurona, realizar la multiplicación de matrices entre la matriz de pesos y el vector de entrada calcula automáticamente todas las sumas ponderadas de las neuronas a la vez.
Para añadir los sesgos a las salidas de las respectivas neuronas, también se debe sumar un vector de sesgos:
Finalmente, se aplica la función de activación al resultado — sigmoide o ReLU, en este caso. La fórmula resultante para la propagación hacia adelante en la capa es la siguiente:
a=activation(Wx+b)donde a es el vector de activaciones (salidas) de las neuronas.
Clase Layer
Dado que los MLP se construyen a partir de capas, se define una clase dedicada Layer. Sus atributos:
inputs: vector de entrada (elementosn_inputs);outputs: salidas brutas de las neuronas (elementosn_neurons);weights: matriz de pesos;biases: vector de sesgos;activation_function: función de activación utilizada en la capa.
Los pesos y sesgos se inicializan con valores aleatorios de una distribución uniforme en ([-1, 1]). inputs y outputs se inicializan como arreglos de NumPy llenos de ceros para asegurar formas consistentes para la retropropagación posterior.
class Layer:
def __init__(self, n_inputs, n_neurons, activation_function):
self.inputs = np.zeros((n_inputs, 1))
self.outputs = np.zeros((n_neurons, 1))
self.weights = ...
self.biases = ...
self.activation = activation_function
Inicializar inputs y outputs con ceros previene errores de forma y asegura que las capas permanezcan consistentes durante las fases de propagación hacia adelante y hacia atrás.
Método Forward
La propagación hacia adelante para una capa calcula las salidas brutas y aplica la activación:
def forward(self, inputs):
self.inputs = np.array(inputs).reshape(-1, 1)
# Raw outputs: weighted sum + bias
self.outputs = ...
# Apply activation
return ...
Reformar la entrada en un vector columna asegura que se multiplique correctamente con la matriz de pesos y que coincida con las dimensiones esperadas en toda la red.
1. ¿Qué hace que un perceptrón multicapa (MLP) sea más potente que un perceptrón simple?
2. ¿Por qué es necesario aplicar este código antes de multiplicar inputs por la matriz de pesos?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla