Mostrando entradas con la etiqueta computación. Mostrar todas las entradas
Mostrando entradas con la etiqueta computación. Mostrar todas las entradas

lunes, 30 de abril de 2012

Conectando la mente con las màquinas: avatares y redes cerebrales

Hace sólo diez años cualquier idea sobre la posible conexión entre nuestra mente y una máquina era pura especulación, y no se veía con buenos ojos su inclusión en artículos científicos rigurosos.  Pero en los últimos años hemos avanzado mucho en este terreno, y podemos ser optimistas respecto al futuro. Veamos algunas posibilidades.


Recuperar la movilidad
Brazos mecánicos motorizados con control manual
(http://www.avancestecnologicos.org/)
www.walkagainproject.org/ es un proyecto internacional de construcción de prótesis motorizadas controladas directamente por el cerebro.  Se fundó a partir del descubrimiento de una técnica para conectar tejido encefálico vivo de primates  a diversos mecanismos en el Duke University Center for Neuroengineering. En este centro, la mona Aurora aprendió a controlar el cursor de un ordenador con su mente. A través de Internet, puede controlar otros mecanismos robóticos situados al otro lado del planeta.

A partir de estos avances, se trabaja en la construcción de exoesqueletos controlados por ondas cerebrales que permitirán caminar a los incapacitados.


Recibir información directamente al cerebro
Se está también trabajando en sentido inverso: dispositivos que envían información directamente al cerebro, sin pasar por los órganos sensoriales. Hasta ahora se ha conseguido que el mono sepa que un caramelo se encuentra en una cierta caja de entre varias posibles. Se trabaja en conseguir que sea otro mono el que le comunique la ubicación del caramelo, estando alejados físicamente, y comunicándose entre sí de cerebro a cerebro mediante una interfaz electrónica. Es decir, no hay ningún lenguaje ni símbolos, simplemente la idea se transmitirá directamente de un cerebro al otro.


Comunicación directa con ordenadores e Internet
Microrobot
Con esta tecnología podemos imaginar que será posible comunicarse directamente con el hardware y el sistema operativo de un ordenador mediante la actividad neuronal directa. Ya hay interfaces de este tipo funcionando, como por ejemplo los interfaces cerebrales para juegos, o la interfaz Brainloop. Esta posibilidad nos abre un mundo nuevo, con instrumentos controlados por el pensamiento y, ¿porque no?, avatares que pueden actuar por nosotros en cualquier sitio, desde las profundidades del océano hasta el microcosmos, mediante microrobots.


Redes cerebrales
Si se consigue la comunicación directa entre mentes a través de interfaces, supondrá una revolución de las actuales redes sociales, que pasarían a ser redes neurosociales. ¿Transmitiremos directamente imágenes mentales a la red, formando una especie de red cerebral mundial? En esa sociedad, miles de millones de personas podrían contactarse entre sí con el pensamiento.


Bibliografía
Miguel A.L. Nicolelis: Una mente extracorpórea. Investigación y Ciencia, abril 2011




sábado, 31 de diciembre de 2011

Aleatoriedad, errores e inteligencia artificial


Aleatoriedad
Se dice que un sistema presenta aleatoriedad cuando sus estados no pueden predecirse de forma exacta, sino como mucho usando probabilidades. En la Física clásica se suponía que los sistemas aleatorios lo eran por desconocimiento de su funcionamiento exacto, debido a imposibilidades prácticas o a que el sistema era demasiado complejo. 

Así, el típico experimento aleatorio de lanzar una moneda realmente es determinista, pues dados sus posición y velocidad inicial exactas, así como sus propiedades físicas (masa, geometría, momento de inercia, ...) y aplicando las leyes de la mecánica ha de ser posible determinar su estado final. 
Llama con forma caótica
Esta visión determinista se derrumbó con la Mecánica Cuántica la cual introduce un factor de aleatoriedad insalvable propio de la Naturaleza, aunque sólo en el dominio de lo extremadamente pequeño.

Por otra parte en los denominados sistemas caóticos encontramos que a pesar de ser deterministas, son tan sensibles a cualquier variación de su estado inicial que en la práctica se comportan como si fueran aleatorios. Tal es el caso del lanzamiento de la moneda, pero también de ejemplos más interesantes  como el clima,  la formación de cristales, o la forma de las llamas de un fuego.


El problema de la generación de números aleatorios
La generación de números aleatorios por ordenador es de gran importancia práctica, pues nos permite simular sucesos aleatorios. Pero resulta que no es fácil generarlos, ya que por definición un programa de ordenador es una secuencia determinada de operaciones, que se ejecutan una detrás de otra, sin posibilidad de introducir aleatoriedad, en principio. De hecho, la mayoría de programas de generación de números aleatorios son de hecho "pseudoaleatorios": usan algoritmos matemáticos que, dado un valor inicial (conocido por "semilla")  generan una secuencia definida de números x1, x2, x3, ..., de forma que para cada valor de la semilla se genera una lista distinta.

Una forma de que un algoritmo genere aleatoriedad es proporcionándole datos aleatorios desde el exterior; el propio hardware del ordenador puede proporcionarla a través de procesos impredecibles, como los movimientos de la cabeza lectora del disco duro o la tasa de actividad de la CPU.  La generación de aleatoriedad por hardware suele aprovechar fenómenos físicos altamente impredecibles, como el ruido eléctrico.

Movimiento browniano: trayectoria caótica seguida por una partícula
muy pequeña en un fluido; la dirección y la velocidad cambian repentinamente
conforme van rebotando en ella las moléculas del fluido, sin ningún patrón predecible.
En el caso de algunos algoritmos de generación de claves para criptografía como el GPG, se pide la colaboración del usuario para generar aleatoriedad:  mientras se genera la clave ha de realizar cuantas más acciones mejor, como mover el ratón rápidamente o re-dimensionar ventanas de aplicaciones; a este proceso se le llama generación de entropía.
Observemos que estos métodos utilizan de hecho sistemas físicos caóticos para generar aleatoriedad que no tienen porque ser realmente aleatorios, sólo demasiado complejos para ser predecibles. Actualmente empiezan a aparecer sistemas que recurren a los procesos cuánticos para generar auténtica aleatoriedad, como es el caso de la empresa suiza ID Quantique que vende sistemas de generación de claves aleatorias basadas en las propiedades cuánticas del fotón.

Errores aleatorios en las mediciones
Cuando medimos una magnitud física, es inevitable que el instrumento de medida afecte a la cantidad que deseamos medir; además, la medida estará afectada en algún grado por el denominado error experimental. Si el instrumento está bien calibrado y somos cuidadosos en el procedimiento de medida, entonces los errores serán totalmente aleatorios, y además sus probabilidades estarán determinadas por la distribución normal de probabilidad


Aleatoriedad y errores en la mente
Nuestra mente es una maravilla capaz de enviar un robot explorador a Marte o de enunciar la teoría de las cuerdas en un espacio de 10 dimensiones. Sin embargo, también destaca su elevada irracionalidad en ciertas ocasiones, así como su capacidad de cometer errores de todo tipo, disfunciones y aberraciones del comportamiento. A veces, la mente parece funcionar distorsionada como si algún "demonio" se hubiera infiltrado  en su interior. Esta es una característica distintiva de la mente humana en relación con la inteligencia artificial (IA), que no es tan dada a comportamientos erráticos.
Podemos preguntarnos, ¿estas disfunciones son errores aleatorios del cerebro? En esta pregunta hay dos tesis: (1) ¿el cerebro tiene errores de funcionamiento que se traducen en disfunciones mentales?, y (2) ¿estos errores no siguen ningún patrón predecible, se producen sin posibilidad de predicción?

Test de Turing
Test de Turing: ¿quien responde es
humano o máquina?
Sea como sea, los programas no tienen este tipo de errores pues son deterministas. Alan Turing, precursor de la informática y la IA, propuso en 1950 un test, el test de Turing, para discernir entre una mente humana y una artificial. Consiste en realizar el mismo conjunto de preguntas a un humano y a una máquina; de las respuestas que obtenemos se nos oculta quien las ha hecho, si hombre o máquina. Entonces si somos incapaces de deducir simplemente  analizando las respuestas si provienen de uno o del otro, diremos que la máquina ha superado el test, y muestra una inteligencia similar la la humana. El test es tan potente que hoy en día ni siquiera se utiliza debido a que se considera que ningún programa podría superarla. 

Lo que más se le acerca actualmente son los denominados chatterbots, que simulan una conversación humana pero limitada a un contexto determinado, como por ejemplo los asistentes virtuales de compras. A continuación tenemos un dialogo entre un humano (H) y el asistente virtual de RENFE Irene (I)

H: buenas tardes
I: Aquí me tienes, ¡buenas tardes!
   ¿Me dices cómo te gustaría que te llamara?
H: Pepe   
I: Fenomenal. A partir de ahora te llamaré Pepe.
H: ¿sales esta noche?
I: Me paso en esta ventana todas las horas del año... ¡Ojalá pudiera salir de aquí! Por cierto, Pepe, ¿en qué ciudad estás tú?
H: En Bombay
I: Preguntaba por una ciudad, da igual.
H: Quiero saber los horarios de cercanías
I: Tienes los horarios y recorridos de Cercanías. Los tienes en este enlace.

Un bot de tipo general que funciona aceptablemente es Cleverbot.
La habilidad de conversación del chatterbot suele limitarse a su área de conocimiento. En el caso de un programa que simulase ser un matemático, el propio Turing advirtió que el programa para superar el test debía ralentizar su respuesta e introducir algún error de vez en cuando para parecer un ser humano.  La introducción de errores en la respuesta podría ser aleatoria o bien producirse después de una larga serie de preguntas, para simular cansancio. Como ya hemos visto, este error intencionado aleatorio puede vincularse a una fuente de aleatoriedad generada por el mismo hardware de la máquina.

Aprender de los errores
Es sabido que los errores son una fuente de aprendizaje, tanto es así que una de las formas de aprender algo nuevo es por la técnica del ensayo-error, en la cual probamos algo nuevo, evaluamos el resultado, y corregimos los errores, para volver a ensayar de nuevo. Así pues, es importante que los ordenadores se equivoquen y sepan aprender de sus errores para simular el comportamiento de la mente. Los programas basados en redes neuronales simulan una red  reducida de neuronas; principalmente se utilizan para aprender a reconocer patrones: se les proporcionan unos datos de entrada con los cuales "aprenden", para después ser capaces de reconocer patrones similares. Este aprendizaje se basa en el ajuste de parámetros internos de la red usando el método ensayo-error. Por ejemplo las redes neuronales se pueden usar para leer los códigos de barra a pesar de haber manchas, arrugas o de una impresión de baja calidad.




jueves, 29 de diciembre de 2011

Computabilidad, hipercomputadores y conciencia

Tortuga: ¿Cree usted que TODO número par puede ser representado como la diferencia de dos primos impares?
Aquiles: Qué curioso lo similar de esta pregunta a la conjetura de Goldbach (que sustituye "diferencia" por "suma")
Tortuga: Ciertamente. Pero existe una diferencia impresionante. (...) su búsqueda de una representación de un billón como la suma de dos primos tiene la garantía de finalizar.
Aquiles: ¡Ahhh! Ya veo, si elijo representar un billón como la diferencia de dos primos no tendré ningún límite para el tamaño de los primos involucrados, podrían ser tan grandes que me tomaría un billón de años encontrarlos.
D.R. Hofstadter: Gödel, Escher, Bach, un eterno y grácil bucle.


En este artículo daremos una breve introducción a la teoría de la computabilidad, con implicaciones para el conocimiento, la mente, la inteligencia artificial y el Universo (casi nada ;-) .

Comprobación de afirmaciones sobre números
Tal como expone la conversación entre Aquiles y la Tortuga, hay afirmaciones de la teoría de números que pueden comprobarse en un número máximo de pasos previamente conocido, mientras que en otras afirmaciones no podemos asegurar cuantos pasos son necesarios. Para saber si un número natural N es igual a la suma de dos primos, basta con ir probando todas la combinaciones de dos primos menores que el propio número N. Por ejemplo, para N = 24 efectuaremos las sumas crecientes 1+1=2, 1+3=4, 2+3=5, 1+5=6, ..., 11+11=22, 11+13=24. Este proceso tenía que acabar como mucho sumando N-1=23 con 1.
En cambio si buscamos diferencias de números primos no hay un número límite, ya que  siempre podemos escoger primos arbitrariamente grandes, como por ejemplo 991-967=24. Este hecho aparentemente inocente tiene profundas implicaciones, como veremos. Para ello, introducimos los conceptos de sistemas formales y recursión.

Sistemas formales y proposiciones recursivas
Un sistema formal  es un conjunto de símbolos (el alfabeto del sistema, también llamados axiomas),  reglas para combinar los símbolos para formar secuencias de símbolos (también llamadas cadenas o teoremas) y las reglas de la lógica de proposiciones, para poder afirmar o negar proposiciones.

Por ejemplo, sea el siguiente sistema formal:
  • Alfabeto: "M","U"
  • Cadenas válidas: secuencias de las letras del alfabeto que siguen las reglas.
  • Regla I: a una cadena terminada en U se le puede agregar otra U
  • Regla II: a una cadena que contenga la secuencia UUU se le puede sustituir la secuencia por M
  • Variables: x, y, z  que representan cadenas cualesquiera
  • Operaciones lógicas: AND, OR, NOT , \rightarrow (implicación), ∀ (para todo)
Aplicando las reglas, a partir del alfabeto se pueden formar cadenas válidas (denominadas teoremas): M, U, UU, UUU, UUUU, UM, ... Aplicando operaciones lógicas, podemos formar proposiciones lógicas: UU \rightarrow UUU (por la regla I), ∀xUUUy  \rightarrow xMy (la regla II).

En todo sistema formal hay verdades (teoremas y axiomas) y falsedades (ninguna de las anteriores):
  • UU es un teorema: es cierto
  • M es un axioma: es cierto
  • MU \rightarrow M es falso: no hay ninguna regla que lo permita

Una proposición es recursiva si podemos diseñar un algoritmo que sea capaz de comprobar si la proposición es cierta. Si además el algoritmo necesita una secuencia de pasos de finalización predecible, entonces la proposición es recursiva primitiva. Así, en el sistema de la aritmética, la afirmación "el número N cumple la conjetura de Goldbach", equivalente a decir "es igual a la suma de dos primos", es una verdad recursiva primitiva, ya que podemos comprobarlo realizando operaciones aritméticas en un número finito que será menor o igual que un límite dado. En cambio la proposición "N es una diferencia de dos primos" no es recursiva primitiva, pues no sabemos el número máximo de pasos a seguir. Cuando todas las proposiciones que podamos hacer sobre un sistema son recursivas, el propio sistema formal será recursivo.

Expresabilidad  y representabilidad
En un sistema formal la expresabilidad significa que cualquier predicado que enunciemos sobre el sistema podrá expresarse en el lenguaje propio del sistema.
Resulta ser que todo sistema recursivo es expresable.
Entonces cualquier afirmación cierta o falsa respecto al sistema, como por ejemplo "no existe ningún teorema (cadena bien formada) que termine en  MU", la podremos expresar con los símbolos del sistema: "NOT xMU". Tenemos que este sistema posee la propiedad de la expresabilidad.

La representabilidad de una proposición significa que siempre que la proposición es cierta entonces tenemos un teorema del sistema, y cuando es falsa tenemos  un no teorema. Por ejemplo "existen cadenas que terminan en  MU" produce las cadenas MU, UMU, MUMU, ... ¿Son todas teoremas? Sí lo son. (compruébelo el lector). En el caso de que cualquier cadena terminada en MU sea un teorema, diremos que la proposición es representable. Si todas las proposiciones posibles son representables, el sistema formal será representable.

La propiedad de la representabilidad es más difícil de poseer que la expresabilidad. No insistiremos en ello, ya que nos apartaría de la línia que nos hemos trazado.

Verdades y falsedades no computables
Se cree que la propiedad de un sistema de ser recursivo implica que es computable (tesis Church-Turing), o sea que para saber si una proposición es cierta o falsa podemos programar un computador que nos responda la pregunta; el tiempo que empleará dependerá de si la proposición es recursiva primitiva o no.

¿Qué afirmaciones no serán recursivas y por tanto no computables? En general cualquier sistema suficientemente complejo para poder referenciarse a sí mismo será no recursivo. Por ejemplo, decidir si un algoritmo que busca dos números primos cuya diferencia sea igual a un billón se detendrá en un número finito de pasos no es un problema computable; o sea, no existe ningún algoritmo que decida si el algoritmo de las diferencias de primos se detendrá. Entonces la verdad o falsedad de la afirmación "el algoritmo que busca dos números primos cuya diferencia sea igual a un billón se detendrá" no es computable. Observemos que "no computable" significa que no sabemos si el programa de ordenador encontrará la solución en tiempo determinado, que es indecidible computacionalmente.

Ahora bien, parece evidente que toda afirmación ha de ser falsa o verdadera, aunque ello sea indecidible computacionalmente. ¿O quizá no está tan claro?. Veamos algunas opiniones al respecto.

Computabilidad de la mente. Tesis de la inteligencia artificial (IA)
Viene a decir: "Lo que es computable por los seres humanos es computable a través de máquinas". O sea que todo proceso mental de decisión ha de poder representarse por un algoritmo que se pueda ejecutar en un ordenador. Si es el caso, entonces como hay afirmaciones indecidibles computacionalmente, tales afirmaciones también seran indecidibles para la mente humana. Siguiendo esta línea de razonamiento, si una afirmación es indecidible, ¿podemos sostener que ha de ser cierta o falsa? ¿O bien su certeza es simplemente indefinida, ni cierta ni falsa?

Nuestra intuición nos indica lo contrario, que toda afirmación ha de estar definida, otra cosa es el conocimiento que tengamos sobre ella. Siguiendo nuestra intuición diríamos que hay un conocimiento computable y también un conocimiento no computable. La cuestión ahora es: ¿la mente tiene acceso al conocimiento no computable?. Según los defensores de la IA la respuesta es negativa.

Por otro lado existe la teoría de la hipercomputación que afirma la posibilidad de programar máquinas para resolver problemas no recursivos; si fuera cierto todos los enunciados serían decidibles computacionalmente, e incluso podríamos tener IA superior a la inteligencia humana.

Autoconciencia y computabilidad
La autoconciencia es una forma de auto-referencia, y en principio, aplicando lo visto hasta ahora, podemos pensar que es poseída por sistemas no computables. No obstante, los seguidores de la tesis de la IA en su versión fuerte enuncian que también la conciencia ha de ser computable. Claro, siempre podemos separar la conciencia de la autoconciencia, y decir que la primera es computable y la segunda no; por ejemplo, un gato es consciente pero no es autoconsciente, así que debería ser posible emular con un ordenador la mente de un gato, algo que todavía está fuera de nuestras posibilidades. (Nota: IBM anunció que había construido un superordenador con 147.000 CPU's que tenía la potencia de cálculo del cerebro de un gato, pero hay cierta controversia con ello, y además sólo han construido el "hardware", falta el "software", esto es, la mente).

Computabilidad del Universo
Hay  teorías que afirman que el Universo en su conjunto se comporta como un inmenso ordenador, que procesa información y la transforma. 
En esta línea una de las variantes afirma que el Universo sólo procesa información recursiva (computable), y precisamente por ello la información no recursiva es no computable, ya que el Universo no puede contener un ordenador más potente que él mismo (!). Equivalentemente, se afirma que el Universo se comporta como una máquina de Turing. Si están en lo cierto, todo proceso físico podrá simularse en un computador, y la Física computacional eventualmente podrá simular todo el Universo.

Otra corriente de opinión sostiene que existen procesos no computables, y que no podemos ignorarlos, y por tanto el Universo se comporta como un hipercomputador cuántico. Entonces, en un futuro podría ser posible construir hipercomputadores que resolvieran todos los problemas, tanto computables como no computables.

Por último hay quienes opinan que el Universo no es computable ni lo será nunca, y que la hipercomputación es irrealizable en la práctica.

Conclusiones
De un asunto aparentemente muy específico, como es la computabilidad de afirmaciones numéricas sencillas, vemos que se extienden ramificaciones que llegan a la teoría del conocimiento (cómo saber que es cierto y que es falso), la mente y la conciencia e incluso a todo el Universo, planteándonos cuestiones muy importantes que quedan abiertas.

Bibliografía
  • D.R. Hofstadter: Gödel, Escher, Bach, un eterno y grácil bucle.

Programas, mente y libre albedrío

La mente humana es un programa, o sea, sigue una colección de instrucciones aprendidas. Es algo que ya intuia hace muchos años, pero hoy mie...