Introducción
En este tema, exploraremos los conceptos fundamentales del perceptrón y el perceptrón multicapa (MLP, por sus siglas en inglés). Estos son los bloques de construcción básicos de las redes neuronales y son esenciales para entender cómo funcionan las redes neuronales profundas.
Perceptrón
¿Qué es un Perceptrón?
Un perceptrón es el modelo más simple de una red neuronal. Fue introducido por Frank Rosenblatt en 1958 y es una unidad de procesamiento que toma una o más entradas, las combina linealmente y pasa el resultado a través de una función de activación para producir una salida.
Estructura del Perceptrón
Un perceptrón consta de:
- Entradas (x1, x2, ..., xn): Los datos de entrada.
- Pesos (w1, w2, ..., wn): Coeficientes que ponderan la importancia de cada entrada.
- Bias (b): Un término adicional que permite ajustar la salida independientemente de las entradas.
- Función de activación (φ): Una función que introduce no linealidad en el modelo.
Fórmula del Perceptrón
La salida del perceptrón se calcula de la siguiente manera:
\[ y = \phi \left( \sum_{i=1}^{n} w_i x_i + b \right) \]
Donde:
- \( y \) es la salida.
- \( \phi \) es la función de activación (comúnmente una función escalón o sigmoide).
Ejemplo de Perceptrón
Supongamos que tenemos un perceptrón con dos entradas \( x1 \) y \( x2 \), pesos \( w1 = 0.5 \) y \( w2 = -0.6 \), y un bias \( b = 0.1 \). La función de activación es una función escalón que devuelve 1 si la entrada es mayor o igual a 0, y 0 en caso contrario.
\[ y = \phi (0.5 \cdot x1 - 0.6 \cdot x2 + 0.1) \]
Si \( x1 = 1 \) y \( x2 = 2 \):
\[ y = \phi (0.5 \cdot 1 - 0.6 \cdot 2 + 0.1) \] \[ y = \phi (0.5 - 1.2 + 0.1) \] \[ y = \phi (-0.6) \] \[ y = 0 \]
Ejercicio Práctico
Ejercicio 1: Implementa un perceptrón en Python que tome dos entradas y calcule la salida usando una función escalón.
def perceptron(x1, x2, w1, w2, b): # Función de activación escalón def step_function(x): return 1 if x >= 0 else 0 # Cálculo de la salida del perceptrón output = step_function(w1 * x1 + w2 * x2 + b) return output # Prueba del perceptrón x1, x2 = 1, 2 w1, w2 = 0.5, -0.6 b = 0.1 print(perceptron(x1, x2, w1, w2, b)) # Salida esperada: 0
Solución:
El código anterior define una función perceptron
que calcula la salida de un perceptrón dado dos entradas, sus pesos y el bias. La función de activación utilizada es una función escalón.
Perceptrón Multicapa (MLP)
¿Qué es un Perceptrón Multicapa?
Un perceptrón multicapa (MLP) es una red neuronal que consiste en múltiples capas de perceptrones. Cada capa está compuesta por varias unidades de perceptrón, y las capas están conectadas de manera que la salida de una capa se convierte en la entrada de la siguiente.
Estructura del MLP
Un MLP típicamente consta de:
- Capa de entrada: Recibe los datos de entrada.
- Capas ocultas: Una o más capas que procesan las entradas de manera no lineal.
- Capa de salida: Produce la salida final de la red.
Propagación hacia Adelante en MLP
La propagación hacia adelante en un MLP implica calcular las salidas de cada capa secuencialmente desde la capa de entrada hasta la capa de salida.
Ejemplo de MLP
Consideremos un MLP con una capa oculta que tiene dos neuronas y una capa de salida con una neurona. Los pesos y bias se definen para cada conexión entre las capas.
Ejercicio Práctico
Ejercicio 2: Implementa un MLP en Python con una capa oculta que tenga dos neuronas y una capa de salida con una neurona. Usa la función sigmoide como función de activación.
import numpy as np def sigmoid(x): return 1 / (1 + np.exp(-x)) def mlp(x, weights, biases): # Capa oculta hidden_layer_input = np.dot(weights['hidden'], x) + biases['hidden'] hidden_layer_output = sigmoid(hidden_layer_input) # Capa de salida output_layer_input = np.dot(weights['output'], hidden_layer_output) + biases['output'] output = sigmoid(output_layer_input) return output # Definición de pesos y bias weights = { 'hidden': np.array([[0.5, -0.6], [0.8, -0.1]]), 'output': np.array([0.2, -0.3]) } biases = { 'hidden': np.array([0.1, 0.2]), 'output': np.array([0.3]) } # Prueba del MLP x = np.array([1, 2]) print(mlp(x, weights, biases)) # Salida esperada: un valor entre 0 y 1
Solución:
El código anterior define una función mlp
que calcula la salida de un MLP dado un vector de entrada, pesos y bias. La función de activación utilizada es la función sigmoide.
Conclusión
En esta sección, hemos cubierto los conceptos básicos del perceptrón y el perceptrón multicapa. Hemos aprendido cómo funcionan estos modelos, cómo se estructuran y cómo se implementan en Python. Estos conceptos son fundamentales para entender redes neuronales más complejas y avanzadas que exploraremos en los siguientes módulos.
Resumen
- Perceptrón: Unidad básica de una red neuronal que combina entradas linealmente y aplica una función de activación.
- Perceptrón Multicapa (MLP): Red neuronal con múltiples capas de perceptrones que permite modelar relaciones no lineales complejas.
- Propagación hacia Adelante: Proceso de calcular las salidas de cada capa secuencialmente desde la capa de entrada hasta la capa de salida.
En el próximo tema, exploraremos las funciones de activación en mayor detalle, que son cruciales para introducir no linealidad en las redes neuronales.
Curso de Deep Learning
Módulo 1: Introducción a Deep Learning
- ¿Qué es Deep Learning?
- Historia y evolución del Deep Learning
- Aplicaciones de Deep Learning
- Conceptos básicos de redes neuronales
Módulo 2: Fundamentos de Redes Neuronales
- Perceptrón y Perceptrón Multicapa
- Función de activación
- Propagación hacia adelante y hacia atrás
- Optimización y función de pérdida
Módulo 3: Redes Neuronales Convolucionales (CNN)
- Introducción a las CNN
- Capas convolucionales y de pooling
- Arquitecturas populares de CNN
- Aplicaciones de CNN en reconocimiento de imágenes
Módulo 4: Redes Neuronales Recurrentes (RNN)
- Introducción a las RNN
- LSTM y GRU
- Aplicaciones de RNN en procesamiento del lenguaje natural
- Secuencias y series temporales
Módulo 5: Técnicas Avanzadas en Deep Learning
- Redes Generativas Adversariales (GAN)
- Autoencoders
- Transfer Learning
- Regularización y técnicas de mejora
Módulo 6: Herramientas y Frameworks
- Introducción a TensorFlow
- Introducción a PyTorch
- Comparación de frameworks
- Entornos de desarrollo y recursos adicionales
Módulo 7: Proyectos Prácticos
- Clasificación de imágenes con CNN
- Generación de texto con RNN
- Detección de anomalías con Autoencoders
- Creación de una GAN para generación de imágenes