lunes, 25 de septiembre de 2017

Computación Evolutiva


La computación evolutiva:

Es una rama de la computación emergente que engloba técnicas que simulan la evolución natural, y constituye un enfoque alternativo para abordar problemas complejos de búsqueda y aprendizaje a través de modelos computacionales de procesos evolutivos. Parte de un hecho observado en la naturaleza: los organismos vivos poseen una destreza consumada en la resolución de los problemas que se les presentan, y obtienen sus habilidades, casi sin proponérselo, a través del mecanismo de la evolución natural.

La evolución se produce, en casi todos los organismos, como consecuencia de dos procesos primarios: la selección natural y la reproducción (cruce). La evolución natural es un proceso de cambio sobre una población reproductiva que contiene variedades de individuos con algunas características heredables y en donde algunas variedades difieren en su aptitud (éxito reproductivo).

La computación evolutiva es una de las ramas de la Inteligencia Artificial que se aplica para la resolución de problemas de optimización combinatoria. La CE está inspirada en los mecanismos de evolución biológica propuestos por Darwin, Medel y Lamark.

Darwin propuso la "Selección natural de los más adaptados"
Medel propuso la "Teoría corpuscular de la herencia"
Lamark propuso la "Herencia de caracteres adquiridos".


Los algoritmos genéticos (AGs) junto con las estrategias evolutivas y la programación evolutiva constituyen un nuevo enfoque a la solución de numerosos problemas de optimización y búsqueda. Esta técnica está en el contexto de una nueva ciencia denominada computación evolutiva.
Se propone a los AGs como una técnica computacional que intenta imitar el proceso evolutivo de la naturaleza, para el diseño de sistemas artificiales adaptativos.

Computación Evolutiva y Optimización
Un problema de optimización requiere hallar un conjunto de parámetros de forma que se cumpla un cierto criterio de calidad que se quiere optimizar, es decir, maximizando o minimizando una cierta función de evaluación f(x) dada.

Los algoritmos evolutivos son especialmente útiles cuando nos encontramos con problemas difíciles o altamente irresolubles, como lo son aquellos caracterizados por una alta dimensionalidad, multimodalidad, fuerte no linealidad, no diferenciabilidad, presencia de ruido y cuando se trata con funciones dependientes del tiempo.

Algoritmos Evolutivos Este término es empleado para describir sistemas de resolución de problemas de optimización o búsqueda basados en el ordenador empleando modelos computacionales de algún mecanismo de evolución conocido como elemento clave en su diseño e implementación. Los algoritmos evolutivos trabajan con una población de individuos, que representan soluciones candidatas a un problema.

Esta población se somete a ciertas transformaciones y después a un proceso de selección, que favorece a los mejores. Cada ciclo de transformación y selección constituye una generación, de forma que después de cierto número de generaciones se espera que el mejor individuo de la población esté cerca de la solución buscada. Los algoritmos evolutivos combinan la búsqueda aleatoria, dada por las transformaciones de la población, con una búsqueda dirigida dada por la selección.

Los algoritmos evolutivos son especialmente útiles cuando nos encontramos con problemas difíciles o altamente irresolubles, como lo son aquellos caracterizados por una alta dimensionalidad, multimodalidad, fuerte no linealidad, no diferenciabilidad, presencia de ruido y cuando se trata con funciones dependientes del tiempo.

Características:
La característica fundamental de los algoritmos evolutivos radica en los métodos de generación de soluciones: se parte de un conjunto de soluciones iniciales y se van empleando un conjunto de operadores de búsqueda para ir refinando la solución final. Para realizar dicho refinamiento de las soluciones, se pueden utilizar técnicas clásicas Dcomo el seguimiento del gradiente (Hill Climbing) D complementadas con mecanismos biológicos de exploración: población de soluciones, operadores genéticos.

Los algoritmos bioinspirados modelan (de forma aproximada) un fenómeno existente en la naturaleza, constituyendo así una metáfora biológica para resolver problemas. Son algoritmos no determinísticos, que a menudo presentan, implícitamente, una estructura paralela (múltiples agentes), y son adaptativos (utilizan realimentación con el entorno para modificar el modelo y los parámetros). Algunos modelos de computación bioinspirados son:

Algoritmos evolutivos.
Redes neuronales.
Algoritmos inmunológicos
Algoritmos basados en inteligencia de enjambres (swarm intelligence) y dentro de ellos, los algoritmos basados en colonias de hormigas.

Estrategias Evolutivas:

Técnica desarrollada por Rechenberg y Schwefel y extendida por Herdy, Kursawe, Ostermeier, Rudolph, y otros, fue diseñada inicialmente con la meta de resolver problemas de optimización discretos y continuos, principalmente experimentales y considerados difíciles. Trabaja con vectores de números reales Dcon desviaciones estándarD que codifican las posibles soluciones de problemas numéricos.

 Utiliza recombinación o cruce (crossover aritmético), mutación y la operación de selección, ya sea determinística o probabilística, elimina las peores soluciones de la población y no genera copia de aquellos individuos con una aptitud por debajo de la aptitud promedio.
Programación Evolutiva:

Técnica introducida por Fogel y extendida por Burgin, Atmar y otros, inicialmente fue diseñada como un intento de crear inteligencia artificial. La representación del problema se realiza mediante números reales (cualquier estructura de datos), y emplea los mecanismos de mutación y selección. El procedimiento es muy similar a las estrategias evolutivas con la diferencia de que no emplea la recombinación, de tal forma que son denominadas en conjunto algoritmos evolutivos como una manera de diferenciarlas de los algoritmos genéticos.

Algoritmos Genéticos:

Modelan el proceso de evolución como una sucesión de frecuentes cambios en los genes, con soluciones análogas a cromosomas. Trabajan con una población de cadenas binarias para la representación del problema, y el espacio de soluciones posibles es explorado aplicando transformaciones a estas soluciones candidatas tal y como se observa en los organismos vivientes: cruce, inversión y mutación. Como método de selección emplean en mecanismo de la ruleta (a veces con elitismo).

Constituyen el paradigma más completo de la computación evolutiva ya que resumen de modo natural todas las ideas fundamentales de dicho enfoque. Son muy flexibles ya que pueden adoptar con facilidad nuevas ideas, generales o específicas, que surjan dentro del campo de la computación evolutiva. Además, se pueden hibridar fácilmente con otros paradigmas y enfoques, aunque no tengan ninguna relación con la computación evolutiva. Se trata del paradigma con mayor base teórica.

Programación genética:



Desarrollada por Koza, los individuos son programas o autómatas de longitud variable, descritos mediante Expresiones-S de LISP representadas habitualmente como árboles, y como operadores de variación emplea crossover y modificación, además de mecanismos de selección.



Referencias Bibliográficas:

-- D.Sc. Yván Jesús Túpac Valdivia (2013) Computarizan evolutiva, principios y aplicaciones, Recuperado el 23 de Septiembre de 2017, de http://www.ucsp.edu.pe/~ytupac/speaks/2013/CIS-DAY_CompEvolApp.pdf

-- Fernando Berzal. (s.f) Computación Evolutiva Departamento de ciencias de la Computación Recuperado el 23 de Septiembre de 2017, de http://elvex.ugr.es/decsai/iaio/slides/G1%20Evolutionary%20Computation.pdf

-- Alfonso Mateos Andaluz (N.I.A) Inteligencia de Redes de Comunicación, Algoritmos Evolutivos y Genéticos Recuperado el 23 de Septiembre de 2017, de http://www.it.uc3m.es/~jvillena/irc/practicas/estudios/aeag

-- Caparrini, F. S. (s.f.). Algoritmos Genéticos y Computación Evolutiva. Recuperado el 23 de Septiembre de 2017, de http://www.cs.us.es/~fsancho/?e=65

-- Coello, D. C. (s.f.). Introducción a la Computación Evolutiva. Recuperado el 24 de Septiembre de 2017, de http://posgrado.itlp.edu.mx/mcastro/CE/Introducci%F3n%20a%20la%20Computaci%F3n%20Evolutiva%20Coello/clase3-2011.pdf



miércoles, 6 de septiembre de 2017

Redes Semánticas

Una red semántico o esquema de representación en Red es una forma de representación de conocimiento lingüístico en la que los conceptos y sus interrelaciones se representan mediante un grafo. En caso de que no existan ciclos, estas redes pueden ser visualizadas como árboles. Las redes semánticas son usadas, entre otras cosas, para representar mapas conceptuales y mentales. 

En un grafo o red semántica los elementos semánticos se representan por nodos Dos elementos semánticos entre los que se admite se da la relación semántica que representa la red, estarán unidos mediante una línea, flecha o enlace o arista. Cierto tipo de relaciones no simétricas requieren grafos dirigidos que usan flechas en lugar de líneas.

Las redes son estructuras que cuentan con un patrón que las caracteriza y que les permite relacionar diversos nodos (los elementos que componen la red). la semántica, por otra parte, es aquello que está vinculado a la significación de los conceptos.

Están basadas en la idea de que los objetos o los conceptos pueden ser unidos por alguna relación. Estas relaciones se representan usando una liga que conecte dos conceptos. Los nodos y las ligas pueden ser cualquier cosa, dependiendo de la situación a modelar.

Las redes semánticas fueron originalmente desarrolladas para representar el significado o semántica de oraciones en inglés, en términos de objetos y relaciones. 

Actualmente, se utiliza el término redes asociativas (una forma más amplia) ya que no sólo se usa para representar relaciones semánticas, sino también para representar asociaciones físicas o causales entre varios conceptos u objetos.

Se denomina red semántica al esquema que permite representar, a través de un gráfico, cómo se interrelacionan las palabras. De esta forma, se grafican los saberes lingüísticos a través de un mapa conceptual. Otro nombre por el que se conoce este concepto es esquema de representación en red.

Existen dos formas posibles para representar una red semántica, que se definen a continuación: 

·   Un grafo: este concepto pertenece a las ciencias de la computación (también llamadas ciencias computacionales, combinan la computación y la teoría de la información) y las matemáticas, y se trata de un conjunto de elementos denominados nodos o vértices que se conectan a través de enlaces conocidos como arcos o aristas, gracias a los cuales es posible entablar relaciones binarias (se dan entre elementos de dos conjuntos y ofrecen pares ordenados que cumplen una determinada propiedad) entre dichos objetos;

Un árbol: cuando una red semántica no representa un ciclo, entonces es posible utilizar un árbol, que es un grafo en el que cualquier par de vértices debe estar conectado por un solo camino. Este sistema de relación también se conoce como árbol libre y si forma parte de un grupo, entonces se habla de bosque. El grafo presente en el árbol debe cumplir una serie de requisitos, como no tener ciclos y ser conexo (que cualesquiera dos vértices estén unidos por al menos un camino) hasta que se le quite cualquiera de sus aristas.

Historia

Los responsables de los primeros esquemas de representación formalizados fueron Quillian (1968) y Shapiro & Woddmansee (1971). Los esquemas de redes semánticas tienen una fundamentación psicológica muy sólida, por lo que se han realizado numerosos esfuerzos por llevar a cabo implementaciones importantes basadas en ellas.
Fue el primero en sugerir que la memoria humana puede modelarse mediante una red y proponer un modelo de recuperación de la memorización.

Las redes semánticas han sido muy utilizadas en IA para representar el conocimiento y por tanto ha existido una gran diversificación de técnicas. Los elementos básicos que encontramos en todos los esquemas de redes son:

- Estructuras de datos en nodos, que representan conceptos, unidas por arcos que representan las relaciones entre los conceptos.

Un conjunto de procedimientos de inferencia que operan sobre las estructuras de datos.
Básicamente, podemos distinguir tres categorías de redes semánticas:

·       -   Redes IS-A, en las que los enlaces entre nodos están etiquetados.
·       -  Grafos conceptuales: en los que existen dos tipos de nodos: de conceptos y de relaciones
·      -  Redes de marcos: en los que los puntos de unión de los enlaces son parte de la etiqueta del nodo.

En un grafo o red semántica los elementos semánticos se representan por nodos. Dos elementos semánticos entre los que se admite se da la relación semántica que representa la red, estarán unidos mediante una línea, flecha o enlace o arista. Cierto tipo de relaciones no simétricas requieren grafos dirigidos que usan flechas en lugar de líneas

·      -   Un Nodo es identificado por objeto
·     -    Nodo=Objeto
·     -    Donde el Objeto puede ser representado por:
·         Persona, Animales, Eventos, conceptos y atributos que identifican un objeto.

·   -    Los Nodos están unidos por arcos
·   -    Una Red Semántica es un conjunto de Nodos y Arcos
·  -  Una Red Semántica es una representación gráfica del conocimiento en la que existe una jerarquía de Nodos.

Nodos:
Representan:

·   -  Objetos Físicos: Ver y Tocar
·   -  Objetos Conceptuales: Hechos y Eventos
·   -   Descriptivos: Cualidades

Arcos:
Representan:
·         Elementos con su clase (ES-UN)
·         Parte con un todo (TIENE-UN)

ES UN: El cual usa para identificar que un cierto pertenece a una clase mayor de objeto.
TIENE-UN: Este tipo de arcos se utiliza para identificar que un cierto nodo tiene o pase unas ciertas características o atributo o propiedad.

·         Ventajas: Las ventajas de las redes semánticas son su potencia.

·         Desventajas: Las desventajas de las redes semánticas son su poca flexibilidad. 





Referencias Bibliográficas:

Leonardo Bernal Zamora. (29 de sept. de 2010). "Redes semánticas". Sep 2017, de UNAD - Universidad Nacional Abierta y a Distancia Sitio web: https://es.slideshare.net/leonardobernalzamora/redes-semanticas-5316154