Objetivos del Módulo
En este módulo, aprenderás sobre:
- La estructura y funcionamiento básico de las redes neuronales.
- Los componentes principales de una red neuronal.
- Cómo se entrenan las redes neuronales.
- Aplicaciones prácticas de las redes neuronales.
¿Qué es una Red Neuronal?
Una red neuronal es un modelo computacional inspirado en la estructura y funcionamiento del cerebro humano. Está compuesta por unidades básicas llamadas neuronas que están interconectadas y trabajan juntas para procesar información y realizar tareas complejas.
Componentes de una Red Neuronal
- Neuronas (Nodos): Las unidades básicas que reciben, procesan y transmiten información.
- Capas (Layers): Las neuronas están organizadas en capas:
- Capa de Entrada (Input Layer): Recibe los datos de entrada.
- Capas Ocultas (Hidden Layers): Procesan la información recibida de la capa de entrada.
- Capa de Salida (Output Layer): Produce el resultado final.
- Pesos (Weights): Valores que determinan la importancia de las conexiones entre neuronas.
- Función de Activación (Activation Function): Una función matemática que decide si una neurona debe activarse o no.
Estructura Básica de una Red Neuronal
Ejemplo de una Red Neuronal Simple
Consideremos una red neuronal con una capa de entrada, una capa oculta y una capa de salida.
Visualización de la Red Neuronal
Funcionamiento de una Red Neuronal
-
Propagación hacia Adelante (Forward Propagation):
- Los datos de entrada se pasan a través de la red, capa por capa.
- En cada capa, las neuronas aplican una función de activación a la suma ponderada de sus entradas.
-
Función de Activación:
- Sigmoid: \( \sigma(x) = \frac{1}{1 + e^{-x}} \)
- ReLU (Rectified Linear Unit): \( \text{ReLU}(x) = \max(0, x) \)
- Tanh: \( \text{tanh}(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} \)
-
Propagación hacia Atrás (Backpropagation):
- Se calcula el error en la salida y se propaga hacia atrás a través de la red.
- Los pesos se ajustan para minimizar el error utilizando un algoritmo de optimización como el Gradiente Descendente.
Ejemplo de Código: Red Neuronal Simple en Python
A continuación, se muestra un ejemplo básico de una red neuronal utilizando la librería Keras
.
import numpy as np from keras.models import Sequential from keras.layers import Dense # Datos de entrada (X) y salida (y) X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]) y = np.array([[0], [1], [1], [0]]) # Crear el modelo model = Sequential() model.add(Dense(4, input_dim=2, activation='relu')) model.add(Dense(1, activation='sigmoid')) # Compilar el modelo model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Entrenar el modelo model.fit(X, y, epochs=1000, verbose=0) # Evaluar el modelo loss, accuracy = model.evaluate(X, y) print(f'Precisión: {accuracy * 100:.2f}%') # Hacer predicciones predictions = model.predict(X) print('Predicciones:') print(predictions)
Explicación del Código
-
Importar Librerías:
numpy
para manejar los datos.keras
para construir y entrenar la red neuronal.
-
Datos de Entrada y Salida:
X
son los datos de entrada.y
son los datos de salida esperados.
-
Crear el Modelo:
Sequential
para crear una red neuronal secuencial.Dense
para añadir capas densas (totalmente conectadas).
-
Compilar el Modelo:
loss='binary_crossentropy'
para la función de pérdida.optimizer='adam'
para el algoritmo de optimización.metrics=['accuracy']
para evaluar la precisión.
-
Entrenar el Modelo:
model.fit
para entrenar la red con los datos.
-
Evaluar el Modelo:
model.evaluate
para evaluar la precisión del modelo.
-
Hacer Predicciones:
model.predict
para hacer predicciones con los datos de entrada.
Ejercicio Práctico
Ejercicio 1: Crear una Red Neuronal para Clasificación Binaria
- Utiliza el conjunto de datos
Iris
desklearn.datasets
. - Crea una red neuronal con una capa de entrada, una capa oculta y una capa de salida.
- Entrena la red para clasificar las flores en dos categorías.
Solución
import numpy as np from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from keras.models import Sequential from keras.layers import Dense from keras.utils import to_categorical # Cargar el conjunto de datos Iris iris = load_iris() X = iris.data y = (iris.target != 0) * 1 # Clasificación binaria: 0 o no 0 # Dividir el conjunto de datos en entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Crear el modelo model = Sequential() model.add(Dense(8, input_dim=4, activation='relu')) model.add(Dense(1, activation='sigmoid')) # Compilar el modelo model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Entrenar el modelo model.fit(X_train, y_train, epochs=100, verbose=0) # Evaluar el modelo loss, accuracy = model.evaluate(X_test, y_test) print(f'Precisión: {accuracy * 100:.2f}%') # Hacer predicciones predictions = model.predict(X_test) print('Predicciones:') print(predictions)
Retroalimentación
- Error Común 1: No normalizar los datos de entrada puede llevar a un mal rendimiento del modelo.
- Error Común 2: Usar una función de activación incorrecta en la capa de salida para problemas de clasificación binaria.
Conclusión
En este módulo, hemos introducido los conceptos básicos de las redes neuronales, su estructura y funcionamiento. También hemos visto un ejemplo práctico de cómo construir y entrenar una red neuronal simple utilizando Keras
. En el próximo módulo, profundizaremos en la arquitectura de las redes neuronales y exploraremos diferentes tipos de redes neuronales avanzadas.
Fundamentos de Inteligencia Artificial (IA)
Módulo 1: Introducción a la Inteligencia Artificial
Módulo 2: Principios Básicos de la IA
Módulo 3: Algoritmos en IA
Módulo 4: Aprendizaje Automático (Machine Learning)
- Conceptos Básicos de Machine Learning
- Tipos de Aprendizaje Automático
- Algoritmos de Machine Learning
- Evaluación y Validación de Modelos
Módulo 5: Redes Neuronales y Deep Learning
- Introducción a las Redes Neuronales
- Arquitectura de Redes Neuronales
- Deep Learning y sus Aplicaciones