Chisme 102 del Lince: piedra, papel o tijera con IA
Tutorial paso a paso. Usaremos dos pestañas abiertas a la vez: LearningML para entrenar la IA y Scratch de LearningML para programar el juego.
Recreo en el patio del IES, a la sombra del muro de Sierra Bermeja. El Lince de la Noche reta a la Gata Montesa a una partida de piedra, papel o tijera. Pierde las tres primeras. «Eso no es suerte», protesta. La Gata sonríe: «Pues que tu ordenador te diga quién gana, y que la cámara vea tu mano».
El Lince se pone a construirlo. La Gata le propone algo: que la IA aprenda sola a distinguir las tres manos con fotos de la tuya.
Introducción
Vamos a construir un juego de piedra, papel o tijera en el que el ordenador mira tu mano con la cámara, decide qué gesto estás haciendo y juega contra ti. Para eso necesitamos una IA que reconozca los tres gestos y un programa en Scratch que use esa IA para jugar.
Por qué este chisme
Es un juego que todos conocen, y eso permite centrarse en lo importante: condicionales (si ganas, si gana la IA, si hay empate), variables (guardar la jugada y los puntos) y una pregunta muy útil: ¿acierta la IA? Es la primera vez en la serie que la IA no está en un ejemplo abstracto, sino dentro de un juego que se prueba con las manos.
Cómo funciona
La IA no sabe lo que es una «piedra». Tiene una lista de ejemplos etiquetados: fotos de tu mano con la etiqueta «piedra», otras con «papel», otras con «tijera» y otras sin mano, con la etiqueta «nada». Cuando le enseñamos una foto nueva, devuelve la etiqueta que más se parece a lo que ha visto y un nivel de confianza, un número entre 0 y 1.
Ese nivel de confianza es la pieza clave. Si la IA responde «papel» con confianza 0,95, lo más probable es que acierte. Si responde «papel» con confianza 0,45, está casi adivinando. En este juego decidimos que, si la confianza es menor de 0,6, el programa dice «No estoy seguro, repite» y no cuenta la jugada.
Las reglas son las de siempre: piedra gana a tijera, tijera gana a papel y papel gana a piedra.
Qué necesitamos
- Un ordenador con cámara web y navegador (Chrome o Edge).
- LearningML: learningml.org, con el editor para entrenar y el Scratch de LearningML para programar (enlace «Ir a Scratch»).
- Papel, para apuntar los aciertos y los fallos.
Construcción
Paso 1. Pestañas abiertas
Abre dos pestañas: una con learningml.org (editor) y otra con el Scratch de LearningML.
Paso 2. Crea las clases
En el editor de LearningML, crea un proyecto de imágenes con cuatro clases: piedra, papel, tijera y nada. La clase «nada» es importante: sin ella, la IA intentará adivinar un gesto aunque no haya mano en la cámara.
Paso 3. Recoge fotos de tu mano
Activa la cámara desde el editor y haz unas 20 fotos por clase, cambiando un poco la luz, la posición y la distancia. Si todas las fotos son iguales, la IA solo aprenderá esa foto.
Las fotos se toman en el propio ordenador. No subas fotos de otros alumnos sin permiso.
Paso 4. Entrena el modelo
Entrena el modelo y prueba la IA con gestos que no estén en los ejemplos. ¿Acierta? ¿En qué gestos falla?
Paso 5. Crea las variables en Scratch
En el Scratch de LearningML, crea estas variables. El nombre importa: el programa las usa tal cual.
- jugador: lo que la IA ve en tu mano (piedra, papel, tijera o nada).
- confianzajugador: la confianza de esa respuesta, entre 0 y 1.
- ia: la jugada aleatoria del ordenador (1, 2 o 3).
- nombreia: el nombre de esa jugada (piedra, papel o tijera).
- puntosjugador y puntosia: los marcadores.
Cuidado: la variable de puntos de la IA se llama puntosia, no ia. Si usas el mismo nombre para las dos, cada turno sobrescribe los puntos con un número aleatorio.
Paso 6. Lee tu mano
Al empezar, activa la cámara. Cuando pulses la tecla espacio, el programa clasifica la imagen de la cámara y guarda la jugada y su confianza. Si la confianza es menor de 0,6, dice «No estoy seguro, repite» y no cuenta la jugada.
Paso 7. La IA elige su jugada
Si la confianza es suficiente, el ordenador elige su jugada con número aleatorio entre 1 y 3 y la guarda en ia. Con 1 es piedra, con 2 papel y con cualquier otro valor tijera. Luego dice la jugada durante 2 segundos y comprueba si hay empate con jugador = nombreia.
Paso 8. Decide quién gana
Si no hay empate, comprueba las tres combinaciones que ganan tú: piedra contra tijera, tijera contra papel y papel contra piedra. En ese caso se dice «Ganas tú» y sumas 1 a puntosjugador. Si no, gana la IA: se dice «Gana la IA» y sumas 1 a puntosia.
Para el profesorado
Antes de clase, haz tú la prueba completa: entrena el modelo, juega varias partidas y comprueba que los nombres de los bloques coinciden con los de tu versión de LearningML. Las capturas de esta página son de la versión que hemos revisado; si tu versión cambia algo, ajústalo en el paso correspondiente.
Cómo probarlo
- Juega 10 partidas y apunta en papel cada resultado.
- Anota también cuántas veces la IA no estaba segura.
- Compara: ¿acertó la IA en los gestos que tenía bien entrenados? ¿Y en los que no?
Qué estamos midiendo realmente
La IA no «ve» una mano: compara la imagen con los ejemplos que ha visto y da una confianza. Con pocas fotos, con poca luz o con una mano distinta de la que se usó para entrenar, la IA se equivoca, y lo hace con la misma seguridad aparente que cuando acierta. Esa es la lección: medir no significa necesariamente medir bien. El nivel de confianza no es una probabilidad real, es un número que la IA devuelve.
Para el aula
- ¿Qué pasa si entrenamos con fotos de una sola mano? ¿Acierta la IA con otra persona?
- ¿Cuántas fotos hacen falta para que la IA acierte al menos 9 de cada 10 veces? Hazlo con una tabla.
- ¿Cómo cambia el juego si subimos o bajamos el umbral de 0,6? ¿Qué es mejor, que no responda o que responda mal?
- Si dos compañeros entrenan la IA con fotos distintas, ¿obtienen los mismos resultados? ¿Qué diferencia hay entre «parecen iguales» y «son iguales»?
Retos
- Haz que funcione. Consigue una partida completa con los tres gestos.
- Modifica algo. Cambia el umbral de confianza y observa cuántas jugadas se cuentan.
- Añade un gesto. Un quinto gesto necesita su propia clase en LearningML y su propio bloque en Scratch.
- Guarda los datos. Lleva un registro de 30 partidas y calcula el porcentaje de aciertos de la IA.
- Representa los datos. Haz una gráfica de barras con las jugadas de cada tipo.
- Haz que otro participe. Juega contra un compañero que no haya entrenado la IA. ¿Gana más la IA o el compañero?
Qué hemos aprendido
Un juego sencillo puede enseñar a programar condicionales y variables, y también a desconfiar de una IA que nunca dice «no lo sé». El nivel de confianza es la herramienta para decidir cuándo creerla.
Fuentes
- LearningML: editor de Machine Learning y Scratch con clasificación de imágenes.
- Scratch: lenguaje de programación por bloques.