Posts etiquetados ‘Kurt Gödel’

Roger Penrose dedicó bastante más tinta en defender  los argumentos de Shadows of Mind que en escribir dicha obra. En una de sus contrarréplicas, publicada en la revista Psyche (Enero, 1996), nos ofrece una de las versiones más claras de su famoso argumento.

Supongamos que todos los métodos de razonamiento matemático humanamente asequibles válidos para la demostración de cualquier tesis están contenidos en el conjunto F. Es más, en F no sólo introducimos lo que entenderíamos como lógica matemática (axiomas y reglas de inferencia) sino todo lo matemáticamente posible para tener un modelo matemático del cerebro que utiliza esa lógica (todos los algoritmos necesarios para simular un cerebro). F es, entonces, el modelo soñado por cualquier ingeniero de AI: un modelo del cerebro y su capacidad para realizar todo cálculo lógico imaginable para el hombre. Y, precisamente, ese es el modelo soñado porque la AI Fuerte piensa que eso es un ser humano inteligente. Así, cabe preguntarse: ¿Soy F? Y parece que todos contestaríamos, a priori, que sí.

Sin embargo, Roger Penrose, piensa que no, y para demostrarlo utiliza el celebérrimo teorema de Gödel, que venimos a recordar a muy grosso modo: un sistema axiomático es incompleto si contiene enunciados que el sistema no puede demostrar ni refutar (en lógica se llaman enunciados indecidibles). Según el teorema de incompletitud, todo sistema axiomático consistente y recursivo para la aritmética tiene enunciados indecidibles. Concretamente, si los axiomas del sistema son verdaderos, puede exhibirse un enunciado verdadero y no decidible dentro del sistema.

Si yo soy F, como soy un conjunto de algoritmos (basados en sistemas axiomáticos consistentes y recursivos), contendré algún teorema (proposiciones que se infieren de los axiomas de mi sistema) que es indecidible. Los seres humanos nos damos cuenta, somos conscientes de que ese teorema es indecidible. De repente nos encontraríamos con algo dentro de nosotros mismos con lo que no sabríamos qué hacer. Pero en esto hay una contradicción con ser F, porque F, al ser un conjunto de algoritmos, no sería capaz de demostrar la indecibilidad de ninguno de sus teoremas por lo dicho por Gödel… Una máquina nunca podría darse cuenta de que está ante un teorema indecidible. Ergo, si nosotros somos capaces de descubrir teoremas indecidibles es porque, algunas veces, actuamos mediante algo diferente a un algoritmo: no sólo somos lógica matemática.

Vale, ¿y qué consecuencias tiene eso? Para la AI muy graves. Penrose piensa no sólo que no somos computadores sino que ni siquiera podemos tener un computador que pueda simular matemáticamente nuestros procesos mentales. Con esto Penrose no está diciendo que en múltiples ocasiones no utilicemos algoritmos (o no seamos algoritmos) cuando pensemos, sólo dice (lo cual es más que suficiente) que, habrá al menos algunas ocasiones, en las que no utilizamos algoritmos o, dicho de otro modo, hay algún componente en nuestra mente del cual no podemos hacer un modelo matemático, qué menos que replicarlo computacionalmente en un ordenador.

Además el asunto se hace más curioso cuanto más te adentras en él. ¿Cuáles podrían ser esos elementos no computables de nuestra mente? La respuesta ha de ser un rotundo no tenemos ni idea, porque no hay forma alguna de crear un método matemático para saber qué elementos de un sistema serán los indecidibles. Esto lo explicaba muy bien Turing con el famoso problema de la parada: si tenemos un ordenador que está procesando un problema matemático y vemos que no se para, es decir, que tarda un tiempo en resolverlo, no hay manera de saber si llegará un momento en el que se parará o si seguirá eternamente funcionando (y tendremos que darle al reset para que termine). Si programamos una máquina para que vaya sacando decimales a pi, no hay forma de saber si pi tiene una cantidad de decimales tal que nuestra máquina tardará una semana, seis meses o millones de años en sacarlos todos o si los decimales de pi son infinitos. De esta misma forma, no podemos saber, por definición, qué elementos de nuestra mente son no computables. A pesar de ello, Penrose insiste en que lo no computable en nuestra mente es, nada más y nada menos, que la conciencia, ya que, explica él, mediante ella percibimos la indecibilidad de los teoremas. Es posible, ya que, aunque a priori no pudiéramos saber qué elementos no son decidibles, podríamos encontrarnos casualmente con alguno de ellos y podría ser que fuera la conciencia. Pero, ¿cómo es posible que nuestro cerebro genere conciencia siendo el cerebro algo aparentemente sujeto a computación? Penrose tiene que irse al mundo cuántico, en el que casi todo lo extraño sucede, para encontrar fenómenos no modelizables por las matemáticas y, de paso, resolver el problema del origen físico de la conciencia.

Las neuronas no nos valen. Son demasiado grandes y pueden ser modelizadas por la mecánica clásica. Hace falta algo más pequeño, algo que, por su naturaleza, exprese la incomputabilidad de la conciencia. Penrose se fija en el citoesqueleto de las neuronas formado por unas estructuras llamadas microtúbulos. Este micronivel está empapado de fenómenos cuánticos no computables, siendo el funcionamiento a nivel neuronal, si acaso, una sombra amplificadora suya, un reflejo de la auténtica actividad generadora de conciencia. ¡Qué emocionante! Pero, ¿cómo generan estos microtúbulos empapados de efectos cuánticos la conciencia? Penrose dice que no lo sabe, que ya bastante ha dicho…

O sea señor Penrose, que después de todo el camino hecho, al final, estamos cómo al principio: no tenemos ni idea de qué es lo que genera la conciencia. Sólo hemos cambiado el problema de lugar. Si antes nos preguntábamos cómo cien mil millones de neuronas generaban conciencia, ahora nos preguntamos cómo los efectos cuánticos no computables generan conciencia. Penrose dice que habrá que esperar a que la mecánica cuántica se desarrolle más. Crick o Searle nos dicen que habrá que esperar a ver lo que nos dice la neurología… ¡Pero yo no puedo esperar!

Además, ¿no parece extraño que la conciencia tenga algo que ver con el citoesqueleto de las neuronas? La función del citoesqueleto celular suele ser sustentar la célula, hacerla estable en su locomoción… ¿qué tendrá que ver eso con ser consciente? Claro que en el estado actual de la ciencia igual podría decirse: ¿qué tendrá que ver la actividad eléctrica de cien mil millones de neuronas con que yo sienta que me duele una muela?

En su Blog Una nueva conciencia y, a raíz de un post publicado por José Luis Ferreira, Carlos realiza un feroz ataque al naturalismo, al positivismo y al racionalismo. Si bien yo sólo me sumo de modo militante a la primera de estas tres corrientes (algo a la tercera y nada a la segunda), entiendo que se me englobe dentro de estas tendencias. Aquí va mi respuesta.

Abro un manual de fisiología vegetal y me encuentro con una bella ilustración de, por ejemplo, una clásica célula vegetal. Veo como cada una de sus pequeñas partes esta cuidadosamente catalogada (con nombres muy feos eso sí), como se han establecido funciones (sabemos para qué vale cada cosita), redes de relaciones entre cada uno de los distintos orgánulos, complejas interacciones físicas, térmicas, químicas… Cuando veo la célula vegetal, me imagino los arduos años de trabajo de laboratorio, me imagino al curioso naturalista mirando por su microscopio (aparato que requirió siglos de trabajo para su refinamiento actual y que, leches, ¡funciona dogmáticamente!). Años, becas de investigación, horas y horas de trabajo muchas veces mal remunerado… Esa es la gran empresa del conocimiento humano. Cuando ojeo las páginas de ese manual, la fuerza que me guía es la curiosidad  de comprender mejor el mundo (la cual creo que también guió al fisiólogo gracias al cual puedo entender la célula) y la fascinación ante ver lo maravillosa que es realmente la naturaleza. A cada página que paso voy encontrando algunas respuestas, entiendo por qué la pared celular está hecha de celulosa o para qué valen las vacuolas, pero inmediatamente surgen otras mil preguntas: ¿cómo almacenan las sales las vacuolas? ¿cómo atraviesan los nutrientes la pared celular? Para algunas vuelven a darse respuestas, pero para muchas otras no. Y lo bonito, a la vez que trágico, es que no se pueden dar rápidamente. He de esperar a otros años de cuidadosa y precisa investigación, a muchas hipótesis atrevidas pero refutadas, o a que quizá no se sepa nunca. Sin embargo, al mirar la imagen de la célula me cuesta pensar que exista algo de mentira aquí, algo de conocimiento relativo o de escepticismo… ¿Es que acaso la célula vegetal no tiene las partes que aquí se mencionan? ¿Es que los procesos químicos de los que aquí se hablan no ocurren realmente? Podría darse que algunas cosas estuvieran equivocadas pero no la mayoría: las proteínas se sintetizan en los ribosomas, esto es algo extremadamente difícil de negar.

¿Hay algo de dogmatismo, de fortín de seguridad psicológica, de nueva ideología de moda, de servilismo estatal, de perezosa comodidad intelectual que ingenua no duda de sus fundamentos, en mi paseo por el manual de fisiología vegetal? No, aunque puede derivar en ello. Si afirmo que eso es lo único que puede decirse sin más sí, si niego toda posibilidad de otro discurso por principio sí, si tacho a priori de estupidez todo lo demás sí. Pero no es el caso, porque lo que se hace es tachar algunas cosas sólo a posteriori.

Después de comprobar los terribles esfuerzos de miles de biólogos durante siglos por conseguir hablar dos líneas de un minúsculo orgánulo, me encuentro con el filósofo posmoderno de turno (a lo Lyotard por ejemplo), el cual tira por la borda todo a partir de tres libros que ha leído y de dos tardes de pensar frente a la estufa. El conocimiento es relativo, una invención, una fabulación del hombre atormentado que no sabe  vivir en la incertidumbre… No hay hechos, sólo interpretaciones decía Nietzsche.¡Gödel lo ha demostrado desde las matemáticas, Feyerabend desde la historia de la ciencia! La ciencia es una ideología burguesa, cuya única justificación  es servir a la clase dominante… ¡Heisenberg ha destruido todos estos dogmas desde la física cuántica! Entonces vuelvo a mirar mi manual de fisiología y pienso: será verdad entonces y es que los ribosomas no sintetizarán proteínas. Será verdad, así que voy a negar todo esto no sea que me llamen dogmático o positivista que, en un alarde de ingenuidad, no se ha dado cuenta de que es un burócrata al servicio de un opresivo statu quo. Y es que, habitualmente, la mayoría de esta peña no se ha asomado ni por un segundo a mi querido manual.

A partir de este conocimiento tan dogmático e ingenuo, que se caracteriza (entre otras carencias) por su precisión, por haber sido elaborado con sumo cuidado en un trabajo comunitaro de muchísimas personas, y porque su modus operandi reside precisamente en no creerse nada hasta tenerlo muy pero que muy comprobado, podemos permitirnos el lujo (sin ser tachados de fanáticos o tiranos espero) de tachar a posteriori aquellas cosas que están hechas con menos precisión, esfuerzo o cuidado. Y eso es lo que se hace. Planteamientos como las filosofías de Aristóteles, Hegel o Leibniz (por las que tengo un sumo respeto) pierden la partida contra las teorías científicas porque adolecen de ciertas carencias. Aristóteles fue un gran observador pero lo faltó la experimentación, y Hegel o Leibniz se alejan tanto de la observación y del sentido común que acaban por plantear posturas excéntricas o descabelladas. Lo que criticamos (o yo critico) son las posturas alejadas de la naturaleza, que no tienen cuidado en comprobar de algún modo sus tesis (la teología cristiana es un claro ejemplo), que caen en las trampas del lenguaje (es la gran aportación de la filosofía analítica), que se pierden en infructuosas especulaciones (el pensamiento trinitario por ejemplo) o que, a fin de cuentas, no solucionan ningún problema (¿Me puede alguien decir qué problema teórico o práctico solucionó Heidegger?). Criticamos a aquel que se lanza a hablar páginas y páginas de la vida sin haber tocado mi manual de fisiología (estará faltando al respeto a todos los que lo hicieron posible).

Pero estoy abierto a que me ofrezcan otras cosas. Si alguien tiene algo mejor a la lógica matemática (la razón) y a la verificación experimental (la observación) que, por favor, me lo presente.

Alan Turing es uno de los padres de la informática

En 1947 el famoso matemático inglés Alan Turing pronunció su polémica conferencia “¿Puede pensar una máquina?“. Frente al dualismo imperante, Turing defendió que era posible que una máquina pudiese llegar a hacer exactamente lo mismo que hace un hombre, incluida la función de pensar. Resulta curioso que algo tan normalizado hoy en día como el hecho de que las máquinas realicen mucho mejor que nosotros ciertas actividades que calificaríamos como inteligentes, hace tan sólo cincuenta años sonara a despropósito irrelevante.

Unos años antes, Turing había publicado un artículo titulado On computable Numbers, with an Application to the Entscheidungsproblem en donde desarrolló la teoría de las máquinas que llevan su nombre y que supondrán un hito para la historia de la informática al suponer el fundamento teórico de los computadores digitales modernos. Bien, ¿y qué es una máquina de Turing?

Antes de nada nos tenemos que acercar al concepto de algoritmo. La palabra procede del matemático árabe Al-Khowarizm, quien escribió en el 825 un tratado de aritmética muy conocido durante la Edad Media. No obstante, antes de él ya se conocían ejemplos de algoritmos. Uno de ellos es el popular algoritmo de Euclides que constituye un procedimiento para encontrar el máximo común divisor de dos números. Se trata de dividir entre sí ambos,  formar una nueva pareja con el divisor y el resto y volverlos a dividir. Así, sucesivamente hasta que se consiga un resto cero. El divisor que quede entonces será el máximo común divisor de ambos números.  El algoritmo de Euclides supone una regla, unas instrucciones para conseguir un resultado, que se obtendrá siempre sean cuales sean ambos números. Si son muy altos, el procedimiento tendrá más pasos, nada más. De este modo, todas las operaciones aritméticas son algoritmos (sumar, multiplicar, raíces cuadradas, elevar a una potencia…). Todas consisten en realizar un pequeño número de instrucciones que se repetirán cuantas veces sean necesarias para llegar a una conclusión. Entonces, un algoritmo se podría definir como un conjunto de instrucciones para realizar una tarea con las siguientes características:

1) Precisión: un algoritmo ha de estar definido con suficiente precisión para no albergar dudas sobre qué paso seguir.

2) Simplicidad: las reglas son sencillas. Cuando se trata de algoritmo, en apariencia sencillo, se puede descomponer en algoritmos más elementales. El de Euclides, por ejemplo, se puede descomponer en divisiones y agrupamientos divisor-resto.

3) Finitud: el número de reglas ha de ser finito mientras que el número de operaciones que pueden realizarse debe ser infinito.

4) Carácter mecánico: es un procedimiento mecánico, automático. Un algoritmo no requiere ninguna agudeza mental ni ingenio creativo, es algo que cualquier persona puede hacer con sólo tener la capacidad de seguir y obedecer reglas.

5) Procedimiento general: los algortimos están orientados a la solución de problemas, pero no tendría mucho sentido diseñar uno para solucionar un único problema particular (imaginemos crear un algorítmo para multiplicar 45 por 678 y nada más). Está en la naturaleza del algoritmo ser un mecanismo lo más sencillo y económico posible para realizar correctamente muchas tareas. Sin embargo, como la dificultad para realizar muchas tareas diferentes por un mismo algoritmo es mucha, se los suele utilizar para resolver un tipo de problemas. Así, el algoritmo de Euclides soluciona todos los casos posibles del problema de encontrar el máximo común divisor.

En 1936 el matemático norteamericano Alonzo Church (1903-1995) va a plantear la primera definición Alonzo Church es el creador del Cálculo Lambdamatemática de algoritmo. Su tesis principal es que la clase de las funciones calculables por un algoritmo es idéntica a la clase de las funciones recursivas. Church demostró (bueno, no era del todo una demostración…) la imposibilidad de encontrar un algoritmo para la teoría elemental de la aritmética y, en consecuencia, para la lógica de predicados de primer orden: tanto la aritmética como la lógica de primer orden resultaban indecidibles. El mismo resultado fue obtenido al mismo tiempo por Turing con sus máquinas, utilizando el concepto de función computable: una función tal para la que existe una máquina de Turing que proporciona el valor de la función. Con estos conceptos Church, Turing y otros (Post, Markov) habían llegado a la misma conclusión que Kurt Gödel unos años antes: el programa de Hilbert había fracasado.

Bien, pero vayamos a lo que nos interesaba: ¿Qué es entonces una máquina de Turing? Bien, Turing quería abordar de una forma rigurosa la noción de algoritmo o procedimiento mecánico. Así, imaginó cómo podría formalizarse el concepto de una máquina descomponiendo su modo de operar en sus pasos más elementales. Así que una máquina de Turing (MT) no es algo físico, no es una máquina de verdad (por mucho que los actuales ordenadores se basen en ella), sino un constructo, un experimento mental. ¿Cuáles son las partes elementales de la MT?:

1) Unidad de control: el el conjunto finito de todos los posibles estados internos. Una MT puede asumir diferentes estados dependiendo de las circunstancias que tiene lugar en el estado de computación.

2) Cinta: se trata de una cinta de longitud intinita tanto por la izquierda como por la derecha, dividida en celdillas de forma que en cada celdilla sólo cabe un único símbolo. En la cinta aparecerán los caracteres de un alfabeto previamente definido agrupados en cadenas. Las cadenas serán siempre finitas a pesar de la infinitud de la cinta. Esa infinitud expresa que en ella podemos escribir tantas cadenas como queramos y de cualquier longitud.

3) Cabeza: la unidad de control está conectada a la cinta mediante la cabeza, cuya función es la de observar en cada momento una sola celdilla escrita con un único símbolo. La cabeza lee, escribe, sustituye y borra un símbolo cada vez, además de hacer que la cinta se desplace una celdilla a la izquierda o a la derecha, de acuerdo con las instrucciones correspondientes.

4) Instrucciones: una MT se dirige desde un número finito de instrucciones numeradas. Una instrucción está formada por un cuadruplete de símbolos, dividido en dos partes. La primera describe una situación condicional (Si pasa esto…) y la segunda el cambio a operar (…entonces lo otro). El primer símbolo y el último siempre son estados (S0, S1, S2,…, Sn), siendo los símbolos intermedios las acciones dadas y a realizar respectivamente. Por ejemplo, si nos encontramos la instrucción “1. S0, a, b, S1”, lo que hay que leer es: “Si la cabeza lee una a, entonces escribe una b y pasa al estado S1″.

Teniendo todos los componentes veamos algunos ejemplos. Vamos a construir una MT capaz de traducir de una lengua dada a otra (letra por letra). La máquina va a disponer de dos vocabularios:

A1={a,b,c} y A2={x,y,z}

Queremos que cuando la MT vea una a, la traduzca a una x, una b a una y y una c a una z. Las instrucciones serían las siguientes:

1. S0, a, x, S1

2. S1, x, I, S0

3. S0, b, y, S1

4. S1, y, I, S0

5. S0, c, z, S1

6. S1, z, I, S0

El estado inicial de la MT siempre es el So, siendo los restantes S1, S2, S3,…, Sn. Cuando la máquina se encuentra en la cinta con una a la traduce por una x y se va al estado S1. En S1, la MT lee x, avanza hacia la izquierda (las instrucciones de movimiento son I para la izquierda y D para la derecha. Borrar se escribe #) y vuelve al estado S0. Hay que tener en cuenta que cada estado es un condicional que si no se cumple, la máquina va bajando, estado por estado, hasta encontrar alguno que se cumpla. Por eso si la máquina vuelve a S0 pero en la cinta no hay una  a, irá bajando hasta encontrar un estado que represente lo que hay en la cinta.

Veamos otro ejemplo. Vamos a construir una MT que sea capaz de realizar sumas de dos sumandos utilizando un sistema numérico con base unaria. Es decir, vamos a hacer que nuestra máquina sume palitos. Las entradas que recibirá la MT serán de esta forma: “#///#//#”, lo cual significará suma tres más dos, de tal modo que la máquina responderá “#/////#”.  El lenguaje será entonces A={/,#} y las instrucciones:

1.S0, /, I, S0

2. S0, #, /, S1

3. S1, /, D, S1

4. S1, #, I, S2

5. S2, /, #, S2

Como vemos la numeración de los estados puede repetirse. Al construir esta MT hemos elaborado un algoritmo para sumar dos sumandos tal que puede sumar potencialmente cualquier cantidad de números que se agrupen de dos en dos. La máquina de Turing es equivalente al concepto de algoritmo, que es de lo que se trataba. Así hay que distinguir lo que se denomina una Máquina Universal de Turing, que es la formulación rigurosa de computación o algoritmo, de la de Máquina de Turing sin más, que es cualquier máquina para realizar una tarea cualquiera.

Cuando yo estaba en la facultad recuerdo haber diseñado una MT que era capaz de codificar y decodificar lenguajes en función de una clave numérica recibida (quería emular tontamente a la Enigma alemana, haciendo una máquina para escribir mensajes cifrados). Como el abecedario tenía demasiadas letras, y la MT trabaja de modo pesado y poco eficiente, sólo lo hice con las tres primeras. El número clave indicaba, emulando al método de cifrado Julio Cesar, las posiciones que había de rotar las letras (si la letra era a y la clave 2, la a se sustituía por la b). El profesor me puso un sobresaliente pero no me devolvió la máquina. Viendo retrospectivamente, ahora no me parece tan difícil de construir como cuando la hice y no entiendo por qué estuve tanto tiempo muy orgulloso por el logro.

Y para acabar y poneos un pequeño reto (es muy, muy fácil): teniendo un lenguaje similar al anterior A={/, #}, ¿sabriáis construir una MT capaz de responder S (Sí) o N (No) al hecho de encontrarse con un número divisible o no por dos?

P. D.: Los de LEGO han construido una MT real. Aquí la tenéis, con todas sus partes y aderezado el vídeo con la música del Equipo A.