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