Construyendo Jarvis

Por Mark Zuckerberg, CEO de Facebook

Mi objetivo era aprender sobre el estado de la inteligencia artificial – donde estamos más allá de lo que la gente se da cuenta y donde todavía estamos lejos. Desafíos como estos siempre me llevan a aprender más de lo que esperaba, y este también me dio una mejor idea de toda la tecnología que los ingenieros de Facebook suelen utilizar, así como una visión general de la domótica.

Hasta ahora, este año he construido una IA simple con la que puedo hablar en mi teléfono y computadora, que puede controlar mi hogar, incluyendo luces, temperatura, electrodomésticos, música y seguridad, que aprende mis gustos y patrones, que puede aprender nuevas palabras y conceptos, y que incluso puede entretener a Max. Utiliza varias técnicas de inteligencia artificial, incluyendo procesamiento de lenguaje natural, reconocimiento de voz, reconocimiento de rostros y aprendizaje de refuerzo, escrito en Python, PHP y Objective C. En esta nota, explicaré lo que construí y lo que aprendí en el camino.

bmz1

Introducción: Conexión del hogar

En cierto modo, este desafío fue más fácil de lo que esperaba. De hecho, mi desafío de ejecución (también me propuse correr 365 millas en 2016) tomó más tiempo total. Pero un aspecto que era mucho más complicado de lo que esperaba era simplemente conectar y comunicarse con todos los diferentes sistemas en mi casa.

Antes de que pudiera construir cualquier IA, primero necesitaba escribir el código para conectar estos sistemas, que hablan diferentes lenguajes y protocolos. Utilizamos un sistema Crestron para nuestra iluminación, termostatos y puertas, un sistema Sonos con Spotify para música, un televisor Samsung, una cámara Nest para Max y, por supuesto, mi trabajo está conectado a los sistemas de Facebook. Tuve que revertir la ingeniería de APIs en algunos de ellos para llegar incluso al punto donde podría emitir un comando de mi computadora para encender las luces o elegir una canción para escuchar.

Además, la mayoría de los aparatos ni siquiera están conectados a Internet todavía. Es posible controlar algunos de estos mediante los interruptores de alimentación conectados a Internet que le permiten encender y apagar de forma remota. Pero a menudo eso no es suficiente. Por ejemplo, una cosa que aprendí es que es difícil encontrar una tostadora que permite empujar el pan hacia abajo mientras está apagado para que pueda iniciar automáticamente el tostado. Terminé encontrando una vieja tostadora de los años 50 y adaptándola con un interruptor conectado. Del mismo modo, descubrí que la conexión de un dispensador de alimentos para Beast o un cañón de remeras grises requeriría modificaciones de hardware para poder funcionar.

Para que los asistentes como Jarvis pudieran controlar todo en los hogares para más personas, necesitamos más dispositivos conectados y la industria necesita desarrollar APIs y estándares comunes para que los dispositivos puedan hablar entre ellos.

Lenguaje natural

bmz2

Una vez que escribí el código para que mi computadora pudiera controlar mi casa, el siguiente paso era hacerlo para poder hablar con mi computadora y el hogar de la manera en que hablaría con otra persona. Este fue un proceso de dos pasos: primero lo hice para que me pudiera comunicar usando mensajes de texto, y más tarde añadí la capacidad de hablar y hacer traducir mi discurso en un texto para que lo leyera.

Comenzó simplemente buscando palabras clave, como “dormitorio”, “luces” y “encendido” para determinar que estaba diciendo para encender las luces en el dormitorio. Rápidamente se hizo evidente que necesitaba aprender que sinónimos como “living” y “sala de estar” significan lo mismo en nuestra casa. Esto significaba construir una manera de enseñarle nuevas palabras y conceptos.

El entendimiento del contexto es importante para cualquier IA. Por ejemplo, cuando le digo que prenda el aire acondicionado en “mi oficina”, eso significa algo completamente diferente de cuando Priscilla le dice exactamente lo mismo. Eso ha causado algunos problemas! O, por ejemplo, cuando le pedís que baje las luces o reproduzca una canción sin especificar una habitación, necesita saber dónde está o podría terminar haciendo estallar la música en la habitación de Max cuando realmente necesitamos que se duerma . ¡Vaya!

La música es un dominio más interesante y complejo para el lenguaje natural porque hay demasiados artistas, canciones y álbumes para que un sistema de palabras clave lo pueda manejar. La gama de cosas que usted puede pedir es también mucho mayor. Las luces sólo se pueden girar hacia arriba o hacia abajo, pero cuando usted dice “reproducir X”, incluso variaciones sutiles pueden significar muchas cosas diferentes. Considere estas peticiones relacionadas con Adele: “reproducir someone like you”, “reproducir adele”, y “reproducir algo de adele”. Si bien se parecen frases similares, cada pedido es distinto. El primero pide por una canción específica, el segundo recomienda a un artista, y el tercero crea una lista de reproducción de las mejores canciones de Adele. A través de un sistema de retroalimentación positiva y negativa, una IA puede aprender estas diferencias.

Cuanto más contexto tiene una AI, mejor puede manejar solicitudes abiertas. En este punto, yo simplemente le pido a Jarvis que “toque algo de música” y al mirar mis últimos patrones de escucha, en su mayoría elige algo que me gustaría escuchar. Si entiende mal mi estado de ánimo, puedo simplemente decirlo, por ejemplo: “este tema no es tranquilo, reproduzca algo tranquilo”, y el sistema aprende la clasificación para este tema y la ajusta inmediatamente. También sabe si quien habla es Priscila o yo, por lo que puede hacer recomendaciones basadas en lo que cada uno de nosotros escucha. En general, he observado que usamos estas solicitudes más abiertas con más frecuencia que las solicitudes más específicas. Ningún producto comercial que conozco hace esto hoy, y esto parece una gran oportunidad.

bmz3

Visión y reconocimiento facial

Alrededor de un tercio del cerebro humano está dedicado a la visión, y hay muchos problemas importantes de IA relacionados con la comprensión de lo que está sucediendo en imágenes y videos. Estos problemas incluyen el seguimiento (por ejemplo, ¿está Max despierta y moviéndose en su cuna?), El reconocimiento de objetos (por ejemplo, ¿está Beast en una alfombra en esa habitación?) Y el reconocimiento facial (por ejemplo, ¿quién está en la puerta?).

El reconocimiento facial es una versión particularmente difícil del reconocimiento de objetos porque la mayoría de las personas se ven relativamente similares en comparación con distinguir dos objetos aleatorios: por ejemplo, un sándwich y una casa. Pero Facebook ha avanzado mucho en el reconocimiento facial para identificar cuando tus amigos están en tus fotos. Esa habilidad también es útil cuando tus amigos están en tu puerta y tu IA necesita determinar si los puede deja entrar.

Para hacer esto, he instalado algunas cámaras en mi puerta que pueden capturar imágenes desde todos los ángulos. Los sistemas de IA hoy en día no pueden identificar a las personas desde la parte posterior de sus cabezas, por lo que tener unos pocos ángulos asegura que vemos la cara de la persona. Construí un servidor simple que vigila continuamente las cámaras y ejecuta un proceso de dos pasos: en primer lugar, ejecuta la detección de rostros para ver si alguna persona ha llegado a la vista, y segundo, si encuentra una cara, entonces ejecuta el reconocimiento facial para identificar quién es la persona. Una vez que identifica a la persona, comprueba una lista para confirmar que estoy esperando a esa persona, y si estoy, la dejará pasar y me avisará que está aquí.

Este tipo de sistema de AI visual es útil para una serie de cosas, incluyendo saber cuando Max está despierta para que pueda empezar a tocar música o una lección de mandarín, o resolver el problema de contexto de saber en qué habitación de la casa estamos, contestando correctamente a peticiones sin contexto como “enciende las luces” sin proporcionar una ubicación. Como la mayoría de los aspectos de esta AI, la visión es más útil cuando se informa a un modelo más amplio del mundo, conectado con otras habilidades como saber quiénes son sus amigos y cómo abrir la puerta cuando están aquí. Cuanto más contexto tenga el sistema, más inteligente será en general.

Messenger Bot

He programado a Jarvis en mi computadora, pero para ser útil quería poder comunicarme con el sistema desde cualquier lugar. Eso significaba que la comunicación tenía que pasar a través de mi teléfono, no un dispositivo colocado en mi casa.

bmz4

Comencé a construir un bot de Messenger para poder comunicarme con Jarvis porque era mucho más fácil que construir una aplicación separada. Messenger cuenta con un marco sencillo para crear bots, y maneja automáticamente muchas cosas, trabajando tanto en iOS como en Android, soportando contenido de texto, imagen y audio, entregando confiablemente notificaciones, administrando identidad y permisos para diferentes personas y más. Usted puede aprender sobre el marco del bot en messenger.com/platform.

Puedo enviar un mensaje de texto a mi bot Jarvis, y será inmediatamente reenviado a mi servidor de Jarvis y procesado. También puedo enviar clips de audio y el servidor puede convertirlos a texto y luego ejecutar esos comandos. En el medio del día, si alguien llega a mi casa, Jarvis puede escribirme una imagen y decirme quién está allí, o puede enviarme un mensaje cuando necesito salir a hacer algo.

Una cosa que me sorprendió acerca de mi comunicación con Jarvis es que cuando tengo la opción de hablar o enviar mensajes de texto, escribo mucho más de lo que habría esperado. Esto es por una serie de razones, pero sobre todo se siente menos preocupante para la gente que me rodea. Si estoy haciendo algo que se relacione con ellos, como tocar música para todos nosotros, entonces hablar se siente bien, pero la mayoría de las veces el texto se siente más apropiado. Del mismo modo, cuando Jarvis se comunica conmigo, prefiero recibirlo por mensaje de texto que por voz. Esto se debe a que la voz puede ser perjudicial y el texto le da más control sobre cuándo desea verlo. Incluso cuando hablo con Jarvis, si estoy usando mi teléfono, a menudo prefiero al texto o mostrar su respuesta.

Esta preferencia por la comunicación de texto a través de la comunicación de voz se ajusta a un patrón que estamos viendo con Messenger y WhatsApp en general, donde el volumen de mensajería de texto en todo el mundo crece mucho más rápido que el volumen de comunicación de voz. Esto sugiere que los futuros productos de IA no pueden centrarse exclusivamente en la voz y necesitarán también una interfaz de mensajería privada. Una vez que se habilita la mensajería privada, es mucho mejor usar una plataforma como Messenger que crear una nueva aplicación desde cero. Siempre he sido optimista con los robots de IA, pero mi experiencia con Jarvis me ha hecho aún más optimista de que todos nos comunicaremos con robots como Jarvis en el futuro.

Reconocimiento de voz y habla

bmz5

Incluso aunque creo que el texto será más importante para comunicarse con los AI que la gente se da cuenta, todavía creo que la voz jugará un papel muy importante también. El aspecto más útil de la voz es que es muy rápido. No es necesario sacar su teléfono, abrir una aplicación, y empezar a escribir – solo tiene que hablar.

Para habilitar la voz de Jarvis, yo necesitaba construir una aplicación dedicada que pudiera escuchar continuamente lo que digo. El bot de Messenger es ideal para muchas cosas, pero la fricción por usar el habla es demasiado. Mi aplicación dedicada Jarvis me permite poner mi teléfono en un escritorio y sólo tiene que escuchar. También podría poner un número de teléfono con la aplicación Jarvis alrededor de mi casa para poder hablar con Jarvis en cualquier habitación. Eso parece similar a la visión de Amazon con Echo, pero en mi experiencia, es sorprendente la frecuencia con la que quiero comunicarse con Jarvis cuando no estoy en casa, por lo que tener el teléfono como la interfaz principal en lugar de un dispositivo casero me parece fundamental.

He desarrollado la primera versión de la aplicación de Jarvis para iOS y tengo planes de construir una versión de Android pronto también. Yo no había creado una aplicación iOS desde 2012 y una de mis principales observaciones es que la cadena de herramientas que hemos construido en Facebook desde entonces para el desarrollo de estas aplicaciones y para hacer reconocimiento de voz es muy impresionante.

Los sistemas de reconocimiento de voz han mejorado recientemente, pero ningún sistema de IA es lo suficientemente bueno para entender el discurso conversacional todavía. El reconocimiento de voz se basa tanto en escuchar lo que dices como en predecir lo que dirás a continuación, por lo que el habla estructurada es todavía mucho más fácil de entender que la conversación no estructurada.

Otra limitación interesante de los sistemas de reconocimiento de voz – y sistemas de aprendizaje en general – es que están más optimizados para problemas específicos de lo que la mayoría de la gente se da cuenta. Por ejemplo, entender a una persona que habla con una computadora es un problema sutilmente diferente de entender a una persona que habla con otra persona. Si usted entrena un sistema de aprendizaje automático de datos de Google de personas que hablan a un motor de búsqueda, se comportará relativamente peor en Facebook en la comprensión de la gente hablando con personas reales. En el caso de Jarvis, el entrenamiento de una IA con la que hablarás a corta distancia también es diferente a la formación de un sistema al que hablarás desde toda la sala, como Echo. Estos sistemas son más especializados de lo que parece, y eso implica que estamos más lejos de tener sistemas generales de lo que podría parecer.

En un nivel psicológico, una vez que se puede hablar con un sistema, se le atribuye más profundidad emocional que una computadora que podría Interactuar con el uso de texto o una interfaz gráfica. Una observación interesante es que desde que construí la voz en Jarvis, también he querido construir con más humor. Parte de esto es que ahora puede interactuar con Max y quiero que esas interacciones sean entretenidas para ella, pero parte de ella es que ahora se siente como que está presente con nosotros. Le he enseñado juegos divertidos así como Priscilla o podría preguntarle a quién debemos hacerle cosquillas y aleatoriamente le dirá a uno de nosotros, Max o Beast. También me divertí añadiendo frases clásicas como “Lo siento, Priscilla, me temo que no puedo hacer eso”.

Hay mucho más que explorar con voz. La tecnología de IA se está tornando lo suficientemente buena para que esto sea la base de un gran producto, y será mucho mejor en los próximos años. Al mismo tiempo, pienso que los mejores productos como éste serán los que se pueden llevar a cualquier lugar y que permita comunicarse en privado también.

El ambiente de ingeniería en Facebook

Como CEO de Facebook, no dispongo de mucho tiempo para escribir códigos. Nunca he dejado de codificar, pero actualmente construyo proyectos personales como Jarvis. Esperaba que aprendería mucho sobre el estado de la IA este año, pero no me di cuenta de que también aprendería mucho sobre lo que es ser un ingeniero en Facebook. Y es impresionante.

Mi experiencia en la base de código de Facebook es probablemente bastante similar a lo que la mayoría de los nuevos ingenieros tienen aquí. Estaba constantemente impresionado por lo bien organizado que está nuestro código y por la facilidad de encontrar lo que buscaba, ya sea relacionado con el reconocimiento de rostros, el reconocimiento de voz, el Messenger Bot Framework [messenger.com/platform] o el desarrollo en iOS. Los paquetes de código abierto de Nuclide [github.com/facebook/nuclide] que hemos creado para trabajar con Atom de GitHub facilitan el desarrollo. El sistema de construcción Buck [buckbuild.com] que hemos desarrollado para construir grandes proyectos rápidamente también me ha ahorrado mucho tiempo. Nuestra herramienta de clasificación de texto FastText [github.com/facebookresearch/fastTex …] también es buena para comprobar y si estás interesado en el desarrollo de la IA, vale la pena leer sobre la investigación de Facebook [github.com/facebookresearch] GitHub.

Uno de nuestros valores es “movete rápido” (“move fast”). Eso significa que deberías poder venir aquí y construir una aplicación más rápido que en cualquier otro lugar, incluso por tu cuenta. Deberías ser capaz de venir aquí y usar nuestras herramientas de infra e IA para construir cosas que te llevaría mucho tiempo construir por tu cuenta. La construcción de herramientas internas que hacen que la ingeniería sea más eficiente es importante para cualquier compañía de tecnología, pero esto es algo que tomamos muy en serio. Así que quiero que todos sepan sobre nuestros equipos de infra y herramientas que hacen esto algo tan bueno.

Próximos Pasos

Aunque este reto está terminando, estoy seguro de que voy a seguir mejorando Jarvis ya que lo uso todos los días y siempre estoy encontrando nuevas cosas que quiero añadir.

En el corto plazo, los próximos pasos son la construcción de una aplicación para Android, la creación de terminales de voz Jarvis en más habitaciones alrededor de mi casa, y la conexión de más dispositivos. Me encantaría que Jarvis controlara mi parrilla (Big Green Egg) y me ayudara a cocinar, pero eso requerirá un hacking aún más serio que montar el cañón de las remeras.

A más largo plazo, me gustaría explorar enseñando a Jarvis cómo aprender nuevas habilidades en lugar de tener que enseñarle a realizar tareas específicas. Si pasara otro año en este desafío, me centraría más en aprender cómo funciona el aprendizaje.

Finalmente, con el tiempo sería interesante encontrar maneras de disponibilizar esta tecnología para el mundo. Consideré abrir el código, pero actualmente está estrechamente vinculado a mi propia casa, los aparatos y la configuración de la red. Si llego a desarrollar una capa que logre abstraer más funcionalidades de automatización del hogar, puedo llegar a abrir el código. O, por supuesto, eso podría ser una gran base para construir un nuevo producto.

Conclusiones

Construir Jarvis fue un desafío intelectual interesante, y me dio experiencia directa en la construcción de herramientas de IA en áreas que son importantes para nuestro futuro.

Entre 5 a 10 años tendremos sistemas de IA que son más precisos que las personas en cada uno de nuestros sentidos – visión, oído, tacto, etc, así como cosas como el lenguaje. Es impresionante lo poderoso que el estado de arte de esta tecnología para estas herramientas, y este año me hace más confiado en mi predicción.

Al mismo tiempo, todavía estamos lejos de entender cómo funciona el aprendizaje. Todo lo que hice este año – lenguaje natural, reconocimiento facial, reconocimiento de voz y demás – son todas las variables de las mismas técnicas fundamentales de reconocimiento de patrones. Sabemos cómo mostrar a una computadora muchos ejemplos de algo para que pueda reconocerlo con precisión, pero aún no sabemos cómo tomar una idea de un dominio y aplicarla a algo completamente diferente.

Para poner eso en perspectiva, pasé unas 100 horas construyendo Jarvis este año, y ahora tengo un sistema bastante bueno que me entiende y puede hacer muchas cosas. Pero incluso si pasara más de 1.000 horas, probablemente no sería capaz de construir un sistema que pudiera aprender habilidades completamente nuevas por sí solo, a menos que yo hiciera algún avance fundamental en el estado de la IA a lo largo del camino.

De alguna manera, la IA está más cerca y más lejos de lo que imaginamos: está más cerca de poder hacer cosas más poderosas de lo que la mayoría de la gente espera: conducir autos, curar enfermedades, descubrir planetas, entender los medios de comunicación. Cada uno de ellos tendrá un gran impacto en el mundo, pero todavía estamos averiguando qué es la inteligencia real.

En general, este fue un gran desafío. Estos retos tienen una manera de enseñarme más de lo que esperaba al principio. Este año pensé que aprendería sobre IA, y también aprendí sobre domótica y tecnología interna de Facebook. Eso es lo que es tan interesante sobre estos desafíos. Gracias por seguir este desafío y espero compartir el desafío del próximo año en unas pocas semanas.