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

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.

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.

Bloques: al hacer clic en la bandera verde se activa el vídeo; al presionar espacio, jugador toma Classify item de la imagen de vídeo y confianzajugador toma Confidence for item; si confianzajugador < 0,6 se dice No estoy seguro, repite.
Captura 1: arranque del vídeo, lectura de tu mano y comprobación de la confianza.

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.

Bloques: ia toma un número aleatorio entre 1 y 3; según su valor nombreia toma piedra, papel o tijera; se dice nombreia; si jugador = nombreia se dice Empate.
Captura 2: la IA elige su jugada y se comprueba el empate.

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.

Bloques: si jugador es papel y nombreia es piedra, Ganas tú y se suma 1 a puntosjugador; si no, Gana la IA y se suma 1 a ia (debe ser puntosia).
Captura 3: las combinaciones que ganan el jugador y el caso en que gana la IA. En esta captura, el marcador de la IA aparece como ia: cámbialo a puntosia para que no choque con la jugada aleatoria.

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

  1. Juega 10 partidas y apunta en papel cada resultado.
  2. Anota también cuántas veces la IA no estaba segura.
  3. 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

Retos

  1. Haz que funcione. Consigue una partida completa con los tres gestos.
  2. Modifica algo. Cambia el umbral de confianza y observa cuántas jugadas se cuentan.
  3. Añade un gesto. Un quinto gesto necesita su propia clase en LearningML y su propio bloque en Scratch.
  4. Guarda los datos. Lleva un registro de 30 partidas y calcula el porcentaje de aciertos de la IA.
  5. Representa los datos. Haz una gráfica de barras con las jugadas de cada tipo.
  6. 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