Nuevas Entradas

Machine Learning para niños: construye con tus hijos un bot experto de su animal favorito

Hoy les contamos como pasar una tarde entretenida haciendo un sencillo experimento de Machine Learning con nuestros niños. Es importante que los niños conozcan cómo funciona nuestro mundo. ¿Y qué mejor manera de comprender las capacidades e implicaciones del ubicuo aprendizaje automático que poder construir algo utilizando esta tecnología ellos mismos?
Imagen via Mike MacKenzie (CC BY 2.0)
Usaremos una herramienta basada en web, (no hay que instalar nada, ni  configurar nada complejo), que nos permitirá introducir a los niños en el mundo del entrenamiento de sistemas de aprendizaje automático y el tipo de cosas que se puede construir con ellos. Y de la forma que más les gusta aprender a los niños (y a los mayores también): ¡jugando!. Si no tienes hijos, ni ningún pequeño amigo más o menos a mano, no hay problema: puedes recuperar al niño/niña de tu infancia, y pasar un buen rato probándolo contigo mismo. ¿Qué te parece el plan?.
(Por cierto, les confirmamos que lo hemos probado con un auténtido “kid” de 13 años montamos un bot en aproximadamente 1,5 horas.)
La herramienta fue diseñada por Dale Lane utilizando APIs de IBM Watson Developer Cloud para usar en colegios o clubes de programación para niños. Ofrece un sencillo entorno de entrenamiento de modelos de aprendizaje automático para clasificación de texto, números o reconocimiento de imágenes. Los niños pueden crear proyectos o construir juegos con los modelos de aprendizaje que ellos mismos han entrenado con Scratch o Python, nosotros, en este ejemplo, usaremos Python.

1.  Creación de un proyecto nuevo.

Manos a la obra. La idea es crear un chatbot capaz de respondernos a preguntas sobre el tema que elijamos. Lo primero que hay que hacer es decidir sobre qué tema queremos crearlo. Puede ser:
  • Nuestro animal favorito
  • Nuestro deporte favorito
  • Nuestro personaje favorito de novela, cómic, cine, vídeo etc.
  • Nuestro colegio, nuestro barrio, nuestro país…

Lo que queramos.

Como nos gustan mucho los búhos, hemos decidido que sean los protagonistas de nuestro proyecto. A continuación, pensamos cinco cosas que se puede preguntar sobre ellos. Por ejemplo:
  • ¿Qué comen los búhos?
  • ¿En qué partes del mundo se les puede encontrar?
  • ¿Cuánto tiempo viven los búhos?
  • ¿Qué especies de búhos hay?
  • ¿Qué tamaño pueden alcanzar?
Una vez recopilada la información con la que queremos entrenar nuestro sistema, vamos a la página web de Machine Learning for Kids.
Página web de ML for Kids
Figura 1: Página web de ML for Kids
Vamos a probar la opción “Sin registro” y, si nos gusta la experiencia, nos registraremos para el próximo proyecto.
Creamos un proyecto nuevo con el botón “+ Añadir proyecto” ,que aparece en la parte superior derecha. Indicamos el nombre del proyecto, en nuestro ejemplo, Búhos, y seleccionamos de qué tipo es (reconocimiento de texto, de números o de imágenes). El nuestro es de texto. También indicamos el idioma.
Creación de un nuevo proyecto.
Figura 2: Creación de un nuevo proyecto.

2. Entrenamiento.

Ahora tendremos que “entrenar” a la computadora. Lo haremos dándole ejemplos de los que aprender. Para ello, hacemos click sobre el proyecto sobre el que queremos trabajar y nos dará tres opciones.
Navegador de proyectos
Figura 3: El proyecto, ya creado, aparece en una especie de navegador de proyectos.
Podemos abrirlo, o borrarlo.

 

Elegimos la primera “Entrenar”. 

 
Seleccionamos la opción "entrenar".
Figura 4: Seleccionamos la opción “entrenar”.

 

Y, a continuación,  “Añadir nueva etiqueta” (“Add New label”, en la versión española hay algunos mensajes que aparecen en inglés, como este)

Añadir etiqueta.
Figura 5: Añadir etiqueta.
Creamos una etiqueta “resumen” para cada una de las preguntas que nos hemos planteado sobre los búhos.  Por ejemplo, para la primera pregunta “¿Qué comen los búhos?”, podemos elegir como etiqueta “Comida”, o “Alimentación” (no admite tilde). Lo que queramos. Es sólo una etiqueta. Vamos creando una etiqueta para cada pregunta y nos queda algo así:
Etiquetas ya creadas.
Figura 6: Etiquetas ya creadas.
Para cada etiqueta, añadiremos, por lo menos 5 ejemplos. Para ello, en cada uno de los recuadros, seleccionamos “Add example” y añadimos hasta 5 formas distintas de formular esa pregunta. Por ejemplo, en Alimentación, podemos poner:
1. ¿Qué comen los búhos?
2. ¿Qué les gusta comer a los búhos?
3. ¿Qué tipo de comida prefieren los búhos?
4. Si fueras un búho, ¿qué te gustaría comer?
5. ¿Cuál es el manjar favorito de los búhos?

Y generamos 5 preguntas para cada cuadro. Queda algo así:

Ejemplo de preguntas.
Figura 7: Ejemplo de preguntas.

Hacemos lo mismo para cada una de las etiquetas (toca escribir un poco):

Escribimos formas alternativas de preguntar por cada uno de los temas.
Figura 8: Escribimos formas alternativas de preguntar por cada uno de los temas.
Una vez hecho esto, seleccionamos  “Volver al proyecto” (arriba a la izquierda) y volvemos a la pantalla que aparecía en la Figura 4. Ha llegado el momento de “Aprender y probar”. Si hemos recogido suficientes ejemplos, la máquina aprenderá a reconocer sobre qué le estamos preguntado, basándose en los ejemplos de preguntas que hemos hecho.
Con las preguntas de ejemplo entrenamos a la computadora para que identifique el tema de la pregunta.
Figura 9: Con las preguntas de ejemplo entrenamos a la computadora
para que identifique el tema de la pregunta.
La siguiente figura nos recuerda lo que hemos hecho hasta ahora, recoger 5 ejemplos de pregunta por cada tema, y el paso siguiente: pulsar el botón azul de la parte inferior izquierda para empezar el entrenamiento.
Lanzamos el entrenamiento
Figura 10: Lanzamos el entrenamiento.

En lo que se entrena el modelo, puede que nos hagan una pequeña encuesta sobre Machine Learning. Cuando termine, aparece información de estatus. Como no nos hemos registrado, nos advierten que  nuestro modelo se borrará en unas horas.
Información de estatus del modelo ya entrenado.
Figura 11: Información de estatus del modelo ya entrenado.

3. Creamos un juego en Scratch o Python.

Volvemos a la página principal del proyecto con “Volver al proyecto”. Ha llegado el momento de usar el modelo de aprendizaje automático que hemos entrenado para crear un juego en Scratch o Python. Para ello, seleccionamos la tercera opción,  “Make” (recordar Figura 4) y después, elegimos la opción Python.
Seleccionamos la opción Python
Figura 12: Seleccionamos la opción Python.
Llegamos a esta pantalla:
Usamos ML en Python.
Figura 13: Usamos ML en Python.
Nos vamos a fijar en la ventana de código, a la derecha. Copiamos las líneas que aparecen en el recuadro rojo cuyo objetivo es importar la librería “requests” y definir la función “Classify”. La primera pasa el texto que introducimos al modelo de aprendizaje automático que hemos creado y nos devuelve el resultado que mejor se aproxime.
Copiamos estas líneas de código en Python.
Figura 14: Copiamos estas líneas de código en Python.
A continuación vamos a necesitar un editor cómodo para Python. Podemos usar el que más nos guste. Nosotros vamos a usar Jupyter Notebook. Si no lo tienes instalado, en este post, Python para todos (2): ¿Qué son los Jupyter Notebooks?, puedes encontrar una forma sencilla de hacerlo. Perosi no queremos instalarnos nada, podemos usar la versión browser de Jupyter, o bien, si tenemos una cuenta Office 365 o Microsoft Account, podemos usar también los notebooks de Microsoft Azure. Nosotros hemos elegido esta última opción, pero cualquiera de las tres es perfectamente válida.
Iniciamos sesión con nuestro usuario de hotmail, live, u Office 365 en Microsoft Azure Notebooks , y creamos un proyecto nuevo con el botón “+ New Proyect” que aparece arriba a la derecha.
Creamos un proyecto nuevo.
Figura 15: Creamos un proyecto nuevo.
Le asignamos un nombre, y un ID numérico:
Asignamos nombre e ID al proyecto.
Figura 16: Asignamos nombre e ID al proyecto.

Indicamos qué tipo de proyecto es: Notebook

Indicamos que se trata de un Notebook.
Figura 17: Indicamos que se trata de un Notebook.
Asignamos un nombre al Notebook e indicamos la versión de Python con la que queremos trabajar: 3.5
 Indicamos nombre y versión.
Figura 18: Indicamos nombre y versión.
Pegamos en este notebook el código que  hemos copiado anteriormente (ver figura 14), donde se hacía una llamada a la librería requests y la definición de la función classify.
(Explicaremos paso a paso con imágenes cómo hacerlo, y al final del proceso, incorporamos la versión final editable de la que puedes copiar directamente el código para pegarlo en vuestro notebook.)
Pegamos" el código que copiamos antes-- carga de librería requests y definición de la función classify.
Figura 19: “Pegamos” el código que copiamos antes– carga de librería requests y definición de la función classify.
Ahora tenemos que definir la función respuesta: answer question. Para ello, añadiremos a continuación las siguientes líneas de código. Para cada tipo de pregunta, “class_name” generamos un bucle:
 “if  answerclass == nuestra etiqueta” print””
Para cada tipo de pregunta se genera un bucle if--print--efif.
Figura 20: Para cada tipo de pregunta se genera un bucle if–print–efif.
(Nota: Según la versión Python,  habrá que usar la función raw_input(“>”) o input(“>”) a secas)
Después, en el espacio entre “” agregaremos las respuestas que hemos buscado. Toca escribir de nuevo.
Añadimos las respuestas correspondientes a cada pregunta entre las comillas después de print.
Figura 21: Añadimos las respuestas correspondientes a cada pregunta entre las comillas después de print.

Por último, cerramos agregando la pregunta que nos va a hacer el bot:

Agregamos la pregunta que nos hará el chatbot.
Figura 22: Agregamos la pregunta que nos hará el chatbot.
(Según la versión de Python, la función print puede necesitar (), y quedar así: print(“¿Qué te gustaría…”).
Debe quedar algo así (ahora ya puedes copiar directamente el código en tu notebook):
(Github/Gist)
view rawbuhosbot.ipynb hosted with ❤ by GitHub

(Github/gist)

Ahora, ya sólo nos queda ejecutar la celda desde el menú Cell/Run Cells.

Como ya les adelantamos al principio del post, pusimos a prueba todo el proceso con Miguel, de 13 años, que eligió como tema para su bot los cerdos (es una apasionado de la biología, pero también del jamón). Para no hacerle escribir demasiado, en lugar de crear 5 etiquetas, creamos 3, eso sí, con 5 preguntas por cada una de ellas. Nos quedó así:
Versión "corta" creando sólo 3 etiquetas.
Figura 23: Versión “corta” creando sólo 3 etiquetas.
Completamos la función “answer question”como hicimos en la figura 21 con información sobre nuestro nuevo animal favorito y, al ejecutar la celda desde el menú Cell/Run Cells, nos aparece el cuadro de entrada con la pregunta : “¿Qué te gustaría saber de….?”
El bot ya está activo y le podemos preguntar.
Figura 24: El bot ya está activo y le podemos preguntar.
Y ¡ya podemos preguntar!. Nuestro bot no será “muy listo”, porque tampoco es que nos hayamos esforzado mucho en entrenarlo a conciencia, pero ahí le tenemos, dispuesto a responder nuestras preguntas a partir de la información que le hemos facilitado para “aprender”.
 Figura 25: Ejemplo del pregunta.
Figura 25: Ejemplo del pregunta.
Como no nos registramos en Machine Learning for Kidscuando el proyecto “caduque”, el bot dejará de funcionar. Si quieres volver a probarlo otro día, regístrate. En esta misma web podrás encontrar fichas sobre este proyecto e información sobre las muchas cosas que se pueden hacer. Esperamos que les haya gustado.

Deja un comentario

Tu dirección de correo no será publicada.


*


Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.