Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Implementación de Redes Neuronales | Fundamentos de TensorFlow
Introducción a TensorFlow

Implementación de Redes Neuronales

Descripción general de una red neuronal básica

Ahora has llegado a una etapa en la que cuentas con los conocimientos esenciales de TensorFlow para crear redes neuronales por tu cuenta. Aunque la mayoría de las redes neuronales en el mundo real son complejas y normalmente se construyen utilizando librerías de alto nivel como Keras, construiremos una básica utilizando herramientas fundamentales de TensorFlow. Este enfoque nos brinda experiencia práctica con la manipulación de tensores a bajo nivel, ayudándonos a comprender los procesos subyacentes.

En cursos anteriores como Introducción a las redes neuronales, quizá recuerdes el tiempo y esfuerzo que tomó construir incluso una red neuronal simple, tratando cada neurona de forma individual.

single_neuron_calc

TensorFlow simplifica este proceso de manera significativa. Al aprovechar los tensores, puedes encapsular cálculos complejos, reduciendo la necesidad de codificación intrincada. Nuestra tarea principal es configurar una tubería secuencial de operaciones con tensores.

Aquí tienes un breve recordatorio de los pasos para poner en marcha el proceso de entrenamiento de una red neuronal:

Preparación de datos y creación del modelo

La fase inicial del entrenamiento de una red neuronal implica la preparación de los datos, que abarca tanto las entradas como las salidas de las que la red aprenderá. Además, se establecen los hiperparámetros del modelo; estos son los parámetros que permanecen constantes durante todo el proceso de entrenamiento. Los pesos se inicializan, normalmente tomados de una distribución normal, y los sesgos, que a menudo se establecen en cero.

Propagación hacia adelante

En la propagación hacia adelante, cada capa de la red normalmente sigue estos pasos:

  1. Multiplicar la entrada de la capa por sus pesos.
  2. Sumar un sesgo al resultado.
  3. Aplicar una función de activación a esta suma.
carousel-imgcarousel-imgcarousel-imgcarousel-imgcarousel-img

Luego, se puede calcular la pérdida.

Propagación hacia atrás

El siguiente paso es la propagación hacia atrás, donde se ajustan los pesos y sesgos según su influencia en la pérdida. Esta influencia está representada por el gradiente, que la Gradient Tape de TensorFlow calcula automáticamente. Se actualizan los pesos y sesgos restando el gradiente, escalado por la tasa de aprendizaje.

carousel-imgcarousel-imgcarousel-img

Bucle de entrenamiento

Para entrenar eficazmente la red neuronal, los pasos de entrenamiento se repiten varias veces mientras se supervisa el rendimiento del modelo. Idealmente, la pérdida debería disminuir a lo largo de las épocas.

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 4
single

single

Implementación de Redes Neuronales

Desliza para mostrar el menú

Descripción general de una red neuronal básica

Ahora has llegado a una etapa en la que cuentas con los conocimientos esenciales de TensorFlow para crear redes neuronales por tu cuenta. Aunque la mayoría de las redes neuronales en el mundo real son complejas y normalmente se construyen utilizando librerías de alto nivel como Keras, construiremos una básica utilizando herramientas fundamentales de TensorFlow. Este enfoque nos brinda experiencia práctica con la manipulación de tensores a bajo nivel, ayudándonos a comprender los procesos subyacentes.

En cursos anteriores como Introducción a las redes neuronales, quizá recuerdes el tiempo y esfuerzo que tomó construir incluso una red neuronal simple, tratando cada neurona de forma individual.

single_neuron_calc

TensorFlow simplifica este proceso de manera significativa. Al aprovechar los tensores, puedes encapsular cálculos complejos, reduciendo la necesidad de codificación intrincada. Nuestra tarea principal es configurar una tubería secuencial de operaciones con tensores.

Aquí tienes un breve recordatorio de los pasos para poner en marcha el proceso de entrenamiento de una red neuronal:

Preparación de datos y creación del modelo

La fase inicial del entrenamiento de una red neuronal implica la preparación de los datos, que abarca tanto las entradas como las salidas de las que la red aprenderá. Además, se establecen los hiperparámetros del modelo; estos son los parámetros que permanecen constantes durante todo el proceso de entrenamiento. Los pesos se inicializan, normalmente tomados de una distribución normal, y los sesgos, que a menudo se establecen en cero.

Propagación hacia adelante

En la propagación hacia adelante, cada capa de la red normalmente sigue estos pasos:

  1. Multiplicar la entrada de la capa por sus pesos.
  2. Sumar un sesgo al resultado.
  3. Aplicar una función de activación a esta suma.
carousel-imgcarousel-imgcarousel-imgcarousel-imgcarousel-img

Luego, se puede calcular la pérdida.

Propagación hacia atrás

El siguiente paso es la propagación hacia atrás, donde se ajustan los pesos y sesgos según su influencia en la pérdida. Esta influencia está representada por el gradiente, que la Gradient Tape de TensorFlow calcula automáticamente. Se actualizan los pesos y sesgos restando el gradiente, escalado por la tasa de aprendizaje.

carousel-imgcarousel-imgcarousel-img

Bucle de entrenamiento

Para entrenar eficazmente la red neuronal, los pasos de entrenamiento se repiten varias veces mientras se supervisa el rendimiento del modelo. Idealmente, la pérdida debería disminuir a lo largo de las épocas.

Tarea

Desliza para comenzar a programar

Crear una red neuronal diseñada para predecir los resultados de la operación XOR. La red debe consistir en 2 neuronas de entrada, una capa oculta con 2 neuronas y 1 neurona de salida.

  1. Comenzar con la configuración de los pesos y sesgos iniciales. Los pesos deben inicializarse utilizando una distribución normal, y todos los sesgos deben inicializarse en cero. Utilizar los hiperparámetros input_size, hidden_size y output_size para definir las formas adecuadas de estos tensores.
  2. Utilizar un decorador de función para transformar la función train_step() en un grafo de TensorFlow.
  3. Realizar la propagación hacia adelante a través de las capas oculta y de salida de la red. Utilizar la función de activación sigmoide.
  4. Determinar los gradientes para comprender cómo cada peso y sesgo afecta la pérdida. Asegurarse de que los gradientes se calculen en el orden correcto, correspondiente a los nombres de las variables de salida.
  5. Modificar los pesos y sesgos en función de sus respectivos gradientes. Incorporar el learning_rate en este proceso de ajuste para controlar la magnitud de cada actualización.

Solución

Descripción del código
expand arrow

Preparación de datos

  • X_data: estos son los datos de entrada para la función XOR. Es un array de NumPy con forma (4, 2), que representa las cuatro combinaciones posibles de las entradas XOR (0,0), (0,1), (1,0) y (1,1);
  • Y_data: este es el resultado objetivo para cada combinación de entrada en X_data. También es un array de NumPy pero con forma (4, 1), que representa la salida XOR para cada par de entradas.

Parámetros de la red

  • input_size: tamaño de la capa de entrada, establecido en 2, correspondiente a los dos nodos de entrada (para las dos entradas de la función XOR);
  • hidden_size: tamaño de la capa oculta, también establecido en 2. Esta elección es algo arbitraria pero suficiente para aprender la función XOR;
  • output_size: tamaño de la capa de salida, establecido en 1, correspondiente al único nodo de salida (el resultado de la operación XOR);
  • learning_rate: tasa de aprendizaje para el algoritmo de optimización, que controla cuánto se ajustan los pesos durante el entrenamiento.

Pesos y sesgos

  • W1 y b1: los pesos (W1) y sesgos (b1) para las conexiones desde la capa de entrada a la capa oculta. W1 es una variable de TensorFlow inicializada con valores aleatorios y tiene una forma de (input_size, hidden_size), es decir, (2, 2). b1 es una variable de TensorFlow inicializada en ceros y tiene una forma de (hidden_size), es decir, (2);
  • W2 y b2: los pesos (W2) y sesgos (b2) para las conexiones desde la capa oculta a la capa de salida. W2 se inicializa con valores aleatorios y tiene una forma de (hidden_size, output_size), es decir, (2, 1). b2 se inicializa en ceros y tiene una forma de (output_size), es decir, (1).

Función de entrenamiento

  • train_step(): esta es la función principal de entrenamiento. Utiliza tf.GradientTape() para la diferenciación automática. En la pasada hacia adelante, calcula las activaciones de la capa oculta (a1) y las predicciones de salida (Y_pred). La pérdida se calcula como el error cuadrático medio entre Y_pred y Y. Luego, la función calcula los gradientes y actualiza los pesos y sesgos;
  • tf.sigmoid(): se utiliza una función de activación sigmoide, que transforma la entrada en un valor entre 0 y 1. Se usa tanto para la capa oculta como para la capa de salida.

Bucle de entrenamiento

  • La red se entrena durante 2500 épocas. En cada época, se llama a la función train_step() y se actualizan los pesos. La pérdida se imprime cada 500 épocas para monitorear el progreso del entrenamiento.

Conclusión

Dado que la función XOR es una tarea relativamente sencilla, no es necesario utilizar técnicas avanzadas como ajuste de hiperparámetros, división de conjuntos de datos o construcción de canalizaciones de datos complejas en esta etapa. Este ejercicio es solo un paso hacia la construcción de redes neuronales más sofisticadas para aplicaciones del mundo real.

Dominar estos conceptos básicos es fundamental antes de abordar técnicas avanzadas de construcción de redes neuronales en los próximos cursos, donde se utilizará la librería Keras y se explorarán métodos para mejorar la calidad del modelo con las amplias funcionalidades de TensorFlow.

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 4
single

single

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

some-alt