valor de las preguntas y profundidad de las respuestas

jueves, 29 de noviembre de 2007

... damos significado a nuestro mundo con el valor de nuestras preguntas y la profundidad de nuestras respuestas ...

De Emilio. "Para que os quedéis pensando"

A veces veo el futuro

miércoles, 28 de noviembre de 2007

Fue hace ya mucho tiempo en la playa, estábamos en una terraza tomando algo con nuestro amigos y con algún otro desconocido. Aunque apenas nos separaban unos centímetros del resto, sólo eramos capaces de prestarnos atención en uno al otro. Ajenos en nuestra conversación fue cuando ella me dijo que tenía ciertos poderes místicos y que sabía leer la mano. Yo no pude contener mi curiosidad ni mi recelo a pensar que todo aquello eran bobadas y, cómo no, la tente a que me leyera la mano. En apenas 5 minutos y habiendo mirado un poco tres miseras arrugas de mi mano me describió como si me conociera de toda la vida cuando no habían pasado ni dos semanas desde que nos conocimos. No había acabado de leer la mano cuando vio algo que la hizo parar. Al principio no quiso decirme que era, pero al final confeso. Me dijo que algo malo me pasaría entre entre los 25 y los 30 años, que iba a tener una enfermedad y me iba a morir. Esas últimas palabras se la escaparon pero ya no había marcha atrás, lo había dicho. Mi mente estaba ya entonces demasiado confundida para saber si eso era verdad, yo no creía en esas cosas, pero sin saber por qué ella había acertado en todo. Lo único que pude hacer fue pedirla que me explicará como leer las manos. Con un par de conceptos sobre esas tres arrugas de la mano izquierda ya podía aventurarme a leer manos y tenía delante a la persona adecuada. Cogí su mano, observe aquellas arrugas, la mire a los ojos y entonces deje mi mente en blanco y empecé a decir lo primero que se me venia a la cabeza. Al final de la noche no fui yo el que se fue más sorprendido e intrigado de aquella terraza.

Ha pasado el tiempo y aunque todo aquello lo recordaba como una mera anécdota nunca llegue a olvidarlo. Hoy me visto en mi propio funeral, casi no lo cuento. Siempre he sido un chico sano y deportista, y estas cosas no les pasan a la gente como yo. Pero por muy raro que fuera, se que me lo habían advertido. Nada más decirme que iba a morir ella se arrepintió y rectificó diciendo que pasaría una mala racha, que algo muy malo me pasaría pero que saldría adelante, aunque la vida no fuera igual para mí. De todo lo que me dijo aquella noche eso fue lo menos creíble, pero ahora sé que fue lo más acertado.

A largo plazo siempre nos pasan cosas buenas y malas, que me lo digas ahora no es adivinar el futuro.


Agosto del 2001 Octubre del 2007

Elucubraciones doctorales. Capítulo 2

sábado, 24 de noviembre de 2007

Clasificación de textos usando redes neuronales del tipo ART
Como todo ser humano egoista que se precie, durante algunos meses estuve buscando la forma de hacerme rico creando una página web nueva y diferente. Por si acaso algún día me vuelve la tentación no voy a contar de que se trataba pero si os diré que parte de la base consistía en lograr crear un buen clasificador de textos.

Cuando digo un buen clasificador de textos me refiero a una aplicación que fuera capaz de descargarse un texto de internet (o una web) y clasificarla en un grupo, de tal forma que el clasificador crease automáticamete clases (o grupos) con textos de temática similar. Pero la idea no queda ahí, este clasificador debía ser capaz de evolucionar y adaptarse, es decir, de crear o eliminar clases si fuera necesario o modificarlas de forma que se adaptara a las nuevas tendencias de las temáticas. Cualquier persona avispada se habrá dado cuenta que si tienes un conjunto de usuarios que también clasificas entonces les puedes ofrecer textos relevantes a cada tipo de usuario, y pensando un poco más puedes llegar a tener un negocio interesante.

En primer lugar para clasificar un texto es necesario extraer sus propiedades. La opción mas interesante sería obtener el significado del texto, pero este punto creo que se me escapa de las manos, así que es mejor valorar otras opciones como la longitud, las palabras, la frecuencia con que estas se repiten, el idioma, etc. Tal vez la opción más realista sea clasificar el texto en función del significado de las palabras que contiene y la forma en que estas se agrupan o la frecuencia con que se presentan. Una vez que tenemos los parámetros para clasificar hace falta crear el clasificador.

Como dice el título la idea es utilizar una red neuronal ART, pero antes de explicar que es esto y como podría funcionar empezaré explicando a groso modo que es una red neuronal. Básicamente se trata de crear un celebro en el ordenador, y para ello se utiliza un modelo donde la base son neuronas interconectadas que en función de los estímulos eléctricos de entrada emiten uno de salida. Además de eso, las conexiones no son iguales y en cierto modo se modifica la señal de entrada para cada neurona. Partiendo de estas ideas se puede simular algo parecido a un celebro con un ordenador, con ciertas limitaciones en cuanto a la cantidad de conexiones, el número de neuronas y los ciclos que se producen al interconectar las neuronas. Por tanto, de forma similar al celebro, estas redes son una buena herramienta para crear asociaciones, o lo que es lo mismo, clasificar elementos.

El esquema genérico de una red de neuronas es el siguiente:

donde los valores de salida de cada neurona son una función de sus entradas.

Las redes ART son un modelo de redes de neuronas en los que se ha aplicado la teoría de resonancia adaptativa, o dicho de otra forma, es un modelo de red de neuronas capaz de aprender nuevos patrones y de retener los modelos aprendidos. Con este tipo de red se puede realizar una clasificación de textos donde se aprendan nuevos patrones de estos textos y a su vez también evolucionen los patrones antiguos para poder seguir siendo bien clasificados.

Aunque estas redes funcionan bien el principal problema es ajustar los parámetros que discriminan cuando unos datos de entrada son de un patrón ya existente o se trata de uno nuevo. Además, decidir si un texto ha sido bien o mal clasificado es un factor subjetivo que hace imposible establecer una buena unidad de medida para determinar que red es mejor que otra. Y por si fuera poco, cuando se trata de clasificar textos se necesita realizar un preprocesado de esos textos para obtener las características relevantes para su clasificación, lo cuál puede ser una tarea muy laboriosa, mucho más que crear la red que es la parte interesante del asunto.

NetLogo

miércoles, 21 de noviembre de 2007

NetLogo es una aplicación multiplataforma, hecha en java, para la programación de modelos multiagente. No me ha dado tiempo a verla bien pero si he visto algunos de los modelos y me han gustado mucho. De todos los ejemplos de sistemas de agentes me he ido a buscar, en primer el lugar, los de las hormigas por ser unos animales que me llaman mucho la atención y luego otros grupos de animales sociales. Es increíblecomportamiento tan complejo que se puede obtener con unas reglas muy sencillas. En la página hay varios modelos interesantes que voy a atreverme a explicar:

¿cómo logran las hormigas trazar el camino de menor distancia entre la comida y el hormiguero?

Aunque pueda parecer simple porque lo vemos desde una perspectiva superior el problema no lo es. Imagínate que quieres ir de Madrid a Barcelona (dos ciudades separas por más de 500km), ¿serías capaz de ir en línea recta sin ayuda de una brújula y un mapa? Las hormigas logran hacerlo con unas sencillas reglas. En primer lugar se mueven aleatoriamente dejando un rastro de feromonas para saber por donde han pasado, cuando encuentran la comida vuelven al hormiguero por el camino que habían marcado pero esta vez dejando un rastro de que por ese camino hay comida. El resto de hormigas se enteran de que hay comida y siguen ese rastro con cierta aleatoriedad, sin hacer mucho caso y dejado su propio rastro para evitar perderlo ya que los rastros van desapareciendo con el tiempo. Y al final, tras pasar muchas hormigas logran trazar la distancia más corta entre el hormiguero y la comida. Un ejemplo de este comportamiento lo podéis ver en en el modelo llamado ant lines.

Además las hormigas en caso de tener varias fuentes de alimentos, gracias al comportamiento anterior también son capaces de primero recoger el alimento que más cerca se encuentre. Otro ejemplo en el modelo llamado ants.

¿Cómo apilar elemento dispersos en el menor número de grupos posibles de forma totalmente distribuida? O cómo las termitas son capaces de dejar en montones los trozos de madera.

Pues para ello cada termita utiliza tres reglas: si tengo delante madera y no llevo madera cojo el trozo de madera, si tengo delante madera y llevo madera suelto el trozo de madera, si no tengo delante madera me muevo aleatoriamente. Y con estas sencillas reglas se apilan los trozos de madera, sino mirarlo en el modelo de las termitas.

¿Por qué los pájaros se desplazan en bandadas?

Aunque esto también se debe a que al volar en formación los pájaros necesitan menos energía para volar, por temas de aerodinámica en los que no voy a entrar, las reglas que sigue cada pájaro son muy simples: primero continuar el vuelo, si esta muy cerca de otro pájaro alejarse un poco e intentar acercarse siempre al centro de los pájaros. Tocando un poco los parámetros del modelo de pájaros se puede apreciar bien este comportamiento.

En la web tenéis un montón de modelos que me gustaría ver algún día.

no pienses, ve, triunfa y vuelve

viernes, 16 de noviembre de 2007

Mientras los tímidos se lo piensan los valientes van, triunfan y vuelven

Vía Cristian, que ya no recuerda ni donde lo leyó.

momentos lúcidos

lunes, 5 de noviembre de 2007

yo no escribo bien, pero a veces tengo frases lúcidas

Hablando con more. Todos tenemos momentos lúcidos

Nunca se pierde todo

sábado, 3 de noviembre de 2007

No se puede perder lo que nunca se tuvo, ni aquello que nos hace ser lo que somos

Por un mechón de pelo...

preguntas y respuestas

jueves, 1 de noviembre de 2007

puedo comprender que dejes una pregunta sin respuesta, pero me preocupa cuando me das una respuesta a una pregunta que no he hecho

A una fan...

Es más lista que tú

miércoles, 31 de octubre de 2007

No es mas lista que yo, es que a mi no me gusta pensar.

Fernando Alonso (el amigo, no el piloto)

Sobre la estrategia del ataque

Es mejor conquistar un estado que destruirlo.
Es mejor tomar todo un ejército que destruirlo.
Es mejor tomar todo un batallón que destruirlo.
Es mejor tomar toda una compañía que destruirla.
Es mejor tomar todo un pelotón que destruirlo.
Por tanto, un centenar de victorias en un centenar de batallas no es lo más hábil.
Lo más hábil es someter al ejército contrario sin batalla.

Elucubraciones doctorales. Capítulo 1

martes, 30 de octubre de 2007

Optimización de funciones computacionales usando conceptos de vida artificial

En este primer capítulo de mis ideas alocadas comentaré una de las primeras ideas que me vinieron a la mente en medio de una clase y que pensé que podría ser increíblemente útil. Desgraciadamente antes de que acabará la clase el profesor hizo algunos comentarios que me hundieron en la miseria y deje la idea por imposible. Pero ahí sigue la idea.

Para empezar voy a explicar un poco lo que es la vida artificial, que básicamente se resume en jugar a ser dios y crear vida, de ahí el termino "artificial". Pero, ¿qué es la vida? o mejor dicho ¿qué es un ser vivo? Existen multitud de definiciones y aún hay gente que sigue discutiendo por definir el concepto de vida. A mi me gusta la definición que dice que un ser vivo es algo que se opone a la segunda ley de la termodinámica, pero me voy a quedar con la que me explicaron de pequeño en el colegio: "los seres vivos nacen, crecen, se relacionan con el entorno, se reproducen y mueren" a lo que voy a añadir el término de evolución, porque los seres vivos evolucionan. Y por si alguien es seguidor de la teoría del creacionismo o similar, por favor que se lea un maravilloso libro que escribió Charles Darwin: El origen de las especies (1859, On the Origin of Species by Means of Natural Selection, or the Preservation of Favoured Races in the Struggle for Life) (Texto íntegro en Wikisource).

Partiendo de esta definición de vida voy a contar una historia, la historia de un biólogo, Thomas S. Ray, que se presento a una conferencia de inteligencia artificial. El primer año se rieron de él por proponer la posibilidad de crear vida en el ordenador, el segundo año no tuvieron otra cosa que hacer sino asombrarse de lo que Thomas había conseguido. Como dice él: "Jugué a ser Dios y creé la vida en mi computadora". Y ¿cómo lo hizo? En primer lugar decidió lo que iba a ser el mundo de la vida que iba a crear, como se trataba de crear vida en el ordenador no hay mejor mundo que la memoría, o al menos, una parte de ella. Lo segundo que hizo fue crear un pseudo lenguaje de programación un poco más avanzado del lenguaje ensamblador pero lejos del los lenguajes de alto nivel que sería utilizado para ejecutar un código capaz de autoreplicarse en la memoria, en el universo. En este punto merece la pena mencionar la necesidad de crear un nuevo lenguaje, ya que los lenguajes actuales contienen bucles y estos bucles cuando se dejan a manos del azar y el ordenador es muy, pero muy fácil que aparezcan bucles infinitos (bucles que nunca acaban) y esto es mortal para cualquier programa. De ahí la necesidad de intentar mitigar un poco este problema con un nuevo lenguaje que hiciera más difícil estos bucles. El siguiente paso fue crear un programa capaz de autoreplicarse en memoria. Para que el programa no se replicara y fuera siempre igual añadió mutación para ver si se generaban nuevos programas capaces de replicarse pero diferentes del original. Por último determino la forma de morir de los individuos, recordar que morir es un instrumento esencial para que las especies evolucionen. Así pues, los individuos que más tiempo llevaban en memoria dejaban de ejecutarse y morían, además los individuos que hacían "cosas raras" como ejecutar instrucciones determinadas cuando no debían eran penalizados y morían antes.

Con todo listo Thomas lanzo su experimento y se puso a observar. Lo primero que vio aparecer fueron los parásitos, individuos que se aprovechaban de los huéspedes para replicarse. Luego los huéspedes crearon mecanismos para defenderse, en concreto dejaban que el parásito se replicase aprovechándose de ellos pero luego proporcionaban información falsa para que el parásito replicase al huésped y no a si mismo. Y entonces los parásitos desaparecieron y los huéspedes empezaron a cooperar unos con otros creando comunidad para replicarse, era el principio de una sociedad. Pero como en toda sociedad, siempre tiene que haber parásitos y estos volvieron a aparecer. A parir de aquí la evolución se había vuelto tan loca que Thomas decidió eliminar la mutación para poder observar a los individuos. Sin la mutación Thomas pensó que no aparecerían individuos nuevos, pero sorprendentemente sí seguían apareciendo individuos nuevos distintos de sus progenitores. Fue entonces cuando descubrió que había aparecido la reproducción sexual en el universo que había creado.

Por si alguien tiene más interés en la vida artificial que creo Thomas existe un software desarrollado por el mismo llamado "Tierra Net" que se ejecuta de forma distribuida y aún sigue generando individuos nuevos.

Y cómo encaja todo esto en mi idea de optimización de funciones, pues bien, no solo apareció la reproducción sexual en el universo de Thomas, sino que también se crearon individuos capaces de replicarse con un número de instrucciones mucho menor del que Thomas había diseñado en un principio. Esto podría parecer una memez porque Thomas no creo un programa optimizado, pero cuando se le propuso a un grupo de estudiantes que crearán ellos individuos capaces de replicarse con el menor número de instrucciones posibles, ninguno fue capaz de aproximarse a lo que el universo de Y cómo encaja todo esto en mi idea de optimización de funciones, pues bien, no solo apareció la reproducción sexual en el universo de Thomas, sino que también se crearon individuos capaces de replicarse con un número de instrucciones mucho menor del que Thomas había diseñado en un principio. Esto podría parecer una memez porque ThomasThomas había creado. En este punto podría decirse que la evolución en la vida artificial supera la inteligencia humana en lo referente a crear individuos que se autorepliquen.

Partiendo de esta base por qué no aprovecharse de que la vida artificial es capaz de optimizar una función para crear nuevas funciones que desarrollen su cometido mucho más rápido. Me parece un tema especialmente interesante para cualquier aplicación de tiempo real donde una fracción de segundo pueda suponer una diferencia entre el éxito o el fracaso, además es mucho más fácil crear un código que funcione y que luego el ordenador optimice a crearlo directamente optimizado. Como dije antes, ningún programa creado por los estudiantes fue más óptimo que lo que se creo en el universo de Thomas. Pero no todo es tan bonito como parece, cuando dije que los comentarios del profesor me hundieron en la miseria fue porque aunque los científicos se entusiasmaron mucho con los resultados de Thomas nadie ha sido capaz de extrapolar los resultados a aplicaciones que no fueran una mera simulación de un universo virtual.

¿Cuales son los problemas que plantea esta idea?
  • Crear un lenguaje más complicado que el de Thomas con toda las potencia de los lenguajes actuales pero con las ventajas del lenguaje que creo Thomas. Esto es casi imposible y tal vez resultaría más fácil hacer un programa traductor, pero entonces puede que en la traducción se perdiera la optimización conseguida.
  • Añadir la función a optimizar al código capaz de replicarse. En este punto se pueden tener esperanzas porque en lugar de que las instrucciones se ejecuten una en cada ciclo y se den los mismos ciclos de computadora a todos los individuos se podría utilizar el tiempo que la función tarda en realizar su cometido para determinar cuanto tiempo de reproducción doy a cada individuo. De forma que a una función más optimizada se le dan más ciclos para que pueda replicarse, aún así el código para replicarse debería también replicar la función.
  • En caso de conseguir el punto anterior habría que tener en cuenta también que la mutación es parte del universo y esta afectaría a las funciones y estas podría dejar de realizar su cometido de forma eficaz y empezar a hacer cosas extrañas. Una solución sería penalizar a estos individuos pero entonces es posible que no hay evolución, todo sería probar.
  • Con todas las restricciones anteriores, si todo funcionara sin problemas entonces a lo mejor la reproducción sexual no sería necesaria en este universo y puede que no apareciera, con todas las implicaciones que esto supone en la evolución. Una solución sería que los primeros individuos si contase con reproducción sexual.
  • Y lo peor de todo es que si todo acaba funcionando puede que lo único que haya conseguido es reinventar la programación genética pero de una forma más sofisticada.

Elucubraciones doctorales. Capítulo 0

viernes, 26 de octubre de 2007

Como antesala al futuro que se me plantea, por la consecuencia intrínseca de los insensatos e irreflexivos actos cometidos durante un trastornado verano, me veo en la obligación de liberar a mi cerebro con el fin de divagar sobre la posible temática que compondrá lo que transcurrido el tiempo puede que nombre como mi tesis doctoral. Por ello, a partir de hoy y sin desmerecer la destreza y aptitud de las pocas mentes que leen asiduamente este indescriptible blog, intentaré exponer de la forma más complicada y enrevesada que conozco las ideas y conceptos que fluyan en el interior de mi cabeza.

El objetivo de estas "elucubraciones doctorales" es dar a conocer las ideas que se me han ido ocurriendo sobre las que de alguna forma estaría interesando en trabajar y desarrollar para elaborar una tesis doctoral, o al menos perder el tiempo en algo que me entretenga y, a priori, me guste. Bueno, para que os voy a engañar, aún no me planteo si haré una tesis doctoral o no, pero los temas que trataré son ideas que se me han ido ocurriendo en diferentes momentos de mi vida y son cosas sobre las que me gustaría, al menos, pararme a reflexionar. Y aunque no se entienda nada de lo que diga por lo concreto que es contenido que voy a tratar cualquier aportación en forma de idea o comentario será bien recibida. En cualquier caso intentaré exponer algunos conceptos básicos de las ramas de la inteligencia artificial que más me atraen para que se pueda entender más o menos mi idea y como puede suponer un posible avance en el campo.

Principios básicos

martes, 23 de octubre de 2007

  1. Todo lo que tiene un principio tiene un final.
  2. Para terminar algo, primero hay que empezarlo.
  3. Calma, constancia y perseverancia. Al final todo llega.
  4. Lo único imposible es lo que no se intenta.
  5. No preguntes algo si puede que no te guste la respuesta.
  6. Piensa siempre en positivo y obtendrás resultados positivos. Olvida lo negativo.
  7. Siempre luchar, nunca rendirse. Aunque todo parezca perdido siempre hay una opción más.
  8. No esperes una segunda oportunidad, aprovecha la primera.
  9. El pasado no se puede cambiar, piensa en el futuro.
  10. No pienses lo que vas a decir, pero piensa a ver a quién se lo dices.
  11. Arrepentirse no es una opción, aceptar la realidad sí.
  12. Aprende de los errores, no te arrepientas de aprender.
  13. La única opinión que cuenta es la tuya.
  14. Los sueños no son comparables con la realidad.
  15. Nunca podrás saberlo todo. Realmente lo que sabes es insignificante.
  16. Tarde o temprano siempre se comete algún error.
  17. Cuando buscas un problema, primero fíjate en ti mismo.
  18. Pensar dos veces la decisión que hay que tomar es una perdida de tiempo que puede hacernos perder la capacidad de decisión.
  19. Sólo conocemos nuestros propios límites cuando los sobrepasamos.
  20. Los únicos secretos posibles son los que no existen.
  21. Piensa por ti mismo.
  22. El que no arriesga no gana nada.
  23. El único miedo que hay que tener es el miedo al propio miedo.
  24. La suerte no existe, pero si se busca es posible encontrarla.
  25. Todo es relativo, depende de cada punto de vista.
  26. Siempre falta algo o hay algo que desconocemos...
  27. Tener principios no sirve para nada.


0. Jorge

Runbot

domingo, 14 de octubre de 2007



Desde que estudié las redes de neuronas siempre me han parecido muy útiles y el día que me pusieron a cacharrear con los lego mindstorms lo primero que pensé fue en hacer un robot que aprendiera a andar. Pero como me pasa siempre alguien se me había adelantado.

Runbot es un robót de unos 23 cm de altura diseñado por unos científicos del MIT capaz de aprender a subir una rampa y, además, es el robot bípedo más rápido del mundo: 3,4 zancadas por segundo. El secreto del robot reside en un diseño muy simple que intenta imitar la forma de caminar de los humanos. Además esta dotado de un sensor infrarrojo que le permite conocer la inclinación del suelo. Es un poco diferente al robot que yo había pensando, pero aún así me resulta impresionante como es capaz de aprender a no caerse tras apenas 3 intentos y de aumentar su velocidad.


Fuentes:

Confía

La ignorancia engendra más confianza que el conocimiento

Charles Darwin

Un anuncio un poco caro

jueves, 6 de septiembre de 2007

¿Héroes?

miércoles, 5 de septiembre de 2007

Los verdaderos héroes nunca quieren serlo, y son elegidos en contra de su voluntad.

Croc. Dedicado al espíritu del jueves.

Las cucarachas se robotizan...

lunes, 3 de septiembre de 2007

...o mejor dicho los robots se cucarachizan.

Leo en Tendencias 21 que un grupo de científicos minirobot (InsBot) capaz de infiltrarse en una colonia de cucarachas sin llamar la atención. Como veis en la foto el robot poco se parece simple vista a una cucaracha, sin embargo, a ojos de una cucaracha el robot es otra cucaracha. Sus movimientos, su olor y su patrón de comportamiento ha sido diseñado para que logre pasar desapercibido entre sus "hermanas cucarachas".

Pero el estudio de este equipo de científicos no se queda ahí, infiltrar el robot es solo el primer paso. El siguiente es realizar un estudio de sociedad mixtas de animales y agentes artificiales para poder desarrollar modelos y herramientas para dichas sociedades. Una vez se obtengan dichos modelos se intentará desarrollar métodos para alterar el comportamiento de la sociedad y así poder controlarla. Y en un futuro algo más lejano intentar llevar las técnicas aprendidas a otros animales y a las plantas.

Más información en:


[atención reflexión mental...]

En un momento de reflexión se me ocurre que si yo fuera un extraterrestre y quisiera invadir un planeta o destruirlo un buen método puede ser infiltrar a seres que nos imiten y se hagan control, o nos destruyan . . .

[Actualización] El proyecto terminó en Agosto del 2005 y no parece haber constancia de más logros que el infiltrar al robot. (esto me pasa por no revisar mis fuentes)

Roomba, Scooba, Dirt dog & Verro


Roomba, Scooba, Dirt dog, Verro son cuatro de los robots de la empresa iRobot encargados de la limpieza de superficies. En concreto Roomba se encarga de aspirar el suelo y Scooba de fregarlo, mientras que Dirt dog esta más orientado a limpiar suelos de industrias y Verro de la limpieza del fondo de la piscina. Hacen todo el trabajo ellos solitos y según leo en Xataka parece ser que lo hacen bastante bien. ¿Quien no querría tener uno de estos?

Dejando el tema de que voy a terminar por comprarme uno de estos cuando me toca limpiar el suelo, lo que me ha llamado la atención de estos robots es que usan inteligencia artificial, lo cual es una excusa perfecta para hacer marketing. Pero no hay que olvidar que son robots y que su éxito también se debe de la parte robótica, de la que no voy a hablar porque mis conocimientos no son tan amplios.

¿y donde esta la parte inteligente de estos robots?: ¿en qué saben volver a la base a recargarse? , ¿que saben que zonas están más sucias?, ¿que sabe no caerse por las escaleras y no chocar con las paredes? ¿en que esquivan muebles? pues nada de eso, todas esas cosas se hacen con sensores y algoritmos "sencillos", la inteligencia está en ser capaz de abarcar toda una superficie para limpiarla (un pequeño matiz, Verro limpia también las paredes de la piscina, pero en el fondo esto no es más que una superficie, es decir, un plano, igual que el suelo). Si bien es cierto que se esta investigando mucho en el tema de recorrer edificios y crear mapas, en este caso el robot se basa en un algoritmo que intenta abarcar una superficie. Y cómo se hace un algoritmo capaz de recorrer una superficie, pues si esta es cuadrada es bastante fácil, pero la cosa se complica si la superficie no es cuadrada y encima hay muebles de por medio, paredes, escaleras, etc...

Para resolver este problema se utiliza la programación genética, que no es más que un programa haciendo otros "programas" para resolver un problema. En primer lugar se definen una serie de funciones que la programación genética puede utilizar pare resolver el problema, en el caso de estos robots se podrían usar las siguientes funciones:

  • de movimiento:
    • avanzar X
    • retroceder X
    • girar X grados

  • de los sensores:
    • hay un obstáculo delante, a la derecha, izquierda, etc
    • hay un hueco delante, a la derecha, izquierda, etc
    • cuanta suciedad hay delante, detras, etc

  • condicionales:
    • si función A es [operador condicional > < >= <= =] funcion B entonces funcion C, sino función D

  • bucles:
    • repetir función A X veces
Y otras muchas que se les pudieron ocurrir a los ingenieros. Una vez definidas las funciones se preparan los escenarios, es decir , se crean habitaciones con diferentes elementos de la vida cotidiana donde el robot va a tener que limpiar. Por supuesto todos estos escenarios son simulados y en ello se se ha colocado basura que el robot debe limpiar.

Con esto ya tenemos nuestro robot listo para aprender a limpiar, o más bien a recorrer una habitación sin dejar un solo rincón. La programación genética se encargará de crear programas de forma aleatoria y de evaluarlos en los escenarios que hemos preparado, con ello se hará una idea cuales son los programas que mejor limpian y a partir de estos programas se crearan programas nuevos que seguramente sean más complejos que los primeros y más eficientes en su tarea.

Evidentemente esto no es coser y cantar y seguramente haya hecho falta probar con diferentes funciones y con un gran número de escenarios muy variados para conseguir un producto que pueda llegar al consumidor. Además el programa final, el mejor que haya conseguido la programación genética después de un buen rato funcionando, habrá sido evaluado y retocado por un humano para simplificarlo y corregir los defectos observados.

Tenéis más información de los cuatro robots en la sección de cleaning robots de iRobot, junto con algunos vídeos.

...y hasta se pueden programar para que limpien la casa cuando no estamos, son una maravilla.

Celtas Cortos - La senda del tiempo

martes, 28 de agosto de 2007

Una introducción a la Singularidad

viernes, 24 de agosto de 2007

Emilio me pasa un texto que se llama "Una introducción a la Singularidad" por Eliezer S. Yudkowsky. Os recomiendo bastante que lo leáis y para los más vagos hago un resumen de lo que me ha gustado más.

El texto plantea una singularidad en la inteligencia humana, es decir, que va a llegar un momento en el que la inteligencia humana de deje de crecer. La evolución ya no será capaz de hacernos más listos, al igual que pasa con las computadoras, que llegará un momento en el que el límite físico de los materiales no nos permitan construir procesadores más veloces y haya que buscar otras alternativas (como los procesados multinúcleo y la paralelización). Ante este hecho se plantea la posibilidad de crear mediante hardware un "cerebro" que sea más rápido que el nuestro. A este cerebro artificial se le introducirán técnicas de inteligencia artificial (¿algún tipo de red de neuronas, tal vez?) para que sea capaz de aprender y que pueda llegar en algún momento a mejorarse a sí mismo.

La segunda mitad del texto me parece más aburrida ya que se mete en temas de nanotecnología para imitar al cerebro y en como representar el proceso de muerte de las neuronas (y su reemplazo para crear seres inmortales super listos que puedan decidir si vivir o morir, los Amish).

Bueno, ahora voy a ofrecer mi punto de vista. El texto comienza diciendo que los ordenadores actuales son capaces de realizar más cálculos por segundo que el cerebro humano, lo cuál hasta cierto punto es cierto. Si intentas hacer una división, o mejor, una raíz cúbica seguro que tardas menos con una simple calculadora. También hay estudios que hablan de que el ojo humano solo tienen una resolución de un megapixel o que solo somos capaces de prestar atención a 4 objetos simultáneamente. También se dice que los hombres no somos capaces de hacer dos cosas a la vez... (lo cual no estoy de acuerdo porque somos capaces de hacer 2: lo que estamos haciendo y pensar en lo que siempre pensamos). Pero dejando de lado las discursiones, lo cierto es que apenas conocemos nuestro cerebro y ni siquiera usamos un 10% del mismo (o era un 1%, no lo recuerdo ahora mismo). Y lo que es más sorprendente, tampoco somos capaces de simularlo con los ordenadores actuales. Como bien dice el texto, el cerebro tiene 40 mil millones de neuronas y 100 billones de sinapsis, lo cual es una burrada para simular (casi es más fácil poner a resolverse el Eternity II) y mucho más complicado de crear mediante hardware, aunque se plantean algunas posibilidades usando nanotecnología y cristales.

Dejando todo lo anterior de lado me quedo con una paradoja del texto (copio la parte a la que me refiero):
Una civilización basada en una inteligencia más lista o más sabia o más creativa es imposible de imaginar, aún como ficción. Usted no puede escribir un cuento en el que uno de los personajes sea más listo que usted; por definición, si usted supiera lo que ese personaje haría, usted sería tan listo como él. Si la habilidad humana de considerar procesos abstractos en general es lo más lejos a lo que puede llegar cualquier inteligencia concebible, entonces una inteligencia más lista simplemente sería capaz de resolver problemas más rápido, más directamente, más elegantemente, quizás con soluciones bellamente multifacéticas, a la vez que obvias en retrospectiva (pero seguirían siendo soluciones a la misma clase de problemas que planteamos nosotros).

y digo yo, si no podemos escribir un cuento donde los personajes sean más listos que nosotros, ¿cómo vamos a crear una inteligencia que sea más lista que la nuestra?

Para mi la única respuesta a esa pregunta pasar por crear un ambiente controlado donde pueda aparecer vida de forma más o menos espontanea, un tipo de vida que se nos escapa a la imaginación, y que en ese tipo de vida aparezca inteligencia (casi por arte de magia).

Gracias Emilio

SIGGRAPH 2007 "Escalado de imágenes sin perdida"

Lo he visto en mil sitios no pensaba decir nada, pero si Víctor dice que es digno de mi blog tengo que ponerlo.

SigGraph es un grupo con interés en infografía o computación gráfica de la ACM, también es el nombre de la feria más importante de diseño por ordenador. En la feria de este año parece ser que ha llamado la atención un novedoso método para escalar imágenes. La técnica se basa en buscar caminos de píxeles que son menos relevantes en la imagen para eliminarlos y así poder reducir el tamaño de la imagen, o repetirlos si lo que se quiere es agrandarla. En el vídeo se ve mucho mejor todo esto (atención a cuando elimina a una persona de la foto, los artistas del photoshop seguros que están encantados con estas cosas):





Hay muchos algoritmos para agrandar y reducir imágenes, tal vez menos impresionantes que el que acabáis de ver, pero me gustaría destacar uno. Como ya mencione cuando hable de fractales, estos podían utilizarse para comprimir imágenes con perdida (como el jpg). Esta técnica para comprimir imágenes se basa en los atractores de punto fijo, es decir, en sistemas dinámicos que independientemente del estado inicial y que tras un número de iteraciones llegan a una situación estable de la que ya no salen. La forma en la que se aplica esto para comprimir imágenes es la siguiente. Primero se divide la imagen en partes y, después, para cada parte se busca otra a partir de la que se pueda obtener con una simple operación matemática del tipo y = a·x+b. Finalmente se guardan las operaciones matemáticas y las partes sobre las que se aplican para poder volver a obtener luego la imagen original. Al haber conseguido fórmulas matemáticas que forman "el atractor de la imagen" podemos utilizarlas a "cualquier escala", es decir, no es necesario que las zonas en las que se dividió la imagen tengan el mismo tamaño que las originales y podemos hacerlas más pequeñas o más grandes para conseguir una nueva imagen de un tamaño distinto a la original. Evidentemente esto tiene sus limitaciones porque para conseguir las fórmulas matemáticas no hemos utilizado una imagen con infinito grado de detalle, pero hasta cierto punto esta técnica es interesante, sobre todo cuando se trata de imágenes de objetos naturales que se pueden considerar fractales, cómo los árboles, o pseudofractales, como las nubes.

Viento en popa

No hay viento favorable para el que no sabe a dónde va

Séneca

Cómo quitarse unas esposas

miércoles, 22 de agosto de 2007


Unlock Handcuffs With A Bobby Pin! Trick Revealed! - video powered by Metacafe



Unlock Plastic Handcuffs! Police Style! - These bloopers are hilarious


Ambos vídeos son del mismo usuario de Metacafe, Kipkay.



... y si te quieres aficionar a abrir cerraduras, échale un vistazo a P1nCh1T0s T34M, tienen unos videos y textos muy interesantes.

Árboles fractales

Hace unos años tuve que crear un fractal y me dio por hacer un árbol, el resultado fue siguiente:



La forma de hacerlo es bastante sencilla, básicamente se coge un patrón simple y se va copiando a escalas más pequeñas. Lo único que hay que hacer para darle un efecto más "natural" o más "realista" es añadir algo de aleatoriedad en cada copia. En la siguiente imagen se aprecia mejor el proceso:




Hace unas semanas me dio por intentar volver a hacer un árbol, pero esta vez tenia que parecer más natural, al menos en la forma (no quería entretenerme mucho con los colores, la iluminación y las texturas). El resultado es este:



Si queréis os podéis descargar el código fuente, esta hecho para ser renderizado con POV-Ray. Y ya de paso podéis echar un vistazo al Hall of Fame de la página del POV-Ray, es bastante impresionante.

Aterriza como puedas

lunes, 20 de agosto de 2007

Yo me quedo con el último... pero aquí van unos cuantos.

Impresionante aterrizaje en la isla de St. Marteen:


Vía Microsiervos.Otro aterrizaje en St. Marteen.

Aterrizaje sin ruedas.

Vía Meneame

En un portaaviones... vaya frenada...


En un portaviones pero esta vez aterrizando en vertical...


En el sofá de tu casa...

Fractal

La palabra fractal aparecio en 1975, propuesta por el matemático Benoît Mandelbrot. En sus propias palabras:

Quería recoger la impresión de una piedra que golpeas, y se fractura. De ese fractus latín surgió el fractal. La terminación se debió a que quería que funcionara en inglés y francés.
El objetivo de los fractales fue intentar representar las figuras geométricas de la naturaleza que la geometría clásica, euclidiana, era incapaz de abordar. En contraposición a la geometría euclidiana, donde todos los elementos siguen unas bases matemáticas bien definidas, la geometría fractal se presenta como un modelo donde se pretender romper la armonía de los elementos y donde se busca la regularidad en las relaciones entre un objeto y sus partes a diferentes escalas. Es decir, es un modelo donde un objeto puede ser expresado como el límite de un proceso geométrico iterativo, donde en cada iteración se produce una ruptura de la forma original.

En general un fractal es un objeto que cumple las siguientes propiedades (o al menos la mayoría):
  • Autosemejanza, el objeto fractal aparece a diferentes escalas

  • Tiene detalles en escalas arbitrariamente pequeñas.

  • Definición sencilla

  • Son generados por procesos iterativos o recursivos

  • Son demasiado irregulares para describirse en términos clásicos

  • Su dimension de Hausdorff-Besicovitch no es entera
Actualmente los fractales tiene diferentes aplicaciones de las cuales voy a destacar tres:
  • Crear música

  • Generación de imágenes de elementos de la naturaleza como árboles, estructuras moleculares cosas, montañas...
  • Compresión de imágenes con perdidas (con resultados mejores que el formato jpg tan extendido hoy en día, pero más lentas en el tiempo de compresión, no en el de descompresión).

Un ejemplo muy simple de una imagen de unas montañas creada con técnicas fractales.

Vista aérea de unas montañas a diferentes alturas (gracias google maps):
El conjunto de Mandelbrot a diferentes escalas:
Enlaces:

El éxito

viernes, 17 de agosto de 2007

El éxito no es para los que piensan que pueden hacer algo sino para quienes lo hacen.

Anónimo