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.

32 comentarios:

  1. ¡Yo pensaba que esto iba de videojuegos!

    ¿Alguién más ha leído esto? :
    <>

    Sobre todo el tocho que escribes, pues creo que la inmensa mayoría de personas saben lo explicas en mayor o menor medida. Lo cual no quita que ni tú ni yo sepamos como serán las I.As del futuro, seguirán basándose en decisiones preprogramadas, pero cada vez con mayor capacidad de aprendizaje "autodidacta", lo que las hará más propensas a aprender cosas inútiles, erróneas o peligrosas.
    Poniendo el ejemplo del tres en raya, en lugar de programar que la I.A evalue y puntué movimientos, se puede programar una I.A que solo sepa que hay que poner un símbolo en una casilla del tablero cada turno, y quien haga línea de tres símbolos sea el vencedor. Sin ningún tipo de evaluación previa, la I.A pondrá su símbolo en cualquier casilla posible, pero con capacidad de aprendizaje la IA empezaría a reconocer movimientos que le conducen a la derrota y a corregirlos con el fin de obtener la victoria. Al final, si el rival está a la altura nadie ganaría nunca en el caso del tres en raya. Con el avance tecnológico, la investigación en la I.A y todos los esfuerzos que se realizan con el fin de entender "el objeto más complejo del universo conocido": el cerebro humano, no es descabellado pensar que se podrán crear I.As avanzadas y de un funcionamiento más parecido al pensamiento humano, y que sí aprendan de su entorno.

    En cualquier caso, habrá un apocalipsis robótico, no lo dudes. Con suerte no viviremos para verlo, pero pasará, solo que no será provocado por una I.A, si no por una I.A controlada por un grupo de humanos con intención de gobernar a todos.

    ResponderEliminar
    Respuestas
    1. Lo que no sale entre <> es lo siguiente:
      Cuando tratamos de abrir una puerta, primero buscamos el porno y lo accionamos. Si no vemos porno, entendemos que es una puerta que tenemos que empujar

      Eliminar
  2. Más allá de los videojuegos, lo de la IA a veces sí es para tener miedo, pero no porque se rebelen como dices tú que no pasará, sino por la programación a propósito que se le da. Los drones de combate están a la orden del día...

    ResponderEliminar
  3. No tengo nada que añadir a lo comentado, sólo esto:

    Ubisoft gobernara al mundo, sí no lo ecreen sólo vean esa imagen de terminator xD

    ResponderEliminar
  4. Este artículo me decepciona y me alegra al mismo tiempo xD

    Naah, ahora en serio, después de hacer un poco de programación te das cuenta de como funcionan estas cosas, y te quedas aún más maravillado por la complejidad que llegan a tener algunas (pese a que nos parezcan tontas).

    PD: Recomiendo el libro "Génesis" de Bernard Beckett

    ResponderEliminar
    Respuestas
    1. Yo con lo poco que hice ya me maravilla hasta el juego más simple XDD Lleva la leche de tiempo hacer cualquier IA...

      Eliminar
  5. "Podemos sentirnos seguros. No habrá un apocalipsis robótico ni nuclear."

    Con la tecnologia de IA actual definitivamente no. Pero en un futuro sigue siendo una posibilidad si no se tratan con el cuidado adecuado. Por ejemplo, una IA alimentada por un computador cuántico. Mas vale ser miedosos y precavidos. xD

    ResponderEliminar
    Respuestas
    1. La IA no depende del procesador, aunque están tratando de replicar las redes neuronales para poder solucionar otro tipo de problemas lógicos. En definitiva la IA sólo puede hacer lo que le hayamos ordenado y su aprendizaje se aplica únicamente a cómo hacerlo.

      Eliminar
    2. Segun por lo que he leído, la computación cuantica podría - en teoria - llevarnos a lo que hoy conocemos como "mecanica cuantica" dando un avance enorme en cuanto a "estados cuanticos computacionales" y es que, si en teoria, aplicamos la paradoja de Schrödinger a los sistemas computacionales y le sumamos una IA, es muy probable que la misma IA pueda desarrollarse como lo vemos en CORTANA, donde no hay un estado absoluto de las respuestas ni de las preguntas, si no que simplemente se den todas las respuestas posibles a las preguntas probables.

      Obviamente hoy se programan las IA. Pero mas adelante si no se tratan con cuidado las IA podrian aprender a reprogramarse a si mismas que es el objetivo primordial del estudio y desarrollos de las IA's: crear inteligencias artificiales.

      Eliminar
  6. El comentario de la imágen de Terminator es brutal xDD

    ResponderEliminar
  7. Esta claro que aplica perfecto para las IAs conocidas a dia de hoy, pero en mayor o menor medida y debido a la complejidad y tamaño de informacion que podrian incluir en un futuro, no es descartable que en algun momento una maquina "piense" por si misma entendiendose como no solo entender lo que ocurre a traves de prueba y error, sino a futuro y lo que desencadenaria alguna accion... eso si para ello falta mucho (muchisimo diria yo) por lo mismo expuesto.

    ResponderEliminar
    Respuestas
    1. No me he debido explicar lo suficientemente claro, pero una máquina no puede inventar nuevos objetivos. Nunca piensa. Sólo realiza los cálculos que le indique el programador y éstos están siempre orientados a un fin. La máquina no puede cambiar la finalidad de sus acciones, ni puede aprender a modificarse o improvisar nuevas soluciones para su finalidad si no están contempladas en su IA. La IA no es más que una ilusión.

      Yo soy desarrollador y lo tengo más que claro tras haber hecho varias IAs, pero tal vez los legos en la materia no lo vean. Mi propósito era explicarlo de forma sencilla con vocabulario común, pero obviamente he fallado. ¿Hay algo que pueda explicar mejor en el artículo? :)

      Eliminar
    2. No no creo que esta muy bien explicado, lo que pasa es que digo que a futuro entre la gran cantidad de informacion del codigo de estas (por ende mas bugs) y esa obsesion por buscarle 3 pies al gato de parte de algunos que ya intentan crear una IA con sentimientos, no veo tan descartable como tu la situacion... vamos lo veo "de momento" tan descartable, como la gente de la edad media el hecho de que la tierra fuese redonda o que esto fuese un planeta y no el centro del universo.

      Eliminar
    3. De hecho como tu yo tambien lo veo imposible por muchos y diversos motivos, pero insisto eso en la actualidad.

      Eliminar
    4. A mí es que me parece imposible por cómo funciona la programación. Cuando se programa, sólo existen órdenes y condiciones para aplicarlas. La inteligencia en cambio implica emociones, que las puedes simular sólo en parte.

      Un autómata funciona por estados. La programación lógica normalmente se usa en maquinaria industrial, pero para el tema de simular una IA también. El problema es que las acciones siguen estando definidas por el programador. Por ejemplo, supongamos que un robot tiene tres estados de ánimo: Alegre, triste y enfadado.

      Si está alegre o triste y le pegas (activando un sensor de presión, por ejemplo), pasa a estado enfadado. Cuando está enfadado, tiene un número de acciones disponibles como ignorarte o dispararte bolitas de poliespan.

      En el caso de estar enfadado, podría hacer esas acciones, pero nunca podría coger un hacha y perseguirte si no está programado para eso. La razón es que la máquina NO puede, ni podrá entender que está enfadada. Sólo es un dato más de su memoria que le indica las acciones disponibles.

      Eliminar
    5. Pero eso con la programacion actual, insisto pueden pasar mucho tiempo para que cambie ello pero puede darse al caso que cambie... si le dices a Bill Gates (o al que quieras de la epoca de win 1), que en menos de 50 años existirian telefonos inalambricos que tendrian mucha mas potencia de la que el mismo consideraria obsena e imposible, se cag* de risa en tu cara... otro ejemplo seria la transmision de datos por internet comparas los primeros modems con la conexion de no se Corea y le dices eso es imposible.

      Eliminar
    6. Ademas que olvidas un pequeño detalle, no solo la tecnologia avanza la forma de programar tambien, recuerda que al inicio todo era lenguaje maquina, despues compiladores y en la actualidad con interfaces mas amigables. Se que en este caso es practicamente solo usabilidad pero eso no quita que pueda cambiar tambien de forma.

      Eliminar
  8. Necesitamos cerebros positronicos ya.

    ResponderEliminar
  9. oye, os habéis cargado media ciencia ficción, pero la verdad es que ha estado interesante y hasta ...educativo...¿quien ha dicho eso?

    seguid así

    pd: oye, ya que estamos para cosas para tontos, ¿como se crea una cuenta con avatar aquí y tal? por favor, recordar mis mas y menos con open id me da tanta nostalgia como repelús

    ResponderEliminar
    Respuestas
    1. Te puedes crear fácilmente una cuenta de gMail y ponerle un avatar. Esa misma cuenta te serviría para esto.

      Eliminar
    2. po si, funciona, gracias

      a mi esto de los twisters y las redes socialistas esas es que se me escapan

      Eliminar
    3. ¿Este es el kabuki que conozco? ¿cuenta confirmada?

      Eliminar
    4. el mismo, mamoncete xd, ya echaba de menos hablar de anime con ustedes...

      porque habrá sección de anime no? ya saben...el anime de primavera la sangre ni me altera...

      Eliminar
    5. ¡Ha vuelto, en forma de chapa! XD

      Eliminar
  10. Espero que no salga duplicado...

    Decía que me ha gustado mucho el artículo, pero que pienso como algunos que me parece aventurado asegurar que no podrá existir nunca una IA que aprenda como lo hacemos los humanos. Está claro que la IA que conocemos a día de hoy es imposible que haga tal cosa, pero quien sabe si en un futuro (bastante lejano seguramente) se logrará desarrollar algo artificial que sea equivalente a un cerebro humano y sepa capaz de pensar. A fin de cuenta, no somos más que la combinación de elementos y energía...

    PD: Soy Tarod de VX. Espero que vaya bien esta nueva aventura. De momento aquí tendrán un lector fiel

    ResponderEliminar
    Respuestas
    1. Me alegro de que te haya gustado. Gracias. :)

      El problema no es la tecnología que desarrollemos, sino la forma de hacer programas. No existe posibilidad de que se expanda el código automáticamente. Sólo se puede hacer que el código existente sea más eficaz por usar una base de datos más completa a modo de "experiencia".

      Tú eres capaz, en caso de necesidad, de crearte una herramienta nueva. Por ejemplo, quieres alcanzar un objeto demasiado alto y no tienes una silla para subirte. Buscas algo alargado y lo usas para empujar ese objeto hacia ti. Si la máquina no tiene programado usar algo alargado para alcanzarlo, no será capaz de descubrirlo por sí misma.

      Eliminar
    2. Vale, pero eso no deja de ser el funcionamiento de la actual IA. La diferencia es que yo no cierro la puerta a la posibilidad de desarrollar otro tipo de IA que no esté basada simplemente en la programación y entonces, pueda aprender por si misma... (aunque entonces igual habría que llamarle de otra forma y no fuese una IA al uso...).

      Eliminar
  11. por cierto y perdon por el offtopic (empezamos bien), pero, imaginaos que quisiera mandaros una review de la new 3ds para que la publicarais, eso si, siempre que os gustara y que estuvierais de acuerdo (sin compromiso hoygan) ¿no tenéis un correo de contacto o algo parecido?

    advierto que esto de publicar en blogs no se nada porque me perdí el cursillo

    ResponderEliminar
    Respuestas
    1. No habría problema. Ponte en contacto con Artume y te puede hacer editor.

      P.D.: Te he eliminado un comentario igual que este porque salía repetido.

      Eliminar
    2. Kabuki, esa es una opción la que te dijo Konosoke. Pero si quieres algo más casual acabo de abrir una cuenta de correo para el blog, así que ahí leeremos todo lo que nos mandéis y obviamente iría bajo vuestro nombre, o si es información pues una mención.

      Eliminar
    3. mola, cuando termine os lo mando

      Eliminar