Sistemas Evolutivos: Nuevo Paradigma de la Informática

Fernando Galindo Soria*

 

Resumen

En este trabajo se presenta una introducción a los Sistemas Evolutivos (sistemas capaces de construir y mantener en tiempo real una imagen del ambiente que los rodea, como un ser que construye su propia imagen de la realidad y la utiliza para interactuar con su entorno), incluyendo su descripción general y presentación de algunos de los métodos y algoritmos más usados en la construcción de este tipo de sistemas principalmente la Arquitectura del Sistema Evolutivo y su estructura Lingüística, se describe el Mecanismo Léxico, el Mecanismo Sintáctico, las principales herramientas de Inferencia Gramatical, el Mecanismo Semántico y las principales herramientas de Diálogo y de asociación de significado.

Palabras Clave: Sistemas Evolutivos, Lingüística Matemática, Reconocimiento de Formas, Sistemas de Información, Base de Datos, Inferencia Gramatical, Herramientas Automatizadas

 

Introducción

En éste trabajo se describe en forma general la arquitectura y aplicaciones de los Sistemas Evolutivos, donde un Sistema Evolutivo es una herramienta automatizada capaz de construir una imagen del ambiente que la rodea y a partir de esta imagen resolver problemas, como un niño que construye su propia imagen de la realidad y la utiliza para interactuar con su entorno.

 

 

 

 

* Fernando Galindo Soria escribió este trabajo en 1990 siendo profesor-investigador en la Licenciatura en Ciencias de la Informática Sección de Graduados e investigación  UPIICSA-IPN

 

 

   Como primer punto se describe en forma general, cuales son los principales problemas de la Informática actual y la arquitectura general de los Sistemas de Información y a partir de este punto se sigue una secuencia en espiral donde en cada vuelta de la secuencia se replantea la arquitectura de los sistemas de información hasta terminar en la conclusión con la arquitectura generalizada de los Sistemas Evolutivos.

 

I  Introducción A Los Sistemas Evolutivos

Uno de los problemas más graves de la Informática actual se presenta por su poca capacidad para modelar en tiempo real los fenómenos que ocurren en la realidad, ya que es común que cuando un Sistema de Información: Nómina, Compilador, Reconocedor de Imágenes, Sistema de Inventarios, Sistema Experto de Diagnóstico Médico, etc., se libera ya prácticamente es obsoleto, ya sea porque:

1) El problema modelado se modificó.

2) Porque el modelo no cubrió los aspectos esenciales.

3) O simplemente la información y el conocimiento que se tiene sobre el tema ha quedado rebasado por algún nuevo dato o hecho conocido previamente.

   En general se pueden plantear tres grandes problemas que ayudan a la rápida obsolencia de los sistemas de información y que obligan a realizar en forma continua lo que se conoce como mantenimiento adaptativo (aquel que se realiza para lograr que el sistema mantenga una imagen lo más cercana al ambiente que se requiere modelar) o por el contrario obliga a los usuarios a lidiar con una herramienta cada vez menos poderosa y más alejada de la realidad que aparentemente está modelando.

   El primer problema surge cuando se desarrollan sistemas que modelan fenómenos altamente cambiantes, como por ejemplo los sistemas de algo tan cotidiano como la Nómina, donde prácticamente no se ha terminado de desarrollar cuando ya se tiene que modificar (y no es por mal desarrollo. sino simplemente porqué se esta tratando de modelar un problema que cambia prácticamente por decreto y en el que es difícil, establecer los patrones de cambiado).

   El segundo problema se presenta cuando se desarrollan sistemas que modelan fenómenos para los cuales no existe una regla o patrón ya establecido y bien manejado y del cual se pueda tener un algoritmo en forma relativamente sencilla, tal es el caso de muchos de los problemas actuales de la Inteligencia Artificial. por ejemplo en el reconocimiento de patrones se ha desarrollado gran cantidad de métodos y algoritmos pero sin embargo los problemas no resueltos son cada día mayores, por lo que los Sistemas de Información orientados al reconocimiento de patrones reflejan un modelo de la realidad normalmente restringido.

   El tercer problema es un cuello de botella de la Informática que se presenta cuando los sistemas funcionando son incapaces de reflejar la realidad por que los datos y hechos de ésta no son directamente accesibles por el sistema ya sea porque son difíciles de obtener (por ejemplo, topografía detallada del terreno donde se construirá una carretera) o porqué cambian tan rápidamente que los métodos tradicionales de captura no permiten mantenerlos actualizados (por ejemplo, los datos clínicos de un paciente de terapia intensiva).

   Es por lo anterior que es necesario replantear el enfoque utilizado para resolver problemas en Informática (representado por áreas como el Desarrollo de Sistemas, la Ingeniería de Software y la Ingeniería de Conocimiento) en el cual la tendencia es a la construcción de sistemas estáticos e Incapaces de automantenerse y buscar métodos y herramientas incapaces de recrear en forma continua su imagen de la realidad o del problema a resolver.

   Es dentro de este contexto donde surge el concepto de Sistema Evolutivo como un sistema capaz de crear su propia imagen de la realidad y utilizarla para resolver problemas y en su momento mantener actualizada esta imagen mediante un proceso continuo de actualización.

II  Del Sistema de Información al Sistema Evolutivo

 

1  Rumbo al Constructor

En general se considera que un Sistema de Información o programa de cómputo tiene la arquitectura de la figura 1.

 

 

 


Figura 1. Arquitectura de los sistemas de información en los 50s

 

   Sin embargo este esquema es muy viejo y corresponde a los años 50's y ya para la década de los 60's se manejaban los esquemas más elaborados mostrados en la figura 2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Figura 2. Arquitectura de los sistemas de información en los 60s

 

   El primer esquema se utilizaba principalmente por la gente orientada al desarrollo de aplicaciones y el segundo por las personas dedicadas a desarrollar herramientas de cómputo como Compiladores y Sistemas Operativos, y ya para finales de los 70's se manejaba un modelo generalizado en el cual se considera que cualquier sistema de información tiene la arquitectura de la figura 3.

 

 

 

 

 

 

 


Figura 3. Arquitectura de los sistemas de información en los 70s

 

   Este esquema integra los enfoques anteriores y enfatiza la necesidad de desarrollar los sistemas tomando en cuenta las tres componentes y no solo los procesos, sin embargo, el desconocimiento o el hecho de no tomar en cuenta este esquema cuando se desarrollan sistemas es una de las causas principales por las que los sistemas se vuelven altamente estáticos y difíciles de mantener ya que en los sistemas y programas tradicionales las tres componentes se encuentran revueltas, por lo que, un cambio "pequeño" en los datos o procesos o en el orden de atacar un problema ocasiona que prácticamente se tenga que volver a programar todo; por otro lado si se desarrolla el sistema de tal manera que los datos queden en un lado, los procesos en otro y finalmente la estructura del sistema en otro, el proceso de actualización puede ser relativamente fácil (un caso particular de este enfoque es el del desarrollo de Bases de Datos).

   Por lo que se considera que una característica fundamental que se debe buscar cuando se desarrolla un sistema de información es la de que exista una Independencia Relativa o sea que los datos, procesos y estructura del sistema queden separados y únicamente exista la relación mínima necesaria entre las tres componentes.

   La Independencia Relativa es una de las características distintiva del método de desarrollo basado en Base de Datos y en este documento simplemente se extiende al esquema general de Sistemas de Información.

   Otra característica presente en el método de base de datos que se puede extender al desarrollo de sistemas es el hecho de que en el enfoque de base de datos se distinguen explícitamente tres niveles, en el primero se encuentran los datos en sí (nombres propios, edades concretas, direcciones especificas, etc.); en el segundo se tiene la estructura de datos específica donde se almacenan los datos (archivos, registros y campos de la base de datos que se esta manejando) y en el tercer nivel se tiene un programa que se encarga de construir una estructura de datos particular, a partir de una descripción general de la base de datos, este programa es el constructor de la base de datos.

   En realidad una base de datos no tiene al principio datos o estructuras de datos particulares, sino que solo cuenta con el constructor que es capaz de generar múltiples casos particulares.

   En el caso de sistemas de información esta idea se puede generalizar, buscando que, más que tener datos, procesos o estructuras particulares de un sistema, se cuente con mecanismos que nos permitan construir los datos, procesos y estructuras a partir de una descripción general del sistema. como se muestra en el esquema de la figura 4.

 

 

 

 

 

 

 

 

 

 

 


Figura 4.Constructores de datos, procesos y estructura

 

   Estos tres módulos se pueden integrar en el esquema mostrado en la figura 5.

 

 

 

 

 

 

 


Figura 5. Integración de los constructores en un constructor del sistema

 

   Donde el constructor del sistema es un programa capaz de construir la estructura general de un Sistema de Información a partir de la descripción del sistema, de la misma forma que un constructor de Base de Datos es capaz de construir el esquema físico de una Base de Datos a partir de un Esquema Lógico de Base de Datos.

 

2  Rumbo a la Arquitectura de un                Sistema Evolutivo

Si se construye el sistema de información de tal forma que los componentes sean independientes en forma relativa entre sí y se da una interrelación entre el constructor y el sistema de tal forma que cualquier cambio en la descripción del sistema se refleje en tiempo real en el sistema de información, entonces se puede considerar que la imagen de la realidad que tiene el sistema de información es bastante cercana a la que se quiere reflejar. Ahora bien cuando un programa sigue un conjunto de reglas o instrucciones para resolver un problema se dice que es un Programa Deductivo, y a los métodos que construyen programas deductivos se les conoce como métodos de programación deductiva.

   El problema de la programación deductiva es que se orienta a desarrollar sistemas fijos difíciles de modificar en tiempo real (ya que las modificaciones involucran reprogramar el sistema), por lo que desde hace tiempo en el área de Sistemas Evolutivos se ha buscado desarrollar herramientas automatizadas capaces de obtener en forma automática el conjunto de reglas del sistema a partir de ejemplos y descripciones generales de un programa.

   A una herramienta o programa capaz de encontrar un conjunto de reglas a partir de ejemplos la conocemos como Mecanismo o Herramienta Inductiva; los mecanismos inductivos fueron de las primeras herramientas utilizadas en el desarrollo de constructores y son de las más generales, el esquema de un constructor basado en una herramienta inductiva es el mostrado en la figura 6.

 

 

 

 

 

 


Figura 6. Herramienta inductiva

 

   En el esquema anterior se maneja un mecanismo inductivo para construir una Imagen de la Realidad, sin embargo en esta imagen solo se tienen un conjunto de reglas en términos de procesos, estructura y datos del sistema por lo que es necesario integrar una herramienta capaz de resolver problemas siguiendo esas reglas, o sea un mecanismo de tipo deductivo como se ve en el diagrama de la figura 7.

   Para contar con un Sistema Evolutivo lo único que hace falta es dotar a esta herramienta con la capacidad de actualizar su imagen de la realidad en tiempo real con lo que se tiene la arquitectura de la figura 8.

   De donde la Arquitectura General de un Sistema Evolutivo es la mostrada en la figura 9.

 

 

 

 

III  Arquitectura

   En el punto anterior se vio que con el fin de resolver problemas el sistema evolutivo construye una imagen de la realidad, pero no se indicó como se lleva a cabo este proceso. por lo que en este punto se describirá en forma general los principales métodos y algoritmos utilizados por los Sistemas Evolutivos; para lo cual se partirá de que el lenguaje de comunicación con el exterior (o sea el lenguaje con el que se plantean los problemas al Sistema Evolutivo y con el cual éste responde a los requerimientos) y el lenguaje con el que el Sistema Evolutivo construye su imagen de la realidad son el mismo.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Figura 7. Integración de la componente deductiva

 

   En la actualidad ya existen una gran cantidad de herramientas    orientadas al manejo lingüístico de los Sistemas Evolutivos y se basan en que es relativamente fácil encontrar los elementos de un Sistema dentro de las oraciones, por ejemplo en la oración:

Calcula la Regresión de X * Y + Z , A

   Es relativamente fácil detectar los datos, acciones y estructura:

 

Calcula

la

Regresión

de

X

*

Y

+

Z

,

A

a

i

a

i

d

a

d

a

d

i

d

 

 

 

 

 

 

 

 


la estructura se indica con las líneas y representa el orden en que se ejecutan las acciones sobre los datos, los datos tienen el tipo d, las acciones el tipo a y las palabras no relevantes llevan i (ignora).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Figura 8. Retroalimentación para actualizar la imagen de la realidad