martes, 24 de marzo de 2015

Inteligencia Artificial para tontos

Hola. Mi nombre es HAL-9000.

Mucha gente confunde la Inteligencia Artificial con hacer inteligentes a las máquinas. Hay quien cree posible un Apocalipsis nuclear o una rebelión robótica por culpa de una mala IA. Bueno, podría darse por un error de programación que lanzase misiles por error o en un lugar equivocado, pero no porque una máquina decida que tiene que exterminarnos. Voy a tratar de explicaros cómo funciona la inteligencia artificial y desmentir aquellos mitos relacionados con la misma.

 Funcionamiento de una IA

La IA no es inteligente y realmente no aprende de nosotros como nos hacen creer, sino que es una ilusión. La más básica, que no "aprende" de nosotros, se basa únicamente en los datos del sistema. Es decir, si en un juego de lucha pulsamos la patada, la IA va a valorar que lo mejor es cubrirse salvo que pueda realizar un ataque más rápido que no sólo anule el tuyo, sino que además, te haga daño. Lo que pasa es que para que no sean invencibles, introducen cierto componente aleatorio (al azar) para fallar lo suficiente como para no frustrar al jugador. A veces ese componente aleatorio no existe porque se entiende que la IA tiene ciertos límites y hacerlo lo más difícil posible es lo interesante, como en un juego de ajedrez. El modo de realizar una IA depende del tipo de juego o funcionalidad deseada (robots, juguetes, videojuegos...). Se trata de puntuar cada una de las posibles acciones y elegir la de mayor puntuación.

Un ejemplo sencillo con el tres en raya.
Empecemos por algo básico como la IA de un tres en raya. Como sabéis, tenemos un tablero de nueve casillas (3x3). En la imagen superior, suponiendo que la IA fuese la X, tendría un movimiento ganador que valdría 100 puntos, un movimiento que evita perder en el siguiente turno (3 círculos a la izquierda) y valoraremos con 50 puntos, y un movimiento que hará que perdamos (en la esquina) al siguiente turno que valdrá 0 puntos. La IA prueba un movimiento y comprueba si ha ganado o evita perder. En base a eso le da las puntuaciones posibles.

Este ejemplo sólo tiene un turno, pero puede hacerse para que estudie varios turnos en adelante como hacemos nosotros. Cuanto más complejo sea el juego, más tiempo llevará calcular las posibilidades, como pasa en los juegos de ajedrez que al tener tantas fichas y casillas, hay demasiados movimientos y se usan diversos métodos para el comienzo, como hacer movimientos prefijados  hasta que se reducen las opciones o dejar de calcular pasado un tiempo y escoger la opción con mayor puntuación pasado ese tiempo. La puntuación en el caso del ajedrez se basaría en la puntuación de las fichas comidas por su importancia, las fichas expuestas y la cantidad de casillas del tablero que controlas pudiendo comer en el próximo movimiento o las que puede controlar el contrario. Esa es la IA, digamos más básica, que realmente es poco más que una evolución de la electromecánica. Pulsas un botón y se abre una puerta. Pasas por delante de un sensor de movimiento y se abre la puerta automática. Si desarrollamos eso a un videojuego, aparece esa famosa IA.

Hay un tipo de IA algo más avanzada, que es la que nos dicen que aprende y que tanto nos maravilla cuando leemos algo así. Realmente es una IA como la anterior, pero guarda un registro de nuestras acciones en el juego o de los resultados de sus acciones en un robot. De ese modo, al tener más datos, para puntuar las posibles acciones, se mejora la IA. Eso permite que un juego FPS vea que nos cubrimos más de la cuenta porque somos unos cobardes y decida que lo primero que debe hacer es lanzarnos una granada para poder acribillarnos cuando salgamos. Es una acción que ya tenía en cuenta la IA, pero que gana más puntos porque abusamos de esa cobertura y sabe que nos lo pondrá más difícil. Es una forma de obligarnos a buscar otras estrategias y hacer más difícil el juego. Si por el contrario somos unos temerarios que vamos a pecho descubierto con un cartel en la frente que dice "Nasío pa diñarla", pues los malos tratarán de tener peor puntería para no frustrar demasiado al jugador.

Limitaciones de la IA

Se dice que la IA es como máximo, tan inteligente como su creador, pero no es cierto. Una IA es capaz de anticipar movimientos en ajedrez más allá de los que anticipe su creador, por lo que para jugar al ajedrez sería más inteligente. Aunque en la mayoría de los casos, será al revés. Tendremos una IA bastante más tonta que un humano, porque si nos salimos de los tableros, resulta bastante complicado de programar, así como encontrar la puntuación equilibrada para cada acción.

En cualquier caso, la IA tiene otras limitaciones más allá de lo hábil que sea. Una IA no puede hacer nada que no se le haya preprogramado. Es decir, si un robot con ruedas no contempla el movimiento en su IA (digamos que las ruedas las controlamos a mano y la IA es para coger objetos con brazos mecánicos, por ejemplo), esa IA, aunque "aprendiese", no sería capaz de moverse de un lado a otro usando sus ruedas y tampoco aprendería a moverse usando los brazos para arrastrarse. Podría aprender a usar más o menos fuerza prensil al coger ciertos objetos o a identificar el asa de los objetos para cogerlos por puntos resistentes, pero jamás andaría la IA de este ejemplo.

Así pues, una IA que "aprenda" puede mejorar la función para la que está programada, pero dentro de las acciones posibles que tiene contempladas. Jamás podrá inventarse acciones nuevas, aunque sí combinar las disponibles.

Máquinas enfadadas en huelga porque quieren más electricidad y trabajar menos horas.

Desmitificando a la IA

Para Skynet, en el supuesto de que existiera, sería posible lanzar un ataque contra el enemigo sin una razón válida porque malinterprete los datos. Eso sería uno de los famosos bugs. Es decir, un error de programación, en este caso con consecuencias muy graves. Afortunadamente, Skynet no podría hacer que una fábrica de maquinaria cambiase su programación para crear robots y mucho menos dotarlos de una inteligencia artificial asesina para acabar con toda la humanidad. La única forma de que eso ocurriese es que el programador de la IA fuese un temerario bromista que encontrarse divertido el fin de la humanidad.

¿Podría un robot programado para abrir puertas aprender a romperlas? Pues sí. Cuando tratamos de abrir una puerta, primero buscamos el pomo y lo accionamos. Si no vemos pomo, entendemos que es una puerta que tenemos que empujar. Ese robot, con una IA de las que aprenden, buscaría el pomo tratando de identificarlo comparándolo con fotografías de pomos y puertas reales en su base de datos. Si no lo encuentra, probará a empujar la puerta. ¿Qué pasaría si la puerta simplemente tuviese un pomo en el otro lado porque fuese una salida o si sólo se abriese con cerradura tirando de la llave? Pues que si la IA está mal diseñada, probará a empujar una puerta que no es para empujarla. Empezaría aplicando poca fuerza para no romper las puertas de cristal, y aumentando la fuerza dentro de los límites que puede aplicar. Si la puerta es más débil que el robot, cedería y se rompería. El robot no sabría que la ha roto, pero sí sabría que tiene acceso al otro lado de la puerta, por lo que valoraría esa acción como positiva y la guardaría en su base de datos de aprendizaje, por lo que en el futuro podría repetirlo con éxito hasta otorgarle a esa acción tanta puntuación que la prefiera a usar el pomo.

Obviamente estaríamos hablando de una IA defectuosa que causaría un efecto no deseado, que en otros casos podría implicar la muerte de un humano, pero la máquina no tendría intención asesina si no se le programa para eso. La máquina simplemente buscaría el método más eficaz de realizar la acción para la que estaba diseñado. En este caso, abrir puertas, pero en un dron de combate podría simplemente atacar a todos los humanos que no emitan una señal amistosa. Es decir, los del ejército amigo llevarían algún aparato para ser identificados como daños colaterales a evitar y se centraría en acabar con los demás objetivos armados para no acabar con civiles inocentes tampoco. Sería bastante complicado, pero bastante posible y hace mucho que se están desarrollando este tipo de IAs.

Conclusión

Podemos sentirnos seguros. No habrá un apocalipsis robótico ni nuclear. No nos encontraremos con robots defectuosos que pretendan matarnos. No se rebelará la tostadora poniéndose en huelga dejándonos sin desayunar y la Thermomix no tratará de destruir voluntariamente nuestras lengüetas de cocina activando las cuchillas con la tapa abierta, aunque podría ocurrirnos si se estropease el "sensor" (es un interruptor en realidad) de la tapa.