Aprendizaje Automático

Desde el punto de vista del pensamiento computacional en el aula, una de las ramas de la Inteligencia Artificial más interesante es el Aprendizaje Automático o Machine Learning (ML). Se define como la capacidad de un sistema para aprender por sí mismo. Primero se produce un entrenamiento, luego un aprendizaje y por último una recogida de resultados para comprobar si la tarea se realiza con éxito. El sistema se vuelve más eficiente cuanto más veces se ensaya.

La mayoría de problemas se pueden resolver aplicando algoritmos algebraicos conocidos. Por ejemplo: para calcular el área de un rectángulo se multiplica el valor de la medida de la anchura por el valor de la medida de la altura y se muestra el resultado. Este tipo de problemas, de mayor o menor complejidad, son los más frecuentes en el pensamiento computacional.

Sin embargo existen otro tipo de problemas que no se pueden solucionar mediante una secuencia finita de cálculos. Es el caso, por ejemplo, del reconocimiento de la foto de un perro entre un conjunto de fotos de animales. Esta tarea resulta fácil para un cerebro humano pero es más difícil de abordar por parte de una computadora ya que no se resuelve aplicando operaciones lógicas o matemáticas. Este tipo de problemas son los que se abordan desde el ML.

Si disponemos de muchos datos relacionados con su solución, es posible inferir posibles soluciones de nuevas situaciones. La esencia del ML consiste en recopilar gran cantidad de datos con el propósito de extraer un patrón común útil para construir un modelo que permita lograr soluciones al problema con cierta probabilidad de éxito. En el ejemplo del reconocimiento de imágenes sería obtener un modelo para determinar si la imagen representa a un perro y cuál es la probabilidad de que sea correcta. El ML es capaz de resolver problemas para los que no tenemos algoritmos algebraicos pero sí una gran cantidad de datos que nos permiten extraer patrones. El “aprendizaje” se refiere al análisis intensivo de los datos disponibles para construir ese modelo.

Herramientas educativas para trabajar el ML en el aula

Las aplicaciones educativas más populares para realizar prácticas de ML con el alumnado se centran en el reconocimiento de textos, reconocimiento de imágenes, reconocimiento de voz y la traducción de idiomas. Todas las plataformas de ML están basadas en el aprendizaje supervisado, es decir, durante el entrenamiento los datos son clasificados de forma manual por un humano. Su esquema de funcionamiento es similar:

  1. Entrenamiento. Recopilación de un conjunto amplio de datos que se etiquetan y categorizan por el alumno de una forma manual.
  2. Aprendizaje. Estos datos etiquetados se proporcionan como entrada de los algoritmos de aprendizaje automático supervisados, generando un modelo capaz de ajustar datos correctamente, después de una operación computacional intensiva. El objetivo es que el modelo ofrezca respuesta a nuevos datos.
  3. Prueba. Se evalúa el rendimiento del modelo porque la respuesta a nuevos datos no siempre es correcta y se pueden producir algunas respuestas incorrectas. En este paso se alimenta el modelo con datos de prueba, evaluando si es necesario agregar más datos etiquetados para mejorar el modelo.
  4. Codificación. Una vez que el modelo funciona bien, se elabora una aplicación inteligente en una plataforma de programación (p.e. Scratch) que será la interfaz de interacción del usuario final con el sistema de IA que hemos creado.
Imagen 01. Esquema común de funcionamiento de las herramientas de ML

Entre las aplicaciones más populares que permiten trabajar el ML con el alumnado cabe destacar las siguientes:

En este artículo se ejemplifica cómo utilizar LearningML.

Imagen 02. Aplicaciones para trabajar ML en el aula

LearningML

LearningML (https://learningml.org/) es una plataforma educativa para el aprendizaje de contenidos sobre Inteligencia Artificial y el fomento del Pensamiento Computacional. Está desarrollada por Juan David Rodríguez (http://juandarodriguez.es/) en colaboración con el grupo de investigación KGBL3  (https://kgblll.github.io/)

Sus características más destacadas son:

  • Plataforma online aunque también dispone de  versión de escritorio
  • Permite entrenar modelos ML capaces de identificar textos, números e imágenes.  
  • Se utiliza sin registro. Desde marzo-2023 ya no está disponible el almacenamiento en la nube. 
  • Se pueden crear proyectos Scratch conectados con esos modelos. 
Imagen 03. Portada de la web de LearningML

Cada experiencia de ML que se puede desarrollar con esta plataforma consta de 4 fases:

  1. Entrenamiento. Se recopilan textos, imágenes o números que se clasifican en clases o etiquetas. Son los datos que se proporcionan durante el entrenamiento.
  2. Aprendizaje. A continuación se elabora un modelo de ML.
  3. Prueba. El sistema creado es capaz de clasificar correctamente nuevos datos, distintos pero similares a los datos del conjunto de entrenamiento.
  4. Codificación. Se elabora un programa Scratch conectado con el modelo ML entrenado con el propósito de clasificar datos.

Proyecto “Díme algo”

Descripción

En este proyecto se expone un personaje que reacciona a lo que se le dice. Si se le remite un mensaje positivo, mostrará con una sonrisa. Si se le envía un mensaje negativo,  se mostrará triste. En este proyecto se enseñará a la computadora a reconocer mensajes amables o positivos y mensajes crueles o negativos.

Imagen 04. Programa Scratch vinculado al modelo ML “Díme algo”

Crear el proyecto

  1. Desde la editor de LML selecciona Archivo > Nuevo
  2. Define el nombre del proyecto: “Dime algo”.
  3. Pulsa en el botón Reconocer textos.
  4. Se mostrarán las 3 fases del diseño del modelo ML.
Imagen 05. Pasos del diseño del modelo en LML

Entrenar el modelo

El siguiente paso es entrenar el modelo. El tipo de aprendizaje que se plantea es supervisado. Para ello se deben definir las categorías e introducir ejemplos de cada una.

Imagen 06.  Entrenamiento del modelo ML con reconocimiento de texto como positivo y negativo

En este caso vamos a crear 2 clases de textos: positivo y negativo, pulsando en el botón +Añadir nueva clase de textos. Luego en cada clase pulsa en el botón +Añadir texto para incorporar al menos 6 ejemplos para cada tipo.

Aprender

En esta fase el sistema crea el modelo a partir de los datos aportados en el entrenamiento. Para ello pulsa en el botón Aprender a reconocer textos. Cada vez que modifiquemos la información del entrenamiento, será necesario volver a pulsar en este botón para pillar los cambios introducidos en el entrenamiento.

Imagen 07. Fase de aprendizaje y construcción del modelo ML

Probar

Tras la elaboración del modelo (aprendizaje), se mostrará un sencillo interfaz donde podemos introducir el mensaje y comprobar cómo el modelo lo clasifica: positivo o negativo. Como puedes apreciar se indica el % de confianza de esa decisión.

Imagen 08. Proceso de prueba del modelo ML

Programa Scratch

Se puede crear un programa Scratch utilizando este modelo de aprendizaje automático. Para ello pulsa en el botón con el icono de Scratch.

Desde Scratch sitúa un fondo de escenario y el personaje Pico de la galería de personajes.

Imagen 09. Escenario del proyecto “Dime algo”

En la pestaña de disfraces se definen 3 estados: reposo, positivo y negativo.

Imagen 10. Disfraces del personaje Giga en el proyecto “Díme algo”

En la parte inferior del panel de bloques se dispone de una nueva categoría de bloques que permite conectar el programa Scratch con el modelo entrenado:

  • clasificar el texto … : devuelve la categoría donde se clasifica el texto que se introduce como argumento.
  • confianza para el texto … : devuelve el % de confianza de la predicción del modelo para el texto que se introduce como argumento.
  • estado del modelo … : retorna el estado del modelo mL: entrenado o no entrenado.
  • Añade el texto … a la clase … : añade el texto que se introduce como argumento a la categoría que se introduce como argumento.
  • Aprende de los textos y espera: crea el nuevo modelo ML. Es necesario hacer esta operación cuando se añaden nuevos textos a las clases  tras un entrenamiento.
Imagen 11.  Paleta de bloques del modelo ML en Scratch para el reconocimiento de textos

El programa Scratch que se puede crear para utilizar el modelo ML se recoge en la siguiente imagen.

Imagen 12. Código Scratch del programa “Hazme feliz”

Explicación

  • Al hacer clic en bandera verde se iniciará el programa
  • Se cambia el disfraz a “giga-reposo” para comenzar.
  • Se define un bucle “por siempre” con la siguiente rutina …
  • Preguntar “Díme algo” y esperar
  • Si la clase que devuelve el modelo ML con la respuesta es positivo entonces
  • Cambia el disfraz a “giga-feliz”.
  • Si no
  • Cambia el disfraz a “giga-triste”
  • Cambiar disfraz a “giga-reposo” para volver a hacer la pregunta.

Entrenar el modelo ML desde Scratch

Es posible modificar el programa Scratch para que permita seguir entrenando y mejorando el modelo ML creado. Para ello utilizamos además los bloques Añade el texto … a la clase … y Aprende de los textos y espera. La rutina de Scratch se amplía preguntando al usuario tras el resultado si la máquina ha acertado o no. Si ha acertado se deja como está y si no ha acertado la respuesta recogida se añade a la etiqueta contraria rehaciendo de nuevo el modelo para el siguiente intento. En la siguiente imagen se expone este script.

Imagen 13. Program Scratch ampliado para el entrenamiento del modelo ML “Hazme feliz”

Observa que cuando indicas que “N”o he acertado, la expresión se añade a la categoría contraria y se rehace el modelo ML.

Proyecto “Perros y gatos”

Descripción

Con LML también podemos crear proyectos de reconocimiento de imágenes. En este caso vamos a crear un pequeño programa que reconozca si una foto que le mostramos por la cámara web de la computadora es un perro o es un gato emitiendo en cada caso su sonido característico.

Imagen 14. Programa Scratch vinculado al modelo ML “Perros y gatos”

Crear el proyecto

  1. Desde la editor de LML selecciona Archivo > Nuevo
  2. Define el nombre del proyecto: “Perros y gatos”
  3. Pulsa en el botón Reconocer imágenes.

Entrenar el modelo

El siguiente paso es entrenar el modelo. El tipo de aprendizaje que se plantea es supervisado. Para ello se deben definir las categorías e introducir ejemplos de cada una.

Imagen 15. Entrenamiento del modelo ML con reconocimiento de imágenes de perros y gatos

En este caso vamos a crear 2 clases de imágenes: perros y gatos, pulsando en el botón +Añadir nueva clase de imágenes. Luego en cada clase pulsa en el botón +Añadir imagen para incorporar al menos 8 ejemplos de imágenes que hemos descargado, por ejemplo, de Google Imágenes. Otra posibilidad es pulsar en +Añadir foto y realizar capturas de la webcam del ordenador.

Aprender

En esta fase el sistema crea el modelo a partir de los datos aportados en el entrenamiento. Para ello pulsa en el botón Aprender a reconocer imágenes. Cada vez que modifiquemos la información del entrenamiento, será necesario volver a pulsar en este botón para pillar los cambios introducidos en el entrenamiento.

Imagen 16. Fase de aprendizaje y construcción del modelo ML

Probar

Tras la elaboración del modelo (aprendizaje), se mostrará un sencillo interfaz donde podemos subir un archivo de foto o realizar una captura a través de la webcam para comprobar cómo el modelo ML lo clasifica: gatos o perros. Como puedes apreciar se indica el % de confianza de esa decisión.

Imagen 17. Proceso de prueba del modelo ML

Programa Scratch

Se puede crear un programa Scratch utilizando este modelo de aprendizaje automático. Para ello pulsa en el botón con el icono de Scratch. En el programa usaremos el personaje por defecto de Scratch. En la pestaña de Sonidos tendremos dos audios: miau y guau.

Imagen 18. Sonidos del personaje Scratch en el proyecto “Perros y gatos”

En la parte inferior del panel de bloques se dispone de una nueva categoría de bloques que permite conectar el programa Scratch con el modelo entrenado cuando estamos trabajando el reconocimiento de imágenes:

  • Disfraz actual: devuelve la imagen del disfraz actual del sprite.
  • Imagen de vídeo: devuelve la imagen capturada por la webcam.
  • Poner vídeo ON/OFF: enciende o desactiva la cámara web.
  • Clasificar imagen … : devuelve la categoría donde se clasifica la imagen que se introduce como argumento.
  • Confianza para la imagen … : devuelve el % de confianza de la predicción del modelo para la imagen que se introduce como argumento.
  • Añadir imagen … a la clase … : añade la imagen que se introduce como argumento a la categoría que se introduce como argumento.
  • Aprender del conjunto de imágenes: crea el nuevo modelo ML. Es necesario hacer esta operación cuando se añaden nuevas imágenes  a las clases  tras un entrenamiento.
  • Cuando el modelo se ha entregado: es un evento que se ejecuta cuando el modelo ya ha realizado su entrenamiento.
Imagen 19. Paleta de bloques del modelo ML en Scratch para el reconocimiento de imágenes

El programa Scratch que se puede crear para utilizar el modelo ML se recoge en la siguiente imagen.

Imagen 20. Código Scratch del programa “Perros y gatos”

Explicación

  • Al hacer clic en bandera verde se iniciará el programa
  • Se activa el vídeo para capturar imágenes desde la webcam.
  • Se define un bucle “por siempre” con la siguiente rutina …
  • Si la confianza de la imagen es inferior al 70 % entonces
  • Se mostrará el mensaje “No estoy seguro”. Será lo que ocurra cuando reconozca imágenes de otros animales.
  • Si la confianza es superior al 70% entonces …
  • Si la imagen se clasifica en la clase gatos entonces
  • Se muestra el mensaje “Es un GATO” y sonará un maullido
  • Si no (será el caso de un perro)
  • Se muestra el mensaje “Es un PERRO” y sonará un ladrido.
Imagen 21. Reconocimiento de imágenes con el programa de Scratch “Perros y gatos”.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *