Índice del contenido[Esconder][Espectáculo]
En los últimos años, las redes neuronales han ganado popularidad ya que han demostrado ser extremadamente buenas en una amplia gama de tareas.
Se ha demostrado que son una excelente opción para el reconocimiento de imágenes y audio, el procesamiento del lenguaje natural e incluso para jugar juegos complicados como Go y ajedrez.
En esta publicación, lo guiaré a través de todo el proceso de entrenamiento de una red neuronal. Mencionaré y explicaré todos los pasos para entrenar una red neuronal.
Si bien repasaré los pasos, me gustaría agregar un ejemplo simple para asegurarme de que también haya un ejemplo práctico.
Entonces, ven y aprendamos a procesar redes neuronales.
Comencemos de manera simple y preguntemos cuáles son redes neuronales en el primer lugar.
¿Qué son exactamente las redes neuronales?
Las redes neuronales son programas informáticos que simulan el funcionamiento del cerebro humano. Pueden aprender de grandes volúmenes de datos y detectar patrones que las personas pueden encontrar difíciles de detectar.
Las redes neuronales han ganado popularidad en los últimos años debido a su versatilidad en tareas como el reconocimiento de imágenes y audio, el procesamiento del lenguaje natural y el modelado predictivo.
En general, las redes neuronales son una herramienta sólida para una amplia gama de aplicaciones y tienen la oportunidad de transformar la forma en que abordamos una amplia gama de trabajos.
¿Por qué debemos saber acerca de ellos?
Comprender las redes neuronales es fundamental porque han llevado a descubrimientos en una variedad de campos, incluida la visión por computadora, el reconocimiento de voz y el procesamiento del lenguaje natural.
Las redes neuronales, por ejemplo, están en el centro de los desarrollos recientes en automóviles autónomos, servicios de traducción automática e incluso diagnósticos médicos.
Comprender cómo funcionan las redes neuronales y cómo diseñarlas nos ayuda a crear aplicaciones nuevas e ingeniosas. Y, tal vez, puede conducir a descubrimientos aún mayores en el futuro.
Una nota sobre el tutorial
Como dije anteriormente, me gustaría explicar los pasos para entrenar una red neuronal dando un ejemplo. Para hacer esto, deberíamos hablar sobre el conjunto de datos MNIST. Es una opción popular para los principiantes que quieren comenzar con las redes neuronales.
MNIST es un acrónimo que significa Instituto Nacional Modificado de Estándares y Tecnología. Es un conjunto de datos de dígitos escritos a mano que se usa comúnmente para entrenar y probar modelos de aprendizaje automático, especialmente redes neuronales.
La colección contiene 70,000 fotografías en escala de grises de números escritos a mano que van del 0 al 9.
El conjunto de datos MNIST es un punto de referencia popular para clasificación de imágenes tareas. Se usa con frecuencia para la enseñanza y el aprendizaje, ya que es compacto y fácil de manejar, al mismo tiempo que presenta un desafío difícil de responder para los algoritmos de aprendizaje automático.
El conjunto de datos MNIST es compatible con varios marcos y bibliotecas de aprendizaje automático, incluidos TensorFlow, Keras y PyTorch.
Ahora que conocemos el conjunto de datos MNIST, comencemos con nuestros pasos para entrenar una red neuronal.
Pasos básicos para entrenar una red neuronal
Importar bibliotecas necesarias
Cuando se comienza a entrenar una red neuronal por primera vez, es fundamental contar con las herramientas necesarias para diseñar y entrenar el modelo. El paso inicial para crear una red neuronal es importar las bibliotecas necesarias, como TensorFlow, Keras y NumPy.
Estas bibliotecas sirven como bloques de construcción para el desarrollo de la red neuronal y brindan capacidades cruciales. La combinación de estas bibliotecas permite la creación de diseños de redes neuronales sofisticados y un entrenamiento rápido.
Para comenzar nuestro ejemplo; Importaremos las bibliotecas necesarias, que incluyen TensorFlow, Keras y NumPy. TensorFlow es un marco de aprendizaje automático de código abierto, Keras es una API de red neuronal de alto nivel y NumPy es una biblioteca Python de computación numérica.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Cargue el conjunto de datos
Ahora se debe cargar el conjunto de datos. El conjunto de datos es el conjunto de datos sobre los que se entrenará la red neuronal. Esto puede ser cualquier tipo de datos, incluidas fotos, audio y texto.
Es fundamental dividir el conjunto de datos en dos partes: una para entrenar la red neuronal y otra para evaluar la corrección del modelo entrenado. Se pueden usar varias bibliotecas, incluidas TensorFlow, Keras y PyTorch, para importar el conjunto de datos.
Para nuestro ejemplo, también usamos Keras para cargar el conjunto de datos MNIST. Hay 60,000 10,000 fotos de entrenamiento y XNUMX XNUMX imágenes de prueba en el conjunto de datos.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Preprocesar los datos
El preprocesamiento de datos es una etapa importante en el entrenamiento de una red neuronal. Implica preparar y limpiar los datos antes de que se introduzcan en la red neuronal.
El escalado de valores de píxeles, la normalización de datos y la conversión de etiquetas a codificación one-hot son ejemplos de procedimientos de preprocesamiento. Estos procesos ayudan a la red neuronal a aprender de manera más efectiva y precisa.
El procesamiento previo de los datos también puede ayudar a minimizar el sobreajuste y mejorar el rendimiento de la red neuronal.
Debe preprocesar los datos antes de entrenar la red neuronal. Esto incluye cambiar las etiquetas a codificación one-hot y escalar los valores de píxel para que estén entre 0 y 1.
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = keras.utils.to_categorical(train_labels, 10)
test_labels = keras.utils.to_categorical(test_labels, 10)
Definir el modelo
El proceso de definición del modelo de red neuronal implica establecer su arquitectura, como el número de capas, el número de neuronas por capa, las funciones de activación y el tipo de red (feedforward, recurrente o convolucional).
El diseño de la red neuronal que utiliza está determinado por el tipo de problema que intenta resolver. Un diseño de red neuronal bien definido puede ayudar en el aprendizaje de la red neuronal haciéndolo más eficiente y preciso.
Es hora de describir el modelo de red neuronal en este punto. Use un modelo simple con dos capas ocultas, cada una con 128 neuronas, y una capa de salida softmax, que tiene 10 neuronas, para este ejemplo.
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
compilar el modelo
La función de pérdida, el optimizador y las métricas deben especificarse durante la compilación del modelo de red neuronal. La capacidad de la red neuronal para pronosticar correctamente la salida se mide mediante la función de pérdida.
Para aumentar la precisión de la red neuronal durante el entrenamiento, el optimizador modifica sus pesos. La eficacia de la red neuronal durante el entrenamiento se mide mediante métricas. El modelo debe crearse antes de poder entrenar la red neuronal.
En nuestro ejemplo, debemos ahora mismo construir el modelo.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Entrena el modelo
Pasar el conjunto de datos preparado a través de la red neuronal mientras se modifican los pesos de la red para minimizar la función de pérdida se conoce como entrenamiento de la red neuronal.
El conjunto de datos de validación se utiliza para probar la red neuronal durante el entrenamiento para realizar un seguimiento de su eficacia y evitar el sobreajuste. El proceso de capacitación puede llevar algún tiempo, por lo que es importante asegurarse de que la red neuronal esté debidamente capacitada para evitar la inadecuación.
Usando los datos de entrenamiento, ahora podemos entrenar el modelo. Para hacer esto, debemos definir el tamaño del lote (la cantidad de muestras procesadas antes de que se actualice el modelo) y la cantidad de épocas (la cantidad de repeticiones en todo el conjunto de datos).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Evaluación del modelo
Probar el rendimiento de la red neuronal en el conjunto de datos de prueba es el proceso de evaluarlo. En esta etapa, la red neuronal entrenada se utiliza para procesar el conjunto de datos de prueba y se evalúa la precisión.
La eficacia con la que una red neuronal puede pronosticar el resultado correcto a partir de datos nuevos y no probados es una medida de su precisión. El análisis del modelo puede ayudar a determinar qué tan bien está funcionando la red neuronal y también sugerir formas de mejorarla aún más.
Finalmente podemos evaluar el rendimiento del modelo utilizando los datos de prueba después del entrenamiento.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
¡Eso es todo! Entrenamos una red neuronal para detectar dígitos en el conjunto de datos MNIST.
Desde la preparación de los datos hasta la evaluación de la eficacia del modelo entrenado, entrenar una red neuronal implica varios procesos. Estas instrucciones ayudan a los novatos a construir y entrenar eficientemente redes neuronales.
Los principiantes que quieran usar redes neuronales para abordar varios problemas pueden hacerlo siguiendo estas instrucciones.
Visualizando el ejemplo
Intentemos visualizar lo que hemos hecho con este ejemplo para entender mejor.
El paquete Matplotlib se usa en este fragmento de código para trazar una selección aleatoria de fotos del conjunto de datos de entrenamiento. Primero, importamos el módulo "pyplot" de Matplotlib y lo alias como "plt". Luego, con una dimensión total de 10 por 10 pulgadas, hacemos una figura con 5 filas y 5 columnas de subtramas.
Luego, usamos un ciclo for para iterar sobre las subparcelas, mostrando una imagen del conjunto de datos de entrenamiento en cada una. Para mostrar la imagen, se utiliza la función “imshow”, con la opción “cmap” configurada en 'gris' para mostrar las fotos en escala de grises. El título de cada subparcela también se establece en la etiqueta de la imagen asociada en la colección.
Finalmente, usamos la función "mostrar" para mostrar las imágenes trazadas en la figura. Esta función nos permite evaluar visualmente una muestra de fotos del conjunto de datos, lo que puede ayudarnos a comprender los datos y a identificar cualquier posible problema.
import matplotlib.pyplot as plt
# Plot a random sample of images
fig, axes = plt.subplots(nrows=5, ncols=5, figsize=(10,10))
for i, ax in enumerate(axes.flat):
ax.imshow(train_images[i], cmap='gray')
ax.set_title(f"Label: {train_labels[i].argmax()}")
ax.axis('off')
plt.show()
Modelos de redes neuronales importantes
- Redes neuronales de avance (FFNN): Un tipo simple de red neuronal en la que la información viaja de una sola manera, desde la capa de entrada a la capa de salida a través de una o más capas ocultas.
- Redes neuronales convolucionales (CNN): Una red neuronal que se usa comúnmente en la detección y el procesamiento de imágenes. Las CNN están destinadas a reconocer y extraer características de las imágenes automáticamente.
- Redes Neuronales Recurrentes (RNN): Una red neuronal que se usa comúnmente en la detección y el procesamiento de imágenes. Las CNN están destinadas a reconocer y extraer características de las imágenes automáticamente.
- Redes de memoria a corto plazo (LSTM): Una forma de RNN creada para superar el problema de la desaparición de gradientes en RNN estándar. Las dependencias a largo plazo en datos secuenciales se pueden capturar mejor con LSTM.
- Codificadores automáticos: Red neuronal de aprendizaje no supervisado en la que se enseña a la red a reproducir sus datos de entrada en su capa de salida. La compresión de datos, la detección de anomalías y la eliminación de ruido de imágenes se pueden lograr con codificadores automáticos.
- Redes adversarias generativas (GAN): Una red neuronal generativa es una forma de red neuronal a la que se le enseña a producir nuevos datos que son comparables a un conjunto de datos de entrenamiento. Las GAN se componen de dos redes: una red generadora que crea datos nuevos y una red discriminadora que evalúa la calidad de los datos creados.
Resumen, ¿cuáles deberían ser sus próximos pasos?
Explore varios recursos y cursos en línea para obtener más información sobre cómo entrenar una red neuronal. Trabajar en proyectos o ejemplos es un método para obtener una mejor comprensión de las redes neuronales.
Comience con ejemplos sencillos, como problemas de clasificación binaria o tareas de clasificación de imágenes, y luego pase a tareas más difíciles, como procesamiento de lenguaje natural o aprendizaje reforzado.
Trabajar en proyectos lo ayuda a obtener experiencia real y mejorar sus habilidades de entrenamiento de redes neuronales.
También puede unirse a grupos y foros de redes neuronales y aprendizaje automático en línea para interactuar con otros estudiantes y profesionales, compartir su trabajo y recibir comentarios y ayuda.
LSRS MONRAD-KROHN
⁶ĵMe hubiera gustado ver el programa Python para minimizar errores. Nodos de selección especiales para cambios de peso a la siguiente capa.