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:
- Entrenamiento. Recopilación de un conjunto amplio de datos que se etiquetan y categorizan por el alumno de una forma manual.
- 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.
- 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.
- 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.
Entre las aplicaciones más populares que permiten trabajar el ML con el alumnado cabe destacar las siguientes:
- Machine Learning For Kids (ML4K)
- LearningML
- Teachable Machine
- Cognimates
- Personal Image Classifier
- PictoBlox
En este artículo se ejemplifica cómo utilizar LearningML.
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.
Cada experiencia de ML que se puede desarrollar con esta plataforma consta de 4 fases:
- 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.
- Aprendizaje. A continuación se elabora un modelo de ML.
- Prueba. El sistema creado es capaz de clasificar correctamente nuevos datos, distintos pero similares a los datos del conjunto de entrenamiento.
- 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.
Crear el proyecto
- Desde la editor de LML selecciona Archivo > Nuevo
- Define el nombre del proyecto: “Dime algo”.
- Pulsa en el botón Reconocer textos.
- Se mostrarán las 3 fases del diseño del modelo ML.
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.
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.
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.
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.
En la pestaña de disfraces se definen 3 estados: reposo, positivo y negativo.
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.
El programa Scratch que se puede crear para utilizar el modelo ML se recoge en la siguiente imagen.
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.
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.
Crear el proyecto
- Desde la editor de LML selecciona Archivo > Nuevo
- Define el nombre del proyecto: “Perros y gatos”
- 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.
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.
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.
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.
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.
El programa Scratch que se puede crear para utilizar el modelo ML se recoge en la siguiente imagen.
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.