Posts etiquetados ‘James Watson’

Dos dificultades esenciales:

1. ¿Cómo es posible que desde la relativamente poca información codificada por nuestro ADN se generen organismos de una complejidad tan alta? ¿Cómo es posible que con unos escasos menos de 30.000 genes del homo sapiens pueda generarse algo tan complejo como un cerebro? ¿Cómo con 30.000 instrucciones puedes construir la exponencial complejidad de las interconexiones neuronales, algo que supera con mucho la potencia de nuestros más avanzados supercomputadores?

2. Al analizar los genomas de diversas especies y compararlas con el humano vemos que compartimos una altísima cantidad de genes con ellas. Si con la levadura compartimos un 40% del genoma o si entre el ratón o el chimpancé y el hombre, sólo existe la diferencia de unos escasos percentiles, ¿cómo es posible que tengamos diferencias fenotípicas tan obviamente abrumadoras?

Apliquemos la teoría de la información a la biología (es maravilloso mezclar disciplinas). Hasta el fabuloso descubrimiento de Watson y Crick, la comunidad científica pensaba que los genes debían de estar codificados en las proteínas ya que éstas muestran una capacidad de combinación más alta que la del ADN. Sin embargo, y esto es una muestra más de que Darwin tenía toda la razón, descubrimos que el código estaba escrito en las bases del ácido desoxirribonucleico. La evolución es chapucera. Pero la selección natural comienza a funcionar y, con total seguridad, empezó a optimizar este, en principio ineficiente, sistema de codificación de la información. Seguramente, la codificación de la información también evolucionó. La evolución es chapucera, pero no tanto: trabaja con lo que tiene (ADN) pero pronto lo optimiza. ¿Cómo puede mejorarse el almacenamiento de información?

1. Compresión: ¿Cómo funcionan los compresores de información típicos de nuestros ordenadores? Sencillamente, buscan patrones que se repiten. Si, por ejemplo, queremos comprimir una imagen de 100×100 píxeles que representa un sencillo cuadrado rojo, solo hace falta un algoritmo que diga: «proyecta un píxel rojo 100 veces de abajo a arriba y hazlo 100 veces en horizontal», en vez de uno, bastante poco eficiente, que vaya yendo píxel por píxel indicando el color de cada uno. Con dos instrucciones conseguimos hacer lo mismo que, siguiendo el segundo algoritmo, con 10.000. Entonces podemos tener genes que codifiquen instrucciones de muy amplio calado con muy poca información.

2. Iteración de las mismas propiedades fenotípicas. Somos repetitivos: las fibras musculares lisas, los linfocitos B, los hematíes, las células de la piel, etc. son todas iguales. De la misma forma, hay un montón de diseños que se repiten por doquier en el mundo natural: patas, aletas, ojos, sistemas nerviosos y basculares, etc. Así se explica muy bien por qué la mayor parte de los organismos del reino animal son simétricos: nos ahorramos la mitad de la información. Las instrucciones genéticas para fabricar un animal simétrico pueden ser muchas para hacer un lado del individuo, pero solo una para hacer el otro: «Repite lo mismo que has hecho antes». También explicamos muy bien por qué los organismos son tan poco irregulares. Cada nueva forma que no sea una repetición requiere nueva información: un organismo muy irregular requiere muchas más instrucciones para su desarrollo que uno más regular y simétrico.

Tenemos un tipo de algoritmos que son una perfecta expresión de los dos principios anteriores (compresión e iteración fenotípica) y que, además, se encuentran por doquier en el mundo vivo: los fractales probabilísticos (los alvéolos pulmonares o las redes neuronales son claros ejemplos).

Un fractal probabilístico añade un elemento de incertidumbre. Mientras que un fractal determinista tiene el mismo aspecto cada vez que se presenta, un fractal probabilístico cambia de aspecto (aunque mantiene características similares). En un fractal probabilístico, la probabilidad de que cada elemento generador sea utilizado es menor que 1. De esa manera, los diseños resultantes poseen una apariencia más orgánica. Los fractales probabilísticos son utilizados en programas de gráficos para generar imágenes realistas de montañas, nubes, orillas, follajes y otros parajes naturales. Un aspecto esencial de un fractal probabilístico es que permite la generación de una gran cantidad de complejidad aparente, incluyendo abundantes variaciones en los detalles, partiendo de una cantidad de información sobre el diseño relativamente pequeña. La biología utiliza el mismo principio. Los genes proporcionan la información sobre el diseño, pero los detalles de un organismo exceden en mucho la información genética sobre el diseño.

Ray Kurzweil, La singularidad está cerca

fractales-660x350

 3. Reutilización: tenemos la idea de que un fragmento de información solo realiza una función. Por ejemplo, solemos pensar que para el color de los ojos de un individuo hay un trozo de ADN que codifica exclusivamente esta información. Así, establecemos una función biyectiva entre cada gen y una propiedad fenotípica. Al hacerlo nos quedamos muy cortos: ¿cómo es posible que con la poca información que contiene el ADN los organismos muestren diferencias fenotípicas tan inmensas? La solución consiste en que podemos utilizar cada fragmento de información para varias funciones diferentes. Veamos un ejemplo: supongamos que tenemos una célula madre capaz de generar una serie de organismos diferentes. La información tiene que codificarse en una matriz de 7×7 bits de información, es decir, que tenemos 49 casillas en donde poner un único bit (en este caso una letra del abecedario). La instrucción que debe darse es el nombre del animal que queremos conseguir, siendo los animales posibles los siguientes: humano, perro, asno, alacrán, hormiga, pulpo, medusa, araña, foca y pavo. ¿Cómo guardamos todos esos nombres en la matriz? Aceptando que podemos colocar las palabras en horizontal y en vertical es imposible. Si, por ejemplo, las colocamos así:

A

L A C R A N

H

O R M I G A

M

E D U S A P

H

U M A N 0

E

P U L P O  

R

A R A Ñ A  

R

F O C A    

0

 

nos quedan fuera sapo, asno y pavo. Pero si, colocando igualmente las palabras en horizontal y vertical, reutilizamos algunas letras para varias palabras, como en una vulgar sopa de letras, sí que nos cabe toda la información.

H

U M A N O  

O

P E R R O  

R

U D A S N O

M

L U Ñ   F

V

I P S A P O

A

G 0 A N   C

P

A L A C R A

N

Como vemos la «h» de humano puede usarse también para hormiga, la «p» de perro para pulpo, o varias letras de medusa para humano, perro, sapo y alacrán. Usando los mismos bits para diferentes instrucciones podemos conseguir hacer más cosas con la misma cantidad de información. Y en este ejemplo porque las instrucciones tenían que ser una serie de palabras concretas con sentido. Si partimos de que las instrucciones pueden ser cualquier conjunto de letras sin significado alguno (como ocurre realmente con el ADN, cuyas combinaciones de bases son totalmente convencionales), volvemos a optimizar el sistema. Si, otro ejemplo, cada conjunto de siete letras en horizontal o vertical  constituye una instrucción («IPSAPOA»=construye un humano), en esa misma matriz de 7×7 bits, el número total de instrucciones posibles sube a 14 (en vez de las 10 del ejemplo inicial): 7 horizontales y 7 verticales. Si además, la instrucción es diferente si la leemos de derecha a izquierda que de izquierda a derecha y de arriba a abajo que de abajo a arriba («IPSAPOA» es diferente que «AOPASPI»), tenemos ahora 28 instrucciones posibles. Hay muchísimas formas de aumentar la cantidad de información contenida en un código si podemos reutilizarla. Y es que hay muchos tipos de genes cuya información actúa de diversas formas. Escribíamos hace unos cuatro años en el blog:

Pero es que la cosa se ha complicado mucho desde Mendel. Existe la dominancia incompleta (cuando el gen dominante no llega a vencer al recesivo y ambos se expresan), hay genes que modifican el efecto de otros genes (epistasis), genes que afectan a muchas características (pleiotropía), rasgos que son fruto de la interacción acumulada de muchos genes (herencia poligénica), genes que se expresan en diverso grado (expresividad variable) o, haciendo el cálculo en poblaciones, genes que aparecen mucho menos de lo que deberían (penetrancia incompleta). Y además, el fenotipo puede verse afectado por alteraciones no ya en los genes sino en los cromosomas (no sólo afectando a fragmentos o a un cromosoma como en el Síndrome de Down o en el de Turner, sino a dotaciones completas).

El descubrimiento y decodificación del genoma humano ha sido un gran paso, pero solo es el comienzo de una historia mucho más interesante.

Después del éxito en visitas de mi última entrada en donde, por primera vez en este blog, sacaba una imagen de una chica ligera de ropa para reflexionar sobre una comparación tan audaz como asemejarla a una mosca de la fruta, me he animado a repetir la experiencia, y aquí os traigo ahora a la modelo de Victoria’s Secret Adriana Lima. Qué leches, la reflexión filosófica no tiene por qué estar reñida con alegrarse un poco la vista. La cuestión de hoy es: ¿Por qué actuamos como actuamos? ¿Por qué al ver la foto de Adriana siento unos deseos irrefrenables de acercarme a ella lo más cerca como legalmente me sea posible? ¿Cómo resolver la vieja y misteriosa pregunta de la conducta humana?

La primera explicación clásica la dio, como no podría ser de otra manera, Aristóteles. Nos movemos para conseguir algo porque nuestra naturaleza (y la del Cosmos en su totalidad) es teleológica. Todo ser existente se mueve porque persigue un fin, un objetivo, un telos. Aristóteles hablaba principalmente de los seres vivos (fue el gran primer naturalista de la historia y escribió más de zoología que de cualquier otro tema) pero también extendía este modelo a los seres inertes. Una piedra caía hacía abajo no porque existiera ninguna fuerza que la moviera, sino porque en su naturaleza existía la finalidad, el objetivo de estar lo más abajo posible. Todos los seres tenían un principio intrínseco que les hacía perseguir una serie de objetivos, y no otros. La bellota tenía en su naturaleza la finalidad de convertirse en encina y por eso crecía (se movía) y cambiaba para conseguirlo. En su esencia estaba en potencia (como posibilidad) ser una encina y no un dinosaurio. El fluir de la naturaleza era un continuo actualizar potencias, conseguir en acto lo que sólo existía como posibilidad. Quiero acercarme a Adriana porque en mi naturaleza humana está en potencia acercarme a chicas guapas, cosa que como ya sabemos, no me ocurriría si yo fuera una drosophila.

Pero a pesar de ser una sofisticada teoría que, a priori, conseguía explicar todo el movimiento y el cambio en la naturaleza, no era completamente satisfactoria.  ¿Qué pasa con los seres, quizá la mayoría de los existentes, que no pueden representarse tales finalidades? ¿Cómo va un ser a perseguir un objetivo si no sabe cuál es? Una hormiga persigue el buen funcionamiento del hormiguero al que pertenece. Sin embargo, ¿tiene la hormiga una representación mental clara en su diminuto cerebro de cómo funciona el hormiguero y de cuál es su papel en él? Parece que no. Y si nos vamos al ejemplo de la piedra la objeción se hace más patente: ¿sabe algo la piedra sobre sus fines si no sabe nada? Es muy preclaro que una piedra no obra teleológicamente.

Otra explicación de la conducta, mucho más moderna, es la que nos dio el conductismo. De un modo extremadamente sencillo, la conducta era la mera respuesta de un organismo (un output) a un estímulo dado (un input). Ni fines ni objetivos, sólo estímulos y respuestas. Esta teoría explica mejor que la aristotélica el hacer de la hormiga. No es que la hormiga trabaje en pro del funcionamiento global de su hormiguero, sino que tiene programadas una serie de respuestas ante unos estímulos que, cuando las realiza, como por arte de magia, consigue el objetivo requerido. Cuando la hormiga persigue el rastro hormonal de sus compañeras no lo hace representando en su mente que conseguirá comida y la podrá traer de vuelta al hormiguero, sino que simplemente responde así y, al hacerlo, consigue su objetivo.

Pensemos en un brazo robótico en una cadena de montaje de automóviles. Cada movimiento que realiza lo hace obedeciendo un programa sin que en tal programa se «visualice» de ninguna manera el objetivo final de poner un tornillo en la puerta del coche. La máquina mueve una de sus piezas, luego otra y luego otra siguiendo los pasos de un algoritmo, de modo que, al seguir todas las pautas en el orden requerido, pone el tornillo en su lugar. El objetivo final sólo estaba en la mente del ingeniero pero no está dado ni en el programa ni en la conducta de la máquina. Veámoslo más claramente poniendo el ejemplo de cómo podrían ser las instrucciones que el brazo sigue:

1. Mueve el antebrazo 23º a la derecha.

2. Gira el rotor 2 14º a la izquierda.

3. Activa el servomotor  1 durante 6 segundos.

4. Vuelve al paso 1.

¿Se ve que en ninguna instrucción la máquina se representa el objetivo final?

No obstante, el conductismo tenía un grave problema para explicarlo todo. A saber, no tenía en cuenta lo que ocurre entre el input y el output. Es posible que para explicar la conducta de una hormiga o de un brazo robótico, el conductismo baste, pero para comprender el comportamiento de organismos más complejos no. Un ser humano dará diferentes y muy variadas respuestas ante un mismo estímulo. De aquí el fracaso del delirio watsoniano de predecir y controlar toda la conducta humana sólo en base a esos dos parámetros. ¿Pero qué es lo que faltaba entonces?

Muchos conductistas se dieron pronto cuenta. Uno de ellos, Hull, propuso una de las primeras teorías de la motivación. En esta última palabra estaba la clave: los seres vivos actúan por motivos que no son otra cosa que activaciones del sistema nervioso central. Ahora, ya existía algo entre el input y el output: con miedo todavía a llamarlo mente, Hull sólo habló de SNC. Y en función de cómo se active este sistema nervioso se darán unas respuestas u otras.

Motivo, una especie de fuerza, de impulso o deseo (no sé como llamarlo de otra manera) que empuja a conseguir cualquier cosa. Los mamíferos superiores incorporaron sofisticados sistemas de representación mental para planificar con mayor eficacia la satisfacción de un motivo. Pero hay que tener muy claro que la representación mental de un objetivo, por sí misma, no explica la conducta. Yo puedo representarme mentalmente con todo lujo de detalles el objetivo de conseguir una chuleta de cerdo, incluso puedo planificar muy bien cómo conseguirla, pero si no tengo hambre alguna, difícil será que mi conducta se dirija hacia el filete. Hace falta motivación.

Una consecuencia muy interesante de este descubrimiento supone un enorme reto para los ingenieros de inteligencia artificial. Podemos hacer una máquina que se represente unos objetivos dados (más sofisticada que nuestro brazo robótico) y que cambie su conducta de tal modo que encuentre los medios más eficaces para conseguirlos. Sin embargo, no podemos conseguir que esa máquina esté motivada, que deseé realmente conseguir los objetivos. Las máquinas no sienten deseos por muy bien que cumplan sus funciones. La razón es la de siempre: aún no hemos conseguido que una máquina pueda tener algún tipo de sensación ni emoción consciente. Si queremos emular la conducta de los seres vivos, ineludiblemente, éste tendrá que ser el siguiente paso: máquinas deseantes. O dicho en román paladín, hasta que no tengamos una máquina que se ponga cachonda al ver la foto de Adriana… hasta entonces sólo tendremos un cero en conducta.

El código

Publicado: 20 julio 2010 en Evolución, Humor
Etiquetas:, ,

El trabajo cotidiano de cualquier criptógrafo consiste en intentar descifrar, dar sentido a un código que, aparentemente, no lo tiene. Si se encuentra, por ejemplo, con el siguiente número:

011011011011011011011011011

el algoritmo que lo genera es muy fácil: «Escribe dos unos tras cada cero». Sin embargo, en otras ocasiones el asunto es más complicado. Si nos fijamos en el siguiente:

010001110111010010011100110101101011101110101000010

pasaría por todos los test normales de alatoriedad, pareciendo que no tiene orden, que no traduce nada, no existiendo algoritmo alguno que lo genere. Sin embargo, es la traducción a binario de un fragmento del genoma del virus MS2 (traducido cada nucleotido de la forma Adenina=00, Uracilo=11, Guanina=01 y Citosina=10). El lenguaje en el que están escritas  las instrucciones para generar cualquier ser vivo puede ser traducido a lenguaje informático y tratado como si de un mensaje encriptado se tratara. Durante muchos siglos la cábala y las diversas escuelas de numerología buscaron códigos numéricos en los textos bíblicos, pretendiendo encontrar el auténtico sentido del texto en otro lenguaje distinto al propiamente escrito. ¿Tendrá la cábala moderna que buscar ese código en el lenguaje de la vida, en nuestras largas y enrolladas cadenas de ADN? ¿Es nuestro genoma un lenguaje arbitrario o esconde algún sentido secreto?

Por lo que sabemos, el lenguaje mediante el que ADN se expresa es plenamente convencional, perfectamente aleatorio. Lo sentimos por nuestros queridos pitagóricos.  Si bien, como no hay forma de saber si, dado un código cualquiera, es aleatorio o no, animamos a que busquen ese improbable  código del código.

Me pregunto que pasaría si encontráramos algún mensaje como «Made by god» o, mucho mejor, «Made by natural selection», o mejor aún, «Adán was here» o «Fool who reads it». ¿Se imaginan las caras de Watson y Crick?