
ESCUELA SUPERIOR DE INGENIEROS

DEPARTAMENTO DE INGENIERIA
DE ORGANIZACIÓN Y GESTION DE EMPRESAS
CURSO DE
DOCTORADO.
SISTEMAS
EXPERTOS.
JOAQUIN CÁRDENAS FERNÁNDEZ
CAPITULO 1.introducción. evolucion
historica
1.1.Introducción
1.2.Evolución histórica.
CAPITULO 2.DEFINICIÓN Y CARACTERÍSTICAS DE LOS SE.
2.1.Definición de sistema experto.
2.2 Características de los sistemas expertos.
2.3. Componentes de un sistema experto.
2.4. Arquitectura de un sistema experto.
CAPITULO 3. TIPOS Y DESARROLLO DE LOS SISTEMAS EXPERTOS.
3.1.Tipos de sistemas expertos.
3.2 Sistemas expertos probabilisticos.
3.3 Desarrollo de un sistema experto.
3.4 Lenguajes y generadores de Sistemas Expertos
3.5Tendencias futuras de los sistemas expertos.
3.6Integración y migración de los sistemas expertos.
CAPITULO 4. APLICACIONES DE LOS SISTEMAS EXPERTOS.
4.1 Factores que justifican el desarrollo de un sistema experto.
4.2 Tipo de problemas que hacen apropiado el desarrollo de un sistema experto.
4.3 Campo de aplicaciones de los Sistemas expertos.
BIBLIOGRAFIA
CAP1TULO 1.-Introducción. Evolución Histórica.
1.1
Introducción.
Desde los años 50,se ha producido un notable avance dentro del campo de la inteligencia artificial. El reto de crear maquinas cuyo comportamiento asimile el de los humanos, con capacidad para tomar propias decisiones y obtener conclusiones comienza a ser tenido en cuenta a partir del desarrollo de la informática. Concretamente, la inteligencia artificial (IA) es una rama de la ciencia de la computación. Paralelo al desarrollo de la informática, comienza el desarrollo de la inteligencia artificial.
La IA comprende el estudio y creación de
sistemas computarizados que manifiestan cierta forma de inteligencia: sistemas
que aprenden nuevos conceptos y tareas, que pueden razonar y derivar
conclusiones útiles acerca del mundo que nos rodea, sistemas que pueden
comprender un lenguaje natural o percibir y entender una escena visual, y
sistemas que realizan otro tipo de actividades que requieren de inteligencia
humana
La IA es una ciencia que trata de la
comprensión de la inteligencia y del diseño de máquinas inteligentes, es decir,
el estudio y la simulación de las actividades intelectuales del hombre
(manipulación, razonamiento, percepción, aprendizaje,
creación).
La IA es el estudio de las computaciones que
permiten percibir, razonar y actuar. Es un campo de estudio que busca explicar y
emular el comportamiento inteligente en términos de procesos computacionales.
Estudia las representaciones y procedimientos
que automáticamente resuelven problemas usualmente resueltos por
humanos.
A pesar de la diversidad de conceptos propuestos para la IA, en general todos coinciden en que la IA trata de alcanzar inteligencia a través de la computación. Toda computación, requiere de una representación de cierta entidad y de un proceso para su manipulación.
Desde el punto de vista de los objetivos, la
IA puede considerarse en parte como ingeniería y en parte como ciencia:
Como ingeniería, el objetivo de la IA es
resolver problemas reales, actuando como un conjunto de ideas acerca de cómo
representar y utilizar el conocimiento, y de cómo desarrollar sistemas
informáticos.
Como ciencia, el objetivo de la IA es buscar
la explicación de diversas clases de inteligencia, a través de la representación
del conocimiento y de la aplicación que se da a éste en los sistemas
informáticos desarrollados.
. Problemas tales como reconocimiento de voz,
demostración de teoremas
juegos como las damas o el ajedrez debían ser resueltos por personas dado que requieren habilidades tales como pensar, ver, memorizar, oler, etc. Sin embargo, como se ha indicado antes, los trabajos que han llevado a cabo numerosos investigadores en la segunda mitad del siglo XX, han demostrado que este tipo de tareas pueden ser desarrollados y ejecutados perfectamente por maquinas. La IA engloba diferentes subareas .Las principales subareas existentes son, entre otras el reconocimiento de voz o de patrones, la demostración automática de teoremas, el procesamiento del lenguaje natural, la visión artificial, la robótica, las redes neuronales y los sistemas expertos.
Los sistemas expertos constituyen un
campo de investigación dentro de la inteligencia artificial, si bien la mayor
parte de las restantes (por no decir todas ) disponen de alguna componente
relacionada con los sistemas expertos. En la siguiente figura se muestran los
campos que forman la IA. Se trata de un “todo” que engloba campos como la
robótica, la visión artificial, las redes neuronales, etc.

Fig.1 Campos englobados por la IA.
1.2 Evolución
Histórica.
En el año 1950 el
campo de la automática recibe un
gran impulso cuando Wiener desarrolla el principio de la retroalimentación. La
teoría de la retroalimentación es base fundamental de los sistemas de
control.
En 1955 Newell y Simon desarrollan la Teoría de la lógica. Este desarrollo permitió desarrollar un programa que exploraba la solución a un problema utilizando ramas y nudos, seleccionando únicamente las ramas que más parecían acercarse a la solución correcta del problema.
En
1956,se celebra una conferencia en Vermont (USA) de gran trascendencia en el
desarrollo de la IA. John McCarthy propone por primera vez el uso del término
“Inteligencia Artificial” para denominar el estudio del
tema.
En
1957,aparece la primera versión
de “The General Problem Solver” (GPS), un programa capaz de solucionar problemas
de sentido común. El GPS utilizaba la teoría de la retroalimentación de
Wiener..
En
1958 McCarthy anuncia su nuevo desarrollo el lenguaje LISP (LISt Procesing), el
lenguaje de elección para todos aquellos desarrolladores inmersos en el estudio
de la IA.
En
1963,el Instituto Tecnológico de Massachussets (MIT) recibe una subvención de
2,2 millones de dólares del gobierno de los Estados Unidos en concepto de
investigación en el campo de la IA. De esa forma, se comprueba la importancia
que el Gobierno concede a la
investigación dentro de ese campo.
En1965
aparece DENDRAL, el primer sistema experto. Es en ese año cuando
Feigenbaum entra a formar parte del departamento de informática de Stanford.
Allí conoció a Joshua Lederberg, el cual quería averiguar cual era la estructura
de las moléculas orgánicas completas. El objetivo de DENDRAL fue estudiar un
compuesto químico. El descubrimiento de la estructura global de un compuesto
exigía buscar en un árbol las posibilidades, y por esta razón su nombre es
DENDRAL que significa en griego “árbol”.Antes de DENDRAL los químicos solo
tenían una forma de resolver el problema, estar era tomar unas hipótesis
relevantes como soluciones posibles, y someterlas a prueba comparándolas con los
datos.
La
realización de DENDRAL duró más de diez años (1965-1975). Se le puede considerar
el primer sistema experto.
En
1972, en la Universidad de Standford se desarrolla MYCIN, sistema experto dentro
del campo de la medicina para diagnostico de enfermedades infecciosas en la
sangre. MYCIN se trataba de un sistema experto para el diagnóstico de
enfermedades infecciosas. Desde los resultados de análisis de sangre, cultivos
bacterianos y demás datos, el programa era capaz de determinar, o en lo menos,
sugerir el microorganismo que estaba causando la infección. Después de llegar a
una conclusión, MYCIN prescribía una medicación que se adaptaba perfectamente a
las características de la persona, tales como el peso corporal de este.
Al mismo tiempo, Davir Marr propone nuevas teorías sobre
la capacidad de reconocimiento visual de las diferentes
máquinas.
En
1972 aparece
el lenguaje PROLOGUE basado en las teorías de Minsky.
En
1973 se desarrolla el sistema
experto llamado TIERESIAS. El cometido
de este sistema experto era el de servir de intérprete entre MYCIN y
los especialistas que lo manejaban, a la hora introducir nuevos conocimientos en
su base de datos. El especialista debía utilizar MYCIN de una forma normal, y
cuando este cometiera un error en un diagnóstico (hecho producido por la falta o
fallo de información en el árbol de desarrollo de teorías) TEIRESIAS corregiría
dicho fallo destruyendo la regla si es falsa o ampliándola si es eso lo que se
necesita.
En
1979 aparece XCON, primer programa
que sale del laboratorio Su usuario fue la Digital Equipament Corporation
(DEC).
El cometido de XCON sería
configurar todos los ordenadores que saliesen de la DEC. El proyecto presentó
resultados positivos y se empezó a trabajar en el proyecto más en serio en
diciembre de 1978.
En abril de 1979 el equipo de investigación que lo había diseñado pensó que ya estaba preparado para salir, y fue entonces, cuando se hizo una prueba real, esperando resolver positivamente un 95% de las configuraciones, este porcentaje tal alto se quedó en un 20% al ser contrastado con la realidad; XCON volvió al laboratorio, donde fue revisado y a finales de ese mismo año funcionó con resultados positivos en la DEC.
En
1980 se instauró totalmente en DEC. Y en 1984, el XCOM había crecido hasta
multiplicarse por diez. El XCOM supuso un ahorro de cuarenta millones de dólares
al año para la DEC.
Entre los años 80 a 85 se produce la revolución de los Sistemas Expertos
En estos 5 años se crearon diversos sistemas expertos como el DELTA, de General Electric Company, para la reparación de locomotoras diesel y eléctricas. “Aldo en Disco” para la reparación de calderas hidróstaticas giratorias usadas para la eliminación de bacterias.
Se crearon multitud de empresas dedicadas a los sistemas expertos como Teknowledge Inc., Carnegie Group, Symbolics, Lisp Machines Inc., Thinking Machines Corporation, Cognitive Systems Inc.... formando una inversión total de 300 millones de dólares. Los productos más importantes que creaban estas nuevas compañías eran las “máquinas Lisp”, que se trataba de unos ordenadores que ejecutaban programas LISP con la misma rapidez que en un ordenador central, y el otro producto fueron las “herramientas de desarrollo de sistemas expertos”.
En 1987 XCON empieza a no ser rentable. Los técnicos de DEC tuvieron que actualizar XCOM rápidamente llegándose a gastar más de dos millones de dólares al año para mantenimiento y algo parecido ocurrió con el DELTA..También en 1987 aparecieron los microordenadores Apple y compatibles IBM con una potencia parecida a los LISP. El software se transfirió a máquinas convencionales utilizando el lenguaje “C” lo que acabó con el LISP.
A
partir de los 90 y con el desarrollo de la informatica, se produce un amplio
desarrollo en el campo de la IA y los sistemas expertos, pudiéndose afirmar que
estos se han convertido en una herramienta habitual en determinadas empresas en
la actualidad.
La
evolución histórica de los métodos utilizados en el desarrollo de los sistemas
expertos también se ha producido a medida que se ha ido desarrollando la IA y
los diferentes métodos que se han empleado para su resolución. El desarrollo de
lenguajes como LISP y PROLOG condicionaron esa evolución, así como
investigaciones en diversos campos relacionados. Los primeros sistemas expertos
que se desarrollaron en los años 60 eran capaces de resolver solo problemas
basados en situaciones determinadas ,mediante sistemas de reglas .Es a partir de
los 70 cuando se empiezan a resolver problemas basados en situaciones inciertas,
basados en medidas difusas al principio y en redes probabilísticas con
posterioridad. En la siguiente figura se aprecia la evolución histórica en la
resolución de problemas mediante sistemas expertos.
Todo
ello se detallara en el próximo capitulo.

Fig. 2.Evolución histórica de resolución de problemas con sistemas
expertos.
CAPITULO
2.DEFINICIÓN Y CARACTERÍSTICAS DE LOS SE
2.1.Definición
de Sistema experto.
Un sistema experto puede definirse como
un sistema basado en los conocimientos que imita el pensamiento de un experto,
para resolver problemas de un terreno particular de
aplicación.
Una
de las características principales de los sistemas expertos es que están basados
en reglas, es decir, contienen unos conocimientos predefinidos que se utilizan
para tomar todas las decisiones.
En Teoría estos sistemas son capaces de razonar siguiendo los mismos pasos que seguiría un especialista (experto) en determinada materia (medico, matemático, biólogo, etc) cuando resuelve un problema propio de su campo de su disciplina. Por ello, el creador de un sistema experto tiene que comenzar por identificar y recoger del experto humano los conocimientos que este utiliza, pero sobre todo los conocimientos empíricos que se adquieren con la practica. Dado que los programas están basados en el conocimiento un aspecto fundamental es la programación del conocimiento la cual hace uso de la representación explicita del conocimiento a usar por el sistema y de su interpretación y manipulación lógica por medio de métodos de inferencia que permiten deducir nuevo conocimiento a partir del que ya se dispone. Por ejemplo, un SE en diagnostico medico Los sistemas expertos son máquinas que piensan y razonan como un experto lo haría en una cierta especialidad o campo. Por ejemplo, un sistema experto en diagnóstico médico requeriría como datos los síntomas del paciente, los resultados de análisis clínicos y otros hechos relevantes, y, utilizando éstos, buscaría en una base de datos la información necesaria para poder identificar la correspondiente enfermedad. Un Sistema Experto de verdad , no sólo realiza las funciones tradicionales de manejar grandes cantidades de datos , sino que también manipula esos datos de forma tal que el resultado sea inteligible y tenga significado para responder a preguntas incluso no completamente especificadas. Así, un sistema experto es un cuerpo de programas de ordenador que intenta imitar e incluso superar en algunas situaciones a un experto humano en un ámbito concreto de su actividad. No pretende, en absoluto, reproducir el pensamiento humano, sino simplemente la pericia de un profesional competente (téngase en cuenta que para construir un SE se suele contar con grandes expertos en la materia que incorporan su conocimiento al sistema). Esta pretensión es más sencilla ya que en algunos campos reducidos los expertos trabajan siguiendo reglas, aunque, generalmente, no sean conscientes de ello. En aquellos campos en los que no sea necesario aplicar la intuición ni el sentido común, los sistemas basados en el conocimiento han conseguido notables éxitos, consiguiendo en ocasiones ser más regulares y rápidos que los propios expertos. Los sistemas basados en el conocimiento desarrollados hasta hace poco constituyen la primera generación cuya característica común reside en la superficialidad del conocimiento que se incluye en el mismo. Los ingenieros de conocimiento (desarrolladores de los sistemas basados en el conocimiento) se limitan a incorporar en los sistemas la experiencia y criterios de los especialistas sin buscar las razones últimas en las que se basan. Actualmente existen sistemas más avanzados, sistemas de Segunda Generación, en la que el conocimiento se estructura en dos niveles. El primer nivel, de control (se suele aludir a él como metaconocimiento y las reglas que lo constituyen reciben el nombre de metarreglas), sirve para determinar la forma de utilizar el segundo nivel que es el que contiene el conocimiento de los expertos.
2.2.Características de
los Sistemas expertos.
Para que un sistema actúe como un verdadero experto, es deseable que reúna, en lo posible, lo más importante de las características de un experto humano, esto es:
· Habilidad para adquirir conocimiento.
· Fiabilidad, para poder confiar en sus resultados o apreciaciones.
· Solidez en el dominio de su conocimiento.
· Capacidad para resolver problemas.
Dada la complejidad de los problemas que usualmente tiene que resolver un SE, puede existir cierta duda en el usuario sobre la validez de respuesta obtenida. Por este motivo, es una condición indispensable que un SE sea capaz de explicar su proceso de razonamiento o dar razón del por qué solicita tal o cual información o dato.
2.3.Componentes de un sistema
experto.
Los principales componentes de un sistema experto son los siguientes:
Un SE posee el conocimiento del experto humano convenientemente formalizado y estructurado; esto es lo que se conoce como Base de conocimiento. Está constituido por la descripción de los objetos y las relaciones entre ellos, así como de casos particulares y excepciones. Algunos sistemas basados en el conocimiento incluyen metaconocimiento o conocimiento sobre el conocimiento, es decir, la capacidad para buscar en la base de conocimiento y abordar la resolución del problema de una manera inteligente usando diferentes estrategias para la resolución con sus condiciones particulares de aplicación. Es decir se trata de definir criterios mediante los cuales el sistema decide la estrategia de búsqueda a utilizar en función de unos datos iniciales. El conocimiento se puede representar mediante cálculo de predicados, listas, objetos, redes semánticas y/o reglas de producción. De todas ellas, las dos formas más usuales son las reglas de producción y los objetos. En cualquier caso, la elección de las técnicas de representación a utilizar dependerán del tipo de problema a resolver.
También llamado intérprete de reglas, es un módulo que se encarga de las operaciones de búsqueda y selección de las reglas a utilizar en el proceso de razonamiento. Por ejemplo, al tratar de probar una hipótesis dada, el motor de inferencia irá disparando reglas que irán deduciendo nuevos hechos hasta la aprobación o rechazo de la hipótesis objetivo.
Se trata de una memoria temporal auxiliar que almacena los datos del usuario, datos iniciales del problema, y los resultados intermedios obtenidos a lo largo del proceso de resolución. A través de ella se puede saber no sólo el estado actual del sistema sino también cómo se llegó a él. Como ya se ha mencionado antes, es conveniente que esta información se maneje con bases de datos relacionales, en lugar de utilizar un sistema particular de almacenamiento.
Todo sistema dispone de una interfaz de usuario, que gobierna el diálogo entre el sistema y el usuario. Para el desarrollo de estas interfaces algunas herramientas de desarrollo incorporan generadores de interfaz de usuario o bien se utilizan herramientas de desarrollo de interfaces gráficas existentes en el mercado.
Otros módulos que forman parte de este tipo de herramientas son los siguientes:
En la actualidad la mayoría de los sistemas basados en el conocimiento no viven aislados sino que interactúan con otros sistemas por lo que son capaces de interactuar no solamente con el experto sino con estos sistemas, para poder recoger información o consultar bases de datos.
Es una utilidad importante en la etapa de desarrollo ya que aporta una ayuda considerable al ingeniero del conocimiento para refinar el funcionamiento del motor de inferencia, y al experto a la hora de construir y verificar la coherencia de la base de conocimiento. Sirve para explicar al usuario tanto las reglas usadas como el conocimiento aplicado en la resolución de un determinado problema.
Este módulo permite al ingeniero del conocimiento, y/o experto, la construcción de la base de conocimiento de una forma sencilla, así como disponer de una herramienta de ayuda para actualizar la base de conocimiento cuando sea necesario.
Si bien estos módulos no existen en todos los sistemas basados expertos, o bien están desarrollados o implementados de maneras diferentes, la función que desempeñan es muy interesante en el desarrollo de estos sistemas. Así, el motor de inferencia y las interfaces, que incluyen la interfaz de usuario, el módulo de explicaciones y el módulo de adquisición del conocimiento, forman el esqueleto o sistema esencial, y que, separadas de las bases de conocimiento y de hechos, constituyen una herramienta software para el desarrollo de los sistemas basados en el conocimiento (shells).
Los componentes de que consta un SE se encuentran reflejados en la figura 3.

Fig.3. Componentes de un Sistema Experto.
En la figura siguiente se muestra la arquitectura de un sistema experto
2.4 Arquitectura de un sistema
experto.
La arquitectura de un sistema experto esta basada en una entrada de datos realizada por el usuario a fin de efectuar la oportuna consulta. Las entradas no solamente están compuestas de estas consultas. El aprendizaje del sistema y las condiciones especificas del problema a tratar también han de encontrarse en la entrada.
Junto a ello, se encuentra la administración del sistema, compuesta por un interfaz encargado del manejo de la sintaxis del lenguaje y de la maquina de inferencias,que se encarga de efectuar la búsqueda en la base de conocimientos y en la base de datos. Por ultimo, se tienen los resultados. En la fig. 4 se refleja la arquitectura de un SE.

Fig.4. Arquitectura de un sistema experto.
CAPITULO
3.TIPOS DE SISTEMAS EXPERTOS.
3.1.Tipos de Sistemas
Expertos
Los problemas con los que pueden tratar los
sistemas expertos pueden clasificarse fundamentalmente en dos tipos: problemas
esencialmente deterministas y problemas esencialmente estocásticos. Por ejemplo,
en el campo médico las relaciones entre síntomas y enfermedades se conocen sólo
con un cierto grado de certeza (la presencia de un conjunto de síntomas no
siempre implica la presencia de una enfermedad). Estos tipos de problemas pueden
también incluir algunos elementos deterministas, pero se trata fundamentalmente
de problemas estocásticos.
Consecuentemente, los sistemas expertos pueden
clasificarse en dos tipos principales según la naturaleza de problemas para los
que están diseñados: deterministas y estocásticos. Los problemas de tipo
determinista pueden ser formulados usando un conjunto de reglas que relacionen
varios objetos bien definidos. Los sistemas expertos que tratan problemas
deterministas son conocidos como sistemas basados en reglas.
En situaciones inciertas, es necesario
introducir algunos medios para tratar la
incertidumbre. Por ejemplo, algunos sistemas
expertos usan la misma estructura de los sistemas basados en reglas, pero
introducen una medida asociada a la incertidumbre de las reglas y a la de sus
premisas. En este caso se pueden utilizar algunas fórmulas de propagación para
calcular la incertidumbre asociada a las conclusiones. Durante las últimas
décadas han sido propuestas algunas medidas de incertidumbre. Algunos ejemplos
de estas medidas son los factores de certeza, usados en las conchas para generar sistemas
expertos tales como el sistema experto MYCIN; la lógica difusa, etc.
Otra medida intuitiva de incertidumbre es la
probabilidad, en la que la distribución conjunta de un
conjunto de variables se usa para describir las relaciones de dependencia entre
ellas, y se sacan conclusiones usando fórmulas muy conocidas de la teoría de la
probabilidad. Este es el caso del sistema experto PROSPECTOR, que utiliza el
teorema de Bayes para la exploración de mineral.
Los sistemas expertos que utilizan la
probabilidad como medida de incertidumbre se conocen como sistemas expertos probabilístico
y la estrategia de
razonamiento que usan se conocen con el nombre de sistemas expertos
probabilisticos.
3.2.Sistemas Expertos
Probabilísticos.
En los primeros sistemas expertos, se eligió la
probabilidad como medida para tratar la incertidumbre pero, desgraciadamente,
muy pronto se encontraron algunos problemas, debidos al uso incorrecto de
algunas hipótesis de independencia, utilizadas para reducir la complejidad de
los cálculos. Como resultado, en las primeras etapas de los sistemas expertos,
la probabilidad fue considerada como una medida de incertidumbre poco práctica.
La mayoría de las críticas a los métodos probabilísticos se basaban en el
altísimo número de parámetros necesarios, la imposibilidad de una asignación o
estimación precisa de los mismos, o las hipótesis poco realistas de
independencia.
Consecuentemente, en la literatura de la época,
surgieron medidas alternativas a la
probabilidad, como los factores de certeza, las
credibilidades, las plausibilidades, las necesidades o las posibilidades, para
tratar la incertidumbre. Sin embargo, con la aparición de las redes
probabilísticas (principalmente las redes Bayesianas y
Markovianas,
la probabilidad ha resurgido de forma
espectacular, y es, hoy en día, la más intuitiva y la más aceptada de las
medidas de incertidumbre.
Consideremos el siguiente ejemplo de
diagnóstico médico, donde se supone que se tiene un conjunto de enfermedades
dado (E1,...,En) y un conjunto de síntomas asociados (S1,...,Sm) a éstas. La
pregunta a la que trata de responder un sistema experto probabilístico de
diagnóstico médico es: Supuesto que el paciente presenta un
subconjunto de síntomas S, ¿qué enfermedad es más probable que
tenga?. Para responder a esta
pregunta han de calcularse las probabilidades P(Ei | S) , i = 1, 2, …, n. Por
ejemplo, en un caso práctico podíamos haber obtenido:
Enfermedad P(Di |
S)
1
0.2
2
0.1
3 0.8
® más probable
4
0.4
5
0.0 ® menos probable
6
0.7
El problema de estos sistemas es que suponen
que se conoce la función de probabilidad conjunta de todas las enfermedades y
síntomas. Sin embargo, en la práctica no se conocen todos los datos necesarios
para definir la función de probabilidad conjunta pues, en casos reales, estos
pueden constituir una cantidad ingente de información. Por ejemplo, para un caso
de diagnóstico médico con 100 enfermedades binarias y 100 síntomas binarios se
requieren más de 10 60 parámetros para especificar la función de
probabilidad conjunta.
Los modelos de redes probabilísticas utilizan
grafos para definir relaciones de
dependencia entre las variables del modelo y
simplificar la estructura de la función de probabilidad conjunta. Así, serán
necesario un número inferior de parámetros para especificar el modelo. Esta
simplificación se realiza en base a una factorización de la
probabilidad.
3.3. Desarrollo de un Sistema experto.
Como primera aproximación es necesario indicar que las herramientas pueden clasificarse en tres grupos en función de las diferentes etapas del proyecto en que interviene:
· Estudio de viabilidad: Se intenta verificar si el problema justifica el desarrollo de un sistema basado en el conocimiento (este punto es muy importante, ya que algunas veces se ha intentado resolver con este tipo de tecnología problemas que no eran los adecuados, lo que llevó a resultados decepcionantes). Las herramientas deben ser flexibles y de uso muy sencillo. Muchas veces en esta etapa no es necesario el uso de una herramienta específica ya que puede utilizarse un lenguaje de programación de propósito general.
· Desarrollo del prototipo: En esta fase las herramientas deben poseer una serie de características a nivel de estructuras de control, permitir probar y comparar los diferentes enfoques de la resolución del problema (representación del conocimiento, estrategia de control, etc.) y ofrecer facilidades a los ingenieros del conocimiento (traza, gestión de coherencia, etc.) en el desarrollo del sistema.
· Desarrollo del sistema: El factor más importante es la eficiencia. Asimismo, debe disponer de módulos explicativos evolucionados para una efectiva compilación de la base de conocimiento y los métodos de inferencia. En resumen, deben adaptarse perfectamente al problema. El desarrollo de estos sistemas suele pasar por cuatro fases:
§ Identificación de la aplicación y concepción de la solución.
§ Desarrollo del (de los) prototipo(s).
§ Ejecución y construcción del sistema completo.
§ Alcanzar la integración del nuevo sistema con los anteriores y la asimilación del uso de la nueva tecnología.
La tarea más importante a la hora de desarrollar un sistema basado en el conocimiento consiste en la modelización del problema que se quiere resolver, esto es, representar el conocimiento que posee el experto en un lenguaje que permita razonar al sistema. Consiste en formalizar y estructurar los objetos y las relaciones entre ellos en la base de conocimiento.
De la misma forma que no existe ningún lenguaje de programación universal, tampoco se ha encontrado un lenguaje ideal para poder representar el conocimiento formalmente. La elección dependerá, principalmente, de la naturaleza y magnitud del problema.
Así, existen formalismos que permiten representar fácilmente mecanismos de razonamiento puramente lógicos; otros, sin embargo, se adaptan mejor a una representación por analogía.
Existen tres tipos de representación:
· La representación procedural expresa explícitamente las relaciones entre los fragmentos de conocimiento que son complejas de modificar. No obstante, ofrece una gran facilidad en el uso del metaconocimiento.
· La representación declarativa incluye el cálculo de predicados, las reglas de producción y las redes semánticas. El conocimiento queda estructurado en fragmentos independientes unos de otros y que, por tanto, son fácilmente modificables. Estos módulos de conocimiento se combinan mediante un mecanismo general de razonamiento y deducción.
· La representación mixta, como los objetos y marcos, emplea los dos métodos de representación anteriores.
A continuación se explican con mayor detalle algunos ejemplos de representación:
· Reglas de producción: Es una representación formal de una relación, una información semántica o una acción condicional. Una regla de producción tiene, generalmente, la siguiente forma: SI Premisa ENTONCES Consecuencia. Ofrecen una gran facilidad para la creación y la modificación de la base de conocimiento. Permite introducir coeficientes de verosimilitud para ponderar el conocimiento (estos coeficientes se van propagando durante el proceso de razonamiento mediante unas fórmulas de cálculo establecidas) y, en teoría, el método asegura que cuantas más reglas posea más potente es. Sin embargo, aunque es la forma de representación más intuitiva y rápida, cuando el número de reglas es grande aumenta la dificultad de verificación de todas las posibilidades con el consiguiente riesgo de perder la coherencia lógica en la base de conocimiento. Los hechos y las reglas asociadas de la base de conocimiento normalmente no son exactos; es decir se tiene incertidumbre sobre el grado de certeza de algunos hechos y también sobre el campo de validez de algunas de las reglas. Para el manejo de la incertidumbre en los sistemas de reglas se han utilizado varios sistemas; los tres más conocidos son los Factores de Certeza ( utilizados en MYCIN), la lógica de Dempster Shafer, y la Lógica Difusa ( Fuzzy Logic). El método de tratar la incertidumbre es una de las características más importantes de las herramientas de desarrollo, y actualmente se encuentra en discusión la validez de estas lógicas para tratar con la incertidumbre. En sustitución se han propuesto las Redes Bayesianas que tienen una base matemática más firme. De todas formas es un campo actual de investigación que permanece abierto.
· Lógica proposicional: Es similar a las reglas de producción. Su diferencia principal con éstas es que separa los elementos que componen la base de conocimiento de aquellos que controlan la operación del sistema.
· Redes semánticas: Es un método que consiste en representar el conocimiento en forma de redes o grafos; los nodos representan conceptos u objetos, y los arcos que los interconectan describen relaciones entre ellos.
· Marcos: Consiste en asociar propiedades a los nodos que representan los conceptos u objetos. Las propiedades son descritas en términos de atributos y los valores asociados.
· Objetos: La diferencia con los marcos reside en que, en un entorno de programación orientada a objetos, éstos pueden actuar como entidades independientes. De esta forma, el control del sistema se consigue mediante el envío de mensajes del sistema a los objetos y entre ellos mismos.
· Representaciones múltiples: Es posible, e incluso muy frecuente, combinar dos o más formas de representar el conocimiento en el mismo sistema para obtener la modelización más adecuada a cada problema por lo que es bueno que una herramienta de desarrollo de sistemas basados en el conocimiento contemple más de una forma de representación.
En el desarrollo del sistema es necesario idear el mecanismo de inferencia que refleje lo más fielmente posible cómo piensa o actúa el experto. Este mecanismo, que se denomina motor de inferencia, es la parte más importante del sistema basado en el conocimiento junto con la base de conocimiento. Los mecanismos de razonamiento que utilizan reglas de producción son los de la lógica formal: modus ponendo ponens y modus tollendo tollens . Además existe otro método que difiere de los anteriores y que es la búsqueda en árboles.
Existen además cinco modos de razonamiento que a continuación se explican:
· Encadenamiento hacia adelante: El motor de inferencia parte de los hechos para llegar a los resultados, esto es, selecciona las reglas que verifiquen las condiciones de la parte izquierda (premisas).
· Encadenamiento hacia atrás: En este caso el motor de inferencia parte de los resultados y trata de volver a los hechos para comprobar si encajan con el problema planteado.
· Encadenamiento mixto: Este modo ofrece varias posibilidades que resultan de combinar el encadenamiento hacia adelante y hacia atrás para paliar sus limitaciones y mantener las ventajas.
· Algoritmos de búsqueda heurística: En los casos en los que la naturaleza de la base de conocimiento permita construir una estructura de árbol, el proceso de inferencia se convierte en un problema de búsqueda en un árbol. Existen diversos métodos, y la elección dependerá, por lo tanto, de la naturaleza del problema.
· Herencia: Es el método de inferencia utilizado en entornos orientados a objetos. Un objeto hijo hereda propiedades y hechos de sus padres. Así, la asignación de nuevas propiedades a un objeto se realiza a través de las relaciones entre ese objeto y el resto.
Dentro de los modos de razonamiento los factores de incertidumbre son valores asignados a hechos o reglas que indican la certeza o grado de confianza que el experto tiene en una regla o el usuario en un hecho. No representan, ni mucho menos, una probabilidad en el sentido estricto de la palabra.
Un sistema que usa factores de incertidumbre asociados a las reglas o propiedades de los objetos puede realizar varias recomendaciones indicando el grado de confianza o nivel de certidumbre de cada una.no todos los problemas requieren un conocimiento basado en grados de incertidumbre, es conveniente que la herramienta para el desarrollo de un sistema basado en el conocimiento incluya este conocimiento probabilístico porque incorpora una utilidad que refleja en gran manera la forma de trabajar de los expertos en mucha áreas. Asimismo, es necesario tener claro el algoritmo o método que se utiliza para calcular el grado de incertidumbre asociado a una recomendación o acción final.
3.4Lenguajes y generadores de Sistemas Expertos.
Para el desarrollo de sistemas basados en el conocimiento se han venido utilizando tanto lenguajes de programación específicos de la inteligencia artificial (LISP y PROLOG) como de propósito general (C, PASCAL, etc.).El lenguaje LISP es uno de los más utilizados desde los comienzos de la I.A. Se trata de uno de los lenguajes de alto nivel más antiguos. Se creó en 1950 en el MIT por John McCarthy. Es un lenguaje cuyo principal estructura de datos son las listas, aún cuando se han ido incorporando otras estructuras más sofisticadas como pueden ser los objetos.Tiene como ventaja el manejo de sus estructuras a muy alto nivel lo que facilita la implementación rápida de los modelos y su facilidad de modificación. Como desventaja está su relativa lentitud frente a lenguajes de propósito general como C. La mayoría de las primeras herramientas de desarrollo de sistemas basados en el conocimiento fueron escritas en LISP y, en la actualidad, conviven con otras que se han desarrollado en C++.El lenguaje PROLOG fue creado por Alain Colmenauer en la Universidad de Marsella en 1972. Se trata de un lenguaje declarativo frente a los lenguajes de programación más usuales que son procedurales.Los lenguajes declarativos, a diferencia de los procedurales, no describen secuencialmente el algoritmo de resolución del problema, sino que se limitan a describir los hechos conocidos y las relaciones existentes entre ellos. Los lenguajes procedurales están orientados al "cómo" mientras que los declarativos están orientados al "qué". Es el lenguaje declarativo, en el caso que nos ocupa PROLOG, quien a partir de los datos introducidos deduce nuevos hechos y resuelve el problema automáticamente. PROLOG tiene incluido, por tanto, un motor de inferencia que se encarga de realizar búsquedas en su base de hechos. Programar con PROLOG, por tanto, consiste en asertar hechos sobre objetos y preguntar al sistema sobre sus relaciones. Este lenguaje, aún cuando se le reconocen sus bondades, no ha tenido una gran utilización (si se exceptúa Francia, Gran Bretaña y Japón con el proyecto de 5ª generación, en el que se adoptó como lenguaje de programación PROLOG) siendo su principal aplicación el manejo de bases de datos relacionales junto con lenguajes de bases de datos de 4ª generación asociados a éstas.En la actualidad, es común la utilización de lenguajes orientados a objeto (tales como C++) para el desarrollo de generadores de sistemas expertos y de Los propios sistemas basados en el conocimiento por su rendimiento, en términos de tiempo de ejecución, superior al de las herramientas generales. La incorporación de la programación orientada a objetos al lenguaje C ha facilitado la labor de modelización que requiere todo sistema basado en el conocimiento y su rapidez de ejecución así como el hecho de ser uno de los lenguajes de programación más conocidos ha hecho que su uso vaya en aumento.Una herramienta para la construcción de sistemas basados en el conocimiento no es sólo un lenguaje de programación de alto nivel orientado al desarrollo de estos sistemas. Este equipo lógico de desarrollo tiene, entre otras, las siguientes características o utilidades:
Estas herramientas están muy orientadas hacia el usuario final de la aplicación y, por lo tanto, es fundamental elegir la herramienta adecuada al entorno de aplicación. Son muchos los factores que influyen a la hora de tomar una decisión. En primer lugar es necesario conocer el alcance real del proyecto, esto es, si primero va a construirse una maqueta para estudiar la viabilidad del proyecto, o si por el contrario ya está decidido el desarrollo del sistema basado en el conocimiento.
3.5 Integración y migración de los sistemas expertos.
Los sistemas expertos, salvo excepciones, no están aislados sino que forman parte de otros sistemas, expertos o convencionales. Existen dos tipos básicos de arquitectura de integración. En la primera, el sistema basado en el conocimiento forma parte de otro sistema principal. Así, si el sistema necesita comunicarse con el sistema basado en el conocimiento, entablará una comunicación directamente o a través de una red.
En la segunda el sistema basado en el conocimiento es el sistema principal y está conectado a otros sistemas basados en el conocimiento o convencionales, que le ayudan en su operación. Como ejemplo están los subsistemas que realizan complejos cálculos matemáticos necesarios durante el proceso de razonamiento.
En ambos casos debe garantizarse una comunicación fluida de todos los sistemas, aunque estén funcionando en plataformas diferentes, ya sea directamente o a través de una red local. Este aspecto es crítico en sistemas basados en el conocimiento en tiempo real, los cuales requieren un rápido acceso a la información relevante y a las bases de datos para poder ofrecer una solución inmediata y satisfactoria.
Por tanto, habrá que fijarse en las posibilidades de conexión a las bases de datos más conocidas y, en especial, a aquélla que se esté utilizando como estándar en la organización así como la posibilidad de llamar a rutinas externas en diferentes lenguajes y viceversa, o la invocación del sistema basado en el conocimiento desde otros sistemas.
Un aspecto fundamental a tener en cuenta es la portabilidad de la herramienta (herramientas multiplataforma). En este aspecto hay que valorar no sólo si la herramienta es susceptible de funcionar en diferentes plataformas sino también el coste del cambio de plataforma. Existen herramientas que permiten pasar de una plataforma a otra sin apenas esfuerzo, lo que facilitará la comercialización y el uso de los sistemas que se desarrollen.
3.6 Tendencias futuras de los Sistemas expertos.
El mercado de herramientas para el desarrollo de SE está sufriendo una profunda transformación debido a una reorganización en el mercado informático y al cambio de estrategia de las compañías dedicadas al desarrollo de estas herramientas. Son cada vez más las compañías que antaño se dedicaban exclusivamente a la inteligencia artificial y que han decidido introducirse en otros mercados más amplios. Esto ha provocado una confusión que irá en aumento a medida que las empresas que integraban el grupo del mercado de la inteligencia artificial pasen a comercializar otro tipo de productos.
El mercado se ha ido reconfigurando aprovechando las experiencias del pasado y el avance tecnológico. Así se ha pasado de utilizar máquinas específicas (por ejemplo máquinas LISP) a usar ordenadores comunes (estaciones de trabajo, ordenadores personales, etc.). Las aplicaciones eran muy específicas y ahora el ámbito es mucho más amplio. Los sistemas basados en el conocimiento estaban pensados para trabajar de forma aislada y ahora se conciben integrados con otros sistemas. Y, finalmente, el número de personas formadas en estas técnicas es mucho mayor que las existentes hace unos años.Un análisis del mercado actual lleva a distinguir seis categorías de herramientas en función de la plataforma de desarrollo y de operación que lo estructuran:
clasificaciones
posibles:
Según plataformas
Según herramientas de desarrollo:
Lenguajes (LISP, PROLOG, C++,...)
"Shell" (utilizando esos entornos)
CBR
Otra clasificación:
Herramientas de propósito general
Herramientas de dominio.
Las herramientas de desarrollo de sistemas basados en el conocimiento se pueden clasificar de varias formas.
Según la plataforma de desarrollo y de operación que lo estructuran podemos distinguir cuatro tipos:
Según el alcance de la herramienta podemos dividirlas en:
Por último podemos realizar una última división atendiendo al lenguaje o técnica para el que sirve la herramienta y así podemos distinguir entre:
Algunos de los campos actuales de investigación y de aplicación son:
Otras técnicas que se pueden mencionar son la utilización de Ontologías para representar el conocimiento, Data Mining para obtención de conocimiento en bases de datos y los Agentes Inteligentes para la recuperación de información en Internet.
CAPITULO 4.APLICACIONES DE LOS SISTEMAS
EXPERTOS.
4.1 Factores que justifican el desarrollo de un sistema experto:
4.2 Tipo de problemas que hacen apropiado el desarrollo de un sistema experto.
4.3.Campo de aplicaciones de los
SE.
Según el tipo de problema a resolver, los ámbitos de aplicación en los que más se han utilizado los sistemas basados en el conocimiento son los siguientes:
A modo de resumen y sin ser exhaustivos, pues el ámbito de aplicación de los sistemas basados en el conocimiento es muy amplio, el siguiente cuadro indica algunas de las áreas en las que se han aplicado sistemas basados en el conocimiento y el tipo de problema que abordan:
DOMINIO |
PROBLEMAS |
|
Ambito Administrativo: |
|
|
- Reglamentación. |
- Aligerar el tiempo de procedimientos. |
|
- Derecho interpretado. |
- Disminución de costes de tramitación. |
|
- Procesos. |
- Homogeneidad de las interpretaciones legales. |
|
- Procedimmientos. |
- Disponiblidad de la información. |
|
Gestión: |
|
|
- Ejecutivos. |
- Manejo de un volúmen creciente de información. |
|
- Gestores. |
- Acceso a expertos o consultores para la resolución de un problema determinado. |
|
- Planificación estratégica. |
- Reducción de la complejidad organizativa. |
|
- Dirección. |
|
|
- Consultores. |
|
|
Operaciones: |
|
|
- Operación de maquinaria . |
- Mejora de la coordinación de la organización, programación y gestión complejas. |
|
- Controles de calidad. |
- Vigilancia de sistemas complejos para poder tomar decisiones rápidamente. |
|
- Controles de inventario. |
- Previsión de resultados de procesos complejos y dinámicos. |
|
- Control de maquinaria |
|
|
Servicios de Apoyo: |
|
|
- Relaciones Públicas. |
- Comunicación de procedimientos nuevos y complejos |
|
- Entrenamiento de personal. |
- Exámen y explicación de las decisiones tomadas. |
|
- Servicios de proceso de datos. |
- Control y reducción de los costes de desarrollo y mantenimiento de sistemas informáticos. |
|
- Mantenimiento y construcción. |
- Entrenamiento de operarios en tareas complejas |
|
- Investigación y desarrollo. |
|
|
- Problemas legales. |
|
|
Finanzas: |
|
|
- Gestores de cartera. |
- Necesidad de disponer de herramientas inteligentes para la planificación. |
|
- Contabilidad financiera. |
- Vigilancias de sistemas complejos existentes. |
|
- Gestores financieros. |
|
|
- Auditoría |
|
|
- Control. |
|
|
Mercadotecnia: |
|
|
- Ventas. |
- Necesidad de asistencia experta para examinar cuestiones mercadotécnicas. |
|
- Publicidad. |
- Necesidad de programas de servicio de clientes, asistencia y control. |
|
- Investigación mercado- técnica. |
|
|
- Gestión de pedidos. |
|
|
Automatización del Trabajo de Oficina: |
|
|
- Proceso de textos. |
- Necesidad de incremento en el manejo, comunicación, recuperación y distribución de información. |
|
- Gestión de bases de datos. |
|
|
Servicios Profesionales: |
|
|
- Consultoría de gestión. |
- Acceso a la información de otros consultores o expertos. |
|
- Abogacía. |
- Realización de informes. |
|
- Medicina. |
- Modelización y simulación. |
|
- Contabilidad. |
- Control de un volúmen creciente de información. |
Cuena, J. Notas sobre modelos de razonamiento. Dpto. de I.A., Facultad de Informática, UPM, 1995.
Jackson, P. Introduction to
Expert Systems Addison-Wesley, 1990.
Sterling, L. y Shapiro, E. The
Art of Prolog (Segunda edicion) MIT Press, 1993.
Bratko, I. Prolog Programming for
Artificial Intelligence, Addison-Wesley Ltd. 1986.
Clocksin y Mellish. Programming
in Prolog, Springer-Verlag, 1981
Shoham, Yoav Artificial
Intelligence Techniques in Prolog, Morgan Kaufmann, 1993.
Bowen, Kenneth A. Prolog and
Expert Systems, McGraw-Hill, 1991.
Castillo, E.,
Gutiérrez, J.M. and Hadi, A.S. (1997) Expert Systems
and probabilistic Network Models. Springer
Verlag, New York. Versión
castellana publicada por la
Academia de Ingeniería (1998)
lafacu.com no se responsabiliza por el uso que otros o terceros, puedan darle a esta información.