Descargar

Sistema Experto PROLOG


  1. Introducción
  2. Sistemas expertos
  3. Consulta
  4. Representación de Conocimientos
  5. Lenguajes y Sistemas de Programación

Introducción

Los sistemas expertos pueden almacenar el conocimiento de expertos para un campo de especialidad determinada – solucionar un problema mediante la deducción lógica.

Representan la transición del procesamiento de datos al procesamiento de conocimientos y sustituye al mismo tiempo los algoritmos por mecanismo de inferencia.

Los sistemas expertos encuentran aplicaciones allí donde haya conocimientos especializados y experiencia.

Sistemas expertos

En este capítulo se presenta los sistemas expertos desde el punto de vista de su aplicacion en el ámbito industrial. Se han excluido aquí las cuestiones referentes a la investigacion de base.

Las preguntas típicas que se plantean son las siguientes

¿Cuándo es apropiado incorporar sistemas expertos?

¿Cuáles son los distintos componentes de un sistema experto?

¿Cómo se crean los sistemas expertos?

2.1 Campos de aplicación

La aplicación de sistemas expertos será adecuada allí donde los expertos dispongan de conocimientos complejos en un área estrechamente delimitada, donde no existan algoritmos elaborados(o donde los existentes no puedan solucionar algunos problemas y no existan teorias completas.

Otro campo de aplicación es allí donde hay teorías, pero resulta prácticamente imposible analizar todos los casos teóricamente imaginables mediante algoritmos y en un espacio de tiempo razonable.

2.2 Componentes

Una característica decisiva de los sistemas expertos es la separación entre conocimientos (reglas, hechos) por un lado y su procedimiento por el otro.

Componentes de un sistema experto

  • La base del conocimiento : De un sistema experto contiene el conocimiento de los hechos y de las experiencias de los expertos en un dominio determinado

  • El mecanismo de Inferencia de un sistema experto puede simular la estrategia de solución de un experto

  • El componente Explicativo : Explica al usuario la estrategia de solución encontrada y el porqué de las decisiones tomadas

  • El interface de usuario: sirve para que este pueda realiza una consulta de un lenguaje lo más natural posible

  • El componente de adquisición : Ofrece ayuda a la estructuración e implementación del conocimiento en la base de conocimientos

2.2.1 Base de conocimientos:

La base de conocimientos contiene todos los hechos, las reglas y los procedimientos del dominio de aplicación que son importantes para la solución del problema.

Los hechos son del tipo: El velero "Mary" tiene una longitud de 6 m. La representación de este conocimiento puede realizarse orientándola, por ejemplo según objetos. Los objetos de una base de conocimientos pueden ser entonces: barco, barco a motor, barco a vela tiene todas las cualidades de un barco y ademas todas las cualidades especificas de un barco a vela.

Todas las cualidades de un barco por ejemplo: Desplazamiento sobre el agua , vienen descrias con el objeto "barco" A traves de la relacion formulada, el barco a vela "Hereda" estas cualidades, de forma que solo hara falta describir sus cualidades particulares.(POO)

En la creacion de la base de conocimientos se planten las siguientes preguntas.

  • ¿Qué objetos seran definidos?

  • ¿Cómo son las relaciones entre los objetos?

  • ¿La base de conocimientos hace totalmente referencia a la solucion del problema?

  • ¿La base de conocimientos consistencia?

Estas son cuestiones que el ingeniero de conocimientos debe solucionar, en parte colaborando con los expertos.

2.2.2 Mecanismo de Inferencia

El mecanismo de inferencia es la unidad lógica con la que se extraen conclusiones de la base de conocimientos, según un método fijo de solución de problemas que está configurado imitando el procedimiento humano de los expertos para solucionar problemas.

Una conclusión se produce mediante aplicación de las reglas sobre los hechos presentes

Las Funciones del mecanismo de inferencia son:

  • Determinación de las acciones que tendrán lugar, el orden en que lo harán y como lo harán entre las diferentes partes del sistema experto

  • Determinar cómo y cuando se procesaran las reglas, y dado el caso también la eleccion de que reglas deberán procesarse

  • Control del dialogo con el usuario.

2.2.3 Componentes Explicativo

Las soluciones descubiertas por los expertos deben poder ser repetibles tanto por el ingeniero del conocimiento en la fase de comprobación así como por el usuario. La exactitud de los resultados solo podrá ser controlada naturalmente por los expertos.

Es deseable que durante el trabajo del sistema se conozca siempre el grado de progreso en el procesamiento del problema.

A pesar de insistir sobre la importancia del componente explicativo es muy dificil y hasta ahora no se han conseguido cumplir todos los requisitos de un buen componente explicativo.

Los componentes explicativos existentes pueden ser suficientes para el ingeniero de conocimiento, ya que está muy familiarizado con el entorno del procesamiento de datos, y a veces hasta también para el experto; pero para el usuario, que a menudo desconoce las sutilezas del procesamiento de datos, los componentes explicativos existentes son todavia demasiado insatisfactorios

2.2.4 Interfase de usuario

En este componente se establece la forma en que el sistema experto se presentara ante el usuario

  • Como debe responder el usuario a las preguntas planteadas¿¿

  • Como saldrán las respuestas del sistema a las preguntas que se le planteen?

LA INTERFASE DE USUARIO DEBE CUMPLIR LOS REQUISITOS SIGUIENTES:

  • El aprendizaje del manejo debe ser rápido.

  • Debe evitarse en lo posible la entrada de datos errónea.

  • Los resultados deben presentarse en una forma clara para el usuario.

  • Las preguntas y explicaciones deben ser comprensibles.

2.2.5 Componentes adquisición

Un buen componente de adquisición ayudará considerablemente la labor del ingeniero del conocimiento. Este puede concentrarse principalmente en la estructuración del conocimiento sin tener que dedicar tanto tiempo a la actividad de la programación.

A ser posible, el componente que adquisición debe poseer las cualidades siguientes:

  • El conocimiento, es decir las reglas, los hechos, las relaciones entre los hechos, etc.

  • Posibilidades de representación clara de todas las informaciones contenidas en una base de conocimientos,

  • Comprobación automática de la sintaxis

  • Posibilidades constante de acceso al lenguaje de programación subordinada

2.3 Desarrollo de un sistema experto

2.3.1 El equipo de desarrollo

Las personas que participan en el desarrollo de un sistema experto desempeñan tres papeles distintos:

  • El experto:

Que pone sus conocimientos especializados a disposición del sistema experto

  • El ingeniero del conocimiento

Que plantea las preguntas al experto, estructura sus conocimientos y los implementa en la base de conocimientos.

  • El usuario

Que aporta sus deseos y sus ideas, determinando especialmente el escenario en el que debe aplicarse el sistema experto.

En la fase de desarrollo, el peso principal del trabajo recae en el ingeniero del conocimiento y en el experto

En el desarrollo del sistema experto, el ingeniero del conocimiento y el experto trabajan muy unidos. El primer paso consiste en elaborar los problemas que deben ser resueltos por el sistema.

Una vez delimitada el dominio, hay que "cebar" el sistema experto poco a poco con los conocimientos del experto. El experto debe comprobar constantemente si su conocimiento ha sido transmitido de la forma más conveniente

A ser posible, el experto deberá tener comprensión para los problemas que depara el procesamiento de datos. Ellos facilitaran mucho el trabajo. Además, no debe ignorarse nunca al usuario durante el desarrollo, para que al final se disponga de u sistema que le sea de máxima utilidad.

La estricta separación entre usuario, experto e ingeniero del conocimiento no deberá estar siempre presente. Pueden surgir situaciones en las que el experto es también el usuario. Este es el caso cuando existe un tema muy complejo cuyas relaciones e interacciones deben ser determinadas una y otra vez con un gran consumo de tiempo. De esta forma el experto puede ahorrarse trabajos repetitivos.

La separación entre experto e ingeniero del conocimiento permanece, por regla general, inalterada.

2.3.2 Métodos auxiliares en el desarrollo

La eficiencia en la creación de sistemas expertos puede aumentarse en gran medida con la aplicación de shells.

Un Shell – expresado de forma sencilla – es un sitema experto que contiene una base de conocimientos vacía.

Existen mecanismos de inferencia, el componente explicativo y a veces también la interfase de usuario.

También es posible que haya que desarrollar adicionalmente partes del mecanismo de interferencia. Según el tamaño de esta parte tendrá que pensar si la aplicación de un Shell determinado sigue siendo apropiada.

Si el ingeniero del conocimiento conoce bien este Shell, es decir si, por ejemplo, conoce exactamente como son procesadas las reglas, entonces solo tendrá que concentrarse en la creación de la base de conocimientos.

2.3.3 "Rapid Prototyping" construcción rápida de prototipos

El desarrollo de sistemas expertos comporta los siguientes riesgos.

  • No existen implementaciones similares que puedan servir de orientación al encargado del desarrollo y en muchos puntos los requisitos necesarios están esbozados con muy poca precisión

El diseño y la especificación requieren una temprana determinación las interfaces de software y de la funcionalidad de los componentes. En el desarrollo de sistemas expertos deben alterarse a menudo durante y también después de la implementación, ya que los requisitos se han ido configurando y han obtenido mayor precisión, o porque se ha descubierto que deben iniciarse otras vías de solución. Durante el desarrollo, resulta más apropiado empezar con implementación tipo test para encontrar el camino hacia una solución definitiva y para hacerlas coincidir con las necesidades del usuario.

Un método efectivo es la implementación de un prototipo de sistemas expertos que permita llevar a cabo las funciones más importantes de este, aunque con un esfuerzo de desarrollo considerablemente inferior al de una implementación convencional. Este proceso se define con el nombre de "Rapid Prototyping"

Para sistemas expertos, el "rapid prototyping" es el procesamiento adecuado, pues posibilita una rápida reacción a los deseos en constante cambio tanto por parte de los expertos como por partes del usuario.

Consulta

3.1 Usuarios de un Sistema Experto

Los sistemas expertos desempeñan el papel de asistentes inteligentes y competentes del experto.

El conocimiento de los expertos es necesario para muchas personas que por regla general, no poseen una formación especializada en dominios muy concretos.

Si en un sector determinado hay pocos expertos, un Sistema Experto puede entonces poner a disposición, de forma constante, los conocimientos de dichos expertos. Pero no trata de sustituir al experto o de mantener usuarios y expertos alejados entre si, sino mas bien se trata de poner en las manos de los usuarios una herramienta efectiva que libere a los expertos de trabajos rutinarios.

El usuario, no obstante, debe disponer de un conocimiento especializado lo suficientemente amplio sobre el entorno en el cual trabaja para poder manejar el sistema experto.

Esta situación se agudiza aun mas ante el hecho de que no está básicamente asegurado que el sistema experto puede ofrecer una respuesta utilizable. No en todos los casos puede captarse o preverse del todo las condiciones marginales bajo las cuales se emite la respuesta del sistema experto. El usuario estará aquí obligado a realizar una mínima valoración de la relevancia que tiene la respuesta ofrecida por el sistema.

3.2 Tipo de Consulta

En la Interfase de usuario de un sistema experto se pone a disposición del usuario dos componentes

  • Una componente activo que determina el resultado en la interacción con el usuario y

  • Un componente pasivo que justifica el resultado (componente explicativo).

No es suficiente conformarse con ver el componente activo. Si el usuario no obtuviese la ayuda del componente explicativo, que le permitiera reproducir la vía de solución tomada, sería muy difícil conseguir la aceptación de la respuesta ofrecida por el sistema (Caja Negra).

La consulta misma transcurre en general según el esquema siguiente:

Primero se plantean al usuario algunas preguntas generales para alcanzar una determinación aproximada del contexto. Una primera valoración, que se produce dependiendo del método prefijado de procesamiento de los conocimientos del sistema experto en uso, desemboca entonces en el verdadero dialogo con el usuario, orientando al objetivo. El dialogo, por parte del sistema, esta a menudo dimensionado para ir confirmando o rechazando hipótesis (por ejemplo, una configuración perfecta de una red de ordenadores).

El sistema se comporta como un experto y

  • Plantea preguntas precisas.

  • Informa (según el caso solo a petición del usuario) sobre los resultados intermedios y las hipótesis modificadas.

  • Determina el resultado, por ejemplo, un diagnostico,

  • Justifica el resultado y

  • Explica (según el caso solo a peticion) tambien el rechazo de las hipotesis.

Una vez finalizado el dialogo, el componente explicativo suministra, si es necesariom el historial completo de la consulta.

Es posible,

  • Visualizar todas las entradas del usuario.

  • Confrontar el resultado obtenido con todos los demas resultados posibles.

  • Visualizar las reglas activas y no utilizadas; incluso las reglas activadas, que sin embargo fueron rechazadas en una misma hipotesis, pueden elegirse y visualizarse.

El resultado alcanzado por el sistema experto dependera de la calidad de las respuestas del usuario.

3.3 Motivos de una consulta

Los motivos por los que se consulta Sistemas Expertos pueden ser muy variados. Dependerán también del objetivo con el que se ha desarrollado el sistema.

Ejemplos:

  • Tareas dificultosas o tediosas de los expertos.

  • Diccionario dinámico

  • Consistencia del servicio de asesoría

  • Confirmación de decisiones tomadas.

  • Aprendizaje, formación.

  • Asesoramiento del usuario.

  • Control del propio conocimiento

Pero un Sistema Experto se consultara ante todo cuando exista un problema que no requiera solución inmediata y no se pueda o quiera recurrir primero al experto. Los Sistemas expertos sirven también al mismo experto que lo alimenta como diccionario dinámico, que mantiene el conocimiento de reglas antiguas, mientras se concentran en los nuevos desarrollos.

3.4 Ejemplos de una consulta

En el siguiente ejemplo se ha consultado el Sistema Experto SIUX, que analiza el comportamiento del transcurso de aplicaciones de base de datos. Al principio se plantearon al usuario algunas preguntas generales sobre la instalación informática. Seguidamente el sistema plantea preguntas precisas, dependientes de las respuestas dadas por el usuario, orientadas a la obtención de la solución.

No se procesa, por lo tanto, un cuestionario previamente introducido, sino que las preguntas están condicionadas por la situación.

Una vez finalizadas las posibilidades de delimitación de errores, el sistema visualiza diagnósticos de fallos.

Las otras posibilidades de que dispone el usuario pueden verse en el ejemplo

Representación de Conocimientos

Para el procesamiento y la manipulacion del conocimiento en Sistemas Expertos es necesario formalizar y estructurar dicho conocimiento. En su mayor parte, se dispone del conocimiento a traves de entrevistas con los expertos en forma de descripciones de casos o en partes de su actividad.

Se trata aquí de:

Reglas de producción Estas se basan en la lógica de predicados, una descripción del saber en forma de reglas "si…, entonces…,".

Redes semánticas Una representación grafica del saber sobre objetos y sus relaciones.

Frames Estructuras de datos para la representación de objetos.

La base de estos procedimientos, sea en la representacion o en el procesamiento del conocimiento, es en cierta manera él:

Calculo de predicados Deducción lógica de resultados; mediante el cumplimiento de determinadas condiciones puede extraerse una deducción lógica. La solución puede tener el valor de varadero o falso.

A continuación se describen con mayor detalle los procedimientos

  • Reglas de Producción

  • Redes Semánticas

  • Frames

  • Calculo de predicados

Finalmente se analizaran los diferentes métodos de procesamiento del conocimiento.

4.1 Reglas de producción

La forma más comprensible de representación del conocimiento se basa en las reglas de producción. Se trata aquí de descripciones de acciones dependientes de ciertas condiciones. Una sola regla de producción puede captarse como unidad de conocimiento (chunk). Es el componente más pequeño del que consta el sistema en su totalidad.

En la realización de Sistemas Expertos con reglas de producción se ha hecho pronto patente la necesidad de procesar conocimientos vagos. Para la valoración de los resultados se utilizan ahora factores de certeza, que son factores arbitrarios de valoración que suelen encontrarse casi siempre dentro de los límites de -1 a +1. Aquí el -1 podría ser "seguro que no", el 0,5 "probablemente no", el 0 "desconocido", el +0,5 "Probablemente si" y el +1 "seguro que si" El ámbito de valores dentro del espacio de solución elegido es continuo.

Ejemplo extraído del conocido Sistema Experto MYCIN, un sistema experto medico para la determinación de enfermedades infecciosas bacterianas.

MYCIN

IF (1) La infección es debida a bacterias primarias, y

(2) la localización del cultivo es una de las muestras estériles, y

(3) la entrada probable es el tracto gastrointestinal.

THEN Es bastante probable (,7) que la identidad de los organismos sea bacteria.

Los sistemas que se redactan con reglas de producción reciben el nombre de sistemas de producción.

El componente más importante de un sistema de producción es el mecanismo de inferencia. Con él se gobierna el procesamiento y la elección de las reglas de producción

4.2 Redes semánticas

Las redes semánticas son un método de representación del conocimiento sobre las relaciones de los objetos. Los nodos de una red semántica corresponden a los objetos y los acros describen las relaciones entre los objetos.

Pero con la red semántica no se da información sobre el procesamiento de la red. ¡ Las reglas de inferencia deben estar expresadas de forma explícita!

Una red semántica ofrece una buena visión general sobre las relaciones y dependencias de un área de conocimientos (dominios) y es muy apropiada para la estructuración del conocimiento y verificación del experto

En la red semántica puede haber relaciones unidireccionales (dependencia de una relación entre objetos). La relación unidireccional se representa con una flecha en la dirección del objeto.

4.3 Frames (marcos)

"Una frame es una estructura de datos que sirva para representar una situación estereotípica, como estar en algún tipo especial de salón o ir a la fiesta de cumpleaños de un niño. Añadió a cada Frame hay varios tipos de información.

Parte de esta información hace referencia a cómo utilizar el frame, otra se refiere a lo que una puede esperar que suceda en segundo lugar. Y otra a su vez indica que hacer si tales esperanzas no son confirmadas" (Marvin Minsky, 1974)

Un Frame es, por lo tanto, la división de objetos, o también de situaciones, en sus componentes. Estos componentes son introducidos en los slots (ranuras) correspondientes a Frame.

Ejemplo de la herencia jerárquica en el concepto de Frame, donde los valores heredados aparecen en cursiva.

Para el procesamiento de los Frames deben existir reglas y procesamientos incorporados en el concepto, al igual que en la red semántica.

Los procesamientos asociados a slots, son actividades por determinados acontecimiento.

4.4 Calculo de predicados

El cálculo de predicados describe el conocimiento en forma de enunciados (predicados). Se trata de una notación formal para la descripción de relaciones lógicas y objetos. Contiene una gramática con la que se pueden componer enunciados lógicos validos. El cálculo de predicados con tiene reglas semánticas que relacionan los símbolos del lenguaje formal con los objetos, y reglas de procesamiento capaces de crear expresiones lógicas validas (legal expressions) a partir de expresiones lógicas validas.

En resumen: El cálculo de predicados es un lenguaje formal con sintaxis y gramática propias, capaz de valorar enunciados lógicos y extraer conclusiones para la creación de nuevos enunciados.

4.5 Estrategia de inferencia

Como ya se ha mostrado en el cálculo de predicados, debe formularse explícitamente un mecanismo para el procesamiento del conocimiento.

Este mecanismo de inferencia evalúa las reglas y el conocimiento en hechos.

Existen aquí dos formas básicas de evaluación de las reglas.

  • Encadenamiento hacia adelante (forward chaining, forward reasoning)

  • Encadenamiento hacia atras (backward chaining, backward reasoning)

El encadenamiento hacia adelante se define también con inferencia controlada por los datos o como método "if-added"; el encadenamiento hacia atrás se conoce también como inferencia controlada por el objetivo o como método "if-needed"

Lenguajes y Sistemas de Programación

Pueden desarrollarse Sistemas Expertos en cualquier lenguaje de programación. Sin embargo hay algunos lenguajes que por los conceptos dados son especialmente adecuados. En la mayoría de os casos se subordinan lenguajes de programación a los diferentes paradigmas de programación.

5.1 PROLOG

PROLOG es la abreviatura de Programming in Logic, con lo que se hace mención a la procedencia del lenguaje. Es una relacion de la lógica de predicados, como lenguaje de programación.

5.2 Sintaxis y Semantica

La descripción de la sintaxis en el PROLOG se limita a las partes necesarias.

Esta descripción no corresponde, por lo tanto, el volumen total de la sintaxis y semántica del PROLOG

5.3 Mecanismos Importantes

Los mecanismos importantes del PROLOG son: recursividad, instanciación, verificación, unificación backtracking e inversión.

La Recursividad representa la estructura más importante en el desarrollo del programa. En la sintaxis del PROLOG no existen los bucles FOR ni los saltos, los bucles WHILE son de difícil incorporación. ya que las cariables sólo pueden unificarse de una sóla vez. La recursión es más apropiada que otras estructuras de datos recursivas como son las listas y destacan en estos casos por una representación más sencilla y de mayor claridad.

La Instancia es la unión de una variable a una constante o estructura. La variable ligada se comporta luego como una constante.

La verificación es el intento de derivar la estructura a comprobar de una pregunta desde la base de conocimientos es decir, desde los hechos y reglas. Si ello es posible, la estructura es verdadera, en caso contraria es falsa.

La Unificación es el componente principal de la verificación de estructuras. Una estructura estará comprobada cuando puede ser unificada con un hecho, o cuando puede unificarse con la cabecera de una regla y las estructuras del cuerpo de dicha regla pueden ser verificadas.

Agradecimiento:

A mis padres amigos y familia

Engels Kremlin Valencia Ayala

 

 

Autor:

Engels Kremlin Valencia Ayala