logo

Dot CSV

Inteligencia Artificial, Tecnología, Ciencia y Futuro! Bienvenidos a la 4ª Revolución Industrial 🚀 Inteligencia Artificial, Tecnología, Ciencia y Futuro! Bienvenidos a la 4ª Revolución Industrial 🚀

Transcribed podcasts: 213
Time transcribed: 5d 22h 50m 3s

This graph shows how many times the word ______ has been mentioned throughout the history of the program.

Sin lugar a dudas, la noticia científica de la que más he hablado la última semana ha sido el
biobot, un organismo biológico creado célula a célula en el laboratorio y cuya estructura
permite que este pueda ejecutar determinadas tareas sencillas. Con esto se abre una línea
de investigación que es bastante interesante para la creación de nuevos organismos que
puedan ejecutar tareas inteligentes. Pero claro, ¿dónde se encajaría todo esto dentro de este canal?
Pues fíjate, es que resulta que el diseño de estos organismos no depende de la idea feliz
de un científico que decide ensamblar la célula de una manera determinada, sino que este diseño
viene dado por un algoritmo de inteligencia artificial ejecutándose en un superordenador.
Más concretamente hablamos de algoritmos evolutivos, lo cual hace que esta noticia
sea mucho más interesante. Vamos a verlo. A ver, primero déjame que te ponga en situación
contándote un poco cuáles son las técnicas biológicas actuales que se han utilizado para
la creación de este bióbot y que de acuerdo con la nomenclatura científica más rigurosa
voy a pasar a denominar magia. Mira, esto de aquí es una rana, rana de uñas africanas para ser más
exacto, y esto de aquí son sus embriones, embriones que se pueden manipular genéticamente para
cultivar y obtener de ellos diferentes tipos de tejido celular, tejido epidérmico, tejido muscular,
etcétera. Con esto se puede ir apilando capas y capas de tejidos siguiendo el diseño deseado
como si un proceso de impresión 3D se tratase, obteniendo finalmente una albóndiga celular en
las que los diferentes tipos de células están ubicadas donde queremos. Para acabar con mucha
paciencia y microcirugía terminamos de definir la forma necesaria para obtener así un bióbot.
¿Y qué es esto? te preguntarás. Pues un bióbot. Un organismo creado a partir de células
independientes, cada una ejecutando su función, pero que en conjunto su diseño le permite reproducir
una tarea sencilla como por ejemplo andar. Mira, para que lo entiendas bien te voy a explicar con
qué tipo de células ha trabajado para la creación de este bióbot. Por un lado tenemos células del
tejido muscular del corazón, cuya función en este caso es efectivamente la de contraerse como si de
un latido se tratase. Por el otro lado el otro tipo de células que utilizamos son del tejido
epidérmico y sus funciones, bueno pues ninguna, son células pasivas, pero que en este caso nos
servirán para conformar la estructura de nuestro bióbot. Sabiendo que tenemos estos dos elementos
en nuestra caja de herramientas, pequeños pistones y material para la estructura,
no te he descabellado pensar que combinando esto podemos encontrar algún diseño que nos
permita que nuestro bióbot pueda ser algo de utilidad, como por ejemplo caminar. Este sería
un ejemplo. Situando lo que serían sus extremidades inferiores, células contractivas que no paren de
latir, podemos conseguir que en conjunto el bióbot desarrolla un comportamiento de locomoción. ¿Qué
te parece? Además, para demostrarnos que efectivamente este movimiento proviene del
diseño estructural planteado y no de latidos aleatorios o de corrientes en el agua, los
investigadores han desarrollado una técnica de vanguardia con el que poder confirmarlo. Poner
al bióbot al revés. ¿Ves? Ya no se mueve. Ya, lo sé, impresionante. Ahora, hay una cosa que me
impresiona más de todo este trabajo y es que no nos hayamos puesto de acuerdo para ponerle nombre
a esta cosa. Es decir, si eres de habla hispana, seguramente tú hayas conocido esta noticia como
la creación de biobots. Pero si en realidad te vas al paper original y a los documentos anexos,
este nombre sólo se menciona en dos ocasiones. De hecho, este concepto se ha popularizado a través
de la prensa española, quienes han ido replicando este término de biobot noticia a noticia, pero que
si por ejemplo nos vamos a la prensa inglesa, allí notamos cuenta que le llaman de una manera
diferente. Cenobot, en honor a la rana de la cual se han obtenido las células para crear a este
bicho, la Cenopus laevis. Por cierto, si te estás preguntando por qué estamos utilizando embriones
de este tipo de rana, es porque son inusualmente más grande y son más fáciles de manipular, ¿vale?
Nada más. En cualquier caso, si tuviera que elegir entre uno de estos dos términos, elegiría biobot
porque suena mejor, pero en realidad prefiero referirme a ellos de la manera a la que lo han
hecho los propios investigadores en su página web, que es Computer Designed Organisms o,
traducido al español, organismos diseñados por ordenador. Comienza la parte de inteligencia
artificial. Veamos, ya sabemos cómo se construyen estos biobots, pero ¿cómo se diseñan? Es decir,
si su funcionalidad emerge de su diseño estructural, ¿cómo saber cuál es el diseño óptimo para una
tarea dada? Solución, probar. El problema es que si queremos probar, construir cada uno de estos
biobots requiere de varios días de trabajo. Solución, simular. Si contamos con un simulador
que emule las físicas del entorno acuoso en el que se mueve el biobot, podemos confiar en la
potencia de un ordenador para simular cómo funcionarían diferentes diseños del organismo
para la tarea que hayamos especificado. Además, para simplificar la generación de diseños,
podemos aproximar la geometría de lo que sería el organismo biológico real a una versión sacada
de Minecraft de este, conformado por píxeles tridimensionales o, como se conoce de manera
formal, por bóxeles. Así lo que estaríamos haciendo sería asumir que cada bóxel representaría en el
diseño final a un grupo de células del tipo pasivas o contractivas y con esto ya podemos
ponernos a ensamblar y simular todos los posibles diseños. Probamos uno, lo simulamos y ok, vale,
se mueve hasta aquí. Probamos otro, lo volvemos a simular y se mueve hasta aquí. Vale, probamos
otro y también llega hasta aquí. ¿Cuánto falta? ¿Cuántos diseños nos quedan por acabar? A ver,
pues si tomamos los datos del estudio estaríamos trabajando en un espacio de 8x8x7 bóxels y esto
hace un total de 448 cubos en los que podríamos colocar tres tipos diferentes de bóxels, el de
la célula pasiva, el de la célula contractiva y el no-cubo, un espacio vacío. Esto significaría
que en total tenemos tres elevado a 448 posibles diseños que en total son... vale, vale, vale,
a ver. Es cierto que muchas de estas combinaciones contenidas en este número no son configuraciones
válidas para el diseño de un biobot ya que tenemos cubos dispersos o extremidades sueltas y cosas
raras, pero igualmente el número de diseños válidos es tan grande que simularlos todos no es una
tarea computacionalmente posible. Por suerte, en el campo de la inteligencia artificial contamos con
las herramientas perfectas para este tipo de problema, los algoritmos evolutivos. Los algoritmos
evolutivos son una familia de algoritmos que toman de inspiración conceptos de la teoría de la
evolución clásica, reproducción, descendencia, generaciones, mutación o cruces. Todo ello con el
fin de simular un proceso de selección natural, artificial, que sirva para optimizar un objetivo
que nosotros hayamos establecido como por ejemplo la distancia recorrida por un biobot. En el orden
de todas las cosas dentro del campo del machine learning, este tipo de técnicas estarían situadas
al nivel de otros tipos de algoritmos de optimización como el descenso del gradiente,
el cual se utiliza frecuentemente para el entrenamiento de redes neuronales tal y como hemos
visto en este canal. Si el algoritmo del descenso del gradiente se aprovechaba del cálculo de
derivadas para ir aproximándose a los puntos mínimos o máximos de nuestra función objetivo,
en este caso los algoritmos evolutivos se basan en generar una población de posibles soluciones y
dejar que estos vayan evolucionando para ir aproximándose al punto final. Una heurística
de búsqueda aleatoria que para ciertos problemas incluso rinde mejor que el descenso del gradiente.
Problemas como el de hoy, donde dentro de un espacio de búsqueda muy grande estamos buscando
aquella solución que optimice nuestra función objetivo. Para que lo entiendas mejor déjame
que te explique cuáles son los pasos típicos de un algoritmo evolutivo aplicado a este trabajo.
Imagínate que partimos inicialmente con un número específico de posibles biobots
diseñados aleatoriamente, por ejemplo 25. Esta de aquí será nuestra población inicial. Cada uno
de estos candidatos cuenta con un diseño diferente que será el que le otorgue al bot un comportamiento
determinado. Esta estructura, la anatomía del bot, el decidir si se coloca un bloque de células
o de otro tipo de células, emerge a partir de un conjunto de parámetros que de variarlos harían
que la forma final del bicho también cambiara. Siguiendo la analogía evolutiva a estos parámetros
podríamos entenderlos como el genoma del bot virtual. A partir de esto podemos comenzar
nuestro algoritmo generando una copia de cada uno de los diseños que tenemos pero introduciendo
algún tipo de mutación. Esto es fácil porque podemos crear un nuevo bot que sea parecido pero
no idéntico a él a partir de tomar su genoma y realizar algunas mutaciones aleatorias en él.
Habríamos creado un descendiente del bot original con un genoma algo modificado pero manteniendo
cierta semejanza con la anatomía del progenitor. ¿Se entiende? Con esto hemos duplicado el tamaño
de nuestra población a hora de 50 y ahora lo que podemos hacer es ver qué tal realiza cada uno de
estos diseños la tarea de caminar. Para cada uno de ellos realizaremos una simulación con física
virtuales y evaluaremos por ejemplo cuántos metros logra avanzar en un intervalo de 10 segundos.
Algunos serán más rápidos otros serán más lentos y cuando los hayamos evaluado todos podremos
seleccionar solamente aquellos que hayan sido más rápidos quedándonos de nuevo con 25 candidatos,
los 25 candidatos más aptos. Una vez más la selección natural vuelve a triunfar. Si
has entendido esto no te costará entender cómo si repetimos esto por varias generaciones,
por ejemplo mil generaciones, lo que estaremos haciendo será inducir un proceso evolutivo que
hará que finalmente se seleccionen aquellos organismos que mejor se adapten a la tarea que
hemos especificado. Estaríamos realizando un algoritmo evolutivo. Mola eh? Sobre esto luego hay
diferentes tipos de variaciones en los algoritmos, por ejemplo una alternativa a las mutaciones de
los descendientes sería tomar de nuestra población a dos progenitores aleatorios y obtener un
descendiente a partir de la recombinación de sus genes originales. O por ejemplo para no arriesgarnos
a que la mala fortuna nos deje con una población poco válida producto de una mala mutación inicial,
lo que podemos hacer es añadir en cada generación a nuestra población a un candidato completamente
nuevo con un diseño generado aleatoriamente que introduzca una mayor variación genética en
nuestra población. Como ves existen tantas alternativas como tipos de algoritmos evolutivos
existen y en este caso para este artículo de hecho la cosa es un poquito más compleja ya que
la propia estructura tridimensional del biobot, la decisión de si un voxel va ubicado en una
zona u otra viene dada como salida de una red neuronal de tipo compositional producing pattern
network que es una red específica para este tipo de problemas que está diseñada para la creación
de robots blandos. En este caso la parametrización de esta red neuronal, los parámetros que se
utilizan serían este código genético del que estábamos hablando antes. En este caso en este
vídeo no vamos a entrar en más detalles en esto porque es innecesariamente complejo pero si te
interesa te voy a dejar abajo en la descripción unos cuantos artículos que te pueden interesar.
En cualquier caso creo que ya tienes claro cuáles son los principios básicos que hacen funcionar a
un algoritmo evolutivo y ante saber que su utilización, su aplicación no solo va para
enseñar a agentes inteligentes a caminar, a saltar, a mover carga, sino que también se ha utilizado
para el diseño industrial evolutivo de drones o de esta antena creada por la NASA, de coches,
de aviones, de estructuras arquitectónicas y ahora también para biobots. Biobots que son capaces no
solo de caminar sino que según el tipo de objetivo que la hayamos especificado podemos
diseñarlo para que por ejemplo muevan cargas o para que recolecten de manera colaborativa restos
y los centralicen en una zona para poder coger esas cargas y cargarlos en su interior gracias a
un agujero que el propio algoritmo evolutivo ha creído convenientes para poder resolver esta
tarea o incluso catapultarlos. Para mí es muy interesante observar algunos de los diseños que
el propio algoritmo genera como solución al problema planteado y en realidad es increíble
pensar que hemos sido capaces de diseñar algoritmos que son capaces de crear diseños
inteligentes y que podemos replicar con tejidos crecidos en el laboratorio y que todo esto funcione
y en realidad ni siquiera se trata de tecnología nueva ya que el diseño evolutivo de robots blandos
que se han utilizado en este trabajo ya se conocía desde 2013 y las técnicas biológicas usadas tampoco
son nuevas. La clave aquí ha sido combinar ambas ideas. El resultado es contar con una nueva
herramienta en nuestro arsenal que podría tener futuras aplicaciones interesantes. Además,
los biobots por su composición celular son biodegradables, se ha comprobado que tienen
propiedades regeneradoras y además en el futuro podría llegar a cumplir tareas más complejas al
incorporar nuevo tipo de células que añadan nuevas funcionalidades. Pero debemos de ser cautos,
porque esto al final es una prueba de concepto y esta tecnología deberá demostrar en los próximos
años si realmente puede escalar a resolver este tipo de problemas más complejos de los que hemos
hablado. Eso sí, si hoy podemos celebrar algo es que el primer paso ya ha sido dado y que en él la
inteligencia artificial ha cumplido su papel. Estoy pensando que si este vídeo gusta y abajo me lo ponen
en los comentarios podemos intentar experimentar con esto de los algoritmos evolutivos a lo mejor
un poquito en código, pero bueno, esto ya lo veré abajo en los comentarios. Y antes de acabar quería
también felicitaros el nuevo año 2020 que esto era una cosa que quería hacer en otro vídeo aparte
pero que al final como comunique en Twitter he abandonado porque ese vídeo sí que nos calaba
bien para mi agenda. Feliz 2020 y muchísimas, muchísimas gracias por que sigan confiando en
este canal en dot ccv para informaros, para aprender, para entreteneros, para lo que sea de la
inteligencia artificial y que lo hagáis de mi mano. Muchísimas gracias y muchísimas gracias también
en especial a todos los que sois patreons y que apoyáis financieramente este canal. Si valoráis
este contenido, lo digo siempre, si les gusta que haya este tipo de contenido en YouTube o si te ha
aportado algo en tu carrera, en tu vida profesional o te gusta, lo mejor que puedes hacer es apoyarlo
a través de Patreon financieramente con una donación mensual, invitarme una cerveza. Así que ya sabes
que abajo en la cajita de descripción tienes todos los links a todas estas redes y también le dejo
unos cuantos links interesantes sobre el tema del vídeo de hoy. Nada más, nos vemos con más inteligencia...
Lo voy a dejar así, al final. ¡Adiós!