The Java One Experience #0 – Jug Leaders Meeting
Junio 3, 2009

Pre Bienvenida al Pavilion
Mucho de San Francisco todavía no he podido conocer, pero ya la noche anterior a el comienzo de JavaOne 2009 me hizo relacionar a muchos nicknames con personas físicas! Todo un avance para este tipo de trabajo.

Entrada JavaOne en Moscone Center
Ya durante la registración en Moscone Center, ya se empieza a notar la magnitud del evento, y porque el precio de la entrada.
Por hoy solo fue la registración y comida china con los Jug Leader de alrededor del mundo. Siempre es un placer saber en que anda la gente como Sang Shin (www.javapassion.com) and all the other Jug Leaders del mundo.

Sang Shin El Lider de los Lideres

JugLeader de Alemania y un amigo de San Francisco

Mesas y Mesas llenas de JUGLeaders
Como siempre en este tipo de eventos, muchos regalos y cosas locas que van desde:
1) Robots con pelotas:

Robot Pelotero
2) pasando por un auto Java con una patente que decia Java4Road(??)

el Tutus de Gosling?
3) hasta las clasicas gigantografias bastante ingenieriles que no podian faltar.

Duke en un auto deportivo gigante.. infaltable..
Finalmente registrado:

Salaboy @ JavaOne
Los dejo hasta mañana, que comienzan las charlas interesantes, espero poder a la noche agregar algún feedback general del evento, ya que solo por la registración y los stands de grandes empresas ya sorprenden.
Nostalgia.. Kturtle
Abril 5, 2009
Para todos aquellos que siente un amor profundo por las torturas(yo seguro que no) y el viejo y querido LOGO.
Sin mas palabras: $sudo apt-get install kturtle
No pregunten como se hace para windows.. por favor.

vieja y querida tortuga
Para los mas ansiosos: http://docs.kde.org/kde3/en/kdeedu/kturtle/reference.html
La verdad que puedo estar asi toda la noche: http://sonic.net/~nbs/webturtle/ (platform independent)
NEAT (The NeuroEvolution of Augmenting Topologies) – Introducción
Septiembre 17, 2008
Introducción
NeuroEvolución (NE), es la forma de evolucionar redes neuronales usando algoritmos genéticos, esto ha demostrado ser muy eficiente en el refuerzo de tareas de aprendizaje.
NE busca en el espacio de los comportamientos de una red que funciona bien para una tarea en particular.
Por lo general, la topología de la red esta compuesta de una sola capa oculta de neuronas, donde cada neurona de esta capa tiene conectada cada una de las entradas y cada una de las salidas.
NE busca en el espacio de los pesos de las conexiones de toda la red permitiendo así que las redes altamente performantes se reproduzcan. Esto se logra con el apareamiento (crossover) de los vectores de pesos de las conexiones de toda la red, sumándole a este apareamiento una mutación arbitraria.
De esta manera funcionan los NE de topología fija, ya que optimizan los pesos de las conexiones que determinan la funcionalidad de la red.
A pesar de esto, los pesos de las conexiones no son el unico aspecto de las redes neuronales que contribuyen en su comportamiento. La topologia, o estructura, de una red neuronal tambien afecta a su funcionalidad.
La modificacion de la estructura de la red ha demostrado ser eficiente como parte del entrenamiento supervisados.
La pregunta que se nos plantea es:
La evolución de la topologías y los pesos de las conexiones nos van a dar alguna ventaja sobre las topologías fijas?
Si una función continua puede ser aproximada por una Red, para que vamos a esforzarnos permutando diferentes topologías?
Las respuesta hasta ahora a estas preguntas son bastantes inconclusas.
NEAT fue diseniado para tomar ventaja de la estructura como forma de minimizar la dimensionalidad de la búsqueda sobre el espacio de conexiones. Si la estructura esta evolucionada, esta topología esta minimizada y crece incrementalmente, lo cual resulta en ganancias en la velocidad de aprendizaje de la red.
Esta evolución y ganancia se va notando a lo largo del proceso de evolución y no solamente al final de todo el ciclo evolutivo.
Evolucionar una estructura incrementalmente presenta varios desafíos técnicos:
- Hay alguna representación genética que permita que distintas topologías se apareen (crossover) de manera que el resultado signifique algo?
- Como podemos proteger a las innovaciones de la topología (que necesitan algunas generaciones para ser óptimas) para que no desaparezcan de la población prematuramente?
- Como las topologías pueden ser minimizadas durante la evolución sin la necesidad de una función de “encaje” (fitness) que mida la complejidad de la misma?
NEAT se encarga de responder estas preguntas y dar una solución elegante, la cual iremos viendo en los siguientes posts.
RETE + NEAT = REAT??
Septiembre 17, 2008
En Este post bastante descolgado de los temas que actualmente toco en este blog, me va a servir como centro de investigación sobre la mezcla de estos temas con el fin de ver si pueden convivir y lograr algún resultado interesante.
Para empezar voy a tratar de describir cada uno de los temas muy por arriba y luego tratare de empezar a relacionarlos y profundizar en cada uno de ellos y en sus vínculos.
Empecemos por RETE:
RETE (red en latín) es un algoritmo muy utilizado en sistemas de reglas de producción ya que su funcionalidad principal es la de encontrar coincidencias entre patrones de manera muy eficiente. En estos sistemas por lo general necesitamos realizar comparaciones entre hechos y reglas de negocio con el fin de realizar inferencias sobre los mismos. Esto debe hacerse de una manera eficiente para que el sistema sea escalable y performante.
Por supuesto aparece el termino regla de producción que hace referencia a una regla compuesta por condición y acción. Donde en la condición especificamos un set de restricciones que van a condicionar la ejecución de la acción.
RETE funciona armando una red de nodos, donde cada uno de estos nodos se corresponde con una condición en la LHS (Left hand side / representa las restricciones en la parte condicional de una regla de producción), por lo tanto un camino desde el nodo raíz hasta un nodo hoja representaría toda una regla de producción.
Mas adelante, tratare de aclarar los distintos tipos de nodos que utiliza una red RETE, ya que esto ayudara bastante a comprender como funciona el algoritmo.
Seguimos con NEAT:
NEAT (NeuroEvolution of Augmenting Topologies / NeuroEvolución para el crecimiento de las topologías) se caracteriza por ser una técnica de NeuroEvolución, es decir, una técnica que utiliza algoritmos genéticos para evolucionar redes neuronales.
NEAT en particular se caracteriza por codificar de alguna manera la topología de la red neuronal y hacerla evolucionar generación tras generación, logrando así optimizar su funcionamiento.
Por lo general los algoritmos de NeuroEvolución se separan en dos ramas:
- Aquellos que se encargan de evolucionar los pesos en las conexiones en una red neuronal.
- Aquellos que se encargan de evolucionar tanto la topología de la red como los pesos en las conexiones de una red neuronal.
En este caso NEAT opta por la segunda opción, por lo cual vamos a ver como cuando aplicamos NEAT los pesos de las conexiones dentro de la red van evolucionando y a su vez se crean nuevos nodos y nuevas conexiones dentro de nuestra red como parte de esta evolución.
Como podran notar tanto RETE, como NEAT son temas bastantes complejos que incluyen mucho otros temas que hay que investigar para poder dominarlos y utilizarlos en la vida cotidiana. Para esto voy a listar los temas a investigar y las fuentes que pienso utilizar en dicha investigación:
RETE:
- Algoritmo, funcionamiento, características principales, lugares comunes de uso, extensiones de RETE.
NEAT:
- Algoritmo, funcionamiento, soporte teórico, pruebas y teorías
- Algoritmos geneticos + Redes neuronales + Programacion evolutiva
NEAT + RETE = REAT:
- Meta final de la investigación: http://www.evolvablerules.org/ (Greg Barton)
Como podemos ver en http://www.evolvablerules.org/ Greg Barton propone adaptar NEAT a RETE, lo cual causaría que la topología de la red RETE evolucione tanto como las reglas de producción que se definan.
Para lograr esto, sin duda alguna, hay que analizar muy bien NEAT y la topología especifica de RETE, así tanto como la codificación de los genes para los distintos tipos de nodos en RETE.
Esto no suena tarea facil para nada, por lo cual como primeros pasos voy a empezar enfocandome en NEAT y ver como se comporta con implementaciones reales, al menos simples.
Que feo es hacerse auto propaganda.
Septiembre 17, 2008
Es bastante feo el hecho de hacerse propaganda a uno mismo, la verdad nunca lo habia pensado.
Para ser mas claro, siempre pensé que la mejor propaganda para uno mismo es la que le hacen los demas o sus acciones pasadas.
Pero hoy, revisando mis mails, en la lista del foro oficial de jBPM mencionaron mi nombre y eso me lleno de orgullo, me hizo sentir realmente parte de esta especial comunidad. Mas aun si los comentarios vienen de un grande de la lista como kukeltje quien se declara a si mismo:
“A kind jBPM user and forum ‘addict’”
Aca les dejo el link, no para hacerme propaganda a mi mismo, sino para que si algun otro entisiaste de jBPM crea post al respecto, se anuncie en este thread del foro oficial de jBPM!
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4176927#4176927
Saludos!
Actualización: Mas auto propaganda en un nuevo blog creado para reunir todos los blogs de jBPM en todos los idiomas: http://planetjbpm.wordpress.com/
Actualización 2: Otro grande de los foros de JBoss hizo una resenia de este blog: http://www.jorambarrez.be/blog/2008/09/19/blogs-about-jbpm/
Actualización 3: Otro blog de un Ingeniero de Valencia, España me menciono:
http://www.workflowsworld.com/2008/10/salaboy-jbpm-en-castellano/
10 interesantes consejos sobre como no hacer una pagina Web
Febrero 20, 2008
http://www.svetlian.com/Webmaster/art_diez.htm
En el vinculo anterior vemos un articulo que nos cuenta como hacer una pagina realmente anti usuario. Muy a tener en cuenta a la hora de hacer una web.