La alianza de la informática y la biología no es nueva. Alan Turing, el matemático y criptógrafo británico que es considerado unánimemente uno de los padres de la informática, coqueteó en los años 50 con la posibilidad de utilizar aquellos primeros ordenadores para entender mejor los procesos biológicos complejos. Además, fue lo suficientemente astuto para darse cuenta de que esta alianza podía resultarnos útil desde dos frentes diferentes.
Por un lado decidió desarrollar modelos matemáticos de la morfogénesis, que a grandes rasgos es el proceso biológico que explica cómo un organismo adquiere una forma determinada. Y, por otra parte, afianzó las bases de la inteligencia artificial como una disciplina integrada en las ciencias de la computación que pretendía imitar las capacidades cognitivas de la mente humana. Turing, probablemente sin pretenderlo, había asentado los cimientos de dos disciplinas que hoy, siete décadas más tarde, tienen un potencial enorme: la biología computacional y la computación biológica. La primera de ellas la hemos explorado en el artículo que enlazo aquí mismo, por lo que la auténtica protagonista de este texto es la segunda, una rama de la informática que ya tiene un impacto profundo en nuestras vidas.
Computación biológica: qué es y en qué difiere de la biología computacional
Sus nombres se parecen tanto que es razonable que una persona que no esté familiarizada con estas disciplinas pueda confundirlas. Ambas reflejan la cooperación de la biología y la informática para alcanzar un propósito, pero su alcance y su ámbito de trabajo no son los mismos. La biología computacional es una ciencia que recurre a herramientas informáticas para ayudarnos a entender mejor los sistemas biológicos más complejos. Sin embargo, la computación biológica es una rama de la informática que estudia, por un lado, cómo podemos utilizar elementos de naturaleza biológica para procesar y almacenar la información, y también cómo podemos inspirarnos en los mecanismos de la evolución biológica para desarrollar nuevos algoritmos que nos permitan resolver problemas complejos.
La computación biológica estudia cómo podemos utilizar elementos de naturaleza biológica para procesar y almacenar la información, y también cómo podemos inspirarnos en los mecanismos de la evolución biológica para desarrollar nuevos algoritmos
Una forma sencilla e intuitiva de identificarlas consiste en recordar que en la biología computacional es la biología la que se beneficia de las herramientas que le ofrece la informática, mientras que en la computación biológica es la informática la que se beneficia de los mecanismos que podemos observar en los sistemas biológicos. No obstante, como acabamos de ver, esta última disciplina se ha bifurcado en dos ramas diferentes que tienen aplicaciones en campos distintos de la informática. Una de ellas está permitiendo desarrollar el hardware desde una perspectiva muy diferente a aquella con la que estamos familiarizados, mientras que la otra se adentra en el software bajo la forma de una de las ramas más prometedoras de la inteligencia artificial.
En las siguientes secciones del artículo vamos a indagar en los dos ámbitos de trabajo de la computación biológica con cierta profundidad, pero merece la pena que antes de entrar en detalles los definamos con más precisión. Si nos ceñimos al hardware esta disciplina recurre a moléculas derivadas de sistemas biológicos, como las proteínas o el ADN, para llevar a cabo cálculos, almacenar y recuperar la información. Y si nos adentramos en el terreno del software, en particular en el de la inteligencia artificial, la computación biológica propone abordar algunos problemas de la informática inspirándonos en la estrategia utilizada por la biología para resolver algunos retos. Estas son sus principales tres fuentes de inspiración:
- El comportamiento social: una definición que ilustra bastante bien esta idea consiste en observarlo como la conducta colectiva que tiene lugar entre miembros de una misma especie que conviven en el mismo hábitat. La computación biológica se inspira en él para entender y predecir el comportamiento de las poblaciones integradas por entidades del mismo tipo que se relacionan entre sí.
- El conexionismo: propone que los procesos mentales que explican nuestras capacidades cognitivas y nuestro comportamiento pueden ser descritos como el resultado de la comunicación de unidades sencillas que tienen la misma estructura y que están interconectadas. Esas unidades son las neuronas, y su conexión se establece gracias a un mecanismo conocido como sinapsis. La mayor parte de las redes neuronales artificiales se han desarrollado inspirándose en este enfoque.
- La emergencia: este concepto describe las propiedades de un sistema complejo que no están presentes en los elementos que lo constituyen. Parece una definición complicada y abstracta, pero, en realidad, no lo es. Podemos ilustrarla fijándonos en la estructura de nuestro cerebro. Por sí sola cada una de nuestras neuronas no tiene consciencia, pero los procesos desencadenados por la cooperación y la comunicación de un conjunto grande de neuronas hacen posible que la consciencia emerja como una propiedad esencial de nuestra mente.
Su impacto en el hardware: los ordenadores biológicos
Todavía queda mucho trabajo por hacer para que los ordenadores biológicos salgan de los laboratorios y puedan marcar la diferencia ayudándonos a resolver algunos problemas muy concretos que actualmente son difíciles de abordar con los ordenadores convencionales. Aun así, podemos ser razonablemente optimistas y confiar en que durante los próximos años experimentarán un avance importante porque ya lo han hecho durante las dos últimas décadas gracias al impulso que ha tomado la nanobiotecnología.
La definición más precisa de esta última disciplina, y también la más aceptada por los científicos, la describe como la tecnología que nos permite manipular con precisión proteínas para ensamblar estructuras funcionales más complejas. Precisamente es esta capacidad la que ya ha permitido a varios grupos de investigación poner a punto los primeros ordenadores biológicos que tienen la capacidad de llevar a cabo cálculos manipulando el ARN (ácido ribonucleico) de una bacteria. Si lo exponemos de esta forma resulta difícil creerlo porque las bacterias no tienen nada que ver ni con el silicio ni con los transistores de los que están hechos los microprocesadores de nuestros ordenadores, smartphones y tablets. De algún modo parece magia, pero no lo es.
La nanobiotecnología nos permite manipular proteínas para ensamblar estructuras funcionales más complejas
Explicar de forma minuciosa cómo funciona esta tecnología nos obligaría a indagar en técnicas de ingeniería genética avanzadas que exceden el alcance de este artículo, pero, afortunadamente, no necesitamos profundizar tanto para entender cómo funcionan estos primeros ordenadores biológicos. Lo que los científicos están haciendo es, sin entrar en detalles demasiado complicados, diseñar un circuito biológico manipulando moléculas de ADN que se comporta de la misma manera que un circuito digital, y con el que, por tanto, es posible implementar las mismas operaciones lógicas que llevan a cabo los procesadores de silicio convencionales.
Esa manipulación del ADN es posible, precisamente, gracias a los avances que ha experimentado la nanobiotecnología durante los últimos años. Una vez que el circuito biológico está preparado lo introducen en una bacteria Escherichia coli idéntica a las que residen en el interior de nuestro estómago e intestino, y sin las que no podríamos llevar a cabo la correcta digestión de los alimentos. La bacteria E. coli es lo suficientemente sencilla e inocua para que los investigadores puedan manipularla sin esfuerzo, y cuando el ADN manipulado atraviesa la pared celular de la bacteria la máquina molecular de la propia célula lo traduce a ARN mensajero (ARNm).
Lo interesante es que ese ARNm indica al ribosoma de la célula qué debe hacer para sintetizar una proteína prefijada por los investigadores. Los ribosomas son los orgánulos o componentes de las células que se responsabilizan de la síntesis o fabricación de las proteínas. Y ahora viene lo más sorprendente: el ARNm que indica al ribosoma cómo debe fabricar la proteína solo se activa en presencia de una entrada concreta, y cuando lo hace desencadena la producción de la proteína, que es la salida. Este comportamiento es exactamente el mismo de un transistor, y el tándem formado por el ARNm y el ribosoma equivale a una puerta lógica, que es el dispositivo electrónico mínimo de nuestros microprocesadores que es capaz de llevar a cabo una operación.
La maquinaria celular de la bacteria se comporta como un transistor que es capaz de llevar a cabo unas determinadas operaciones lógicas
Aún hay algo que no hemos explicado: ¿cómo consiguen los investigadores activar el ARNm para que el ribosoma sintetice la proteína? Lo logran introduciendo en la bacteria una nueva molécula de ARN diseñada expresamente para activar la expresión del ARNm que han introducido previamente. Al final lo que están consiguiendo es que la maquinaria celular de la bacteria se comporte como un transistor que es capaz de llevar a cabo unas determinadas operaciones lógicas. Hace poco más de dos años unos investigadores de las universidades de Arizona y Harvard, ambas en Estados Unidos, consiguieron utilizar esta tecnología para poner a punto un circuito biológico constituido por cinco puertas lógicas OR, otras cinco AND y dos NOT. No parece gran cosa, pero por algo se empieza.
Actualmente varios grupos de investigación de algunas de las universidades más prestigiosas del mundo están trabajando en esta tecnología, y parece razonable prever que poco a poco conseguirán diseñar circuitos biológicos más complejos. Como os adelanté en el primer párrafo de esta sección del artículo, parece que aún queda mucho trabajo por hacer hasta que podamos conseguir un ordenador biológico capaz de llevar a cabo procesos complejos. En el MIT, por ejemplo, han apostado por una estrategia similar, que no idéntica, a la que han desarrollado los investigadores de las universidades de Arizona y Harvard. Quién sabe, quizá en algún momento a alguien se le ocurra una táctica original que haga posible un avance notable de los ordenadores biológicos.
También es una rama muy importante de la inteligencia artificial
Como acabamos de ver, el impacto de la computación biológica en el hardware es una promesa a medio o largo plazo. Sin embargo, en el ámbito del software la situación es muy distinta. Y es que esta disciplina es una rama muy sólida de la inteligencia artificial. Tanto que ha adoptado la forma de una asignatura que se imparte en muchas de las universidades españolas que ofertan el grado en ingeniería en informática. Su propósito es, como hemos visto unos párrafos más arriba, inspirarse en los mecanismos de la evolución biológica para encontrar las soluciones óptimas a algunos problemas computacionales complejos.
Algunas de las herramientas más interesantes que propone son los sistemas de aprendizaje basados en poblaciones; la resolución de problemas mediante esquemas evolutivos inspirados en metáforas biológicas, como los algoritmos genéticos; o las redes neuronales artificiales, entre otras opciones. Estas dos últimas estrategias pueden ayudarnos a entender con bastante precisión cómo funcionan los mecanismos de la computación biológica, por lo que merece la pena que indaguemos un poco en ellas.
Los algoritmos genéticos persiguen encontrar la solución a algunos problemas imitando los mecanismos que condicionan la evolución biológica
Empezaremos por los algoritmos genéticos. Su propósito es ayudarnos a encontrar la solución a algunos problemas imitando los mecanismos que condicionan la evolución biológica, como las mutaciones y las recombinaciones, y también las leyes de la selección natural. Todo esto parece muy abstracto y alejado de la informática con la que estamos familiarizados, pero, en realidad, es fácil intuir en qué consiste si nos abstraemos de los detalles más complicados. Imaginemos que necesitamos viajar con nuestro coche a otra ciudad muy alejada y no tenemos ni idea acerca de cuál es el recorrido que nos permitirá afrontar el trayecto en el mínimo tiempo posible.
Lo primero que haría un algoritmo genético para ayudarnos a resolver este dilema es generar un conjunto finito de posibles trayectorias aleatorias que podemos seguir con nuestro coche. Ese conjunto de soluciones, entre las que quizá se encuentra la solución óptima, equivale a una población, y cada una de las soluciones equivale a un individuo. Como estamos viendo la inspiración biológica de los algoritmos genéticos está presente desde el principio, pero aún nos queda mucho por hacer porque tenemos que encontrar la mejor solución entre todas ellas.
Imaginemos ahora que para nosotros la trayectoria ideal es aquella que nos permite llegar a nuestro destino en el menor tiempo posible teniendo presente tanto la distancia como el estado del tráfico. Y, además, también queremos que evite las autopistas de peaje. Estas condiciones en la nomenclatura de los algoritmos genéticos se conocen como funciones de aptitud, y nos permiten encontrar la solución óptima descartando aquellas que no satisfacen los requisitos que hemos definido. Nuestro algoritmo genético analizará cada una de las trayectorias de nuestra población inicial e irá descartando aquellas que no nos interesan porque no cumplen nuestras condiciones.
Cuando haya terminado este proceso habremos obtenido un conjunto de soluciones más pequeño que el conjunto inicial porque ya habremos descartado aquellas que no nos interesan. La semejanza entre este método y la forma en que la selección natural actúa sobre una población de individuos permitiendo la supervivencia de los que mejor se adaptan al medio es clara. Pero aún no hemos dado con la solución a nuestro problema porque seguimos teniendo muchas opciones y no sabemos si la óptima está entre ellas.
El algoritmo genético describe un proceso iterativo que cada vez nos ofrece mejores soluciones a partir de un conjunto limitado y aleatorio de soluciones iniciales
Lo que hará ahora nuestro algoritmo genético es clasificar las soluciones que tenemos para ordenarlas tomando como referencia el criterio que hemos elegido. Por esta razón considerará que las mejores son las más cortas, las que recurren a las carreteras con menos tráfico y las que nos permiten evitar las autopistas de peaje. Ya tenemos nuestras posibles soluciones jerarquizadas, pero aún no podemos estar seguros de que la solución óptima esté entre ellas porque nuestro punto de partida ha sido un conjunto finito de soluciones aleatorias. Necesitamos generar más soluciones, así que nuestro algoritmo aplicará sobre las que tenemos operaciones que imitan la reproducción biológica de los individuos de una población.
Lo que hará será, por ejemplo, emparejar estas soluciones de dos en dos dando prioridad a aquellas que han resultado favorecidas en la clasificación que acabamos de hacer para obtener nuevas trayectorias que combinan partes del trazado de las trayectorias originales. Cuando tengamos este nuevo conjunto de soluciones tendremos que aplicar de nuevo sobre ellas la función de aptitud para seleccionar aquellas que encajan mejor con nuestras preferencias iniciales, pero seguiremos sin estar seguros de que la solución óptima está entre ellas. Por esta razón, el algoritmo genético seguirá adelante volviendo a permitir que las soluciones que tenemos se reproduzcan entremezclándose, pero, de nuevo, dará prioridad a las que encajan mejor con nuestros requisitos iniciales.
Como estamos viendo, es un proceso iterativo que cada vez nos ofrece mejores soluciones a partir de un conjunto limitado y aleatorio de soluciones iniciales. Nuestro ejemplo ilustra bastante bien los conceptos de reproducción y selección natural, que están claramente inspirados en la biología, pero los algoritmos genéticos también utilizan otro mecanismo que les permite generar nuevas soluciones: las mutaciones. Lo que hacen es introducir en la población zonas del espacio de búsqueda que no están cubiertas por la población actual, y que quizá podrían ayudarnos a encontrar la solución óptima.
En nuestro ejemplo una mutación podría consistir en introducir en algunas trayectorias el desvío aleatorio hacia una ciudad que no está contemplada en la trayectoria original. Es posible que muchas de las soluciones empeoren, pero alguna podría mejorar tomando como referencia nuestro criterio de selección en el que prevalecen la distancia, el tráfico y el descarte de las autopistas de peaje. Las soluciones que empeoren serán penalizadas por la selección natural, que acabará descartándolas, pero si alguna de ellas mejora pasará a formar parte de futuras generaciones de soluciones en nuestra búsqueda de la opción óptima.
Los algoritmos genéticos no son la mejor opción para resolver cualquier problema. Su estrategia provoca que en ocasiones no nos entreguen la solución óptima, que nos devuelvan una solución que no es satisfactoria, o, incluso, que su coste en recursos y tiempo de computación sea inasumible. Pero hay retos en los que encajan como un guante. Actualmente estos algoritmos se utilizan con mucho éxito en problemas complejos que requieren evaluar la idoneidad de un conjunto muy amplio de soluciones.
Se usan, por ejemplo, en ingeniería de materiales para diseñar nuevos compuestos; en ingeniería civil para diseñar los sistemas de alcantarillado y distribución de aguas; en transporte para optimizar la carga de los contenedores; en electrónica para diseñar la topología de las placas de circuito impreso; en biología para estudiar la capacidad de expresión de los genes y optimizar estructuras moleculares; algunas universidades muy grandes los utilizan para confeccionar los horarios de las clases y evitar que se produzcan conflictos, y un larguísimo etcétera. Sus aplicaciones son innumerables, y poco a poco vamos descubriendo más escenarios en los que los algoritmos genéticos pueden marcar la diferencia.
No cabe duda de que estos algoritmos ilustran muy bien el potencial que tiene la computación biológica si nos ceñimos al software, pero no son en absoluto la única herramienta que nos propone esta disciplina. Como hemos visto unos párrafos más arriba, también pone en nuestras manos otras estrategias que pueden ayudarnos a encarar con eficacia otros retos, y las redes neuronales artificiales son una de las herramientas con un mayor potencial. De hecho, actualmente se utilizan para implementar los sistemas de aprendizaje automático usados, por ejemplo, por los asistentes de inteligencia artificial de Google, Amazon, Apple o Microsoft; y también en la visión por ordenador y el reconocimiento de voz.
Las redes neuronales artificiales persiguen resolver los problemas de una forma similar a como los encara el cerebro humano, y para lograrlo imitan su estructura recurriendo a unas unidades lógicas conocidas como neuronas artificiales que están interconectadas y que intercambian información. Cada una de esas neuronas está diseñada para llevar a cabo una serie de operaciones a partir de unos datos de entrada y generar unos datos de salida que pueden activar o no las neuronas adyacentes con las que se comunica esa primera neurona artificial. De esta manera la información que colocamos en la entrada de la red neuronal va atravesando todo el entramado de neuronas artificiales, y durante este viaje va siendo sometida a un conjunto de operaciones que nos permitirá obtener unos valores de salida.
Esta descripción de las redes neuronales artificiales es muy superficial, pero nos permite intuir con claridad lo mucho que su funcionamiento se parece al de nuestro cerebro. Su complejidad reside esencialmente en las operaciones que puede llevar a cabo cada neurona artificial a partir de los datos de entrada que recibe; en la forma en que están implementados los enlaces entre las neuronas y en cómo consiguen activar o inhibir las neuronas circundantes; y también en las operaciones que limitan la salida de cada neurona para impedir que esos valores superen un umbral prefijado antes de propagarse a otras neuronas de la red.
Las redes neuronales artificiales son capaces de inferir nuevo conocimiento sin necesidad de que sean programadas explícitamente, lo que las hace muy valiosas en robótica, reconocimiento de patrones o control de procesos, entre otras aplicaciones
Ya conocemos de una forma relativamente sencilla e intuitiva cómo funciona una red neuronal artificial y algunas de sus aplicaciones, pero aún no hemos indagado en la que sin duda es una de sus características más asombrosas: no necesitan ser programadas de forma explícita. Esto significa, sencillamente, que son capaces de aprender por sí mismas a partir de un conjunto de datos de entrada que nosotros les suministraremos. Nosotros previamente habremos implementado la red delimitando el número de neuronas que la conforman, las operaciones que son capaces de realizar y la estrategia que utilizan para comunicarse entre ellas, pero, a partir de ahí, la propia red será capaz de inferir nuevo conocimiento sin que tengamos que programar este último procedimiento de forma expresa tal y como haríamos si recurriésemos a la programación tradicional.
Esta sorprendente cualidad ha provocado que las redes neuronales artificiales tengan aplicaciones, además de en los ámbitos que he mencionado más arriba, en robótica, procesamiento de datos, control de procesos o reconocimiento de patrones, entre otros muchos escenarios de uso. Todo lo que acabamos de ver acerca de los algoritmos genéticos y las redes neuronales artificiales pone sobre la mesa que, a diferencia de la aplicación de la computación biológica al hardware, que aún es una promesa, si nos ceñimos al software es algo tangible. Real. De hecho, ya nos estamos beneficiando de su potencial. Queda mucho por hacer, por supuesto, pero los investigadores siguen encontrando nuevas aplicaciones, y algunas de ellas podrían tener un impacto profundo en nuestra vida, así que merece la pena que nos mantengamos a la expectativa.
Imagen de portada | Andrea Piacquadio
Imágenes | Mariana Ruiz | NASA | Pixabay
via Magazine - robotica-e-ia https://ift.tt/34AdFVj
No hay comentarios:
Publicar un comentario