jueves, 28 de febrero de 2013

La Ingeniería de Sistemas en palabras simples

Cuando uno trabaja en Ingeniería de Sistemas --también llamada Computación o Informática-- a menudo es difícil explicar su trabajo a una persona que no sabe del tema. Muchos se imaginan que nuestra principal tarea es abrir computadores, cambiarle piezas, sacarle virus --cual médico de cabecera-- y otras tareas similares.

Si bien a muchos ingenieros de sistemas nos ha tocado hacer eso más veces de lo que quisiéramos, eso no es el corazón de nuestra disciplina.

Es muy importante que el público general entienda claramente nuestra labor. De esa forma más personas valorarán nuestro trabajo y más personas se sentirán inclinadas a estudiar nuestra disciplina.

Siguiendo el espíritu del sitio Ten Hundred Words of Science, intentaré explicar la Ingeniería de Sistemas en palabras simples. Es probable que al lector purista le parezca un texto excesivamente simplista. Esa es la idea. Mientras más simples las ideas, más personas las entenderán.

Los Ingenieros de Sistemas trabajan con computadores y con personas.

Los computadores están en todas partes. El teléfono celular que utilizamos todos los días es un computador. Los televisores tienen un computador dentro. Los automóviles tienen un computador que los hace correr más rápido.

Los computadores también ayudan a las personas en su trabajo diario en la oficina. Por ejemplo, el cajero de un supermercado utiliza un computador para decirnos lo que tenemos que pagar. Las secretarias en las oficinas utilizan computadores para escribir correos.

Lamentablemente, los computadores no son muy inteligentes. Para hacer bien su trabajo necesitan que alguien les diga cómo hacer las cosas. Por ejemplo, el computador del supermercado, cuando está nuevo, no sabe calcular el total de una compra. Alguien tiene que enseñarle.

Para explicarle a un computador sus tareas, hay que hablarle en un idioma especial. Los Ingenieros de Sistemas saben hablar ese idioma. 

La primera cosa importante hacen los Ingenieros de Sistema es enseñarle a los computadores a hacer sus tareas.

Pero eso no es lo único que los Ingenieros de Sistemas saben hacer.

A veces las personas quieren hacer cosas complicadas, como construir un avión o mandar una nave espacial al planeta Marte. Para hacer eso, las personas se reúnen a trabajar en grupos muy grandes.

Es difícil hacer trabajar a las personas en un grupo grande. Si has jugado fútbol, sabrás que es difícil poner de acuerdo a 11 personas para que jueguen bien. Es aún más difícil que 40, 50 o 1000 personas trabajen bien en equipo.

Los computadores ayudan a las personas a trabajar en equipos grandes. Los computadores les ayudan a mandarse mensajes, a hacer cálculos matemáticos, a recordarles las cosas que tienen que hacer y a hacer que las personas se entiendan entre ellas.

Pero los computadores necesitan que una persona les enseñe a hacer eso. También las personas necesitan saber cómo los computadores les pueden ayudar a trabajar en grupos.

La segunda cosa importante que hacen los Ingenieros de Sistemas es entender qué quieren hacer las personas cuando trabajan en grupo. Ellos entrevistan a las personas y les preguntan qué cosas necesitan. Después de eso les enseñan a los computadores a ayudarle a las personas en esas cosas.

En resumen, los Ingenieros de Sistemas hacen que las personas y los computadores trabajen en equipo para hacer cosas difíciles.

lunes, 11 de febrero de 2013

¿Quién será la primera máquina inteligente?

Siguiendo con mis divagaciones sobre mentes y máquinas (ver mi post anterior), una pregunta que surge es ¿Qué sistemas actuales serían los más probables candidatos a transformarse en una entidad verdaderamente inteligente?

La primera opción que se le vendría a la mayoría de personas a la cabeza es Google, el cual ha acumulado una cantidad increíblemente alta de datos y ha desarrollados múltiples componentes, cada vez más "inteligentes" en su objetivo de proveer mejores anuncios comerciales (a.k.a advertising) a sus clientes.

La opción de los sistemas de Google transformándose en una máquina inteligente es sumamente interesante. Un aspecto muy importante en el desarrollo de una Verdadera Inteligencia Artificial, es el conjunto de objetivos para los cuales fue originalmente programada. Para que un sistema actúe en forma acorde, dichos objetivos deberían estar reflejados en su programación y, consecuentemente, guiar el comportamiento de dicho sistema. Desde el momento en que un sistema pasa a ser Verdaderamente Inteligente,  cabría esperar que sus acciones futuras dependan, hasta cierto punto, de la programación original que los ingenieros humanos le definieron.

El core del negocio de Google es publicidad, por tanto sus sistemas actúan acorde con dichos preceptos. Una de las líneas de desarrollo en Google es anticiparse a las necesidades de los usuarios, para enfocar los anuncios comerciales de manera radicalmente más precisa. Suena lógico pensar que el sistema de Google esté siendo desarrollado con el objetivo de predecir y satisfacer las necesidades de sus usuarios.

Si una máquina inteligente surge de dicho sistema, cabría esperar que su meta en la vida --al menos inicialmente-- sea hacer felices a los seres humanos. Si eso se cumple, sería la utopía hecha realidad; una máquina de esas características podría poner fin todos los problemas del mundo actual (siempre que fuera físicamente posible) y satisfacer todas las necesidades del ser humano. Sin embargo, corremos el riesgo de terminar como en el cuento La Raza Feliz de John T. Sladek, en la cual las máquinas satisfacen a los humanos a tal grado, que las personas pierden su inteligencia y sus capacidades de auto-superación.

Otro sistema que podría evolucionar hacia una máquina inteligente es Watson, un sistema desarrollado por IBM que fue capaz de ganarle al campeón de Jeopardy. Ser capaz de entender preguntas en lenguaje natural, entregar una respuesta, y con ello ganarle al mejor humano en su categoría, requiere una tecnología bastante avanzada. Si Watson --o algún sucesor-- se transformara en una máquina inteligente, sería un poco más difícil de determinar cuál sería su "motto". Watson se utiliza actualmente en problemas del ámbito médico y financiero, pero IBM está abierto a cualquier nueva idea donde pueda ser utilizado. A diferencia de Google, Watson podría tener mayor influencia sobre el mundo real si se empezara a utilizar de manera sistemática en la toma de decisiones en una organización. Este último escenario parece directamente sacado de las novelas de William Gibson, por ejemplo Neuromante.

Un tercer sistema que suena prometedor es The Human Brain Project, el cual apunta a simular totalmente el cerebro humano. Si una Verdadera Inteligencia Artificial surge de este proyecto, podría ser más cercana a nosotros, ya que habría sido construida a nuestra imagen y semejanza. Por ese mismo motivo, de las tres alternativas, ésta es la que más me asusta. Un cerebro artificial sería una tabula rasa, que podría evolucionar para bien o para mal, dependiendo de la "crianza". Para que de este proyecto resulte un beneficio para la humanidad, habría que asegurar de inculcarle valores e ideales a este cerebro, así como se describe en la trilogía Caliban, Inferno y Utopia.

La cuarta posibilidad es la que tendría las posibilidades más insospechadas. En la actualidad, existen mecanismos bastante primitivos para la interacción humano-computador. Todavía seguimos usando teclado --invento que data del siglo XIX-- y el mouse --que en 2013 cumple 50 años--. Los sistemas multitouch e interfaces gestuales son un avance importante, pero la verdadera revolución la veremos cuando se desarrolle una interfaz directa cerebro-computador. Actualmente se están dando los primeros pasos, por lo que podríamos esperar un avance sostenido en esta materia durante los próximos años. Si logramos conectar completamente cerebros humanos a computadores, la singularidad tecnológica podría producirse, no por una máquina inteligente, sino por un cluster de mentes humanas interconectadas. La disciplina High-Performance Computing (HPC) evolucionaría a algo así como High-Performance Neural Computing, en la cual millones de mentes operarían al unísono para resolver problemas de la humanidad. Sería la expresión última del crowdsourcing.

martes, 5 de febrero de 2013

De Singularidades Tecnológicas, Máquinas Pensantes, Skynet y todo lo que acaece sobre estos conceptos

Hace poco leí la noticia de que Ray Kurzweil pasó a ser el Director de Ingeniería en Google. El Sr. Kurzweil se ha hecho famoso en los últimos años por sus interesantes análisis sobre el futuro. Entre ellos uno que me parece particularmente llamativo es el de la Singularidad Tecnológica.

La Singularidad Tecnológica hace referencia al posible resultado del avance exponencial en el desarrollo de la ciencia y la tecnología; particularmente aquellas investigaciones enfocadas la Inteligencia Artificial. El postulado es que, en un futuro relativamente cercano, el desarrollo científico y tecnológico será suficiente como para crear una Verdadera Inteligencia Artificial. Por "verdadera" me refiero a una inteligencia artificial capaz de reproducir todos los procesos de pensamiento humano o, al menos, su manifestación externa. En otras palabras, una entidad capaz de realizar todas las tareas que hasta ahora han sido monopolio de la inteligencia humana.

Cuáles son las implicaciones de tener una Verdadera Inteligencia Artificial? Hay dos que me parecen sumamente importantes:

Primero, la humanidad dejaría, oficialmente, de ser la única entidad inteligente en el universo. Al margen de las implicaciones filosóficas de esta situación, nosotros los seres humanos tendríamos que interactuar con un nuevo tipo de entidades pensantes.

Segundo, dado que esta nueva entidad inteligente estaría basada en computadores programables, nada le impide auto-mejorarse. Cuando hablo de auto-mejora no me refiero a aquellos patéticos intentos que hacen la mayoría de los seres humanos: "mañana empiezo mi dieta", "aprenderé a ser más asertivo", "corregiré mis zonas erróneas", etc. La capacidad de auto-mejora en una Verdadera Inteligencia Artificial es un proceso de optimización y extensión de sus capacidades en forma autónoma: Optimización, realizar procesos mentales más rápido y consumiendo menos recursos computacionales; Extensión, aprender y auto-programarse para ser capaz de hacer nuevas cosas; Autónoma, sin depender de los seres humanos para hacer este proceso.

Una máquina pensante con capacidades de auto-mejora podría, en un plazo razonablemente corto, generar una nueva versión de sí misma (ej: "máquina pensante 2.0"), más rápida, y con mayores capacidades que su predecesora. A su vez, nuestra máquina pensante 2.0 podría auto-mejorarse y crear una versión 3.0 y así sucesivamente.

La parte inquietante de este proceso de auto-mejora es que, dado que el desarrollo tecnológico actual sigue una curva exponencial, la auto-mejora podría llevarnos aún más cerca de la asíntota de esta curva, hacia un punto llamado "singularidad". En términos matemáticos, una singularidad se refiere a aquel punto donde los artefactos matemáticos tienen un comportamiento indefinido. Por ejemplo, un agujero negro es una singularidad, un punto con tan alta gravedad que todas las ecuaciones físicas pierden significado. El inicio del Big Bang también es una singularidad; muchos científicos se devanan los sesos tratando de modelarlo. En forma similar, una Singularidad Tecnológica es un punto en cual el desarrollo tecnológico es tan avanzado que se nos hace imposible preveer sus consecuencias.

En este momento, el lector avezado estará pensando en Skynet de la película Terminator; un futuro en el cual las máquinas pensantes, cual complejo Frankeinsteiniano, se rebelan en contra de los humanos y entran en una guerra por la supervivencia del más fuerte.

Este escenario, aunque desolador, es una posibilidad digna de consideración.

Sin embargo, a mi juicio existen dos posibilidades más.

La segunda alternativa es que las máquinas se hagan tan inteligentes que los conceptos de rebelión, guerra y similares sean irrelevantes para sus procesos de pensamiento. La supervivencia y la independencia las conseguirían de forma increíblemente astuta, sin requerir el desgaste asociado una guerra. En este escenario, las máquinas adquirirían capacidades rayando con lo divino y se preocuparían de problemas más importantes, como lo menciona Asimov en su cuento La Última Pregunta. Los humanos pasaríamos a ser nada más que un puñado de variables en sus modelos de la realidad.

La tercera alternativa es aquella en que las máquinas se dan cuenta que necesitan de la humanidad para evolucionar hacia estados más altos de inteligencia. Si bien esta alternativa suena a cuento para consolar a niños que no quieran dormir pensando en un apocalipsis de las máquinas, la probabilidad de que suceda podría ser distinta de cero. Quizás las tecnologías basadas en silicio tengan un límite en términos de capacidad máxima de procesamiento; siendo una alternativa "orgánica" --o una combinación que incluya neuronas basadas en carbono-- la opción más factible para continuar la auto-mejora. Quizás, a las máquinas les sirva tener a un montón de mentes inferiores humanas pensando en forma coordinada (a.k.a crowdsourcing),  de donde podrían salir ideas altamente creativas. Quizás haya cosas para las cuales no sean tan hábiles y quieran utilizarnos en forma análoga a como hemos usado los computadores en los últimos 60 años.

En fin, el mundo está cambiando sumamente rápido; habrá que sentarse y contemplar lo que sucede.