Después de algunos meses trabajando en este nuevo proyecto, ha llegado la hora de ponerlo en marcha y comenzar una nueva aventura en la tarea de acercar los fundamentos del Machine Learning y la Inteligencia Artificial, al mundo escolar.
lml_snap! es una modificación del potentísimo entorno de programación basado en bloques Snap! que incorpora nuevos bloques para programar aplicaciones informáticas capaces de reconocer textos, imágenes y conjuntos numéricos mediante técnicas de Machine Learning. Es decir, lo mismo que se puede hacer con LearningML pero con dos importantes cambios:
- Se sustituye la plataforma Scratch por Snap!
- Se elimina el editor de modelos de Machine Learning
El primer cambio era de prever. El nombre del proyecto es lo que sugiere. Sin embargo el segundo puede parecer un poco raro. ¿Cómo vamos a construir modelos de Machine Learning si no disponemos de la herramienta diseñada para ello? Pues, ¡programando!
Allá vamos!
Y es que la idea de este nuevo proyecto es acercarnos al mundo del Machine Learning completamente desde la programación. ¿Podemos crear conjuntos de datos de entrenamiento con lml_snap! Sí, programándolo. ¿Podemos construir modelos de ML con distintos algoritmos de ML con lml_snap! Sí, programándolo. ¿Podemos usar el modelo generado para hacer una aplicación informática que lo use? Obviamente sí, programando con Snap! en lugar de con Scratch.
Es decir, TODAS las fases del Machine Learning supervisado:
- Entrenamiento, donde se recopilan los datos de ejemplo que constituyen el dataset
- Aprendizaje, donde un algoritmo de ML construye el modelo a partir del dataset anterior
- Evaluación, donde se comprueba si el modelo construido responde como deseamos, y
- Aplicación, donde se incorpora el modelo de ML a una aplicación informática
Se realizan desde el propio editor de programación lml_snap! programando con los bloques de Machine Learning. Así pues, podrás incluso construir tu propio editor de modelos de ML.
La recopilación de datos de ejemplo, es decir, la construcción del dataset, se puede hacer ya que Snap! ofrece todas las características de los lenguajes de programación modernos. Por ejemplo, permite definir procedimientos que devuelven valores, esto es, funciones (Scratch no) y tanto las listas como los procedimientos son tratados como otro dato más, por lo que pueden ser asignados a variables e incluso ser pasados como argumentos de otras funciones. Esto es, las listas y los procedimientos son «ciudadanos de primera clase«. Además, podemos cargar ficheros estructurados en formato CSV o JSON y asignar su contenido a variables que contienen listas. Y por supuesto, podemos crear listas que contienen cualquier tipo de dato, incluido otra lista.
Un poquito más sobre SNAP!
Snap! es un lenguaje de programación que sobrepasa a Scratch en muchos aspectos. Por eso, es más adecuado para estudiantes a partir del 2º ciclo de secundaria e incluso primeros cursos universitarios. Una prueba de ello es que el popular proyecto The Beauty and Joy of Computing (BJC) usa Snap! como lenguaje de programación. Este proyecto es un plan de estudios introductorio de ciencias de la computación, desarrollado en la Universidad de California, Berkeley y Education Development Center, Inc. y destinado a estudiantes que no son especialistas en computación en el nivel de secundaria hasta el primer año de pre-grado.
Por eso, lml_snap! esta pensado para dar otra vuelta de tuerca al aprendizaje de las técnicas de Machine Learning y está dirigido a estudiantes que ya tienen un nivel cognitivo suficientemente desarrollado y cierto interés por el campo de las ciencias en general y de las ciencias de la computación en particular.
¿Cómo acceder?
Puedes acceder a la lml_snap! a través del enlace:
- https://snap.learningml.org
Entrarás en una instancia de Snap! propia del proyecto learningml.org que incorpora una sección denominada «learningml«. Ahí encontrarás los bloques de ML con los que construir y usar modelos de ML para el reconocimiento de textos, imágenes y conjuntos numéricos. Por otro lado, en la sección «actividades guiadas con lml_snap!«, iré añadiendo algunas actividades para mostrarte como usar estos bloques para programar aplicaciones con IA. Por lo pronto, ya puedes seguir esta, la versión para lml_snap del juego de preguntas y respuestas sobre la prehistoria de LearningML.
Espero que este nuevo proyecto sea, al menos, tan útil como lo está siendo learningML y que ayude a los docentes y estudiantes de las áreas científico-técnicas a introducir de una manera sencilla y divertida los fundamentos del Machine Learning.