Aplicando Redes Neuronales Convolucionales en la Educación Superior


Aplicando Redes Neuronales Convolucionales en la Educación Superior.ipynb


Volver

Aplicando Redes Neuronales Convolucionales en la Educación Superior

Introducción:

En este artículo, exploraremos cómo las Redes Neuronales Convolucionales (CNN, por sus siglas en inglés), una de las tecnologías más avanzadas en el campo de la Inteligencia Artificial, pueden ser aplicadas en la educación superior para mejorar los procesos de enseñanza y aprendizaje. Adoptaremos un enfoque basado en competencias, analizando cómo este tipo de IA puede contribuir al desarrollo de conocimientos conceptuales, habilidades procedimentales, y actitudes y valoraciones positivas hacia el aprendizaje autónomo y la innovación tecnológica.

Contenido (Conocimientos Conceptuales – Marco Teórico):

1. Redes Neuronales Convolucionales: Una Breve Introducción

Definición y Principios Básicos de las CNN

Las Redes Neuronales Convolucionales (CNN) son un tipo de red neuronal artificial inspiradas en el proceso biológico de la visión animal que se utilizan principalmente para procesar datos estructurados en forma de cuadrículas, como imágenes.

Estructura de una CNN:

Capas de Convolución: Utilizan filtros o kernels para extraer características de bajo nivel (como bordes) a características de alto nivel (como formas o identificación de objetos) de la entrada.

Capas de Pooling (Submuestreo): Reducen la dimensión de los datos de entrada manteniendo las características más importantes, ayudando a disminuir el cálculo y los riesgos de sobreajuste.

Capas Fully Connected (Densas): Después de varias capas de convolución y pooling, la información se aplanan y se alimenta a través de capas densas para la clasificación o regresión.

Principios de Funcionamiento:

Localidad y Invariancia a la Traducción: Las CNN aprovechan la localidad espacial de los datos (cercanía de los píxeles en imágenes) y son capaces de detectar patrones independientemente de su posición en la imagen.

Aprendizaje de Características: A través del entrenamiento, las CNN aprenden automáticamente las características importantes para realizar tareas de clasificación o regresión, sin necesidad de extracción manual de características.

Imagen de Estructura de una CNN: Imaginemos un diagrama que muestre una capa de entrada (la imagen), seguida de varias capas de convolución y pooling alternadas, terminando en capas densas que conducen a la capa de salida (la clasificación).

Aplicaciones de las CNN

Las CNN han revolucionado el campo de la visión por computadora y han encontrado aplicaciones en una amplia gama de dominios.

Visión por Computadora:

Reconocimiento de Imágenes: Identificación de objetos, personas, escenas, etc., en imágenes.

Detección de Objetos: Localización de objetos dentro de una imagen y clasificación de ellos.

Segmentación de Imágenes: División de una imagen en segmentos o regiones para identificar y localizar diferentes objetos o áreas de interés.

Procesamiento del Lenguaje Natural (PLN): Aunque tradicionalmente se asocian más con el procesamiento de imágenes, las CNN también se aplican en PLN para tareas como la clasificación de texto y el análisis de sentimientos, aprovechando la estructura secuencial de los datos textuales.

Otros Campos:

Medicina: Para análisis y diagnóstico médico a partir de imágenes clínicas.

Seguridad: En sistemas de vigilancia para reconocimiento facial o detección de actividades sospechosas.

Automoción: Vehículos autónomos utilizan CNN para interpretar el entorno visual.

Gráficos de Aplicaciones: Podemos visualizar gráficos que representan cómo una CNN procesa una imagen para reconocer un objeto, un diagrama que muestra la detección de objetos en una imagen de vigilancia, y ejemplos de segmentación de imágenes médicas.

Generemos una imagen conceptual que ilustre la estructura básica de una CNN y su aplicación en reconocimiento de imágenes:



La imagen generada ilustra la estructura de una Red Neuronal Convolucional (CNN) y cómo se aplica en el reconocimiento de imágenes. Se muestra desde la capa de entrada, que representa una imagen, pasando por las capas alternas de convolución y pooling, hasta llegar a las capas completamente conectadas que culminan en la capa de salida para la clasificación. Además, se visualiza cómo la red identifica y clasifica objetos dentro de la imagen, demostrando una aplicación práctica en el reconocimiento de imágenes.

Este gráfico sirve como un recurso educativo para comprender cómo las CNN procesan y analizan visualmente los datos para realizar tareas como la clasificación de imágenes, destacando su importancia y versatilidad en diversos campos de aplicación.

2. La Importancia de la IA en la Educación Superior

Cómo la IA está transformando la educación superior: personalización del aprendizaje, automatización de tareas, análisis de datos para mejorar la toma de decisiones.

3. El Enfoque de Competencias en la Educación Superior

Qué son las competencias y cómo se estructuran (conocimientos, habilidades, actitudes y valoraciones).

La relevancia de las competencias en el siglo XXI y su alineación con las necesidades del mercado laboral.

Script Python (Habilidades – Procedimientos):

Implementación Básica de una CNN con TensorFlow y Keras

Este ejemplo se enfocará en el reconocimiento de dígitos utilizando el conjunto de datos MNIST, que es un conjunto de datos estándar usado en el aprendizaje profundo para el reconocimiento de dígitos escritos a mano.

Paso 1: Preparar el Entorno

Primero, asegúrate de tener TensorFlow instalado en tu entorno. Puedes instalar TensorFlow mediante pip:

pip install tensorflow

RESULTADO:

Requirement already satisfied: tensorflow in /usr/local/lib/python3.10/dist-packages (2.15.0)

Requirement already satisfied: absl-py>=1.0.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.4.0)

Requirement already satisfied: astunparse>=1.6.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.6.3)

Requirement already satisfied: flatbuffers>=23.5.26 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (23.5.26)

Requirement already satisfied: gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (0.5.4)

Requirement already satisfied: google-pasta>=0.1.1 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (0.2.0)

Requirement already satisfied: h5py>=2.9.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (3.9.0)

Requirement already satisfied: libclang>=13.0.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (16.0.6)

Requirement already satisfied: ml-dtypes~=0.2.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (0.2.0)

Requirement already satisfied: numpy<2.0.0,>=1.23.5 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.23.5)

Requirement already satisfied: opt-einsum>=2.3.2 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (3.3.0)

Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from tensorflow) (23.2)

Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (3.20.3)

Requirement already satisfied: setuptools in /usr/local/lib/python3.10/dist-packages (from tensorflow) (67.7.2)

Requirement already satisfied: six>=1.12.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.16.0)

Requirement already satisfied: termcolor>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (2.4.0)

Requirement already satisfied: typing-extensions>=3.6.6 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (4.9.0)

Requirement already satisfied: wrapt<1.15,>=1.11.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.14.1)

Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (0.35.0)

Requirement already satisfied: grpcio<2.0,>=1.24.3 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.60.1)

Requirement already satisfied: tensorboard<2.16,>=2.15 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (2.15.1)

Requirement already satisfied: tensorflow-estimator<2.16,>=2.15.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (2.15.0)

Requirement already satisfied: keras<2.16,>=2.15.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (2.15.0)

Requirement already satisfied: wheel<1.0,>=0.23.0 in /usr/local/lib/python3.10/dist-packages (from astunparse>=1.6.0->tensorflow) (0.42.0)

Requirement already satisfied: google-auth<3,>=1.6.3 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow) (2.17.3)

Requirement already satisfied: google-auth-oauthlib<2,>=0.5 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow) (1.2.0)

Requirement already satisfied: markdown>=2.6.8 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow) (3.5.2)

Requirement already satisfied: requests<3,>=2.21.0 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow) (2.31.0)

Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow) (0.7.2)

Requirement already satisfied: werkzeug>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow) (3.0.1)

Requirement already satisfied: cachetools<6.0,>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow) (5.3.2)

Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.10/dist-packages (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow) (0.3.0)

Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.10/dist-packages (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow) (4.9)

Requirement already satisfied: requests-oauthlib>=0.7.0 in /usr/local/lib/python3.10/dist-packages (from google-auth-oauthlib<2,>=0.5->tensorboard<2.16,>=2.15->tensorflow) (1.3.1)

Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow) (3.3.2)

Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow) (3.6)

Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow) (2.0.7)

Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow) (2024.2.2)

Requirement already satisfied: MarkupSafe>=2.1.1 in /usr/local/lib/python3.10/dist-packages (from werkzeug>=1.0.1->tensorboard<2.16,>=2.15->tensorflow) (2.1.5)

Requirement already satisfied: pyasn1<0.6.0,>=0.4.6 in /usr/local/lib/python3.10/dist-packages (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow) (0.5.1)

Requirement already satisfied: oauthlib>=3.0.0 in /usr/local/lib/python3.10/dist-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<2,>=0.5->tensorboard<2.16,>=2.15->tensorflow) (3.2.2)

Paso 2: Importar las Bibliotecas Necesarias

import tensorflow as tf

from tensorflow.keras import datasets, layers, models

import matplotlib.pyplot as plt

 

Paso 3: Cargar el Conjunto de Datos MNIST

El conjunto de datos MNIST está disponible directamente en Keras, así que podemos cargarlo fácilmente:

(train_images, train_labels), (test_images, test_labels) = datasets.mnist.load_data()

 

# Normalizar los datos de imágenes para que sus valores estén entre 0 y 1

train_images, test_images = train_images / 255.0, test_images / 255.0

 

# Asegurarnos de que las imágenes tienen la forma correcta para la CNN

train_images = train_images.reshape((60000, 28, 28, 1))

test_images = test_images.reshape((10000, 28, 28, 1))

 

RESULTADOS:

Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz

11490434/11490434 [==============================] - 0s 0us/step

Paso 4: Construir el Modelo de CNN

Vamos a construir un modelo simple de CNN:

model = models.Sequential()

model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))

model.add(layers.MaxPooling2D((2, 2)))

model.add(layers.Conv2D(64, (3, 3), activation='relu'))

model.add(layers.MaxPooling2D((2, 2)))

model.add(layers.Conv2D(64, (3, 3), activation='relu'))

 

# Añadir las capas densas en la parte superior

model.add(layers.Flatten())

model.add(layers.Dense(64, activation='relu'))

model.add(layers.Dense(10))

 

Paso 5: Compilar el Modelo

model.compile(optimizer='adam',

              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),

              metrics=['accuracy'])

Paso 6: Entrenar el Modelo

history = model.fit(train_images, train_labels, epochs=10,

                    validation_data=(test_images, test_labels))

 

RESULTADO:

Epoch 1/10

1875/1875 [==============================] - 56s 29ms/step - loss: 0.1449 - accuracy: 0.9550 - val_loss: 0.0398 - val_accuracy: 0.9879

Epoch 2/10

1875/1875 [==============================] - 54s 29ms/step - loss: 0.0457 - accuracy: 0.9858 - val_loss: 0.0373 - val_accuracy: 0.9885

Epoch 3/10

1875/1875 [==============================] - 54s 29ms/step - loss: 0.0313 - accuracy: 0.9902 - val_loss: 0.0323 - val_accuracy: 0.9898

Epoch 4/10

1875/1875 [==============================] - 53s 28ms/step - loss: 0.0254 - accuracy: 0.9922 - val_loss: 0.0281 - val_accuracy: 0.9920

Epoch 5/10

1875/1875 [==============================] - 53s 28ms/step - loss: 0.0201 - accuracy: 0.9937 - val_loss: 0.0327 - val_accuracy: 0.9902

Epoch 6/10

1875/1875 [==============================] - 53s 28ms/step - loss: 0.0166 - accuracy: 0.9947 - val_loss: 0.0378 - val_accuracy: 0.9894

Epoch 7/10

1875/1875 [==============================] - 52s 28ms/step - loss: 0.0132 - accuracy: 0.9955 - val_loss: 0.0351 - val_accuracy: 0.9918

Epoch 8/10

1875/1875 [==============================] - 55s 29ms/step - loss: 0.0110 - accuracy: 0.9965 - val_loss: 0.0394 - val_accuracy: 0.9894

Paso 7: Evaluar el Modelo

test_loss, test_acc = model.evaluate(test_images,  test_labels, verbose=2)

print('\nTest accuracy:', test_acc)

RESULTADOS:

output

313/313 - 2s - loss: 0.0343 - accuracy: 0.9912 - 2s/epoch - 8ms/step

 

Test accuracy: 0.9911999702453613

Paso 8: Hacer Predicciones

Para hacer predicciones, primero debemos aplicar la función softmax para convertir los logits en probabilidades, que son más fáciles de interpretar.

probability_model = tf.keras.Sequential([model, tf.keras.layers.Softmax()])

predictions = probability_model.predict(test_images)

 

# Predicciones para el primer elemento en el conjunto de prueba

print(predictions[0])

 

RESULTADOS

313/313 [==============================] - 3s 8ms/step

[3.1240199e-10 5.4562883e-09 4.4068371e-09 5.0739338e-08 1.5214380e-07

 3.1304498e-10 1.2828880e-13 9.9999982e-01 1.3720267e-09 3.9389043e-08]

Este es un ejemplo básico de cómo construir y entrenar una CNN con TensorFlow y Keras. Puedes experimentar con el modelo cambiando la arquitectura, el número de capas, los hiperparámetros como la tasa de aprendizaje, o el número de épocas, para mejorar el rendimiento del modelo en tareas de clasificación.

Conclusiones (Actitudes y Valoraciones):

1. Impacto de las CNN en la Educación Superior:

Reflexión sobre cómo la integración de tecnologías avanzadas como las CNN puede mejorar la calidad y accesibilidad de la educación superior.

La importancia de desarrollar una actitud abierta y proactiva hacia el aprendizaje de nuevas tecnologías entre estudiantes y docentes.

2. Desafíos y Oportunidades:

Discusión sobre los desafíos técnicos y éticos de implementar IA en la educación.

Las oportunidades que la IA ofrece para innovar en métodos pedagógicos y en el diseño curricular.

3. Llamado a la Acción:

Alentar a los educadores y las instituciones educativas a adoptar tecnologías de IA, fomentando un entorno donde la competencia tecnológica y la innovación estén a la vanguardia del desarrollo educativo. 

Volver

Sin comentarios