Thursday, January 5, 2017

“Watson, te necesito”

Hace poco pusieron en la televisión una reposición de una famosa serie que marcó mi infancia en los 80’s, “El coche fantástico” (Knight Rider).
¿Quién no ha escuchado al protagonista Michael Knight decir esa mítica frase “KITT, te necesito”, y ha visto cómo raudo y veloz aparecía un coche de la nada, saltando y acelerando para recoger al protagonista que se encontraba en peligro?


Un coche que entiende, razona, aprende e interactúa; uhmmm. Hace 30 años, este coche que se comportaba como los humanos era fantástico. Y todo gracias a KITT (Knight Industries Two Thousand), su computadora central.
De repente, dejé de ver la serie, y a mi memoria vinieron aquellas tardes en que intenté hacer un programa en BASIC con mi ZX Spectrum 48K, intentando simular un KITT. Creo que conseguí que dijera algo aleatorio! Bueno, una locura para la época.
La de tardes que habré pasado diseñando sobre papel diferentes modelos de coches inteligentes para luego recortarlos, pegarlos y jugar con ellos. Pues bien, podía construir casi de todo, menos lo más importante: a KITT.
Miré a mi hijo de 10 años y le dije: “Nico, vamos a hacer un juego sobre el coche fantástico, y vamos a crear a KITT”. Y no hay nada mejor para enseñar a un niño que jugar como un niño.


La puesta en marcha de KITT

Para ello, necesitábamos servicios que nos proporcionaran IA y una plataforma de desarrollo para ponerlo todo en marcha con el mínimo coste y esfuerzo posible. Tardamos menos de un día en realizar la base del juego usando la solución cognitiva IBM Watson para que nuestro sistema KITT pudiera ser algo parecido a un humano.

 

KITT, entiende

Lo primero que hay que hacer es que nuestro sistema KITT sea capaz de entender.
KITT debe entender los datos que le proporcionamos; por ejemplo, la mítica frase “KITT, te necesito”.
Para llevar a cabo esta tarea, se usan los siguientes servicios cognitivos:
•    Alchemy API: permite entender contenido y contexto (señales de tráfico, avisos…)
•    Watson Visual Recognition: analiza imágenes, objetos, caras.
Mola ¿verdad? Y para que ningún usuario del mundo se sienta excluido le añadimos el siguiente servicio y ya tenemos nuestro sistema multilenguaje:
•    Watson Language translator: traductor de texto

 

KITT, razona

Pero ¿cómo podemos hacer que procese todo lo que entiende? ¿En otras palabras, que pueda razonar?
KITT puede usar la lógica, pero la idea es darle instrucciones para que deduzca, y para ello debe tener un conocimiento base. De nada nos sirve razonar si no tenemos sobre qué hacerlo.
Sobre el ejemplo de la mítica frase “KITT, te necesito”, ¿qué significado puede tener para una máquina? ¿Significa “ven aquí porque te necesito” o “te necesito porque te quiero”? uhmm.
Un problema que surge aquí es que los humanos tenemos de todo menos lógica, y no todo es falso o verdadero (0 o 1).
Para solucionar este problema hay que aplicar lógica difusa, ya que permite trabajar con conceptos imprecisos de varios factores de porcentajes (de 0 a 100%), y algoritmos tales como reconocimiento de voz, entender el contexto de la frase o analizar la imagen del usuario cuando dice una palabra.
Para ayudar a nuestro KITT a razonar, le añadimos los siguientes servicios cognitivos, que pueden proveer recomendaciones personalizadas, gracias a que es capaz de entender la personalidad del usuario, su tono y emociones:
•    Watson Personality Insight: extrae y analiza un conjunto de atributos sobre la personalidad para obtener más información sobre la persona.
•    Watson Natural Language Classifier: permite crear interfaces de lenguaje natural.
•    Watson Tone Analyzer: análisis lingüístico para detectar tres tipos de tonos en un texto: emoción, tendencias sociales y estilo del lenguaje.
•    Watson Tradeoff Analytics: permite tomar una decisión basada en diferentes criterios.

 

KITT, aprende

La parte más importante de una IA es la capacidad de aprender, en otras palabras, de cambiar su comportamiento en base a nueva información.
Hay que entrenar a KITT para mejorar su sistema y que pueda ser capaz de hacer cosas para las que no se le había programado explícitamente.
La educación pasa por enviarle unos datos y su clasificación esperada, y ajustar los valores del sistema para que "absorba" ese conocimiento y pueda aplicarlo a nuevas entradas. Este patrón se utiliza en redes neuronales: se van ajustando poco a poco los pesos de sus "neuronas", hasta que sale lo que se espera.
Si la interpretación y razonamiento de la frase “KITT, te necesito” no fue la esperada – por ejemplo, el coche se paró –, hay que clasificar esta información como “no lo esperado”, con algún proceso de porcentaje de tipo “obtener y puntuar” resultado.
IBM Watson utiliza el machine learning, y para aumentar el conocimiento sobre una materia específica en aplicaciones y sistemas, aplicamos los siguientes servicios a nuestro KITT:
•    Watson Retrieve and Rank: algoritmos de aprendizaje automático.
•    Document Conversion: prepara documentación de entrada para los servicios de “retrieve and rank”.

 

KITT, interactúa

Y para terminar, a nuestro KITT lo dotamos de un “bot”. Es quizás la parte más llamativa, la que permite que KITT se comunique con nosotros y nosotros con KITT, sin tener que aprender lenguajes de programación ni miles de comandos con poco sentido.
IBM Watson dispone de los siguientes servicios para crear bots en chats, que pueden, a su vez, establecer un diálogo con el usuario:
•    Watson Dialog: combina técnicas cognitivas para ayudar a construir y entrenar a un bot.
•    Watson Speech to Text: traducción automática de voz a texto
•    Watson Text to Speech: traducción automática de texto a voz

 

Juntando todos los servicios

Ya solo queda juntar todas las piezas y empezar a desarrollar el juego del coche fantástico usando a nuestro KITT cognitivo.
Como plataforma de desarrollo utilicé IBM Bluemix que, aparte de soportar varios lenguajes de programación y servicios, además de la metodología de desarrollo DevOps, me simplifica el desarrollo y la publicación de aplicaciones en la nube. 

Aquí os dejo el enlace al juego, en fase de desarrollo, que vamos desarrollando mi hijo y yo:


La idea es que entre los dos podamos ir añadiendo durante estos meses los servicios cognitivos comentados en este artículo.
Y que me perdone la ingeniera y mecánica Bonnie de la serie; el coche no parece un Pontiac Firebird Trans Am v8, pero poco a poco seguro que lo va haciendo.

 

Inteligencia artificial en la industria automovilística

Actualmente se está librando una batalla en las empresas líderes de la industria del automovilismo en el campo de la inteligencia artificial de los coches autónomos.
HONDA presentará a principios del 2017 el modelo HONDA NeuV, un coche eléctrico basado en tecnología de IA, donde destaca un sistema llamado "emotion engine", que permitirá que el coche pueda generar artificialmente sus propias emociones.
Su rival, TOYOTA, anunció ya el año pasado la creación de una empresa de investigación y desarrollo de inteligencia artificial. La principal meta es dotar a sus coches inteligentes de tecnologías que hagan la conducción más segura.

 

El futuro

Sin duda, entramos en una era apasionante en la creación de inteligencia artificial y servicios cognitivos, que marcará un cambio tecnológico en no menos de 5 años.
Actualmente, hay creados dos servicios dentro del catálogo de servicios IoT (Internet of Thing) en IBM Bluemix enfocados en la industria automovilística:
•    Driver Behavior (IBM): analiza el comportamiento de los conductores a partir de datos de vehículos y datos contextuales.
•    Car Diagnostic API (Third Party): Ayuda a evaluar el estado de salud de un vehículo, al traducir los códigos de error OBD en un formato legible por el usuario. La base de datos incluye más de 17.000 códigos de error que se mantienen profesionalmente.

Así pues, permitid que diga la mítica frase, pero con un pequeño retoque:

“Watson, te necesito”