lunes, 10 de mayo de 2010

Fuerza bruta

Cuando vi la película 'Matrix', recuerdo que salí del cine indignado. No encontré en toda ella una sola idea original. Desde las novelas de Jules Verne hasta la olvidada 'Total recall', pasando por los cuentos de Ray Bradbury de los años 50, todos los ingredientes de aquella historia parecían haber sido desvergonzadamente copiados de la biblioteca de cualquier aficionado a la ciencia-ficción. ¿Cuál podía ser el secreto de su enorme éxito?, me pregunté. Al ver la edad de los jóvenes que salían del cine, encontré la respuesta: nadie puede entrar dos veces en un mismo río. ¿Qué podían saber aquellos chiquillos de Ray Bradbury? El eterno retorno no importa mucho si uno no va a durar lo suficiente para llegar al siguiente ciclo.

En cualquier caso, combinatorio no es necesariamente sinónimo de agotado. Hasta donde sabemos hoy, la inmensa complejidad del Universo no es más que una combinación de tan sólo cuatro fuerzas conocidas: gravitación, electromagnetismo, interacción fuerte (la fuerza que mantiene unidos los núcleos atómicos) e interacción débil (la fuerza que los desintegra).

A mucho menor escala, también el ajedrez es combinatorio, y dista de estar agotado. Al menos, a nivel humano. En mayo de 1997 el computador Deep Blue ganó por fin una competición al campeón mundial Gary Kasparov. Y eso ya no es nada. Recientemente nos hemos enterado de que en 2011 la Universidad de Iowa espera poner en funcionamiento el denominado Blue Waters, que podrá realizar 1.000 billones de operaciones por segundo. No parece haber planes para ponerlo a jugar al ajedrez pero, después de Deep Blue, ni siquiera merece la pena intentarlo.

El asalto a los juegos de salón no se detuvo en Deep Blue. En 2008 el programa MoGo consiguió ganar una partida de go (de una serie de tres) a Catalin Tanaru, un jugador profesional rumano de categoría Dan 4. Y en julio de 2007 Jonathan Schaeffer presentó al mundo un programa imbatible jugando a las damas. Pero el texto de la noticia era decepcionante: el programa de Schaeffer estaba basado en un método heurístico. Es decir, todo lo contrario de inteligente.

Todos estos intentos son a la ciencia lo que Atila a las relaciones públicas. Aumentando la capacidad de computación se puede llegar a conseguir casi cualquier cosa (excepto, probablemente, la desaparición de Tele 5). La tecnología hincha sus biceps, se arma de un ariete y, por la fuerza bruta, intenta derribar las murallas de Troya. Y, mientras la ley de Moore se siga cumpliendo, el ariete podrá ser todo lo grande que se nos antoje. Sólo hace falta esperar. Nuestros computadores digitales son colosales ejércitos de hormiguitas obedientes que trocean, transportan y recolocan. Como son muchas y muy rápidas, pueden darnos la impresión de que piensan como nosotros, pero nada más lejos de la realidad. Como medio para entender la realidad, los videojegos más sofisticados no alcanzan en inteligencia al rey de los tontos.

Curiosamente, el vertiginoso aumento de la velocidad de computación ha alejado a los computadores del buen camino. Desde el astrolabio hasta el teléfono, los inventos de nuestros antepasados se inspiraron durante milenios -y con buen sentido- en principios analógicos. En la primera mitad del siglo XX, sin embargo, John von Neumann sentó las bases de la computación digital, y a partir de ese momento las hormiguitas se apoderaron de la tecnología (y de no pocos paradigmas científicos). Sus logros, más cuantitativos que cualitativos, han deslumbrado a muchos, aunque se han intentado también otras modalidades de computación. Hacia los años 80 hubo un gran entusiasmo por las redes neurales, los algoritmos genéticos y la lógica borrosa. Y desde hace algunos años se está intentando crear el primer computador cuántico, que, si alguna vez llega a ser realidad, multiplicará hasta el delirio la capacidad de computación. Pero ¿podremos conversar con él?

Mi respuesta personal es: No, si antes no analizamos a fondo el concepto de información y sus implicaciones. Para las hormiguitas computar es, esencialmente, recolocar ceros y unos, pero ésa no es la información que nos interesa. Las cotorras son computadores muy eficaces, pero si yo estoy con mi cotorra en el salón y en la cocina alguien grita "¡Fuego!", es difícil argumentar que tanto la cotorra como yo hemos recibido la misma información.

Es cierto, todo lo que nuestro cerebro procesa proviene en último término de percepciones sensoriales, que en principio podemos medir y convertir en ceros y unos. Pero las percepciones sensoriales son en realidad un amasijo intratable de señales que hay que filtrar, estructurar y almacenar primero para poder después analizar y sintetizar. Al término de ese proceso, lo único que queda son conceptos y relaciones que expresamos mediante palabras. Ése es el proceso que nos interesa.

Quizá el planteamiento que más se acerque a nuestra estructura de conceptos sea la programación orientada a objetos. En ella, los objetos se definen en términos de propiedades y métodos, que además pueden ser heredados. Todos los caballos tienen cuatro patas, una silueta característica y una forma de galopar. El caballo del gran jefe indio, además, se caracteriza por su color bayo y por su andar cansino (propiedades), y suele piafar cuando su amo se le acerca (método). Pero ¿podemos conseguir que un programa informático reconozca en el cielo el movimiento de una gaviota volando a bastante velocidad? El problema no es simplemente determinar una trayectoria mediante un computador digital, reconocer que es una gaviota mediante una red neural y asignarle el valor 'bastante' mediante lógica borrosa. El problema es entender de manera objetiva lo que realmente queremos decir cuando pronunciamos o escribimos cada una de esas tres palabras.

La programación orientada a objetos parece tentadoramente similar al funcionamiento de nuestra mente. Hasta ahora, sin embargo, nadie ha construido todavía un programa capaz de contarnos una película, comentarla mientras la está viendo o extraer conclusiones sobre la ambición humana, el odio, o los motivos de un divorcio. Ése va a ser el gran desafío de este siglo que acaba de comenzar.

9 comentarios:

ella dijo...

Esto si que me interesa, además de ser objetivamente interesante.

chema dijo...

enhorabuena, Ricky, muy bueno el blog.

una apreciación (o un pie para una nueva entrada); los heurísticos son, probablemente, la aproximación más fidedigna a lo que entendemos por "inteligencia". la potencia de la computación tiene su paradigma "humano" en Spock, o en ciertas formas de autismo. sin embargo, los conceptos no computables (como el "a bastante velocidad" que mencionas) son heurísticos (que ni Spock ni un computador podrán entender fácilmente).

en fin, que tengo ganas de revisar el tema pero poco tiempo para hacerlo así que, ya sabes, espero leer tus ideas al respecto ;)

gracias. y enhorabuena otra vez.

Rick dijo...

Pues no sé qué ves tu, Chema, de inteligente en los métodos heurísticos. El Dr. Spock nunca existió, y su viabilidad está por demostrar. Los programas heurísticos, sí, van descartando posibilidades, pero con arreglo a unos criterios *no* definidos por ellos, sino por sus autores.

Y en los casos en que el programa llega a definir esos criterios, no los *entiende* en el sentido en que los entendemos tú o yo. Simplemente, obedece un algoritmo ideado por una persona inteligente, no por ellos mismos.

El adjetivo 'bastante' no es en mi opinión un concepto heurístico per se, ya que se puede definir inequívocamente en términos de categorías tales como, por ejemplo, mucho/bastante/poco. Las fronteras entre estos tres conceptos son, en principio, subjetivas, pero no por ello no son representables.

La representación de un concepto no tiene por qué ser fidedigna como un cuadro de Vermeer. Nos basta con que refleje simbólicamente todos los ingredientes del concepto que representa. La mayoría de los conceptos son borrosos, por lo que nuestra representación de ellos tiene que tener una elasticidad 'topológica': una taza sin asa es topológicamente idéntica a una esfera, pero con asa es un concepto distinto. Podemos decir también que el arco iris tiene siete colores, y representarnos ese concepto, con independencia de dónde consideremos que están sus fronteras. Lo importante de los conceptos es el aspecto cualitativo, no el cuantitativo.

Te agradezco mucho tu interés por este tema. Para mí siempre es estimulante intercambiar ideas. Y en tu blog también he leído cosas muy interesantes. Un saludo.

chema dijo...

Lo primero, gracias por tus comentarios.

Creo que resulta irónico que, superficialmente, parezca que nuestras opiniones divergen, mientras que, en el fondo, estamos diciendo lo mismo. O casi. Y resulta irónico porque en tu artículo hablas precisamente de la necesidad de analizar el concepto de información y sus implicaciones.

Primero, convengamos que los heurísticos hacen referencia a aproximaciones no lineales, no algorítmicas, para resolver problemas. Se trata de modos de resolver problemas que entrañan atajos y que implican un considerable menor costo computacional, ofertando soluciones que no suponen, necesariamente, datos específicos sino un grupo borroso de datos que aproximan o engloban la solución algorítmica al problema original.

El lenguaje y, en general, toda comunicación humana, podrían entrañar aproximaciones heurísticas a problemas que, en cualquier caso, nunca tienen una solución unívoca. El modo en que respondemos a una comunicación dada tal vez sea fruto de un complejísimo algoritmo que tiene en cuenta una cuasi-infinitud de variables relevantes. Personalmente, tiendo a creer que el cerebro computa soluciones heurísticas antes que algorítmicas, no sólo para generar respuestas sino también para generar la realidad perceptual que aprehendemos diariamente.

En tu artículo pareces defender la idea de que la percepción consciente, los conceptos y las categorías que generamos, son el resultado de conversiones algorítmicas de datos perceptivos unívocos. Tiendo a creer, de nuevo, que los conceptos y categorías son resúmenes borrosos, aproximaciones heurísticas antes que algorítmicas, capaces de resumir y aunar en un “objeto” (por utilizar la terminología de la OOP) un conjunto determinado, aunque no exhaustivo, de datos.

En fin, considero, como tú, que la mayoría de conceptos humanos son borrosos, aunque seamos capaces de generar conceptos físicos o matemáticos de gran especificidad. La identificación de una taza sin asa como “topológicamente idéntica” a una esfera, es un concepto “matemático”, al que llegamos tras concienzudo análisis, pero no es un concepto “humano” en el sentido de que no se trata de uno de esos conceptos borrosos que nuestro cerebro es capaz de generar espontáneamente.

A la pregunta sobre si podremos conversar con un robot creo que, si continuamos equiparando “máquina” con “algoritmo”, difícilmente llegaremos más allá de una “imitación”, más o menos potente, de la comunicación humana. Queda por entender, claro, cómo podemos implementar soluciones heurísticas a programas informáticos (si es que realmente merece la pena), o cómo definimos la “comunicación”, o, ya puestos, qué es eso que llamamos “consciencia”.

Lo dicho, un placer.
Saludos!

Rick dijo...

Yo también creo que estamos de acuerdo en lo esencial. Es difícil definir 'heurístico' sin dejarse algo en el tintero, pero yo le atribuyo dos significados: a) procesos mentales en los que interviene o coadyuva la intuición (Gestalt y cosas parecidas); b) estrategias de programación que ahorran vías de ataque poco fructíferas.

En el primer caso, el inteligente es el programador, no el programa; en el segundo, las estrategias son más pragmáticas que inteligentes. Me habría bastado con opinar, coincidiendo contigo, que un algoritmo (es decir, una máquina Turing) nunca podrá producir ningún resultado inteligente.

Cambiando de tema: Los conceptos son borrosos... o no. El concepto 'Mona Lisa' es inequívocamente nítido. Es el concepto 'rostro' el que es borroso, porque es una categoría de posibles rostros, incluidos algunos que sólo lo son vagamente. Aun así, siempre seremos capaces de distinguir entre un rostro y una tarta de cumpleaños. La categoría rostro/tarta de cumpleaños/cara del Pato Donald/escudo nobiliario/... no es en absoluto borrosa, lo cual nos permite representar simbólicamente el concepto (y usarlo, para pensar y para comunicarnos).

Hablar de categorías no es sólo hablar de semántica, sino también de información. "Día ayer, tiempo soleado" es una predicación rudimentaria basada en dos categorías que se concretan en dos ejemplares. Y decir predicación es decir sintaxis...

Todo esto no es sino un resumen escuálido de la dualidad casi "gestáltica" semántica/sintaxis. No me puedo extender más en el espacio de un comentario, pero espero que te permita al menos hacerte una idea (borrosa :)).

Un saludo. Rick

chema dijo...

Vale, me llega la idea borrosa, aunque sigo sin ver clara la adenda de la sintaxis.
Pero vamos con la información.

“Mona Lisa” es, por un lado, un “indicador” que hace referencia a un objeto específico (“un cuadro de Da Vinci, expuesto en el Louvre detrás de una vitrina de cristal, que muestra un rostro afeminado en un contexto particular”). Aunque el objeto al que hace referencia “Mona Lisa” es específico, el “concepto” Mona Lisa es borroso; ¿la representación de la esposa de Francesco del Giocondo? ¿Una metáfora andrógina? ¿Un ejemplo de sfumato? ¿Una antigualla cara? ¿Un mensaje sin descifrar? ¿Una obra de arte? ¿O acaso solamente “un cuadro de Da Vinci expuesto en el Louvre detrás de una vitrina de cristal”? Tal vez podamos reducir el concepto “Mona Lisa” como referencia-a-un-objeto. O tal vez no. Pero, ¿qué hay de los “rostros”?

Dices que el “concepto” rostro es borroso y entiendo que lo dices en tanto no hace referencia a un objeto específico. Vale; “rostro” es un concepto que hace referencia a varios objetos (rostros particulares). Aún así, como concepto, podemos representarlo y utilizarlo para pensar y para comunicarnos. Pero, ¿acaso no es un concepto borroso?

Para la mayoría de seres humanos un “rostro” es una idea absolutamente específica, distinto de la “tarta de cumpleaños” o de cualquier otro objeto. De hecho, “rostro” es algo tan específico, que somos capaces de “ver” rostros en las formas creadas por una mancha de humedad, por unas nubes o por una configuración especial de objetos disímiles. Ocurre lo mismo con la idea de “ser humano”. Todos sabemos qué es y qué no es un ser humano. Y sin embargo, ¿podemos definir “rostro” o “ser humano” de forma específica, unívoca, inequívoca?

Es posible definir de forma unívoca aquellos “indicadores” (signos, palabras) que hacen referencia a objetos específicos, aún cuando los “conceptos” asociados a esos mismos indicadores sean más bien borrosos (en tanto las ideas íntimamente asociadas a cada uno de esos objetos no son compartidas o comunes –salvo, tal vez, en el universo físico-químico y matemático). Pero resulta sumamente difícil, cuando no imposible, definir inequívocamente “indicadores” o “conceptos” que no hacen referencia a objetos específicos.

Ahora bien, es cierto que, podamos definirlos mejor o peor, todos “sabemos”, íntimamente, qué es un rostro o un ser humano, y es por eso que podemos comunicarnos (más o menos).

En fin, no sé por qué insisto tanto en la borrosidad de los conceptos. Supongo que es por escapar, ya desde el principio, de la ilusión de construir un símil de la inteligencia humana basado exclusivamente en unos y ceros.

Sigo mosca... ¿y eso de la sintaxis? Abrazo!

Rick dijo...

Sí, Mona Lisa es un símbolo que designa varios conceptos distintos. Uno de ellos es el rostro de la Mona Lisa que fotografían los japoneses en el Louvre, y si me alteran una sola pestaña ya no es la Mona Lisa.

La idea de que los conceptos existen como cosas *en sí* es metafísica (R. Mango dixit): los conceptos existen sólo como categorías o ejemplares. Por eso los símbolos con que los etiquetamos nos permiten transmitir información. Ejemplos:

0,1) -> 0
día -> ayer

Esto es referencia directa. La referencia indirecta está basada en 'conglomerados' de categorías (que yo he llamado 'glifos'), y viene a ser lo mismo que introducir condiciones en una base de datos para llegar más fácilmente al resultado deseado: desambiguar.

Todo esto es muy muy largo de explicar. Lo he intentado en varios posts de este mismo blog, a los que te remito: empiezan en

http://rickymango.blogspot.com/2008/04/categoras.html

Si rebuscas por orden cronológico (es decir, de abajo a arriba), encontrarás unos cuantos más. Son mi intento más denodado por hacer la cosa comprensible. Tú me dirás si crees que lo he conseguido.

Un abrazo.

chema dijo...

Okeys.
He llegado hasta el VIII de la serie y, tras un lapso, me encontré con un último "lingüística para tontos", sin numerar, en septiembre de 2009. Tal vez me falte algo entre el VIII y el último que localicé, y tal vez falten más posteriores. Ya me dirás.

Aunque mezclas varios ámbitos de estudio (desde el estrictamente lingüístico a la introspección psicológica pasando por la computación o la física) la idea central de considerar el lenguaje como una estructura topológica me parece dramáticamente interesante. Y también me parece fascinante tu intención de desarrollar, aunque sea a nivel teórico, un analizador sintáctico potente, basado en esa idea (entiendo que para un lenguaje específico y que, al menos por ahora, no pretendes incluir el contexto).

Ya tengo una idea “borrosa” del concepto “topológico” de las categorías, claro que necesitaría concretarla un poco más. Y trataría de centrar mis esfuerzos en desarrollar ese analizador, que sirviera de base para una comunicación lingüística con el ordenador, antes que tratar de integrar estas ideas en una teoría lingüística o en explicar las bases neuropsicobiológicas del lenguaje humano (todo esto caerá como fruta madura una vez desarrolles ese parser).

En fin, ¡ánimo!
¡Seguiré leyéndote con interés!

Rick dijo...

No, creo que no te has saltado ninguna entrega de la serie: es que mi cerebro es así, indisciplinado a largo plazo.

Posiblemente eres la primera persona, AFAIK, que ha entendido lo esencial de mis argumentos, lo cual me conforta enormemente.

Animado por tus amables palabras de aliento, y después de darle unas cuantas vueltas al asunto, he llegado a la conclusión de que un generador de lenguaje natural es mucho más viable que un parser, ya que permite controlar el conocimiento del mundo necesario para que la representación semántica dé soporte a la sintaxis. Desde luego, no produce el mismo placer crear un loro que un Mr. Spock, pero a efectos demostrativos podría ser suficiente, dadas mis humildes posibilidades.

Una vez más, gracias por tu aliento. Seguimos blogueando y comentando. Un saludo. Rick

 
Turbo Tagger