RETE + NEAT = REAT??

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:

NEAT:

NEAT + RETE = REAT:

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.

Advertisements

4 thoughts on “RETE + NEAT = REAT??”

  1. Hola Mauricio, muchas gracias por el articulo. En mi trabajo hemos estado desarrollando un motor de promociones basado en Drools y me resultó bastante interesante y quisiera poder seguir investigando acerca de estos algoritmos. Saludos! Melisa

    Like

  2. Fantastico, yo he continuado con mi investigación pasivamente. Estoy muy metido con Drools y la verdad que me tiene muy contento.
    Por lo tanto seguramente que continue la investigación.
    Estaria bueno compartir experiencias y de paso ver si se puede armar algun grupo de gente con los mismos intereses para nutrirnos todos acerca de estos temas tan interesantes.
    Saludos.
    PD: si quieres, por privado contactame y vemos si mas gente se suma a esta iniciativa.

    Like

  3. Saludos bueno poco a poco he revisado tus artículos y son excelente yo ando en busca de un tema para mi tesis de grado y quiero hacer algo relacionado con jbpm y motor de reglas aplicado al ámbito productivo este tema de investigación me llamo mucho la atención, no se como va tu avance en la investigacion pero gustaria revisar bien este tema y aportar tambien

    Like

  4. Como le comentaba a melisa mas arriba, he avanzado mucho con Drools es una herramienta muy interesante. Mas si estas pensando en el area de investigacion. Con respecto REAT, todavia sigo investigando la herramienta, ya que hay que tener un nivel de conocimiento bastante profunda como para implementar algo asi.
    Tambien le comentaba a melisa que estoy interesado en armar un grupo de investigacion, o solo gente interesada en estos temas para poder avanzar en conjunto sobre temas tan interesantes como este.
    Si puede comentar un poco de que quieres hablar en tu tesis, por ahi podriamos discutir un poco la idea.
    Saludos.

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s