SISTEMAS EXPERTOS DIANA MARCELA CARDONA ROMAN Ver 2.0 UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD 2.009 SISTEMAS EXPERTOS DIANA MARCELA CARDONA ROMAN† Ingeniera de Sistemas‡ UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA PROGRAMA DE INGENIERIA DE SISTEMAS 2.009 † ‡ La primera versión fue realizada por el Ing. Especialista John Alejandro Figueredo Luna Estudiante de Maestría de Ing. De sistemas y computación de la Universidad Nacional de Colombia iii CONTENIDO TEMÁTICO GLOSARIO DE TERMINOS UNIDAD 1. VISION GENERAL DE LA INTELIGENCIA ARTIFICIAL Y LOS SISTEMAS EXPERTOS CAPITULO 1. INTRODUCCIÓN A LOS CONCEPTOS BÁSICOS DE LA IA Lección 1 Visión General de la Inteligencia Artificial o Introducción o La base de la inteligencia artificial (IA) o ¿Pueden pensar las máquinas? Lección 2 o Los fines de la Inteligencia Artificial o Historia y Evolución de la Inteligencia Artificial Lección 3 Características de la Inteligencia Artificial o Programa fijo y programa modificado por el procesamiento Lección 4 Funcionamiento Básico de la Inteligencia Artificial o Símbolos vs. Métodos Numéricos o Alfabeto del Lenguaje de la Lógica de Primer Orden Lección 5 Principales Ramas de la Inteligencia Artificial o Sistemas Expertos o Robótica o Sistemas de Visión o Procesamiento de Lenguaje Natural o Sistemas de Aprendizaje o Redes Neuronales o Sistemas Inmunes Artificiales o Extracción de Conocimiento (Minería de Datos) CAPITULO 2. VISION GENERAL DE LOS SISTEMAS EXPERTOS Lección 6 Visión General de los Sistemas Expertos o Introducción o Historia de los Sistemas Expertos (SE) Lección 7 ¿Que es un Sistema Experto? o Características de un Sistema Experto Lección 8 Ventajas de los Sistemas Expertos o ¿Cuáles son las ventajas de un sistema experto? Lección 9 Comparación del Sistema Experto o Los Expertos Humanos o Diferencias entre un Experto y un no experto humano iv o o o Diferencias entre un Sistema Experto y un Programa Tradicional Diferencias entre un Sistema Experto y un Experto Humano Ventajas de los sistemas expertos Lección 10 Futuro de los Sistemas Expertos o Forma en que los usuarios interactúan con los sistemas expertos o Sistema Experto vs. Sistema Clásico o Futuro de los Sistemas Expertos CAPITULO 3. CAMPOS DE APLICACIÓN, TAREAS QUE REALIZAN Y EJEMPLOS DE SISTEMAS EXPERTOS Lección 11 Campos de Aplicación o Medicina o Análisis de estados financieros o Planificación Financiera o Contabilidad o Industria Lección 12 Otros campos de aplicación o Electrónica, informática y telecomunicaciones o Militar o Robótica o Reconocimiento de patrones o Otros campos de aplicación Lección 13 Tareas que realizan los sistemas expertos o Interpretación, diagnóstico y monitoreo o Diseño y selección o Planificación o Control o Reparación, corrección o terapia o Simulación, pronóstico o predicción o Instrucción o Recuperación de Información Lección 14 Ejemplos de Sistemas Expertos en Empresas o En la Industria o En Contabilidad o En Análisis de Estados Financieros o En Planificación Financiera o En la Aviación o En Medicina Lección 15 Aplicaciones actuales o Simulación del Baloncesto o GENSYM: Operaciones Expertas o G2 CLASSIC v UNIDAD 2. DESARROLLO DE UN SISTEMA EXPERTO CAPTULO 4. ARQUITECTURA Y ELEMENTOS DE LOS SISTEMAS EXPERTOS Lección 16 Generalidades o Introducción Lección 17 Arquitectura de un SE Lección 18 Elementos de un Sistema Experto (I) o Componente Humana o Base de Conocimiento Lección 19 Elementos de un Sistema Experto (II) o Componente de adquisición o Control de Coherencia o Motor de Inferencia Lección 20 Elementos de un Sistema Experto (III) o Componente de ejecución o El componente explicativo o La interfase del usuario CAPITULO 5. PROCESO DE DESARROLLO DE UN SISTEMA EXPERTO Lección 21 o Introducción o Desarrollo de un sistema experto La base de conocimiento Cinco Pasos en la Construcción de una Base de Conocimientos Proceso Lógico de Carga de la Base de Conocimiento Lección 22 o El motor de inferencia Método de encadenamiento hacia delante Método de encadenamiento hacia atrás. Método de reglas de producción Lección 23 o Construcción del Mecanismo de Inferencia o Identificación de patrones. o Ejecución de las reglas. Lección 24 o La fase de restricción. o La fase de selección. Lección 25 o Ejemplo de Funcionamiento del Motor de Inferencia vi CAPITULO 6. SISTEMAS EXPERTOS BASADOS EN CONOCIMIENTO Lección 26 o Definición de sistemas basados en conocimiento o Características de los sistemas basados en conocimiento o Principales problemas Lección 27 o Estructura de los Sistemas Basados en Conocimiento. Lección 28 Fases en la adquisición del conocimiento Tecnología de los Sistemas Basados en Conocimiento Lección 29 o Metodologías para la construcción de SE Metodología de Prototipos Metodología Orientada a Objetos Lección 30 Ejemplo de Construcción de Un SE, Problema de Monitorización o Árboles de decisión o Árboles de decisión que aprenden o Definición del problema o Proceso del desarrollo del programa UNIDAD 3. APRENDIZAJE DE LOS SISTEMAS EXPERTOS CAPITULO 7. TIPOS DE SISTEMAS EXPERTOS Lección 31 Sistemas Basados en Reglas o Base del conocimiento o Motor de inferencia Modus Ponens y Modus Tollens Encadenamiento de Reglas Encadenamiento de Reglas orientado a un objetivo o Control de Coherencia Coherencia de Reglas Incoherencia de Reglas Coherencia de Hechos o Ejemplo o Conclusiones Lección 32 Sistemas Expertos Probabilisticos o La incertidumbre o Tipos de variables aleatorias o Definición de Sistemas Expertos Basados en Probabilidad Medidas de Probabilidad. Propiedades Distribución de probabilidad vii o o o Probabilidad Condicional Dependencia e Independencia Teorema de Bayes Reglas generalizadas Introducción de los sistemas expertos basados en probabilidad La Base del Conocimiento Modelo de Síntomas Dependientes Modelo de Síntomas Independientes Modelo de Síntomas Relevantes Dependientes Motor de Inferencia Lección 33 Redes Bayesianas o Aprendizaje Automático de la Red Bayesiana o Clasificadores Bayesianos Ejemplo: Adenocarcinoma gástrico o Comparación entre los SE basado en Reglas y los SE basados en Probabilidades Lección 34 Sistemas Basados en Casos o Historia o El ciclo del razonamiento basado en casos Lección 35 Redes Neuronales Artificiales o Ventajas CAPITULO 8. LENGUAJES UTILIZADOS Lección 36 Lenguajes utilizados en la construcción de SE o LISP o CLIPS o Prolog o Smalltalk o C y C++ Lección 37 Herramientas y SHELLS utilizados en la construcción de SE o Gold Works II o ART o LOOPS o KEE o Humble o EMYCIN Lección 38 o Representación del conocimiento o Lógica Proposicional o Lógica de Predicados o Ventajas y desventajas de la lógica de predicados Lección 39 o Reglas de Producción o Ventajas y desventajas de las reglas de producción viii o o Redes Asociativas Ventajas y desventajas de las Redes Asociativas Lección 40 Estructuras Frame o Ventajas y desventajas de los frames o Representación orientada a objetos o Ventajas y desventajas de la representación orientada a objetos CAPITULO 9. INTRODUCCIÓN A PROLOG Lección 41 Conceptos básicos Lección 42 Tipos de operadores de Prolog Lección 43 Construcción de reglas de producción en Prolog Lección 44 Estructura de un programa en Prolog Lección 45 Ejemplo programa en Prolog BIBLIOGRAFIA ix GLOSARIO DE TERMINOS Agenda: Una lista con prioridades asignadas a las reglas, creada por el mecanismo de inferencia, cuyos patrones satisfacen los hechos u objetos de la memoria activa. Base de conocimientos: Es la parte del sistema experto que contiene el conocimiento sobre el dominio. hay que obtener el conocimiento del experto y codificarlo en la base de conocimientos. Base de hechos (Memoria de trabajo): Contiene los hechos sobre un problema que se han descubierto durante una consulta. Durante una consulta con el sistema experto, el usuario introduce la información del problema actual en la base de hechos. El sistema empareja esta información con el conocimiento disponible en la base de conocimientos para deducir nuevos hechos. Dominio: Área de conocimientos que atiende el sistema experto. Experto en Dominio: Persona o grupo cuya experiencia o conocimientos se capturan para usarse en un sistema experto. Lógica Difusa: Área de investigación especializada en la ciencia de la computación que permite matices de gris y que no requiere que todo sea un extremo blanco o negro, si/no, o cierto/ falso. Motor de inferencia: El sistema experto modela el proceso de razonamiento humano con un módulo conocido como el motor de inferencia. Dicho motor de inferencia trabaja con la información contenida en la base de conocimientos y la base de hechos para deducir nuevos hechos. Contrasta los hechos particulares de la base de hechos con el conocimiento contenido en la base de conocimientos para obtener conclusiones acerca del problema. Interfaz de usuario: La interacción entre un sistema experto y un usuario se realiza en lenguaje natural. También es altamente interactiva y sigue el patrón de la conversación entre seres humanos. Regla: Instrucción condicional enlaza determinada condiciones con acciones o resultados. Shell: Herramienta con propósitos especiales, diseñada para cierto tipo de aplicaciones en las que el usuario solo debe proporcionar la base del conocimiento. Subsistema de explicación: Una característica de los sistemas expertos es su habilidad para explicar su razonamiento. Usando el módulo del subsistema de explicación, un sistema experto puede proporcionar una explicación al usuario de x por qué está haciendo una pregunta y cómo ha llegado a una conclusión. Este módulo proporciona beneficios tanto al diseñador del sistema como al usuario. El diseñador puede usarlo para detectar errores y el usuario se beneficia de la transparencia del sistema. xi UNIDAD 1. VISION GENERAL DE LA INTELIGENCIA ARTIFICIAL Y LOS SISTEMAS EXPERTOS CAPITULO 1. INTRODUCCIÓN A LOS CONCEPTOS BÁSICOS DE LA IA Lección 1 1.1. INTRODUCCIÓN La finalidad de la inteligencia artificial consiste en crear teorías y modelos que muestren la organización y funcionamiento de la inteligencia. Actualmente, el mayor esfuerzo en la búsqueda de la inteligencia artificial se centra en el desarrollo de sistemas de procesamientos de datos que sean capaces de imitar a la inteligencia humana, realizando tareas que requieran aprendizaje, solución de problemas y decisiones. A veces llamada inteligencia de máquina, la inteligencia artificial o AI (Artificial Intelligence) cubre una vasta gama de teorías y prácticas. La inteligencia artificial se define como aquella inteligencia exhibida por artefactos creados por humanos (es decir, artificial). A menudo se aplica hipotéticamente a los computadores. El nombre también se usa para referirse al campo de la investigación científica que intenta acercarse a la creación de tales sistemas. Existen cuatro puntos de vista principales sobre estos sistemas: 1.2. Los que piensan como humanos. Los que actúan como humanos. Los que piensan racionalmente. Los que actúan racionalmente. La base de la inteligencia artificial La inteligencia artificial se basa en dos áreas de estudio: el cuerpo humano y el ordenador electrónico. Puesto que la meta es copiar la inteligencia humana, es necesario entenderla. Sin embargo, a pesar de todos los progresos en Neurología y Psicología, la inteligencia del hombre se conoce poco, exceptuando sus manifestaciones externas. Muchos estudiosos de la inteligencia artificial se han vuelto para obtener su modelo de inteligencia hacia el estudio de la Psicología cognoscitiva, que aborda la forma de percibir y pensar de los seres humanos. Después comprueban sus teorías programando los ordenadores para simular los procesos cognoscitivos en el modelo. Otros investigadores intentan obtener teorías generales de la inteligencia que sean aplicables a cualquier sistema de inteligencia y no solo al del ser humano. xii 1.3. ¿Pueden pensar las máquinas? En 1950 el matemático inglés Alan M. Turing publicó un ensayo que comenzaba así: "Quiero proponer una pregunta: ¿Pueden pensar las máquinas?." Como la pregunta era demasiado vaga (¿Qué entendemos por "pensar"?), Turing desarrolló un experimento basado en un juego de salón en el que una persona formula a dos jugadores escondidos (un hombre y una mujer) preguntas que le servirán para descubrir cuál de los dos es la mujer. Turing propuso sustituir uno de los dos jugadores escondidos por una máquina inteligente capaz de conversar. Si el examinador, que se servía de un teletipo para comunicarse, no podía distinguir cuál de los dos jugadores era la máquina, ello evidenciaría – según Turing – que la máquina podía pensar. En la actualidad, este experimento de Turing podría ser superado, en situaciones limitadas, por muchos programas de ordenador estudiados para dialogar con el usuario. Investigaciones acerca de la inteligencia artificial realizadas en la Universidad de Yale (EE.UU.) han llevado al desarrollo de programas de ordenador mediante los cuales éstos pueden aprender y razonar. Otros estudiosos de la inteligencia artificial están poniendo a punto sistemas para dotar a los ordenadores de capacidad visual y auditiva. Una importante área de investigación es la del lenguaje normal, que permite a los ordenadores comunicarse mediante lenguaje humano en lugar de hacerlo en lenguaje de máquina. Es decir, la mayoría de los ordenadores están programados para recibir e interpretar instrucciones de este tipo: S#DYR=48-56, LOC=AS NOT SW, EN=RALSTON". Únicamente personas preparadas son capaces de comunicarse eficazmente de esta forma. Pero si un ordenador programado para gestionar la documentación de una compañía petrolífera pudiese entender la orden dactilografiada (traducción de la anterior) "Encuéntrame toda la documentación relativa a las perforaciones de los pozos de Arabia Saudita entre 1948 y 1956, pero únicamente la de los pozos en que trabajó Ralston, no los de la zona surocciodental del país", muchas personas podrían utilizarlo. Lección 2 1.4 Los fines de la Inteligencia Artificial Las primeras investigaciones acerca de la inteligencia artificial estaban principalmente dirigidas al hallazgo de una técnica universal para la solución de problemas. Este intento a gran escala ha sido abandonado y las investigaciones actuales están dirigidas al diseño de numerosos programas para ordenadores capaces de imitar los procesos de toma de decisiones de expertos, como médicos, químicos, basados en los conocimientos de especialistas en cada materia, son ahora utilizados para diagnosticar enfermedades, identificar moléculas químicas, localizar yacimientos de minerales e incluso diseñar sistemas de fabricación. Investigaciones acerca de la percepción han sido aplicadas a los robots y se han 2 diseñado algunos capaces de "ver". La meta final consiste en crear un sistema capaz de reproducir todas las facetas de la inteligencia humana. 1.5 Historia y Evolución de la Inteligencia Artificial La Inteligencia Artificial "nació" en 1943 cuando Warren McCulloch y Walter Pitts propusieron un modelo de neurona del cerebro humano y animal. Estas neuronas nerviosas abstractas proporcionaron una representación simbólica de la actividad cerebral. Más adelante, Norbert Wiener elaboró estas ideas junto con otras, dentro del mismo campo, que se llamó "cibernética"; de aquí nacería, sobre los años 50, la Inteligencia Artificial. Figura 1.1 Visualización Inteligencia Artificial Los primeros investigadores de esta innovadora ciencia, tomaron como base la neurona formalizada de McCulloch y postulaban que: "El cerebro es un solucionador inteligente de problemas, de modo que imitemos al cerebro". Pero si consideramos la enorme complejidad del mismo esto es ya prácticamente imposible, ni que mencionar que el hardware de la época ni el software estaban a la altura para realizar semejantes proyectos. Se comenzó a considerar el pensamiento humano como una coordinación de tareas simples relacionadas entre sí mediante símbolos. Se llegaría a la realización de lo que ellos consideraban como los fundamentos de la solución inteligente de problemas, pero lo difícil estaba todavía sin empezar, unir entre sí estas actividades simples. Es en los años 50 cuando se logra realizar un sistema que tuvo cierto éxito, se llamó el Perceptrón de Rossenblatt. Éste era un sistema visual de reconocimiento de patrones en el cual se asociaron esfuerzos para que se pudieran resolver una gama amplia de problemas, pero estas energías se diluyeron enseguida. 3 Fue en los años 60 cuando Alan Newell y Herbert Simon, que trabajando la demostración de teoremas y el ajedrez por ordenador logran crear un programa llamado GPS (General Problem Solver: solucionador general de problemas). Éste era un sistema en el que el usuario definía un entorno en función de una serie de objetos y los operadores que se podían aplicar sobre ellos. Este programa era capaz de trabajar con las torres de Hanoi, así como con criptoaritmética y otros problemas similares, operando, claro está, con microcosmos formalizados que representaban los parámetros dentro de los cuales se podían resolver problemas. Lo que no podía hacer el GPS era resolver problemas ni del mundo real, ni médicos ni tomar decisiones importantes. El GPS manejaba reglas heurísticas (aprender a partir de sus propios descubrimientos) que la conducían hasta el destino deseado mediante el método del ensayo y el error. En los años 70, un equipo de investigadores dirigido por Edward Feigenbaum comenzó a elaborar un proyecto para resolver problemas de la vida cotidiana o que se centrara, al menos, en problemas más concretos. Así es como nació el sistema experto. El primer sistema experto fue el denominado Dendral, un intérprete de espectrograma de masa construido en 1967, pero el más influyente resultaría ser el Mycin de 1974. El Mycin era capaz de diagnosticar trastornos en la sangre y recetar la correspondiente medicación, todo un logro en aquella época que incluso fueron utilizados en hospitales (como el Puff, variante de Mycin de uso común en el Pacific Medical Center de San Francisco, EEUU). Ya en los años 80, se desarrollaron lenguajes especiales para utilizar con la Inteligencia Artificial, tales como el LISP o el PROLOG. Es en esta época cuando se desarrollan sistemas expertos más refinados, como por el ejemplo el EURISKO, este programa perfecciona su propio cuerpo de reglas heurísticas automáticamente, por inducción. Lección 3 1.6. Características de la Inteligencia Artificial Una característica fundamental que distingue a los métodos de Inteligencia Artificial de los métodos numéricos es el uso de símbolos no matemáticos, aunque no es suficiente para distinguirlo completamente. Otros tipos de programas como los compiladores y sistemas de bases de datos, también procesan símbolos y no se considera que usen técnicas de Inteligencia Artificial. El comportamiento de los programas no es descrito explícitamente por el algoritmo. La secuencia de pasos seguidos por el programa es influenciado por el problema particular presente. El programa especifica cómo encontrar la secuencia de pasos necesarios para resolver un problema dado (programa declarativo). En contraste con los programas que no son de 4 Inteligencia Artificial, que siguen un algoritmo definido, que especifica, explícitamente, cómo encontrar las variables de salida para cualquier variable dada de entrada (programa de procedimiento). El razonamiento basado en el conocimiento, implica que estos programas incorporan factores y relaciones del mundo real y del ámbito del conocimiento en que ellos operan. Al contrario de los programas para propósito específico, como los de contabilidad y cálculos científicos; los programas de Inteligencia Artificial pueden distinguir entre el programa de razonamiento o motor de inferencia y base de conocimientos dándole la capacidad de explicar discrepancias entre ellas. Aplicabilidad a datos y problemas mal estructurados, sin las técnicas de Inteligencia Artificial los programas no pueden trabajar con este tipo de problemas. Un ejemplo es la resolución de conflictos en tareas orientadas a metas como en planificación, o el diagnóstico de tareas en un sistema del mundo real: con poca información, con una solución cercana y no necesariamente exacta. La Inteligencia Artificial incluye varios campos de desarrollo tales como: la robótica, usada principalmente en el campo industrial; comprensión de lenguajes y traducción; visión en máquinas que distinguen formas y que se usan en líneas de ensamblaje; reconocimiento de palabras y aprendizaje de máquinas; sistemas computacionales expertos. Los sistemas expertos, que reproducen el comportamiento humano en un estrecho ámbito del conocimiento, son programas tan variados como los que diagnostican infecciones en la sangre e indican un tratamiento, los que interpretan datos sismológicos en exploración geológica y los que configuran complejos equipos de alta tecnología. Tales tareas reducen costos, reducen riesgos en la manipulación humana en áreas peligrosas, mejoran el desempeño del personal inexperto, y mejoran el control de calidad sobre todo en el ámbito comercial. 1.6.1 Programa fijo y programa modificado por el procesamiento Existen grandes diferencias entre el funcionamiento de las máquinas y el del cerebro: algunas son evidenciadas en el esquema bajo estas líneas. Las máquinas y el cerebro se diferencian en muchos aspectos: el primero es ligado a la arquitectura del sistema de memoria y a la elaboración realizada por la inteligencia natural, que influye en los programas sucesivos al ser almacenada en la memoria que mantiene disponibles todos los hechos que se han ido acumulando a lo largo del tiempo. Abajo a la izquierda se muestra el esquema de funcionamiento de un sistema artificial: procesa datos que recibe del exterior y que le son presentados ya seleccionados. Los procesa mediante un programa fijo, siempre elegido y construido por el hombre, es decir, desde el exterior. 5 Figura 1.2 Visualización del mundo real por el Cerebro humano - Sistema Artificial Este programa es sencillo comparado con los utilizados por el cerebro humano. A lo largo del tiempo, un mismo programa que procese los mismos datos obtendrá siempre los mismos resultados. Sin embargo, este sistema es muy veloz cuando se le piden secuencias de operaciones. Contrariamente, el cerebro humano es capaz de procesar al mismo tiempo todas las informaciones contenidas en una imagen, y el resultado de dicho procesamiento puede servir para modificar el programa, que para posteriores utilizaciones será más completo. La observación de una imagen muestra la diferencia fundamental entre el modo de procesar los datos del cerebro humano y el de la máquina. El cerebro humano no actúa teniendo en cuenta un programa prefijado, sino más bien uno de naturaleza variable en el tiempo; las variaciones dependen de los resultados procedentes. De hecho, el cerebro tiene la propiedad de recordar imágenes similares; una vez vista la figura, extrae de su memoria imágenes similares previamente almacenadas y los resultados de los análisis realizados sobre ellas. Estos resultados sirven para mejorar el programa según el cual sacará conclusiones aplicadas al examen de la figura. 6 Lección 4 1.6. Funcionamiento Básico de la Inteligencia Artificial Diferentes teorías: 1. Construir réplicas de la compleja red neuronal del cerebro humano (bottomup). 2. Intentar imitar el comportamiento del cerebro humano con un computador (top-down). 1.6.1 Símbolos vs. Métodos Numéricos El primer período de la Inteligencia Artificial, llamado sub-simbólico, data de aproximadamente 1950 a 1965. Este período utilizó representaciones numéricas (o sub-simbólicas) del conocimiento. Aunque la mayor parte de los libros de Inteligencia Artificial enfatizan el trabajo realizado por Rosenblatt y Widrow con redes neuronales durante este período, la realidad es que otra importante escuela sub-simbólica data también de la misma época y estos son los algoritmos evolutivos. La escuela clásica dentro de la Inteligencia Artificial, utiliza representaciones simbólicas basadas en un número finito de primitivas y de reglas para la manipulación de símbolos. El período simbólico se considera aproximadamente comprendido entre 1962 y 1975, seguido por un período dominado por los sistemas basados en el conocimiento de 1976 a 1988. Sin embargo, en este segundo período las representaciones simbólicas (por ejemplo, redes semánticas, lógica de predicados, etc.) siguieron siendo parte central de dichos sistemas. La Programación Lógica tiene sus orígenes más cercanos en los trabajos de J. A. Robinson que propone en 1965 una regla de inferencia a la que llama resolución, mediante la cual la demostración de un teorema puede ser llevada a cabo de manera automática. La resolución es una regla que se aplica sobre cierto tipo de fórmulas del Cálculo de Predicados de Primer Orden, llamadas cláusulas y la demostración de teoremas bajo esta regla de inferencia se lleva a cabo por reducción al absurdo. Otros trabajos importantes de esa época que influyeron en la programación lógica, fueron los de Loveland, Kowalski y Green, que diseña un probador de teoremas que extrae de la prueba el valor de las variables para las cuales el teorema es válido. Estos mecanismos de prueba fueron trabajados con mucho entusiasmo durante una época, pero, por su ineficiencia, fueron relegados hasta el nacimiento de Prolog, que surge en 1971 en la Universidad de Marsella, Francia. 7 La Lógica de Primer Orden, es uno de los formalismos más utilizados para representar conocimiento en Inteligencia Artificial. La Lógica cuenta con un lenguaje formal mediante el cual es posible representar fórmulas llamadas axiomas, que permiten describir fragmentos del conocimiento y, además consta de un conjunto de reglas de inferencia que aplicadas a los axiomas, permiten derivar nuevo conocimiento. 1.6.2 Alfabeto del Lenguaje de la Lógica de Primer Orden Contiene dos tipos de símbolos: a. Símbolos lógicos, entre los que se encuentran los símbolos de constantes proposicionales true y false; los símbolos de operadores proposicionales para la negación (not,~), la conjunción ( ), la disyunción ( ) y las implicaciones (→,←); los símbolos de operadores de cuantificación como el cuantificador universal ( ); el cuantificador existencial ( ); y los símbolos auxiliares de escritura como corchetes [,], paréntesis (,) y coma. b. Símbolos no lógicos, agrupados en el conjunto de símbolos constantes; el conjunto de símbolos de variables individuales; el conjunto de símbolos de funciones n-arias; y el conjunto de símbolos de relaciones n-arias. A partir de estos símbolos se construyen las expresiones válidas en el Lenguaje de Primer Orden: los términos y las fórmulas. Un término es cualquiera de las tres expresiones siguientes: una constante, por ejemplo, el número "100", la palabra "alfredo" y la letra "c"; o una variable, por ejemplo, "X" o bien una expresión de la forma "f(t1,...,tn)" donde "f" es un símbolo de función n-aria y t1,...,tn son términos. Ejemplos de funciones son: f(100,X), padre(Y) y sucesor(X). Las fórmulas atómicas o elementales son expresiones de la forma R(t1,...,tn) donde R es un símbolo de relación n-aria y t1,...,tn son términos. Ejemplos de fórmulas son: positivo(3), not(igual(4,doble(2))), tiene(X,cefalea). recetar(X,aspirina)<=tiene(X,fiebre), Esta última establece una regla que dice que, si X tiene fiebre y cefalea (dolor de cabeza), X debe tomar una aspirina. El Lenguaje de Primer Orden posee un amplio poder de expresión, los términos permiten nombrar los objetos del universo, mientras que las fórmulas permiten afirmar o negar propiedades de éstos o bien establecen las relaciones entre los objetos del universo. Puede decirse que la Programación Lógica utiliza la Lógica de Primer Orden como lenguaje de programación. Un ejemplo de lenguaje basado en la Lógica de Primer 8 Orden es PROLOG y aunque toma su nombre de este término ("PROgramming in LOGic"), no abarca toda la riqueza de la Lógica de Primer Orden para resolver problemas, pues está restringido al uso de cierta clase de fórmulas denominadas cláusulas definidas o cláusulas de Horn. Un programa lógico está formado por un conjunto finito de cláusulas de programa que son hechos o reglas. Por ejemplo: 1. padre(luis,miguel). Hecho 2. padre(miguel,jose). Hecho 3. padre(jose,juan). Hecho 4. abuelo(X,Y):-padre(X,Z), padre(Z,Y). regla Este programa está formado por cuatro cláusulas de programa, las tres primeras son del tipo hecho y definen la relación padre/2 y la cuarta una regla que define la relación abuelo/2. Nótese el uso de las variables X,Y y Z en esta cláusula, las cuales permiten definir de manera general en Prolog la relación "ser abuelo de", pues la lectura declarativa de dicha cláusula es la siguiente: "Para cualesquiera X,Y,Z se cumple que: X abuelo de Y, si X padre de Z y Z padre de Y". En Prolog es posible hacer preguntas sobre objetos y relaciones del dominio y estas preguntas se formulan como objetivos o metas, que son evaluadas por el intérprete de Prolog utilizando su mecanismo de inferencia interno, el cual determina si la meta a demostrar es una consecuencia lógica del programa, aplicando reglas de deducción para obtener la respuesta. Por ejemplo, del programa anterior, utilizando la cláusula de tipo meta ?abuelo(X,juan), para preguntar ¿quién es el abuelo de Juan? o bien ¿quiénes son los abuelos de Juan?, es posible deducir que Luis es abuelo de Juan, aunque implícitamente no existe en el programa ningún hecho que así lo afirme. Figura 1.3 Análisis de oraciones 9 En este ejemplo de análisis de oraciones, podemos observar de qué manera se analiza una oración ingresada por el usuario y cómo el ordenador lo traduce en un lenguaje lógico de primer orden. En este caso la ejecución del programa, para dicha meta, arrojaría como resultado que X=luis. El método de deducción utilizado por Prolog, para dar respuesta a los objetivos planteados, se basa en el uso de una única regla de inferencia: el Principio de Resolución. Los primeros trabajos de prueba automática de teoremas utilizaban la resolución, aplicada a cláusulas cualesquiera, pero el problema de las deducciones con cláusulas generales es el gran número de combinaciones posibles para llevar a cabo las resoluciones. Por ello Prolog restringe el conjunto de cláusulas, lo que le permite llevar a cabo una prueba dirigida y, en la mayoría de los casos, con un universo de posibilidades explorable en tiempo de ejecución. Lección 5 1.7. Principales Ramas de la Inteligencia Artificial Dentro de las principales ramas de la inteligencia artificial encontramos a los sistemas expertos, lo que significa que los SE están presentes en las demás áreas donde la inteligencia artificial tiene su arribo. Figura 1.4 Rama de la Inteligencia Artificial3 3 Disponible en: http://www.e-ghost.deusto.es/docs/2005/conferencias/Bayes05.pdf 10 1.7.1. Sistemas Expertos Los sistemas expertos son aquellos programas que se realizan haciendo explicito el conocimiento en ellos, que tienen información específica de un dominio concreto y que realizan una tarea relativa a este dominio. Los sistemas expertos trabajan con inteligencia artificial simbólica, es decir, a nivel de símbolos; como pueden ser ideas, imágenes, conceptos, etc. aunque debido a su naturaleza algorítmica se usen internamente instrucciones computables y estructuras de datos como los MOPS de Schank. El éxito de un sistema experto radica fundamentalmente en el conocimiento sobre el dominio que trata y su capacidad de aprendizaje. El conocimiento sobre el dominio proporciona al sistema experto mayor información sobre el problema a tratar y su entorno, de forma que pueda generar y adaptar soluciones de forma más precisa, al tener un conocimiento más profundo sobre el tema, de forma similar a un experto especializado. El aprendizaje, inductivo o deductivo según corresponda, proporcionará al sistema experto mayor autonomía a la hora de abordar problemas totalmente desconocidos; pudiendo generar nuevo conocimiento partiendo del extraído inicialmente del experto o expertos humanos. 1.7.2. Robótica La robótica es una ciencia o rama de la tecnología, que estudia el diseño y construcción de máquinas capaces de desempeñar tareas realizadas por el ser humano o que requieren del uso de inteligencia. Las ciencias y tecnologías de las que deriva podrían ser: el álgebra, los autómatas programables, las máquinas de estados, la mecánica o la informática. RAE : 1. f. Técnica que aplica la informática al diseño y empleo de aparatos que, en sustitución de personas, realizan operaciones o trabajos, por lo general en instalaciones industriales. 1.7.3. Sistemas de Visión La Visión artificial, también conocida como Visión por Computador (del inglés Computer Vision) o Visión técnica, es un subcampo de la inteligencia artificial. El propósito de la visión artificial es programar un computador para que "entienda" una escena o las características de una imagen. Los objetivos típicos de la visión artificial incluyen: La detección, segmentación, localización y reconocimiento de ciertos objetos en imágenes (por ejemplo, caras humanas). La evaluación de los resultados (ej.: segmentación, registro). Registro de diferentes imágenes de una misma escena u objeto, i.e., hacer concordar un mismo objeto en diversas imágenes. Seguimiento de un objeto en una secuencia de imágenes. 11 Mapeo de una escena para generar un modelo tridimensional de la escena; tal modelo podría ser usado por un robot para navegar por la escena. Estimación de las posturas tridimensionales de humanos. Búsqueda de imágenes digitales por su contenido. Estos objetivos se consiguen por medio de reconocimiento de patrones, aprendizaje estadístico, geometría de proyección, procesado de imágenes, teoría de grafos y otros campos. La visión artificial cognitiva está muy relacionada con la psicología cognitiva y la computación biológica. 1.7.4. Procesamiento de Lenguaje Natural El Procesamiento de Lenguajes Naturales, (PLN, o NLP; Natural Language Processing), es una subdisciplina de la Inteligencia Artificial y, también de la lingüística computacional. Estudia los problemas inherentes al procesamiento y manipulación de lenguajes naturales, sin embargo no suele plantear el entendimiento de lenguajes naturales. Las principales tareas de trabajo en el PLN son: Síntesis del discurso Análisis del lenguaje Comprensión del lenguaje Reconocimiento del habla Generación automática del lenguaje. Traducción automática Respuesta a preguntas Recuperación de la información Extracción de la información 1.7.5. Sistemas de Aprendizaje El Aprendizaje Automático es una rama de la Inteligencia Artificial cuyo objetivo es desarrollar técnicas que permitan a las computadoras aprender. De forma más concreta, se trata de crear programas capaces de generalizar comportamientos a partir de una información no estructurada suministrada en forma de ejemplos. Es por lo tanto, un proceso de inducción del conocimiento. En muchas ocasiones el campo de actuación del Aprendizaje Automático se solapa con el de la Estadística, ya que las dos disciplinas se basan en el análisis de datos. Sin embargo, el Aprendizaje Automático se centra más en el estudio de la Complejidad Computacional de los problemas. Muchos problemas son de clase NP-hard, por lo que gran parte de la investigación realizada en Aprendizaje Automático está enfocada al diseño de soluciones factibles a esos problemas. El Aprendizaje Automático tiene una amplia gama de aplicaciones, incluyendo motores de búsqueda, diagnósticos médicos, detección de fraude en el uso de 12 tarjetas de crédito, análisis del mercado de valores, clasificación de secuencias de ADN, reconocimiento del habla y del lenguaje escrito, juegos y robótica. Los sistemas de aprendizaje son una combinación de software y equipos que le permiten a la computadora cambiar su modo de funcionar o reaccionar a situaciones, basado en la retroalimentación que recibe. Por ejemplo algunos juegos computarizados tienen capacidades de aprendizaje. Si la computadora no gana un juego en particular, recuerda no hacer los movimientos bajo las mismas condiciones. 1.7.6. Redes Neuronales Las redes de neuronas artificiales (RNA) son un paradigma de aprendizaje y procesamiento automático inspirado en la forma en que funciona el sistema nervioso de los animales. Consiste en simular las propiedades observadas en los sistemas neuronales biológicos a través de modelos matemáticos recreados mediante mecanismos artificiales (como un circuito integrado, un ordenador o un conjunto de válvulas). El objetivo es conseguir que las máquinas den respuestas similares a las que es capaz el cerebro que se caracterizan por su generalización y su robustez. 1.7.7. Sistemas Inmunes Artificiales Los sistemas inmunes artificiales (AIS) son sistemas computacionales adaptativos cuya inspiración está basada en los diferentes mecanismos del sistema inmune biológico, especialmente de los mamíferos, con la finalidad de solucionar problemas de ingeniería complejos, en los que los investigadores del área han mostrado resultados exitosos. Abstracciones de los AIS: Selección Negativa Selección Clonal Redes Inmunes Artificiales 1.7.8. Extracción de conocimiento La minería de datos (DM, Data Mining) consiste en la extracción no trivial de información que reside de manera implícita en los datos. Dicha información era previamente desconocida y podrá resultar útil para algún proceso. En otras palabras, la minería de datos prepara, sondea y explora los datos para sacar la información oculta en ellos. Bajo el nombre de minería de datos se engloba todo un conjunto de técnicas encaminadas a la extracción de conocimiento procesable, implícito en las bases de datos. Está fuertemente ligado con la supervisión de procesos industriales ya que resulta muy útil para aprovechar los datos almacenados en las bases de datos. 13 Las bases de la minería de datos se encuentran en la inteligencia artificial y en el análisis estadístico. Mediante los modelos extraídos utilizando técnicas de minería de datos se aborda la solución a problemas de predicción, clasificación y segmentación4. 1.8 ACTIVIDADES COMPLEMENTARIAS 1. Definir el término inteligencia Artificial ¿Cuál es la diferencia entre la inteligencia natural y artificial? 2. Definir e identificar 6 subcampos de la Inteligencia Artificial 3. ¿Que es un agente inteligente? Proporcione tres ejemplos de uso de un agente inteligente. 4. Identificar tres ejemplos de la utilización de la robótica. 5. ¿Qué es una red neuronal? Describir dos aplicaciones de las redes neuronales. 6. ¿Pueden pensar las computadoras? ¿podrían llegar a hacerlo? Explique su respuesta. 7. Cree usted que es posible construir una maquina tan o más inteligente que un humano? Explique. 4 Tomado de: http://es.wikipedia.org/wiki/Data_mining 14 CAPITULO 2. VISION GENERAL DE LOS SISTEMAS EXPERTOS Lección 6 2.1. INTRODUCCIÓN Desde la aparición de las computadoras hasta nuestros días, la gente ha invertido grandes esfuerzos por tratar de dar una cierta capacidad de decisión a estas máquinas, incluso un cierto grado de inteligencia. Un Sistema Experto en sí no tiene verdadera Inteligencia Artificial; más bien, es un sistema basado en el conocimiento que, mediante el buen diseño de su base de información y un adecuado motor de inferencias para manipular dichos datos proporciona una manera de determinar resoluciones finales dados ciertos criterios. Los Sistemas Expertos son una herramienta poderosa en el apoyo o guía de los usuarios en los procesos que tienen una secuencia pasos definida, pero que puede ser configurable. Los sistemas expertos son SBC (Sistemas Basados en Conocimiento) que imitan el pensamiento de un experto para resolver problemas de un campo particular (1), pudiendo mejorar su productividad, ahorrar tiempo y dinero, conservar sus valiosos conocimientos y difundirlos más fácilmente. 2.2. Historia de los Sistemas Expertos Comúnmente se piensa que la Inteligencia Artificial, es un área que se viene desarrollando hace aproximadamente 10 o máximo 15 años atrás, pero esto no es cierto, este concepto viene desde los años 50 cuando Alan Turing publico su libro llamado “Inteligencia y funcionamiento de las maquinas”. Los sistemas expertos comienzan a difundirse a partir de los años 70 como una herramienta de software utilizable en dominios de aplicación restringidos, tales como diagnósticos médicos, detección de fallas en equipos eléctricos, detección de yacimientos minerales. A continuación se dará un breve resumen de la historia de los Sistemas Expertos agrupada por fechas: 1950: Alan Turing presentó un estudio sobre la Inteligencia Artificial, "Computing Machinery and Inteligence". En este documento, propuso su test (Turing test) para determinar cuando una máquina posee inteligencia artificial. En un primer documento, Turing había sugerido la posibilidad de simular el comportamiento del cerebro humano. 1955: IPL-II (Information Processing Language II), primer lenguaje de Inteligencia Artificial. Fue creado por Alien Newell, J.C. Shaw y Herbert Simón. IPL es un lenguaje basado en proceso de listas y puede 15 considerarse como un antecesor del LISP, lenguaje más usado actualmente en Inteligencia Artificial. 1956: John McCarthy propone el uso del termino Inteligencia Artificial para denominar el estudio del tema, en una conferencia en Dartmouth (USA). Organizada además por Marvin Minsky, Mathaniel Rochester y Claude Shannon con fondos de la Fundación Rockefeller, donde reunió a profesionales que habían trabajado en el campo de la Inteligencia Artificial. Entre los participantes, además de los cuatro organizadores estaban Arthur Samuel, Trenchard llore, Oliver Selfridge, Alien Newell, Ray Solomonoff y Herbert Simón. Logic Theorist (LT), desarrollado por Newell, Shaw y Simón fue discutido en esta conferencia. LT, considerado como el primer programa que utilizó técnicas de Inteligencia Artificial, emplea la búsqueda heurística para resolver alguno de los problemas contenidos en el libro "Principia Mathematica" de Whitehead y Russell 1957: Aparece la primera version de “The General Problem Solver” (GPS: Solucionador General de Problemas), el cual era capaz de solucionar problemas de sentido común pero no de la vida real, desarrollado por Newell, Shaw y Simón. 1958: John McCarthy desarrolla en el MIT el lenguaje LISP (LISt Procesing). 1959: Arthur Samuel diseña un programa para jugar a las damas, capaz de ganar a los mejores jugadores del momento. Su documento fue publicado por IBM Journal and Development. Frank Rosenblatt describió su máquina, Perception, para reconocimiento de formas en "Proceedings of a Symposium on the Mechanization of Thought Processes". Después de un período de abandono de las ideas propugnadas por Rosenblatt, hoy con la aparición de las máquinas conexion istas, Boltzmann y neuromiméticas, dichas ideas vuelven a tener vigencia. 1960: Inicio de las investigaciones en el MIT, del proyecto de Inteligencia Artificial bajo la dirección de John McCarthy y Marvin Minsky. 1964: Daniel G. Bobrow publicó su tesis doctoral, basada en su Sistema STUDENT. STUDENT es un programa que utiliza el lenguaje natural y puede comprender y resolver problemas de álgebra. 1965: Se publica "Computer and Thought" editado por Edward A. Feigenbaum. Este libro, es una recopilación de trabajos de los más significados representantes del área. o Comienzan las investigaciones en el Stanford University Heuristic Programming Project (HPP), dentro del Stan-ford's Computer Science Department, sobre Sistemas Expertos. o 1965: Aparece el primer Sistema Experto llamado DENDRAL, se utilizaba para identificar estructuras químicas moleculares a partir de su análisis espectrográfico, su realización duro mas de 10 años (1965-1975). 16 1966: Joseph Weizenbaum crea ELIZA para ilustrar que las técnicas de lenguaje natural pueden hacer que un ordenador parezca inteligente. Se inicia el desarrollo del robot móvil, SHAKEY, construido por SRI International, cuyo modelo decisorio para planificación de tareas, utilizará técnicas de Inteligencia Artificial. 1970: Patrick H. Winston publica su tesis doctoral "Learning Structural Descriptions from Examples". Esta tesis describe ARCHES, un programa que aprendía a partir de ejemplos. o El proyecto de Inteligencia Artificial del MIT se convierte en el Laboratorio de Inteligencia Artificial, bajo la dirección de Marvin Minsky y Seymour Papert, incluyendo hoy en día las áreas de robótica, Sistemas Expertos, técnicas de razonamiento y aprendizaje, lenguaje natural y arquitectura de ordenadores. 1971: Se utiliza por primera vez el Sistema Experto MACSYMA, desarrollado por William Martín y Joel Moses. Este Sistema realiza operaciones de cálculo diferencial e integral y simplifica expresiones simbólicas. La Agencia de Investigación de Proyectos Avanzados del Ministerio de Defensa de los Estados Unidos patrocina la investigación sobre comprensión del lenguaje hablado (Speech Understanding Research Program). Algunos de los programas que se han desarrollado bajo esta investigación son: SPEECHIS, HWIM, HEARSAY-I, HEARSAY-II, DRAGÓN Y HARPY, estos cuatro últimos desarrollados en la Carnegie-MelIon University. 1972: Se desarrolla MYCIN en la Universidad de Stanford, un Sistema Experto para el diagnostico de enfermedades infecciosas. También aparece el lenguaje PROLOG. o William Woods, de Bolt Beranek y Newman desarrollaron LUNAR; que fue utilizado por geólogos en la evaluación de los materiales obtenidos en la luna por el Apolo-II. 1974: Aparece PROSPECTOR, un Sistema Experto de prospección minera desarrollado en la Universidad de Stanford. 1976: Douglas B. Lenat escribió el Sistema Experto "AM", un programa que define y evalúa conceptos matemáticos en la teoría de conjuntos. Randall Davis en la Universidad de Stanford publica su tesis TEIREISIAS, un Sistema que utiliza metareglas para introducir y actualizar bases de conocimiento utilizadas en Sistemas Expertos. 1979: Se desarrolla XCOM, un Sistema Experto que se encargaba de configurar todos los computadores que salían de la DEC (Digital Equipament Corporation). Entre 1980 y 1985 se produce la revolución de los Sistemas Expertos, en este intervalo de tiempo se crearon Sistemas como el DELTA, de General Electric Company, para la reparación de locomotoras diesel y eléctricas; se crearon multitud de empresas dedicadas a los Sistemas Expertos como Teknowledge Inc., Lisp Machines Inc., Thinking Machines Corporation, Cognitive Systems Inc. 17 A partir de los 90 y con el desarrollo de la informática, se produce un amplio desarrollo en el campo de la IA y por ende de los Sistemas Expertos, pudiéndose afirmar que estos se han convertido en una herramienta habitual en determinadas empresas en la actualidad. Lección 7 2.3. ¿Que es un Sistema Experto? Se puede decir que los Sistemas Expertos son el primer resultado operacional de la Inteligencia artificial, pues logran resolver problemas a través del conocimiento y raciocinio de igual forma que lo hace el experto humano. Este termino fue usado por primera vez por el doctor, Edward Feigenbaum profesor de la universidad de Standford, el cual en 1977, estipulo que el poder de resolución de un problema en un programa de computadora viene del conocimiento de dominio especifico, no solo de técnicas de programación y formalismo que contiene. Un Sistema Experto (SE), es básicamente un programa de computador basado en conocimientos y raciocinio que lleva a cabo tareas que generalmente sólo realiza un experto humano 5 ; es decir, es un programa que imita el comportamiento humano en el sentido de que utiliza la información que le es proporcionada para poder dar una opinión sobre un tema en especial. Otros autores lo definen como sigue: un Sistema Experto es un programa de computadora interactivo que contiene la experiencia, conocimiento y habilidad propios de una persona o grupos de personas especialistas en un área particular del conocimiento humano, de manera que permitan resolver problemas específicos de ése área de manera inteligente y satisfactoria. La tarea principal de un SE es tratar de aconsejar al usuario6. Los usuarios que introducen la información al SE son en realidad los expertos humanos, y tratan a su vez de estructurar los conocimientos que poseen. El Sistema Experto utilizará para ello el conocimiento que tenga almacenado y algunos métodos de inferencia. Simultáneamente, el usuario puede aprender observando el comportamiento del sistema, es decir, los sistemas expertos se pueden considerar al mismo tiempo como un medio de ejecución y transmisión del conocimiento. De esta definición se desprenden las dos habilidades fundamentales que poseen los Sistemas Expertos: 5 6 PARSAYE, Kamran, Mark Chignell, Setrag Khoshafian y Harry Wong. Intelligent Databases. SCHILDT Herbert, Utilización de C en Inteligencia Artificial. 18 La habilidad de aprendizaje, la cual requiere la interacción de un experto en alguna rama específica del saber y un ingeniero de conocimiento, que se encarga de traducir este conocimiento del experto a reglas heurísticas para formar la base de conocimiento. La habilidad para simular el razonamiento que posee el Sistema Experto, esta se desprende de “caminar” a lo largo de las reglas heurísticas introducidas al sistema por un experto, a través del proceso de aprendizaje durante la generación de las bases del conocimiento. Se debe tener en cuenta que la principal característica del experto humano viene a ser el conocimiento en ese campo concreto, por consiguiente, un Sistema Experto debe ser capaz de representar dicho conocimiento profundo con el objetivo de utilizarlo para resolver problemas, justificar su comportamiento e incorporar nuevos conocimientos. El objetivo entonces de un sistema experto es igualar el comportamiento de los expertos humanos; existen muchos expertos en el conocimiento como los abogados, médicos, economistas. Todos ellos comparten una característica en común; deben tomar decisiones acertadas en ambientes rodeados de riesgos e incertidumbre pero poseen la habilidad superior de hacerlo como resultado de su entrenamiento, experiencia y practica profesional (Biondo, 1990) 2.3.1. Características de un Sistema Experto Para que un sistema computacional 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. La característica fundamental de un Sistema Experto es que separa los conocimientos almacenados (Base de conocimiento) del programa que los controla (Motor de inferencia). Los datos propios de un determinado problema se almacenan en una base de datos aparte (Base de hechos). Además cuenta con características adicionales las cuales serán nombradas a continuación: Competencia en su campo: Es el significado de experto. Es necesario que pueda resolver problemas con una eficiencia y calidad comparables a las de un experto humano. 19 Dominio reducido: El limitarse a un dominio reducido es un requisito para alcanzar la competencia. Capacidad de explicación: Es aquella capaz de explicar cómo ha resuelto el problema, es decir, qué método ha aplicado y por qué lo ha aplicado. Tratamiento de la incertidumbre: Es una exigencia que se deriva de la complejidad de los problemas que van a aborda los sistemas expertos. Flexibilidad en el diálogo: Es deseable que los sistemas expertos tengan esta capacidad, llegando en la medida de lo posible a comunicarse (entender y expresarse) en lenguaje natural como un experto humano. Representación explícita del conocimiento: Es necesaria para considerar que un sistema está basado en conocimiento. La siguiente tabla muestra algunas diferencias que existen entre los sistemas clásicos y los expertos: Tabla 2.1 Comparación entre un sistema tradicional y un Sistema Experto. SISTEMA EXPERTO SISTEMA CLASICO No contiene errores Puede contener errores No da explicaciones, los datos solo El Sistema Experto cuenta con el se usan o escriben modulo de explicación Los cambios son tediosos Los cambios en las reglas son fáciles El sistema solo opera completo El sistema puede funcionar con pocas reglas Se ejecuta paso a paso La ejecución usa heurística y lógica Representa y usa datos Representa y usa conocimiento Lección 8 2.4. ¿Cuáles son las ventajas de un sistema experto? Los valiosos conocimientos de un experto se guardan y se difunden, de forma que, no se pierden aunque desaparezca el especialista. En los Sistemas Expertos se guarda la esencia de los problemas que se intenta resolver y se programa cómo aplicar los conocimientos para su resolución. Estos ayudan a entender cómo se aplican los conocimientos para resolver un problema. Esto es útil porque normalmente el experto da por ciertos sus conocimientos y no analiza cómo los aplica. A continuación se nombraran otras de las ventajas que presentan los Sistemas Expertos: Permanencia: Los expertos humanos pueden morir, cambiar de empresa o perder facultades lo que no puede ocurrir con un sistema experto. 20 Duplicación: El experto humano se encuentra en un único lugar físico y es irreproducible, mientras que una vez construido un Sistema Experto se pueden fabricar un número ilimitado de copias destinadas a todos los lugares donde sean necesarias. Fiabilidad: Un Sistema Experto responderá siempre de la misma manera ante cierto problema, mientras que un experto humano puede estar condicionado por factores emocionales, prejuicios personales, tensión, fatiga, etc. Bajo costo: Aunque puede resultar caro inicialmente construir un sistema experto, una vez construido produce grandes beneficios. Facilita el entrenamiento del personal: El Sistema Experto puede ayudar de manera importante, y a costo menor, a la capacitación y adiestramiento del personal sin experiencia. La separación entre base de conocimiento y motor de inferencia proporciona una gran flexibilidad al SE. En manipulación de símbolos, los SE abren el campo a nuevas aplicaciones, no automatizadas hasta la fecha. Por otro lado, los sistemas expertos presentan grandes carencias frente a los seres humanos: Sentido común: Para un ordenador no hay nada obvio. Lenguaje natural: Todavía nos encontramos muy lejos de tener un sistema que pueda formular preguntas flexibles y mantener una conversación informal con un usuario o con un paciente. Experiencia sensorial: Los Sistemas Expertos de la actualidad se limitan a recibir información. Perspectiva global: Un experto humano es capaz de detectar inmediatamente cuáles son las cuestiones principales y cuáles son secundarias (separando los datos relevantes de los detalles insignificantes). Además existen estas otras limitaciones: Falta de capacidad de aprendizaje: Los expertos humanos son capaces de aprender de la experiencia. Capacidad de manejar conocimiento no estructurado: El experto humano organiza y usa la información y el conocimiento presentados de forma poco ordenada. Funciones genuinamente humanas: por ejemplo, todo lo relacionado con el lenguaje natural, la formación de conceptos, el conocimiento de sentido común y la creación queda fuera de los Sistemas Expertos, al menos en el estado actual del conocimiento. La extracción del conocimiento es el problema más complejo que se les plantea a los ingenieros de conocimientos. Los SE son incapaces de reconocer un problema para el que su propio conocimiento es inaplicable o insuficiente. 21 Los motores de inferencia poseen algunos límites. Falta personal competente para investigar y desarrollar aplicaciones. Lección 9 2.5. Los expertos Humanos Un experto humano es una persona que es competente en un área determinada del conocimiento o del saber. Un experto humano es alguien que sabe mucho sobre un tema determinado y que puede dar un consejo adecuado. Esta experiencia sólo se adquiere tras un largo aprendizaje y a base de mucha experiencia. Los expertos humanos tienen las siguientes características generales: Son personas raras, tanto por su escaso número como su comportamiento poco “ortodoxo” y e “incomprensible” frente a los problemas con los que se enfrentan. Son caros por dos motivos: por su escaso número y por necesitar un largo periodo de aprendizaje. No están siempre disponibles, pues son humanos y cuando se jubilan o mueren se llevan con ellos todos sus conocimientos. Es por eso que tradicionalmente están acompañados de un “aprendiz”. Hay expertos que tienen mal carácter, son informales o poco comunicativos, lo que a veces les hace antipáticos. La forma más rápida de formar a un experto es mediante el aprendizaje formal o académico (“conocimiento profundo”) en un principio, y posteriormente un aprendizaje informal o práctico (“conocimiento informal”). 2.6. Diferencias entre un experto y un no experto humano Tabla 2.2 Diferencias entre un experto y un no experto humano. NO EXPERTO EXPERTO Tiempo de Resolución Pequeño Grande Eficacia Resolutiva Alta Baja Organización Alta Baja Estrategias y Tácticas Sí No Búsqueda de Soluciones Heurística No Heurística Cálculos Aproximados Sí No El uso de heurísticas contribuye grandemente a la potencia y flexibilidad de los SE y tiende a distinguirlos aún mas del software tradicional. 22 2.7. Diferencias entre un SE y un programa tradicional Tabla 2.3 Diferencias entre un Sistema Experto y un Programa Tradicional. SISTEMA EXPERTO PROGRAMA TRADICIONAL Conocimiento En programa e independiente En programa y circuitos Tipo de datos Simbólicos Numéricos Resolución Heurística Combinatoria Def. problema Declarativa Procedimental Control Independiente. No secuencial Dependiente. Secuencial Conocimientos Imprecisos Precisos Modificaciones Frecuentes Raras Explicaciones Sí No Solución Satisfactoria Optima Justificación Sí No Resolución Área limitada Específico Comunicación Independiente En programa 2.8. Diferencias entre un sistema experto y un experto humano Tabla 2.4 Diferencias entre un Sistema Experto y un Experto Humano. SISTEMA EXPERTO EXPERTO HUMANO Conocimiento Adquirido Adquirido + Innato Adquisición del Teórico Teórico + Práctico conocimiento Campo Único Múltiples Explicación Siempre A veces Limitación de capacidad Sí Sí, no valuable Reproducible Sí, idéntico No Vida Infinita Finita 2.9. Ventajas de los sistemas expertos Las ventajas que se presentan a continuación son en comparación con los expertos humanos: Están siempre disponibles a cualquier hora del día y de la noche, y de forma interrumpida. Mantiene el humor. Pueden duplicarse (lo que permite tener tantos SE como se necesiten). Pueden situarse en el mismo lugar donde sean necesarios. 23 Permiten tener decisiones homogéneas efectuadas según las directrices que se les fijen. Son fáciles de reprogramar. Pueden perdurar y crecer en el tiempo de forma indefinida. Pueden ser consultados por personas o otros sistemas informáticos. Lección 10 2.10. Forma en que los usuarios interactúan con los sistemas expertos El usuario de un SE puede estar operando en cualquiera de los siguientes modos: VERIFICADOR. El usuario intenta comprobar la validez del desempeño del sistema. TUTOR. El usuario da información adicional al sistema o modifica el conocimiento que ya está presente en el sistema. ALUMNO. El usuario busca rápidamente desarrollar pericia personal relacionada con el área específica mediante la recuperación de conocimientos organizados y condensados del sistema. CLIENTE. El usuario aplica la pericia del sistema a tareas específicas reales. El reconocimiento de las caracterizaciones anteriores contrasta con la percepción de un simple papel (el cliente) de los sistemas tradicionales de software. 2.11. Sistema experto VS. Sistema clásico La siguiente tabla compara las características de ambos tipos de sistemas Tabla 2.5 Comparativa entre un Sistema Clásico y un Sistema Experto Sistema Clásico Sistema Experto Conocimiento y procesamiento Base de conocimiento separada del combinados en un programa mecanismo de procesamiento No contiene errores Puede contener errores No da explicaciones, los datos sólo se Una parte del sistema experto consiste usan o escriben en el módulo de explicación Los cambios son tediosos Los cambios en las reglas son fáciles El sistema puede funcionar con pocas El sistema sólo opera completo reglas Se ejecuta paso a paso La ejecución usa heurísticas y lógica Necesita información completa para Puede operar con información operar incompleta Representa y usa datos Representa y usa conocimiento 24 La figura 1.5 muestra la diferencia estructurada e interna entre un programa cualquiera o tradicional y un sistema experto. Mientras que un sistema experto estaría definido de la siguiente forma: Figura 1.5. Diferencia entre un programa tradicional y un sistema experto7 Del esquema se desprende que la base de hechos es en un sistema experto, lo que los datos son en un programa tradicional. De la misma manera la base de conocimientos reemplaza al algoritmo. 2.12. Futuro de los Sistemas Expertos Los Sistemas Expertos se utilizaran mucho más en las organizaciones, debido a que la tecnología también es cada vez más accesible para una gran mayoría de las empresas. Las interfaces de los Sistemas Expertos serán en leguaje natural, lo cual facilitará la comunicación entre usuarios y el sistema. Se manejarán herramientas inteligentes para explotar la información que contengan las bases de datos, permitiendo con ello un mejor uso de la información. Los Sistemas Expertos se integrarán a otras tecnologías para dar un mayor soporte en todas las áreas de la empresa. Los Sistemas Expertos tendrán una mayor difusión, su programación y utilización serán más fáciles. Los SE estarán embebidos en diversas aplicaciones, especialmente en software de uso general y en sistemas de supervisión y control. En el futuro estos Sistemas Expertos sabrán más sobre sus preferencias de las personas que ellas mismas. 7 Fuente: Dennis, Alonso.(2001) Sistemas Expertos. Documento en línea http://es.geocities.com/denisalonso2001/SISTEMAS_EXPERTOS.htm 25 2.13. ACTIVIDADES COMPLEMETARIAS 1. 2. 3. 4. ¿Que es un sistema Experto? ¿Explique los componentes de un sistema Experto? ¿Cuáles son las ventajas de los sistemas expertos? Realice una comparación entre un sistema experto y un experto humano, ¿cuales son las ventajas de implementar un sistema experto que realice las funciones de un humano? 5. Explique las características y las ventajas de un sistema experto. 6. Complemente la historia de los sistemas expertos e investigue como se han implementado en Colombia 7. Existe algún tipo de desarrollo de sistemas expertos en Colombia, Investigue en que campos y como ha sido su implementación en su campo de acción. 8. Realice un análisis acerca del futuro de los sistemas expertos en Colombia. 9. ¿Que empresas de desarrollo de sistemas expertos existen en Colombia y que adelantos han alcanzado en esta área? 10. Haga una comparación acerca del futuro de los sistemas expertos en Colombia y el desarrollo de estos a nivel mundial. 26 CAPTULO 3. CAMPOS DE APLICACIÓN, TAREAS QUE REALIZAN Y EJEMPLOS DE SISTEMAS EXPERTOS Lección 11 3.1 Campos de Aplicación de los sistemas Expertos 3.1.1 Medicina Los SE enfrentan tareas tales como la resolución de problemas, razonamiento automático y aprendizaje automático. Es típico el estudio de estos sistemas inteligentes en dominios específicos del conocimiento, como la medicina.8 Los programas en esta área se pueden clasificar en: Métodos de contestación prefijada, formados por algoritmos aritméticos lógicos, en los cuales el control y el conocimiento están juntos y están escritos en lenguajes procedimentales. Métodos estadísticos que se clasificaban en Bayesianos, de análisis discriminantes y análisis secuencial. 3.1.2 Análisis de estados financieros Es un equivalente a los estados de salud en la medicina. El análisis de estados financieros se divide en tres fases9. 1. Examen o revisión. Se revisan documentos contables como balance, cuenta de pérdidas y ganancias, etc. utilizando para ello una serie de técnicas o procedimientos específicos (comparaciones de masas patrimoniales, porcentajes, ...). 2. Se analiza e interpreta la información antes recopilada y se obtiene un panorama de la situación actual de la empresa. 3. Por último se predicen soluciones para ayudar a mejorar la situación futura de la empresa. 3.1.3 Planificación Financiera La disciplina conocida como Gestión Financiera implica un gran número de subramas (análisis de inversiones, presupuesto de capital, análisis financiero, etc.) incluyendo la planificación financiera. La mayoría de los sistemas expertos se centran en resolver problemas de esta disciplina.10 Esta rama de la gestión de financiera intenta identificar el resultado de la aplicación de planes futuros en la empresa, tratando de identificar los recursos que ésta necesita para conseguirlos. 8 CRUZ, Roberto. Área de Bases de Datos e Inteligencia Artificial. URL(http://dcc.ing.puc.cl/investigacion/areas/bases_dat.html) 9 BONSÓN, Enrique. Tecnologías Inteligentes para la Gestión Empresarial. 10 Ibid. 27 Los SE enfocados a la planificación financiera tienen sus principales aplicaciones en: Análisis de mercados. Análisis de riesgos y tasación de seguros. Aplicaciones de impuestos y tasas. Asesoría jurídica y fiscal. Ayuda a la correcta realización de operaciones bancarias. Concesión de créditos y préstamos. Evaluación de riesgos de gestión de cartera. Gestión del personal. Planes de inversión de capitales. Planes de pensiones. Previsión de los tipos de interés. Previsión en las fluctuaciones en el mercado de divisas. Supervisión de los estados financieros. Valoración de la situación financiera de una empresa o cliente. Verificación de firmas. 3.1.4 Industria Los SE en la industria se aplican principalmente en: Diagnóstico de control de calidad. Detección y actuación en caso de alarmas y emergencias. Configuración de equipos y sistemas bajo demanda. Generación de especificaciones y manuales de utilización, mantenimiento y reparación de sistemas fabricados bajo demanda. Control de procesos industriales. Gestión optima de los recursos. Lección 12 3.1.5 Electrónica, informática y telecomunicaciones Las aplicaciones principales de los SE son: Diseño de circuitos de alto grado de integración. Sistemas inteligentes de autodiagnóstico contenidos. Configuración de equipos y sistemas. Control de redes de comunicación. Programación automática. Ajuste de equipos y sistemas. Optimización de programas de computadoras. 28 3.1.6 Militar Las aplicaciones se centran en: Elección inteligente de contramedidas electrónicas con el fin de obtener la máxima efectividad con unos recursos limitados. Guiado de vehículos y proyectiles de forma semiautomática. Planificación estratégica. Reconocimiento automático de blancos y valoración de los mismos. Reconocimiento de planes del enemigo. Interpretación de señales provenientes de sensores. Optimización de carga. 3.1.7 Contabilidad Las actividades administrativas, financieras y contables son campos en los que se pueden aplicar los Sistemas Expertos, pues cumplen la mayoría de los requisitos que son necesarios para poder desarrollar este tipo de sistemas (por ejemplo las tareas requieren conocimiento especializado, existen auténticos expertos en la materia, los expertos son escasos, la pericia necesita ser localizada en distintos lugares, la mayoría de las tareas requieren soluciones heurísticas, ...). Los sistemas expertos se dejan para las tareas que estén poco o no estructurados, pues en este tipo de tareas se requiere mucho del juicio de un experto y se utilizan reglas heurísticas para llegar rápidamente a una solución, dado que el campo de soluciones puede ser muy amplio. Los sistemas expertos se pueden aplicar en todas las áreas de la contabilidad. Ahora bien, como esta clasificación muy grande y además poco práctica, se puede clasifican las aplicaciones potenciales de los Sistemas Expertos en contabilidad en las siguientes áreas de aplicación11: Auditoría: Análisis de la materialidad y del riesgo, evaluación del control interno, planificación de la auditoría, evaluación de la evidencia, análisis de cuentas concretas, formación de opinión, emisión del informe, auditoría interna, auditoría informática y demás situaciones en las cuales, como se mencionó antes, requieren de la decisión de un experto. Contabilidad de costes y de gestión: Cálculo y asignación de costos, asignación de recursos escasos, control y análisis de desviaciones, planificación y control de gestión, diseño de sistemas de gestión de información, etc. Contabilidad financiera: regulación legal, normas y principios contables, recuperación y revisión analítica de registros contables, diseño de sistemas contables, imputación contable, consolidación de estados contables, etc. 11 SÁNCHEZ Tomás, Antonio. Aplicación de los Sistemas Expertos en Contabilidad. URL(http://ciberconta.unizar.es/Biblioteca/0002/Sanchez95.html#CONTABILIDAD) 29 Análisis de estados financieros: Análisis patrimonial, financiero y económico de los estados contables, salud financiera de la empresa, cálculo e interpretación de ratios, cálculo y análisis de tendencias, etc. Planificación financiera e industria de los servicios financieros: Planificación financiera corporativa, planificación financiera personal, análisis de inversiones, gestión de tesorería, mercado de valores, seguros, banca, concesiones de crédito, etc. 3.1.8 Robótica Aun cuando los robots no son como se les muestra en las películas, realmente pueden llegar a realizar actividades sorprendentes, sobre todo si son utilizados en la fabricación de productos, donde las tareas son repetitivas y aburridas. Los robots son muy solicitados en ambientes peligrosos para el ser humano, como en el manejo de explosivos, altas temperaturas, atmósfera sin la cantidad adecuada de oxígeno y en general bajo cualquier situación donde se pueda deteriorar la salud12. La mayoría de los robots tienen un brazo con varias uniones móviles y partes prensiles, donde todos sus elementos son controlados por un sistema de control programado para realizar varias tareas bajo una secuencia de pasos preestablecidos. Los investigadores de IA pretenden adicionar al robot métodos y técnicas que le permitan actuar como si tuviera un pequeño grado de inteligencia, lo cual pretenden lograr con la conjunción de todas las áreas de la IA. 3.1.9 Reconocimiento de patrones Trata con la necesidad identificar objetos o imágenes y utilizar esta información en la resolución de problemas. Debido a que aquí se usa una técnica exhaustiva de búsqueda y comparación de patrones, un sistema con esta característica, puede llegar a detectar detalles que normalmente se escapan a la observación humana. Comúnmente se requiere de una gran cantidad de recursos computacionales para realizar este tipo de investigaciones por lo que los avances en son lentos. 3.1.10 Otros campos de aplicación Aeronáutica Agricultura Arqueología Derecho Educación Geología Meteorología Química 12 CONTRERAS, Carlos. Introducción a la Inteligencia Artificial. URL(http://www.gdl.uag.mx/66/0ia.htm) 30 Transportes Ventas Lección 13 3.2 Tareas que Realizan los sistemas Expertos 3.2.1 Interpretación, Diagnóstico y Monitoreo La interpretación consiste en encontrar el significado de los datos de entrada obtenidos por sensores o introducidos por el usuario. Con frecuencia aparecen datos contradictorios, incompletos o inexactos, por lo que hay que dotar al SE de conocimiento para resolver un problema de este tipo. Existen dos tipos de interpretación: Análisis: La interpretación de datos se obtiene mediante la separación o distinción de las partes que forman los datos. Síntesis: La interpretación de los datos se obtiene mediante la combinación de los mismos. El diagnóstico consiste en identificar las causas internas que provocan un problema, avería o disfunción a partir de una serie de datos o síntomas que son consecuencia de la misma y que son observables. En este tipo de sistemas se encuentran múltiples dificultades como las siguientes a la hora de realizar su tarea: Manifestaciones Nuevas. Es decir, síntomas que no se habían observado con anterioridad. Causas Nuevas. Manifestaciones debidas a varias causas. Datos Inaccesibles, caros o de obtención peligrosa. Relaciones no biyectivas entre los datos y las causas. Fallos o averías de aparición intermitente. Existencia de varios fallos simultáneos o en cadena. La monitorización es un caso particular de la interpretación, y consiste en la comparación continua de los valores de las señales o datos de entrada y unos valores que actúan como criterios de normalidad o estándares. En el campo del mantenimiento predictivo los sistemas expertos se utilizan fundamentalmente como herramientas de diagnóstico. Se trata que el programa determine en cada momento el estado de funcionamiento de sistemas complejos, anticipándose a los posibles incidentes que pudieran acontecer. Así, usando un modelo computacional del razonamiento de un experto humano, proporciona los 31 mismos resultados que alcanzaría dicho experto. La figura 1.6 muestra el funcionamiento de un SE de este tipo. Figura 1.6 Funcionamiento de un SE usado en mantenimiento predictivo 3.2.2 Diseño y Selección El diseño se puede concebir de distintas formas: El diseño en ingeniería es el uso de principios científicos, información técnica e imaginación en la definición de una estructura mecánica, máquina o sistema que ejecute funciones específicas con el máximo de economía y eficiencia. El diseño industrial busca rectificar las omisiones de la ingeniería, es un intento consiente de traer forma y orden visual a la ingeniería de hardware donde la tecnología no provee estas características. Diseño es el proceso de especificar una descripción de un artefacto que satisface varias características desde un número de fuentes de conocimiento.13 Los SE en diseño ven este proceso como un problema de búsqueda de una solución óptima o adecuada. Las soluciones alternas pueden ser conocidas de antemano (problemas de derivación) o se pueden generar automáticamente (problemas de formulación). Los SE prueban distintos diseños para verificar cuáles de ellos cumplen los requerimientos solicitados por el usuario, ésta técnica es llamada “generación y prueba”, por lo tanto estos SE son llamados de selección. En áreas de aplicación, la prueba se termina cuando se encuentra la primer solución; sin embargo, existen problemas más complejos en los que el objetivo es encontrar la solución más óptima. La utilidad de los programas basados en conocimientos aplicados a la ciencia y a la ingeniería no se limita al análisis sofisticado, muchos programas recientes han empezado a trabajar en la síntesis. 13 HOPGOOD, Adrian. Knowledge – Based Systems for Engineers and Scientists. 32 Existen programas que diseñan dispositivos simples y después buscan oportunidades de reducción de costos o de reducción de componentes. 3.2.3 Planificación La planificación es la realización de planes o secuencias de acciones y es un caso particular de la simulación. Está compuesto por un simulador y un sistema de control. El efecto final es la ordenación de un conjunto de acciones con el fin de conseguir un objetivo global (costo mínimo, tiempo mínimo, etc). Los problemas que presentan la planificación mediante SE son los siguientes: Existen consecuencias no previsibles, de forma que hay que explorar y explicar varios planes. Existen muchas consideraciones que deben ser valoradas o incluirles un factor de peso. Suelen existir interacciones entre planes de subobjetivos diversos, por lo que deben elegirse soluciones de compromiso. Trabajo frecuente con incertidumbre, pues la mayoría de los datos con los que se trabaja son más o menos probables pero no seguros. Es necesario hacer uso de fuentes diversas tales como bases de datos. 3.2.4 Control Un sistema de control participa en la realización de las tareas de interpretación, diagnóstico y reparación de forma secuencial. Con ello se consigue conducir o guiar un proceso o sistema. Los sistemas de control son complejos debido al número de funciones que deben manejar y el gran número de factores que deben considerar; esta complejidad creciente es otra de las razones que apuntan al uso del conocimiento, y por tanto de los SE. Cabe aclarar que los sistemas de control pueden ser en lazo abierto, si en el mismo la realimentación o el paso de un proceso a otro lo realiza el operador, o en lazo cerrado si no tiene que intervenir el operador en ninguna parte del mismo. 3.2.5 Reparación, corrección o terapia La reparación, corrección, terapia o tratamiento consiste en la proposición de las acciones correctoras necesarias para la resolución de un problema. Los SE en reparación tienen que cumplir diversos objetivos, como son: Reparación lo más rápida y económicamente posible. Orden de las reparaciones cuando hay que realizar varias. Evitar los efectos secundarios de la reparación, es decir la aparición de nuevas averías por la reparación. 33 3.2.6 Simulación, pronóstico o predicción La simulación es una técnica consistente en crear modelos basados en hechos, observaciones e interpretaciones sobre la computadora, a fin de estudiar el comportamiento de los mismos mediante la observación de las salidas para un conjunto de entradas. Las técnicas tradicionales de simulación requieren modelos matemáticos y lógicos que describen el comportamiento del sistema bajo estudio. El empleo de los SE para la simulación viene motivado por la principal característica de los SE, su capacidad para simular el comportamiento de un experto humano, siendo este un proceso complejo. En la aplicación de los SE para simulación hay que diferenciar cinco configuraciones posibles: 1. Un SE puede disponer de un simulador con el fin de comprobar las soluciones y en su caso rectificar el proceso que sigue. 2. Un sistema de simulación puede contener como parte del mismo a un SE y por lo tanto el SE no tiene que ser necesariamente de simulación. 3. Un SE puede controlar un proceso de simulación, es decir que el modelo está en la base de conocimiento del SE y su evolución es función de la base de hechos, la base de conocimientos y el motor de inferencia, y no de un conjunto de ecuaciones aritmético – lógicas. 4. Un SE puede utilizarse como consejero del usuario y del sistema de simulación. 5. Un SE puede utilizarse como máscara o sistema frontal de un simulador con el fin de que el usuario reciba explicación y justificación de los procesos. Los sistemas de pronóstico deducen consecuencias posibles a partir de una situación. Su objetivo es determinar el curso del futuro en función de información sobre pasado y presente. Esto abarca diversos problemas, tales como predicciones meteorológicas, predicciones demográficas, o incluso previsiones de la evolución bursátil entre otros.14 3.2.7 Simulación, pronóstico o predicción Un sistema de instrucción (sistema experto para formación), realiza un seguimiento del proceso de aprendizaje de un estudiante. El sistema detecta errores de los estudiantes e identifica el remedio adecuado, es decir, desarrolla un plan de enseñanza para facilitar el proceso de aprendizaje y la corrección de errores.15 14 MARTÍNEZ De Ibarreta León, Francisco Javier. Sistemas Expertos: Áreas de aplicación. URL(http://www.geocities.com/SiliconValley/Way/7788/SISEXP.HTM) 15 Ibid 34 3.2.8 Recuperación de Información Los Sistemas Expertos, con su capacidad para combinar información y reglas de actuación, han sido vistos como una de las posibles soluciones al tratamiento y recuperación de información, no sólo documental. La década de los 80’s fue detallada en investigación y publicaciones sobre experimentos de este orden, interés que continua en la actualidad. Lo que diferencia a estos sistemas de un sistema tradicional de recuperación de información es que estos últimos sólo son capaces de recuperar lo que existe explícitamente, mientras que un sistema experto debe ser capaz de generar información no explícita razonando con los elementos que se le dan. Pero la capacidad de los SE en el ámbito de la recuperación de la información no se limita a la recuperación. Pueden utilizarse para ayudar al usuario, en selección de recursos de información, en filtrado de respuestas, etc. Un SE puede actuar como un intermediario inteligente que guía y apoya el trabajo del usuario final. Para desempeñar de forma adecuada esta tarea, los enfoques centrados en la creación de modelos de las estructuras cognitivas del usuario son los más prometedores.16 3.2.9 Resumen A continuación se presenta un resumen de las tareas que realizan los sistemas expertos. Tabla 3.1 Tareas comunes de los sistemas expertos17 Tareas de los SE Ejemplos Interpretaciones Análisis de grandes volúmenes de datos estadísticos, con la finalidad de obtener características económicas, étnicas, religiosas, etcétera. Puede tomar un conjunto de datos y poder anticiparse Predicciones ante alguna situación. Por ejemplo, la predicción de lluvias, huracanes a partir de las condiciones del entorno. Diagnósticos Diagnóstico de fallas mecánicas en automóviles. Planeación Planeación de horarios académicos. Diseño de circuitos electrónicos para optimizar y Diseño elaborar una arquitectura adecuada para su funcionamiento. Monitoreo Revisión constante de las condiciones de trabajo de maquinarias o cambios en su entorno para prevenir fallas y saber en que momento realizar mantenimiento. Depuración de sistemas Identificación de fallas en sistemas, y apoyo para su 16 TRAMULLAS y Kronos, Jesús. Recuperación de Información y Sistemas Expertos. URL(http://www.tramullas.com/nautica/documatica/3-8.html) 17 Pérez Jiménez, Miguel Ángel. (2008) Sistemas expertos para la asistencia médica. Universidad Autónoma de México. Documento en línea: http://www.unam.mx/artic/2008/septiembre/art1.html 35 y su reparación Control de sistemas solución. Automatización de maquinarias para tener un control propio. Lección 14 3.3 Ejemplos de Sistemas Expertos en Empresas Particularizando las aplicaciones en ramas específicas del conocimiento, se han desarrollado un gran número de sistemas expertos que actúan en empresas, algunos simplemente en diseño teórico; otros, con aplicación real en el campo productivo de la organización. 3.3.1 En la Industria DELTA, de General Electric Company, para reparación de locomotoras diesel y eléctricas. “Aldo en Disco” que repara calderas hidrostáticas giratorias para la eliminación de bacterias. Teknowledge Inc., Carnegie Group, Symbolics, Lisp Machines Inc., Thinking Machines Corporation, Cognitive Systems Inc. Fueron creadas en solicitud de una creciente demanda de SE formando una inversión total de 300 millones de dólares. Las “máquinas LISP” eran su producto principal, (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”. SIGCE 18 , Sistema de Información para Gerenciar la Capacitación Empresarial. Es un sistema que le permite administrar de una forma fácil y eficaz todo lo relacionado con la capacitación de cada uno de los empleados y en general de toda su compañía. Este sistema lleva el control de la capacitación desde la asignación de presupuestos y la programación de cada uno de los eventos, hasta la generación de estadísticas e índices de gestión que permiten conocer como se comportan cada una de las variables involucradas en el proceso. También incorpora elementos como: Capacitación de acuerdo a perfiles de cargo, Capacitación orientada a competencias, Planes de capacitación individuales, entre otros. 3.3.2 En Contabilidad El Sistema Kiwi de Clark. Creado en 1975, intentaba interpretar frases ordinarias descriptivas de operaciones económicas proponiendo el asiento correspondiente a cada una de ellas. El sistema de Stepniewsky y Gervals. Utilizaba ya una base de conocimiento y trabajaba mediante deducciones. 18 Sistemas Expertos Limitada. Medellín Colombia. Documento en línea http://www.sistemas-expertos.com/ 36 Proyecto SICA de Page, Laurani y Oudet. Desarrollado en 1989 con PROLOG. Renuncia a interpretar el lenguaje escrito, centrándose en el análisis de los datos que genera cada operación económica. La base de datos BD/ML de Serrano. El modelo R.E.A. de McCarthy. Analiza los procesos de la contabilidad desde el punto de vista del Análisis Circulatorio. 3.3.3 En Análisis de Estados Financieros AFIN. Realiza un análisis de estados financieros en la empresa basándose en el Plan General de Contabilidad Español de 1990. AIDE. Ayuda en el diagnóstico de empresas de la Central de Balances del Banco de Francia. ALFEX. Proyecto referente a la creación de SE capaces de asesorar sobre la salud financiera de una empresa, así como desarrollar bases de conocimiento y herramientas adecuadas para manejarlas. ANALYSIS. Clasifica funcionalmente el balance y la cuenta de pérdidas y ganancias. ANIBAL. Evalúa la gestión comercial y financiera de la empresa. Se pueden mencionar también FINEXPERT/FINEPRO, FSA, entre otros. ANSWERS, CHARIS, FINEX, 3.3.4 En Planificación Financiera AAFINPLAN. Proporciona orientación financiera a los empleados Capital Investment System. Ayuda a los directores de Texas Instruments a la toma de decisiones en la compra de equipos, indicando factores como exigencias legales, impacto medioambiental, entre otros. CASHVALUE. Evalúa proyectos de inversión. También Client Profiling System, FAME, MANAGEMENT ADVISOR, Objective Financial System, Personal Financial Analysis, PFPS, PLANMAN, PLANPOWER, entre muchos otros más. 3.3.5 En la Aviación Del tipo que incluyen agendas 19 ARMAC, GADS, RAMP, SALTO, RMAS, AAMPS, ACAMS, MOCA, ARIES, EXPICS, Duty Roster System, Aeroplan. Incluyen su uso en empresas como United Airlines, Air Canada, entre otras. Del tipo de planeo de vuelos y configuraciones. 19 AALP y MD-11 Interior Design Config System HARMON, Paul y Curtis Hall. Intelligent Software Systems. 37 Del tipo de mercadotecnia y reservaciones. AA Advantage System, BAMBI, DOCS, IQ Manager, Passenger Rev Accounting System 3.3.6 En Medicina Para realizar un diagnóstico se requiere información sobre los síntomas del paciente, condición general, historial clínico y resultados del laboratorio. Estos datos se obtienen a partir de una serie de preguntas, cada una de las cuales es determinada a partir de la respuesta anterior del paciente utilizando diversas reglas o a través de la experiencia (almacenada en la memoria del ser humano experto o bien, del sistema experto). Al principio las preguntas son generadas para reducir el número de enfermedades posibles planteando una hipótesis, y al final se realizan preguntas para soportar el diagnóstico. Una de las formas comunes de llegar a un diagnóstico es mediante el interrogatorio al paciente, en este sentido, los sistemas expertos son los más aptos para esta tarea. Cuando el interrogatorio al paciente se realiza de forma correcta se podrá elegir el tratamiento adecuado para su problema. Otro punto a favor de los sistemas expertos es que al tener almacenado el conocimiento en medios electrónicos, nunca se deteriorará, por el contrario, con el módulo de aprendizaje se logran ingresar nuevas reglas para tratar nuevas enfermedades, lo que asegura también que al realizar la prueba en pacientes con los mismos síntomas se diagnostique de la misma forma. A pesar de la precisión de los sistemas expertos, una parte que hace falta para poder respaldar los resultados o para poder llegar a ellas más rápido es la exploración física. Las formas de razonamiento diagnóstico tienen similitud con los razonamientos de los sistemas expertos: Probabilísticas. Se basan en la frecuencia de ocurrencia de las enfermedades y consideran variables como sexo, edad, peso, frecuencia y la probabilidad asociada entre síntomas-enfermedad. Causales. Encuentran relaciones fisiopatológicas y las relacionan con los efectos que causan, que pueden ser datos clínicos o antecedentes, así como el humor del paciente, por citar algunos. Determinísticos. Son mucho más directos, ya que identificando cada síntoma, se asocia con una regla que lleva directamente hacia el diagnóstico. Se pueden analizar, por ejemplo, la presencia de cefaleas, fiebre, alteraciones de la conciencia y rigidez de nuca pueden significar meningoencefalitis. Algunos sistemas de diagnostico: ETT. Clasifica pacientes con problemas de arterias coronarias. Identifica varios factores que determinan los diagnósticos que emite como la edad, 38 las condiciones actuales del paciente, su historial médico, entre otros factores20. SPACEMED. Este es un Sistema Experto para asistencia en emergencias médicas que sucedan durante un vuelo espacial o aborde de una estación espacial en órbita. La principal característica de este SE es una diagnóstico rápido en casos de envenenamiento, resultado de la inhalación de contaminantes tóxicos liberados en la cabina o en la nave espacial. Este sistema provee indicaciones para el tratamiento de cualquier tipo particular de envenenamiento21. DIAVAL. Es un Sistema Experto para diagnóstico mediante ecocardiografía, el cual se basa en redes bayesianas, en vez de utilizar reglas; la decisión de utilizar las redes bayesianas fue tomada basándose en la capacidad por parte de dichas redes para manejar conocimientos imprecisos de una mejor manera en comparación con las reglas 22 . Un conocimiento es impreciso cuando cuenta solamente con predicados vagos, o sea que las variables no reciben un valor preciso. El uso de este tipo de conocimiento nos adentra en la lógica difusa, dado que se recurre a la utilización de coeficientes. El coeficiente es un factor que se agrega para representar la incertidumbre o la imprecisión que el experto asigna a este conocimiento 23 . DIAVAL fue construido en la Universidad Nacional de Educación a Distancia (UNED) en España, como proyecto para una tesis doctoral, siguiendo cinco etapas clásicas: identificación, conceptualización, formalización, implementación y evaluación. Este Sistema Experto provee una interfaz flexible y fácil de manejar, conociendo la importancia de este factor en su aceptación por parte de los médicos. Ejemplo práctico de aplicación Un médico puede utilizar un sistema experto para efectuar diagnósticos de manera precisa y rápida. Por ejemplo, mediante un método Deterministico para el diagnóstico y a través de inferencias con reglas, como lo muestra la figura 1.7, el médico encuentra el tratamiento correcto para cada enfermedad. En un sistema experto real se tienen muchas reglas analizadas y diseñadas por los médicos especialistas. Los sistemas expertos aplicados en la medicina permiten asegurar un buen diagnóstico en los pacientes, ya que el ser humano puede cometer errores o no considerar algún cuestionamiento o síntoma, lo cual puede afectar al tratamiento. 20 KANDEL, Abraham. Fuzzy Expert Systems. TELLO, Ernest. Op. cit. 22 DÍEZ Vegas Francisco Javier. Sistema Experto Bayesiano para Ecocardiografía. URL(http://ia.uned.es/~fdiez/tesis/tesis.html) 23 SCARABINO, Juan Carlos. Sistemas Expertos: Aspectos Técnicos. URL(http://ciberconta.unizar.es/LECCION/sistexpat/INICIO.HTML) 21 39 Es importante destacar que la asistencia del sistema experto, ya sea en un hospital o en un centro de salud comunitario, pudiera ahorrar recursos al eliminar el trasladarse a otras ciudades para realizar el diagnóstico. Figura 1.7 Ejemplo sencillo de sistema experto usando el método Deterministico. Lección 15 3.3.7 Aplicaciones actuales Algunos de los campos de aplicación de los Sistemas Expertos son: Medicina, Finanzas y Gestión, Militar, Educación, Transportes, Aeronáutica, Agricultura, Arqueología, Derecho, Geología e Industria electrónica, informática y telecomunicaciones. A continuación se enunciaran algunos de los Sistemas Expertos que existen en la actualidad o que se encuentran en desarrollo: MYCIN: Es el primer Sistema Experto que llego a funcionar con la misma calidad que un experto humano. Es un sistema de diagnostico y prescripción en medicina, altamente especializado, diseñado para ayudar a los médicos a tratar con infecciones de meningitis y bacteriemia. Una serie de tests han demostrado que MYCIN trabaja igual de bien que un médico. 40 TROPICAID: Permite obtener información adicional sobre los medicamentos más usados. Este selecciona un conjunto de posibles diagnósticos a partir del análisis del cuadro médico, y propone un tratamiento óptimo para el caso concreto. ADICORP: Realiza diagnósticos de equipos industriales complejos, además, trabaja en proyectos de Visión Artificial. PROSPECTOR: Sistema para la evaluación de emplazamientos geológicos. Capaz de deducir una gran parte del depósito de pórfiro de molibdeno en el estado de Washington, este yacimiento que los geólogos no habían sabido detectar hasta entonces, y que esta valorado en cien millones de dólares. Palladian Operations Advisor: Es de Palladian Software Inc. (USA), fue diseñado específicamente para la dirección de la producción. Puede analizar el estado de la combinación de productos para mantener la mayor eficacia y rentabilidad posible de las operaciones. LABEIN (Laboratorio de Ensayos e Investigaciones Industriales, en España), desarrolló un sistema inteligente para el diseño de motores eléctricos mediante la aplicación de las tecnologías clásicas de Sistemas Expertos a los sistemas de CAD/CAE de diseño y análisis. DELTA: Ayuda a los mecánicos en el diagnóstico y reparación de locomotoras diesel y eléctricas. Este sistema no solo da consejos expertos, sino que también presenta informaciones por medio de un reproductor de vídeo. STEAMER: Se creó para enseñar a los oficiales de la armada los problemas de funcionamiento de una planta de propulsión a vapor, como las que impulsan a ciertos barcos. Eolo CN-235: Ofrece un curso específico para pilotos y técnicos de mantenimiento, a todos los compradores del avión CN- 235. Es un sistema de enseñanza interactivo que integra gráficos, texto y vídeo. GUIDON: Utilizado por las Facultades de Medicina para formar a los médicos en la realización de consultas. GUIDON viene a ser una reorganización de MYCIN con intenciones educativas, por esto, tiene la ventaja adicional de disponer de toda la base de conocimientos de MYCIN además de la experiencia acumulada. PUFF: Estudia la función pulmonar. HERSAY: Intenta identificar la palabra hablada. CASHVALUE: Evalúa proyectos de inversión. VATIA, que asesora acerca del impuesto sobre el valor añadido o I.V.A. COACH (Cognitive Adaptive Computer Help):Permite crear ayuda personalizada al usuario. Es un observador de las acciones del usuario que está aprendiendo a operar un ambiente, y en base a ellas construye un modelo adaptativo del usuario. 41 3.3.7.1 Sistema experto para la simulación de sistemas tácticos de baloncesto con software libre24 El objetivo de este SE es simular distintas tácticas de baloncesto. El programa presenta un manejo sencillo y permite que se puedan introducir nuevas tácticas de ataque y de defensa al conjunto de tácticas predefinidas que incorpora el sistema. Como principal objetivo se marcó que el comportamiento del sistema fuera lo más fiel posible al desarrollo de un sistema táctico en un partido de baloncesto (salvando las limitaciones de la representación en ordenador del mundo real), incluyendo todas las variantes de un sistema táctico en su justa medida. Cabe destacar que los jugadores no son autónomos, sino que están coordinados para comportarse de acuerdo a la táctica que desarrollan. En el baloncesto, por lo general, cualquier jugador que tire a canasta sin oposición (lo que se conoce como realizar un tiro cómodo) tiene muchas posibilidades de encestar el balón. Por el contrario, el porcentaje de aciertos en tiros no cómodos (cuando existe algún defensor amenazando al tirador) es mucho menor. Para obtener un tiro cómodo el método más común es realizar buenos bloqueos. Un bloqueo es un choque entre un atacante y un defensor que permite a un segundo atacante moverse más libremente (normalmente para tirar a canasta o recibir o dar un pase). En el baloncesto las tácticas tienen una importancia vital para el desarrollo de un partido. El reducido número de jugadores por equipo, cinco, hace que sea importante que todos los jugadores intervengan en mayor o menor medida en la jugada. El bloqueo Un bloqueo es un choque entre dos jugadores de distinto equipo que se provoca para que un atacante tenga más libertad. Es importante que el jugador atacante que choque esté quieto mientras se produce el contacto, pues en otro caso se le señalará falta personal. Los pasos para realizar un bloqueo son los siguientes: Preparación: un primer atacante se queda quieto mientras otro compañero se acerca a él. Realización: el segundo atacante hace un movimiento rápido y pasa rozando al compañero (de modo que este moleste lo máximo posible a su defensor). Acción del atacante: una vez ha pasado el atacante tiene un amplio abanico de posibilidades. Si tiene el balón puede tirar a canasta, acercarse a ella, pasar a un compañero, etc. En caso de que no lo tenga suele prepararse para recibir un posible pase. 24 Palomo Manuel & Martín, Mateos Francisco Jesús.2002. Grupo Mejora del Proceso Software y Métodos Formales. Departamento de Lenguajes y Sistemas Informáticos. Universidad de Cádiz. Escuela Superior de Ingeniería. C/ Chile, s/n. Departamento de Ciencias de la Computación e Inteligencia Artificial, Universidad de Sevilla 42 Reacción del defensor: la reacción del defensor es muy importante. Entre otras acciones puede intentar seguir a su pareja (aunque a cierta distancia), puede ordenar al jugador que bloquea, etc. No existe ninguna decisión netamente mejor que otra para cada uno de los participantes en un bloqueo. Según sus posiciones concretas, el entorno y las características de cada jugador, cada uno debe tomar la decisión que considere oportuna. Principales tácticas de ataque El número de tácticas de ataque de un entrenador son inimaginables. Cualquier secuencia de movimientos, bloqueos, pases, quiebros, etc. que faciliten un tiro cómodo es válida. Sin embargo, por lo general, casi todas las tácticas suelen basarse en dos situaciones iniciales, que son jugar al poste alto y jugar al poste bajo (figura 1.8). Figura 1.8. Principales tácticas de ataque Cuando se juega al poste bajo los dos jugadores más altos del equipo ocupan posiciones a sendos lados de la canasta. Los otros tres se distribuyen a lo largo de la línea de tres puntos, uno en la perpendicular al aro y los otros dos a los lados. El punto fuerte de este tipo de ataque es que permite, si se tienen jugadores altos fuertes, que estos reciban el balón cerca de la canasta. Además, en el caso de que venga otro defensor para ayudar a cubrirlo, pueden realizar un pase hacia el jugador que quede libre, que dispondrá en ese caso de un tiro cómodo o libertad para moverse. La principal desventaja es que los jugadores altos del equipo defensor sean mejores que los del equipo atacante. 3.3.7.2 GENSYM: Operaciones Expertas25 El software de Operaciones Expertas permite fabricar productos y ejecutar operaciones en un costo drásticamente más bajo aplicando tecnología de razonamiento en el seguimiento, el control y a la optimización de procesos 25 Juan Manuel, Pignani. Informática aplicada a la Ingeniería de Procesos. Universidad Tecnológica Nacional, Facultad Regional Rosario 43 complejos. Este software se utiliza extensamente en las industrias de fabricación, de producción, del espacio aéreo y del transporte. Disponibilidad continua del activo Las aplicaciones mantienen la disponibilidad de todos los recursos esenciales para un proceso; detectando, diagnosticando, y corrigiendo los problemas antes de que afecten las operaciones. Trabajando con los sistemas tradicionales de DCS, software de control y los primeros principios de modelado, provee una capa de gestión y de habilidad sobre esos sistemas, automatizando las tareas derrochadoras de tiempo y las tareas requeridas para detectar y resolver rápidamente cada problema. Funcionamiento del proceso El objetivo es maximizar la calidad del producto y productividad, mientras que se reduce al mínimo los costos. Los analizadores suaves basados en la red neuronal proveen el acceso instantáneo a los datos (difíciles de medir) de la calidad del producto y otras variables de proceso importantes, permitiendo un control de proceso mucho más ajustado y reducciones significativas en la variabilidad del producto. Los modelos también predicen los puntos de ajuste óptimos para el aumento de la producción. Esto lo hacen dentro de un ambiente robusto que puede validar los datos del sensor, manejar las nuevas condiciones de funcionamiento, manejan situaciones anormales y aconsejan a los operadores. Resultados Disponibilidad creciente del activo, calidad del producto más alta, producción creciente, seguridad mejorada, mínimas consecuencias para el medio ambiente y beneficios más altos. Los operadores consiguen el pleno apoyo que necesitan para manejar las operaciones de fabricación 3.3.7.3 G2 CLASSIC G2 Classic es un ambiente orientado a objetos de gran alcance. Su función es la de desplegar las aplicaciones inteligentes que mejoran drásticamente las operaciones complejas del negocio. Esta tecnología provee ventajas competitivas en los siguientes puntos: optimización de las eficacias de funcionamiento. mejoramiento del activo y sustentamiento de la disponibilidad. mejor manejo de las operaciones críticas del tiempo. construcción y despliegue de las aplicaciones de gestión de las operaciones, drásticamente más rápido. reducción al mínimo de los costos de mantenimiento de las aplicaciones de gestión de las operaciones. facilita el acotamiento y el conocimiento de las operaciones Con este software, se puede aplicar conocimiento a los datos operacionales, al alcance de las conclusiones, proveer consejo y ejecutar las decisiones, 44 todas en tiempo real. Para las operaciones de negocio, los sistemas inteligentes capturan y aplican el conocimiento para permitir la mejora continua de la eficiencia y el funcionamiento operacional. Para los desarrolladores el uso de esta herramienta reduce tiempo en la terminación de proyectos, reduce al mínimo los riesgos del proyecto y ofrece altos niveles de la flexibilidad y capacidad de escalonar las aplicaciones. También permite a los desarrolladores representar el conocimiento como objetos, reglas, métodos y procedimientos usando gráficos y lenguaje natural estructural. Esto permite probar y modificar las aplicaciones fácilmente, y que sean entendidas. Particularizando las aplicaciones en ramas específicas del conocimiento, se han desarrollado un gran número de sistemas expertos que actúan en empresas, algunos simplemente en diseño teórico; otros, con aplicación real en el campo productivo de la organización. 3.4 ACTIVIDADES COMPLEMENTARIAS 1. Explique las diferentes tareas que realizan los sistemas expertos 2. Investigue cuales de estas tareas son aplicadas en Colombia y con que tipo de sistemas expertos. 3. Realice un cuadro comparativo entre las diferentes actividades que puede realizar un SE. 4. Cuales son las ventajas y desventajas que se obtienen a implementar sistemas expertos para el desarrollo de tares como la simulación, pronostico y predicción. 5. Nombre algunos ejemplos en donde seria útil utilizar SE y explique el porque. 6. Suponga que se le contrata para capturar el conocimiento de una brillante asesora financiera, antes de su retiro de la empresa en seis meses, que tiene un historial notable en la elección de acciones en crecimiento para un fondo mutualista. El conocimiento se usara como la base para un sistema experto que ayude a otros asesores financieros a tomar decisiones sobre cuales acciones incluir o eliminar del fondo mutualista. ¿esta es una buena opción para un sistema experto? Explique su respuesta. 7. Explicar la diferencia entre una base de datos y una base de conocimientos. 8. ¿Qué habilidades se necesitan para ser un buen ingeniero del conocimiento? ¿El conocimiento del dominio ayudaría u obstaculizaría al ingeniero del conocimiento en su propósito por capturar el conocimiento del experto en dominio? 45 9. Suponga que vive en un área donde el clima se modifica a diario. Desarrolle un sistema experto sencillo que proporcione asesoría sobre el tipo de ropa que debe usarse de acuerdo con el clima. Es necesario que el sistema le ayude a decidir que tipo de ropa y accesorios debe usar (sombrilla, botas, etc.) en días soleados, con nieve, lluvia, calor, agradables fríos, etc. Las entradas clave para el sistema incluyen el pronóstico del clima para la noche anterior. La observación que haga usted de la temperatura y la nubosidad durante la mañana y el clima del día anterior. Por medio del programa de procesamiento de texto desarrolle siete o más reglas que se podrían usar en este tipo de sistema experto. Crear cinco casos y usar las reglas que se desarrollaron para determinar el mejor curso de acción. 10. Realice una investigación de las compañías especializadas en el diseño de sistemas expertos y en que áreas del conocimiento han desarrollado sus productos. 46 UNIDAD 2. DESARROLLO DE LOS SISTEMAS EXPERTOS CAPTULO 4. ARQUITECTURA Y ELEMENTOS DE LOS SISTEMAS EXPERTOS Lección 16 4.1 Introducción Se puede decir que los sistemas expertos son el primer resultado operacional de la Inteligencia artificial, pues logran resolver problemas a través del conocimiento y raciocinio de igual forma que lo hace el experto humano. Un Sistema Experto (SE), es básicamente un programa de computadora basado en conocimientos y raciocinio que lleva a cabo tareas que generalmente sólo realiza un experto humano 26 ; es decir, es un programa que imita el comportamiento humano en el sentido de que utiliza la información que le es proporcionada para poder dar una opinión sobre un tema en especial y resolver problemas específicos. Otros autores lo definen como sigue: un Sistema Experto es un programa de computadora interactivo que contiene la experiencia, conocimiento y habilidad propios de una persona o grupos de personas especialistas en un área particular del conocimiento humano, de manera que permitan resolver problemas específicos de ése área de manera inteligente y satisfactoria.27 La tarea principal de un SE es tratar de aconsejar al usuario28. Los usuarios que introducen la información al SE son en realidad los expertos humanos, y tratan a su vez de estructurar los conocimientos que poseen para ponerlos entonces a disposición del sistema. Los SE son útiles para resolver problemas que se basan en conocimiento29. Las características principales de este tipo de problemas, según algunos autores, son: Utilizan normas o estructuras que contengan conocimientos y experiencias de expertos especializados. Se obtienen conclusiones a través de deducciones lógicas. Contienen datos ambiguos. Contienen datos afectados por factores de probabilidad. 26 PARSAYE, Kamran, Mark Chignell, Setrag Khoshafian y Harry Wong. Intelligent Databases. DE MIGUEL González, Luis Javier. Técnicas de mantenimiento predictivo industrial basadas en Sistemas Expertos. 28 SCHILDT Herbert, Utilización de C en Inteligencia Artificial. 29 CRIADO Briz, José Mario. Sistemas Expertos. URL (http://home.worldonline.es/jmariocr/index.htm) 27 47 Con base en lo anterior, algunos investigadores de IA señalan que un SE debe cumplir con las siguientes características: Tener un amplio conocimiento específico del área de especialización. Aplicar técnicas de búsqueda. Tener soporte para Análisis Heurístico. Poseer habilidad para inferir nuevos conocimientos ya existentes. Tener la capacidad de procesar símbolos. Tener la capacidad para explicar su propio razonamiento. Lección 17 4.2 Arquitectura de un Sistema Experto Un Sistema Experto aplica las técnicas de resolución de problemas y razonamiento de la Inteligencia Artificial al conocimiento codificado acerca de un problema específico. La efectividad del Sistema Experto dependerá, en gran medida, de la cantidad de conocimiento que se le proporcione. Sin la existencia de una base suficiente de conocimiento, aunque existan métodos de razonamiento muy potentes, es imposible crear un comportamiento inteligente. Sin embargo, con métodos de inferencia muy simples se pueden conseguir resultados muy buenos cuando se aplican a una base adecuada de conocimientos. De la misma forma que una base de conocimientos muy completa sin un adecuado motor de inferencia, serviría de muy poco, pues quedaría reducida a algo estático sin posibilidad ni capacidad de "deducción" ni generación de nuevo conocimiento. Los Sistemas Basados en el Conocimiento significan el paso del paradigma del poder, es decir, de la utilización de cómputo muy potente, al paradigma del conocimiento, o sea, empleo del máximo posible de conocimiento. La revolución aportada por los Sistemas Expertos consiste en considerar tanto las informaciones imperativas de la Informática tradicional como las declarativas no expresables por los lenguajes usuales de aquella y el conocimiento de la naturaleza más diversa y no homogénea, como datos. Estos expertos construyen sus bases de conocimiento con la ayuda de los Ingenieros del Conocimiento. Esto se realiza en un lenguaje descriptivo, que tiene muy pocas relaciones con los lenguajes tradicionales de programación. Los conocimientos se introducen como elementos modulares, independientes y como pequeñas moléculas de saber, muy libres las unas de las otras y fácilmente modificables. Estos conjuntos de conocimientos son analizados por lo que se ha dado en llamar motor de inferencias, "software" cuya programación utiliza, en parte métodos .clásicos, pero único para toda una gama de aplicaciones y que tiene como objetivo relacionar" las moléculas de conocimiento" que son 48 encadenadas lógicamente para deducir todas las informaciones posibles. La descripción de un sistema, es justamente aquello que ve el usuario. De este modo, una arquitectura puede ser soportada por un número indeterminado de implantaciones distintas, cada una de las cuales puede, a su vez, tener numerosas realizaciones. De hecho, es muy frecuente el caso de que la misma arquitectura se realiza con nuevas tecnologías, cuando éstas son utilizables. La arquitectura de un Sistema Experto complejo se puede estructurar, tal y como se muestra en la figura 2.1. Figura 2.1 Arquitectura de un Sistema Experto30 30 Figura tomada de la tesis doctoral Metodología Para El Desarrollo De Sistemas Expertos diseñada por el doctor José Domingo Carrillo Verdun 49 Lección 18 4.3 Elementos de un Sistema Experto Los dos componentes principales de cualquier sistema experto son una base de conocimientos y un motor de inferencia. a. Base de conocimientos, esta debe ser de un tema específico, donde el conocimiento se codifica según una notación específica que incluye reglas, predicados, redes semánticas y objetos. b. Motor de inferencia, combina los hechos y las preguntas particulares, utilizando la base de conocimiento, seleccionando los datos y pasos apropiados para presentar los resultados. Existen otros componentes en un SE entre ellos: Subsistema de control de coherencia. Este componente previene la entrada de información incoherente en la base de conocimiento. Es un componente muy necesario, a pesar de ser un componente reciente. Subsistema de adquisición de conocimiento. Se encarga de controlar si el flujo de nuevo conocimiento a la base de datos es redundante. Sólo almacena la información que es nueva para la base de datos. Motor de inferencia. Este componente es básico para un SE; se encarga de obtener conclusiones comenzando desde el conocimiento abstracto hasta el conocimiento concreto. Si el conocimiento inicial es muy poco, y el sistema no puede obtener ninguna conclusión, se utilizará el subsistema de demanda de información. Subsistema de demanda de información. Completa el conocimiento necesario y reanuda el proceso de inferencia hasta obtener alguna conclusión válida. El usuario puede indicar la información necesaria en este proceso ayudado de una interfase de usuario (la cual facilita la comunicación entre el Sistema Experto y el usuario). Subsistema de incertidumbre. Se encarga de almacenar la información de tipo incierto y propaga la incertidumbre asociada a esta información. Subsistema de ejecución de tareas. Permite realizar acciones al Sistema Experto basadas en el motor de inferencia. Subsistema de explicación. Este componente entra en ejecución cuando el usuario solicita una explicación de las conclusiones obtenidas por el SE. Esto se facilita mediante el uso de una interfase. 50 Figura 2.2. Componentes típicos de un sistema experto. Las flechas representan el flujo de la información.31 Figura 2.3 Relación entre los elementos de un sistema experto 31 Fuente: Castillo, Enrique. Gutiérrez, José Manuel Sistemas Expertos y Modelos de Redes Probabilísticas 51 4.3.1. La Componente Humana Para desarrollar un sistema experto, primero se debe conocer el equipo humano necesario, después los métodos que utiliza ese equipo y por ultimo cómo prueban y construyen prototipos de software para terminar el sistema final. Un sistema experto es generalmente el resultado de la colaboración de uno o varios expertos humanos especialistas en el tema de estudio, los ingenieros del conocimiento y los usuarios. Los expertos humanos suministran el conocimiento básico en el tema de interés y los ingenieros del conocimiento trasladan este conocimiento a un lenguaje, que el sistema experto pueda entender. La colaboración de los expertos humanos, los ingenieros del conocimiento y los usuarios es, quizá, el elemento más importante. Figura 2.4 Equipo de desarrollo de un SE Las personas que componen un grupo como en todos los ámbitos deben cumplir ciertas características y cada uno de ellos dentro del equipo desarrolla un papel distinto. A continuación se detalla cada componente del equipo dentro del desarrollo y cuál es la función de cada uno: a) El experto. La función del experto es la de poner sus conocimientos especializados a disposición del Sistema Experto. b) El ingeniero del conocimiento. Es el ingeniero que plantea las preguntas al experto, estructura sus conocimientos y los implementa en la base de conocimientos. c) El usuario. El usuario aporta sus deseos y sus ideas, determinando especialmente el escenario en el que debe aplicarse el Sistema Experto. En el desarrollo de un 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. Precisamente en la primera fase de un proyecto es de vital importancia determinar correctamente el ámbito estrechamente delimitado de trabajo. Aquí se incluye ya el usuario posterior, o un representante del grupo de usuarios. Para la aceptación, y en consecuencia para 52 el éxito, es de vital y suma importancia tener en cuenta los deseos y las ideas del usuario. Una vez delimitado el dominio, se alimenta el sistema con los conocimientos del experto. El experto debe comprobar constantemente que su conocimiento haya sido transmitido de la forma más conveniente. El ingeniero del conocimiento es responsable de una implementación correcta, pero no de la exactitud del conocimiento. La responsabilidad de esta exactitud recae en el experto. De ser posible, el experto deberá tener comprensión para los problemas que depara el procesamiento de datos. Ello facilitará mucho el trabajo. Además, no debe ignorarse nunca al usuario durante el desarrollo, para que al final se disponga de un 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 puede ser también el usuario. Este es el caso, cuando exista 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. 4.3.2. Base de Conocimientos Los especialistas son responsables de suministrar a los ingenieros del conocimiento una base de conocimiento ordenada y estructurada, y un conjunto de relaciones bien definidas y explicadas. Esta forma estructurada de pensar requiere que los expertos humanos repiensen, reorganicen, y reestructuren la base de conocimiento y como resultado, el especialista se convierte en un mejor conocedor de su propio campo de especialidad. Hay que diferenciar entre datos y conocimiento. El conocimiento se refiere a afirmaciones de validez general tales como reglas, distribuciones de probabilidad, etc. Los datos se refieren a la información relacionada con una aplicación particular. Por ejemplo, en diagnóstico médico, los síntomas, las enfermedades y las relaciones entre ellos, forman parte del conocimiento, mientras los sıntomas particulares de un paciente dado forman parte de los datos. Mientras el conocimiento es permanente, los datos son efímeros, es decir, no forman parte de la componente permanente de un sistema y son destruidos después de usarlos. El conocimiento se almacena en la base de conocimiento y los datos se almacenan en la memoria de trabajo. Todos los procedimientos de los diferentes sistemas y subsistemas que son de carácter transitorio se almacenan también en la memoria de trabajo. 53 La base de conocimientos contiene el conocimiento especializado extraído del experto en el dominio. Es decir, contiene conocimiento general sobre el dominio en el que se trabaja. El método más común para representar el conocimiento es mediante reglas de producción. El dominio de conocimiento representado se divide, pues, en pequeñas fracciones de conocimiento o reglas. Lección 19 4.3.3. El componente de 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 en la actividad de programación. Este componente controla el flujo del nuevo conocimiento que fluye del experto humano a la base de datos. El sistema determina qué nuevo conocimiento se necesita, o si el conocimiento recibido es en realidad nuevo, es decir, si debe incluirse en la base de datos y, en caso necesario, incorpora estos conocimientos a la misma. Requisitos o características del componente de adquisición: 1. El conocimiento, es decir, las reglas, los hechos, las relaciones entre los hechos, etc.., debe poder introducirse de la forma más sencilla posible. 2. Posibilidades de representación clara de todas las informaciones contenidas en una base de conocimientos. 3. Comprobación automática de la sintaxis. 4. Posibilidad constante de acceso al lenguaje de programación. La puesta en práctica cada uno de los requisitos dependerá del lenguaje de programación elegido y del hardware que se tenga. El experto deberá estar algo familiarizado con el componente de adquisición para poder realizar modificaciones por sí sólo. El módulo de adquisición del conocimiento permite que se puedan añadir, eliminar o modificar elementos de conocimiento (en la mayoría de los casos reglas) en el SE. Si el entorno es dinámico, entonces este componente es muy necesario, puesto que el sistema funcionará correctamente sólo si se mantiene actualizado su conocimiento. El módulo de adquisición permite efectuar ese mantenimiento, anotando en la base de conocimientos los cambios que se producen. 4.3.4. Control de Coherencia El subsistema de control de la coherencia ha aparecido en los sistemas expertos muy recientemente. Sin embargo, es una componente esencial de un sistema experto. Este subsistema controla la consistencia de la base de datos y evita que 54 unidades de conocimiento inconsistentes entren en la misma. En situaciones complejas incluso un experto humano puede formular afirmaciones inconsistentes. Por ello, sin un subsistema de control de la coherencia, unidades de conocimiento contradictorio pueden formar parte de la base de conocimiento, dando lugar a un comportamiento insatisfactorio del sistema. Es también común, especialmente en sistemas con mecanismos de propagación de incertidumbre, que se llegue a conclusiones absurdas o en conflicto como, por ejemplo, situaciones en las que el sistema genera probabilidades mayores que la unidad o negativas. Por ello, el subsistema de control de coherencia comprueba e informa a los expertos de las inconsistencias. Por otra parte, cuando se solicita información de los expertos humanos, este subsistema informa sobre las restricciones que esta debe cumplir para ser coherente con la existente en la base de conocimiento. De esta forma, ayuda a los expertos humanos a dar información fiable. 4.3.5. Motor de Inferencia El motor de inferencia es el corazón de todo sistema experto. El cometido principal de esta componente es el de sacar conclusiones aplicando el conocimiento a los datos. Por ejemplo, en diagnóstico médico, los síntomas de un paciente (datos) son analizados a la luz de los síntomas y las enfermedades y de sus relaciones (conocimiento). Las conclusiones del motor de inferencia pueden estar basadas en conocimiento determinista o conocimiento probabilístico. Como puede esperarse, el tratamiento de situaciones de incertidumbre (probabilísticas) puede ser considerablemente más difícil que el tratamiento de situaciones ciertas (deterministas). En muchos casos, algunos hechos (datos) no se conocen con absoluta certeza. Por ejemplo, piénsese en un paciente que no está seguro de sus síntomas. Puede darse el caso de tener que trabajar con conocimiento de tipo no determinista, es decir, de casos en los que se dispone sólo de información aleatoria o difusa. El motor de inferencia es también responsable de la propagación de este conocimiento incierto. De hecho, en los sistemas expertos basados en probabilidad, la propagación de incertidumbre es la tarea principal del motor de inferencia, que permite sacar conclusiones bajo incertidumbre. Esta tarea es tan compleja que da lugar a que esta sea probablemente la componente más débil de casi todos los sistemas expertos existentes. El mecanismo de inferencia de un sistema experto puede simular la estrategia de solución de un experto. Es la unidad lógica con la que se extraen conclusiones de la base de conocimiento, según un método fijo de solución de problemas que esta configurado, limitando el procedimiento humano de los expertos para solucionar problemas. 55 Una conclusión se produce mediante aplicación de las reglas sobre hechos presentes. Las funciones de mecanismo de inferencia son: 1. Determinación de las acciones que tendrán lugar, el orden en que lo harán y cómo lo harán entre las diferentes partes del sistema experto. 2. Determinar cómo y cuándo se procesarán las reglas, y dado el caso también la elección de qué reglas deberán procesarse. 3. Control del diálogo con el usuario. El motor de inferencias utiliza los datos que se le suministran y recorre la base de conocimientos para alcanzar una solución. La estrategia de control puede ser de encadenamiento progresivo o de encadenamiento regresivo. En el primer caso se comienza con los hechos disponibles en la base de datos, y se buscan reglas que satisfagan esos datos, es decir, reglas que verifiquen la parte SI. Normalmente, el sistema sigue los siguientes pasos: 1. Evaluar las condiciones de todas las reglas respecto a la base de datos, identificando el conjunto de reglas que se pueden aplicar (aquellas que satisfacen su parte condición). 2. Si no se puede aplicar ninguna regla, se termina sin éxito; en caso contrario se elige cualquiera de las reglas aplicables y se ejecuta su parte acción (esto último genera nuevos hechos que se añaden a la base de datos). 3. Si se llega al objetivo, se ha resuelto el problema; en caso contrario, se vuelve al paso 1 A este enfoque se le llama también guiado por datos, porque es el estado de la base de datos el que identifica las reglas que se pueden aplicar. Cuando se utiliza este método, el usuario comenzará introduciendo datos del problema en la base de datos del sistema. Al encadenamiento regresivo se le suele llamar guiado por objetivos, ya que, el sistema comenzará por el objetivo (parte acción de las reglas) y operará retrocediendo para ver cómo se deduce ese objetivo partiendo de los datos. Esto se produce directamente o a través de conclusiones intermedias o subobjetivos. Lo que se intenta es probar una hipótesis a partir de los hechos contenidos en la base de datos y de los obtenidos en el proceso de inferencia. En la mayoría de los sistemas expertos se utiliza el encadenamiento regresivo. Este enfoque tiene la ventaja de que el sistema va a considerar únicamente las reglas que interesan al problema en cuestión. El usuario comenzará declarando una expresión E y el objetivo del sistema será establecer la verdad de esa expresión. Para ello se pueden seguir los siguientes pasos: 1. Obtener las reglas relevantes, buscando la expresión E en la parte acción (éstas serán las que puedan establecer la verdad de E) 56 2. Si no se encuentran reglas para aplicar, entonces no se tienen datos suficientes para resolver el problema; se termina sin éxito o se piden al usuario más datos. 3. Si hay reglas para aplicar, se elige una y se verifica su parte condición C con respecto a la base de datos. 4. Si C es verdadera en la base de datos, se establece la veracidad de la expresión E y se resuelve el problema. 5. Si C es falsa, se descarta la regla en curso y se selecciona otra regla. 6. Si C es desconocida en la base de datos (es decir, no es verdadera ni falsa), se le considera como subobjetivo y se vuelve al paso 1 (C será ahora la expresión E). Existen también enfoques mixtos en los que se combinan los métodos guiados por datos con los guiados por objetivos. Lección 20 4.3.6. Componente de ejecución de tareas El subsistema de ejecución de órdenes es la componente que permite al sistema experto iniciar acciones. Estas acciones se basan en las conclusiones sacadas por el motor de inferencia. Como ejemplos, un sistema experto diseñado para analizar el tráfico ferroviario puede decidir retrasar o parar ciertos trenes para optimizar el tráfico global, o un sistema para controlar una central nuclear puede abrir o cerrar ciertas válvulas, mover barras, etc., para evitar un accidente. La explicación de las razones por las que se inician estas acciones pueden darse al usuario mediante el subsistema de explicación. 4.3.7. Componente explicativo Explica al usuario la estrategia de solución encontrada y el porque de las decisiones tomadas. Las soluciones descubiertas por los expertos deber 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 sólo podrá ser controlada, naturalmente, por los expertos. Siempre es deseable que durante el trabajo de desarrollo del sistema se conozca el grado de progreso en el procesamiento del problema. Como se ha dicho anteriormente pueden surgir preguntas como las siguientes: ¿Qué preguntas se plantean y por qué? ¿Cómo ha llegado el sistema a soluciones intermedias? ¿Qué cualidades tienen los distintos objetos? A pesar de insistir sobre la importancia del componente explicativo es muy difícil y hasta ahora no se han conseguido cumplir todos los requisitos de un buen componente explicativo. Muchos representan el progreso de la consulta al sistema de forma gráfica. Además los componentes explicativos intentan justificar su función rastreando hacia atrás el camino de la solución. Aunque 57 encontrar la forma de representar finalmente en un texto lo suficientemente inteligible las relaciones encontradas depara las mayores dificultades. Los componentes explicativos pueden ser suficientes para el ingeniero del conocimiento, ya que está muy familiarizado con el entorno del procesamiento de datos, y a veces bastan también para el experto; pero para el usuario, que a menudo desconoce las sutilezas del procesamiento de datos, los componentes explicativos existentes son todavía poco satisfactorios. La mayoría de los sistemas expertos contienen un módulo de explicación, diseñado para aclarar al usuario la línea de razonamiento seguida en el proceso de inferencia. Si el usuario pregunta al sistema cómo ha alcanzado una conclusión, éste le presentará la secuencia completa de reglas usadas. Esta posibilidad de explicación es especialmente valiosa cuando se tiene la necesidad de tomar decisiones importantes amparándose en el consejo del SE. Además, de esta forma, y con el tiempo suficiente, los usuarios pueden convertirse en especialistas en la materia, al asimilar el proceso de razonamiento seguido por el sistema. El subsistema de explicación también puede usarse para depurar el SE durante su desarrollo. Por ejemplo, si un cajero automático decide rechazar la palabra clave (una acción), la máquina puede mostrar un mensaje (una explicación) como la siguiente: ¡Lo siento!, su palabra clave es todavía incorrecta tras tres intentos. Retenemos su tarjeta de crédito, para garantizar su seguridad. Por favor, póngase en contacto con su banco en horas de oficina. En muchos dominios de aplicaciones, es necesaria la explicación de las conclusiones debido a los riesgos asociados con las acciones a ejecutar. Por ejemplo, en el campo del diagnóstico médico, los doctores en últimas son responsables de los diagnósticos, independientemente de las herramientas técnicas utilizadas para sacar conclusiones. En estas situaciones, sin un subsistema de explicación, los doctores pueden no ser capaces de explicar a sus pacientes las razones de su diagnóstico. 4.3.8. La interfaz del usuario Sirve para que el usuario pueda realizar una consulta en un lenguaje lo más natural posible. Este componente es la forma en la que el sistema se presenta ante el usuario, y le permite describir el problema, interpreta sus preguntas, los comandos y la información ofrecida; a la inversa, formula la información generada por el sistema incluyendo respuestas a las preguntas, explicaciones y justificaciones, es decir, posibilita que la respuesta proporcionada por el sistema sea inteligible para el interesado. También puede solicitar más información al SE si le es necesaria. En algunos sistemas se utilizan técnicas de tratamiento del lenguaje natural para mejorar la comunicación entre el usuario y el SE. 58 Entonces, la interfaz de usuario es el enlace entre el sistema experto y el usuario. Por ello, para que un sistema experto sea una herramienta efectiva, debe incorporar mecanismos eficientes para mostrar y obtener información de forma fácil y agradable. Un ejemplo de la información que tiene que ser mostrada tras el trabajo del motor de inferencia, es el de las conclusiones, las razones que expliquen tales conclusiones y una explicación de las acciones iniciadas por el sistema experto. Por otra parte, cuando el motor de Inferencia no puede concluir debido, por ejemplo, a la ausencia de información, la interfase de usuario es un vehículo para obtener la información necesaria del usuario. Consecuentemente, una implementación inadecuada de la interfase de usuario que no facilite este proceso dragaría notablemente la calidad de un sistema experto. Otra razón de la importancia de la interfaz de usuario es que los usuarios evalúan comúnmente los sistemas expertos y otros sistemas por la calidad de dicha interfaz más que por la del sistema experto mismo, aunque no se debería juzgar la calidad de un libro por su portada. [Los estudiantes que estén interesados en el diseño de una interfase de usuario pueden consultar los libros de Shneiderman (1987) y Brown y Cunningham (1989).] Como en los anteriores componentes, también en este surgen dudas y preguntas, por ejemplo: ¿Cómo debe responder el usuario a las preguntas planteadas? ¿Cómo saldrán las respuestas del sistema a las preguntas que se le planteen? ¿Qué informaciones se representarán de forma gráfica? Los requisitos o características de la interfaz que se presenta al usuario al desarrollar el sistema se pueden resumir en: 1. El aprendizaje del manejo debe ser rápido. El usuario no debe dedicar mucho tiempo al manejo del sistema, debe ser intuitivo, fácil en su manejo. No debemos olvidar que nuestro sistema simula al comportamiento de un experto. Debe ser cómodo y relativamente sencillo en cuanto al manejo. 2. Debe evitarse en lo posible la entrada de datos errónea. Ejemplo: Cuando acudimos a un médico, le contamos y detallamos nuestros síntomas y el con sus preguntas junto con nuestras respuestas nos diagnostica nuestra "enfermedad". Imagínense que acudimos a un médico y le decimos que nos duele una pierna en lugar de un brazo, el diagnóstico será inútil. El ejemplo es muy exagerado pero demuestra la importancia en la correcta introducción de los datos al sistema. 3. Los resultados deben presentarse en una forma clara para el usuario. Si nuestro médico nos diagnostica un medicamento pero en nuestra receta no nos escribe cada cuantas horas hemos de tomarlo por ejemplo, por muy bueno que sea el medicamento, la solución a nuestro problema será 59 ineficiente por completo. Por eso se insiste en que los resultados debe ser claros y concisos. 4. Las preguntas y explicaciones deben ser comprensibles. Es necesario explicar al usuario en lenguaje natural porque se da cierta respuesta, de esta forma al usuario se le justifica una respuesta dada de forma comprensible. 4.4 ACTIVIDADES COMPLEMENTARIAS 1. Realice un cuadro comparativo de los usos mas destacados de los sistemas expertos. 2. Mediante un ejemplo identifique los elementos de un sistema experto para el diagnostico de enfermedades respiratorias en los humanos. 3. ¿Cuales son las capacidades de un sistema experto? 4. Describa algunas de las características limitantes de los sistemas expertos. 5. Identificar los elementos básicos de un sistema experto y describir el papel de cada uno de ellos. 60 CAPITULO 5. PROCESO DE DESARROLLO DE UN SISTEMA EXPERTO Lección 21 5.1 INTRODUCCIÓN Para desarrollar el software primero conocemos el equipo de gente necesario, después los métodos que y utiliza ese equipo de gente y por ultimo como prueban y construyen prototipos de software para terminar en el sistema final. 1. Equipos de desarrollo 1.1 Expertos 1.2 El ingeniero del conocimiento 1.3 El usuario 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 es un sistema experto que contiene una base de conocimientos vacía. Existe el mecanismo de inferencia, el componente explicativo y a veces también la interfaz del usuario. 3. construcción de prototipos La implantación de un prototipo de sistema experto que le permite llevar a cabo las funciones más importantes de éste, aunque con esfuerzo de desarrollo considerablemente inferior al de una implementación convencional. Este proceder se define bajo el nombre de “rapid prototyping”. 5.2 Desarrollo de un sistema experto Weiss y Kulikowski (1984) sugieren las etapas para el diseño e implementación de un sistema experto descritas en la Figura 2.5 Como ya se mencionó, los principales componentes de un SE son la base de conocimiento y el motor de inferencia. La metodología tradicional se enfoca principalmente a la construcción de dichos componentes. 1 Figura 2.5. Desarrollo de un Sistema Experto 5.2.1. La base de conocimiento La base de conocimiento es una base de datos que posee una información y unas reglas específicas sobre una materia o tema determinado. En la metodología tradicional, la base de conocimiento se conforma de objetos y atributos. Un objeto es una conclusión que es definida por sus atributos relacionados; y un atributo es una característica o cualidad específica que ayuda a definir un objeto. La base de conocimiento se puede ver como una lista de objetos con sus reglas y atributos asociados. En el sentido más simple, la regla que se aplica para un atributo determina si un objeto “tiene” o “no tiene” determinado atributo. Por lo que un objeto se define usando una lista de atributos que el objeto posea o no. Podemos decir que una base de conocimiento es una estructura de datos que contiene el conjunto de conocimiento especializado introducido por el experto del dominio (persona que domina el tema). Contiene una gran cantidad de información sobre un tema específico, generalmente introducido por un experto por dicho tema, sobre el cual se desarrolla la aplicación Este conocimiento lo constituye la descripción de: Objeto a tener en cuenta y sus relaciones. 2 Casos particulares o excepciones o diferentes estrategias de resolución con sus condiciones de aplicación (meta-conocimiento, es decir conocimiento sobre el conocimiento.) Se representa de una manera sencilla, mediante reglas de producción. Una regla es una instrucción condicionada que enlaza determinadas condiciones con acciones o resultados. La regla se crea por medio de construcciones <sientonces> cada regla constará de una parte denominada condición (premisas) que contiene las cláusulas que deben cumplirse para que la regla pueda ejecutarse y de una parte denominada acción (consecuencia) representa el resultado de la ejecución de dicha regla y las mismas pueden relacionarse dando lugar a nuevos hechos, entonces una regla tendrá la forma: Sí <condición> Entonces <acción> ó If <premisa> Then <conclusión> Ejemplo: If Latencia Distal >= 3.8 Then Latencia Distal Normal If Latencia Distal < 3.8 Then Latencia Distal Anormal Si (el termómetro marca 39º) Y (el termómetro funciona correctamente) Entonces el paciente tiene fiebre Una característica muy importante es que la base de conocimientos es independiente del mecanismo de inferencia que se utiliza para resolver los problemas. De esta forma, cuando los conocimientos almacenados se han quedado obsoletos, o cuando se dispone de nuevos conocimientos, es relativamente fácil añadir reglas nuevas, eliminar las antiguas o corregir errores en las existentes. No es necesario reprogramar todo el sistema experto. Las reglas suelen almacenarse en alguna secuencia jerárquica lógica, pero esto no es estrictamente necesario. Se pueden tener en cualquier secuencia y el motor de inferencia las usará en el orden adecuado que necesite para resolver un problema. Junto a cada regla, se almacena también su porcentaje en forma de probabilidad. Éste indica, mediante un tanto por ciento, el grado de certeza de las consecuencias que se obtienen como resultado de la aplicación de la regla de producción. Existen reglas de producción que no pertenecen al dominio del problema. Estas reglas se llaman meta-reglas (reglas sobre otras reglas) y su función es indicar bajo qué condiciones deben considerarse unas reglas en vez de otras. Un ejemplo de meta-regla es: SI hay reglas que usan materias baratas Y hay reglas que usan materias caras ENTONCES usar antes las primeras que las segundas 3 La base de datos o base de hechos es una parte de la memoria del ordenador que se utiliza para almacenar los datos recibidos inicialmente para la resolución de un problema. Contiene conocimiento sobre el caso concreto en que se trabaja. También se registrarán en ella las conclusiones intermedias y los datos generados en el proceso de inferencia. Al memorizar todos los resultados intermedios, conserva el vestigio de los razonamientos efectuados; por lo tanto, se puede utilizar explicar las deducciones y el comportamiento del sistema. Junto a cada regla, se almacena también su porcentaje en forma de probabilidad. 5.2.1.1. Cinco Pasos en la Construcción de una Base de Conocimientos (BC) Defina acerca de que va a hablar. Que su conocimiento del dominio sea suficiente para poder definir de que objeto y hechos es necesario hablar, y cuales habrá que ignorar. Escoja un vocabulario para predicado, funciones y constantes. Traduzca los conceptos importantes del nivel de dominio a nombres del nivel de lógica. El resultado es un vocabulario que se conoce como ontología del dominio. (Es una teoría particular de la naturaleza del ser o de la existencia ) Codifique todo el conocimiento en general relativo al dominio. La ontología es una lista informal de los conceptos de un dominio. Al elaborar oraciones lógicas o axiomas sobre los términos de la ontología se logran dos metas: Primero, se precisan los términos con el fin de que los humanos estén de acuerdo de su correspondiente interpretación; segundo, estamos ofreciendo condiciones que permitirán la ejecución de procedimientos e inferencia para deducir automáticamente consecuencias de la base de datos. Una vez obtenidos los axiomas, se puede decir que ya se produjo la BC. Habrá que realizar mucho trabajo de depuración. La principal diferencia entre la depuración de una BC y la de un programa consiste en que es más fácil revisar una sola oración lógica y determinar si es correcta. Las aseveraciones tienden a depender bastante del contexto. Codifique una descripción de un caso especifico del problema. Si la ontología se eligió adecuadamente este paso es muy sencillo, consiste en la obtención de oraciones atómicas. Haga consultas al procedimiento de inferencia y obtenga la respuesta: será el procedimiento de inferencia el que opere en los axiomas y los hechos concretos del problema para deducir así los hechos que nos interesa conocer. 5.2.1.2. Proceso Lógico de Carga de la Base de Conocimiento La base de conocimientos aloja la totalidad de las informaciones específicas relativas al campo del saber deseado, está escrita en un lenguaje específico de representación de los conocimientos que contiene y en el cual el experto puede definir su propio vocabulario técnico. A la inversa de lo que sucede en los programas clásicos, en la base de conocimientos las informaciones entran tal como llegan, ya que el orden no influye en los resultados obtenidos. Sucede así porque cada elemento de conocimiento es comprensible por sí mismo tomado de forma aislada y, por lo tanto, no es necesario referirse al contexto en el cual está 4 inserto. La información se representa, por regla general, mediante reglas de producción o redes semánticas. Las reglas de producción constituyen el método más utilizado para construir bases de conocimientos en los sistemas expertos. Llamadas también implicaciones lógicas, su estructura es la siguiente: para unas ciertas causas, unos efectos; o, para determinadas condiciones, ciertas consecuencias. Junto a cada regla, se almacena también su porcentaje en forma de probabilidad. Éste indica, mediante un tanto por ciento, el grado de certeza de las consecuencias que se obtienen como resultado de la aplicación de la regla de producción. En cuanto a las redes semánticas, se trata de un método de construcción de bases de conocimientos en el cual los conocimientos se muestran mediante un grafo en el que los vértices representan los conceptos u objetos y las aristas indican las relaciones entre ellos. Además el sistema dispone de la llamada base de hechos, que alberga los datos propios correspondientes a los problemas que se desea tratar con la ayuda del sistema. Asimismo, a pesar de ser la memoria de trabajo, la base de hechos puede desempeñar el papel de memoria auxiliar. La memoria de trabajo memoriza todos los resultados intermedios, permitiendo conservar el rastro de los razonamientos llevados a cabo. Puede, por eso, emplearse para explicar el origen de las informaciones deducidas por el sistema en el transcurso de una sesión de trabajo o para llevar a cabo la descripción del comportamiento del propio sistema experto. Al principio del período de trabajo, la base de hechos dispone únicamente de los datos que le ha introducido el usuario del sistema, pero, a medida que va actuando el motor de inferencias, contiene las cadenas de inducciones y deducciones que el sistema forma al aplicar las reglas para obtener las conclusiones buscadas. Lección 22 5.2.2. El motor de inferencia Para construir un motor de inferencia, existen tres métodos básicos: encadenamiento hacia adelante, encadenamiento hacia atrás y reglas de producción. 5.2.2.1. Método de encadenamiento hacia delante A este método se le llama conducido por datos, porque el motor de inferencia utiliza la información que el usuario le proporciona para moverse a través de una red de operadores AND y operadores OR hasta que encuentra un punto terminal que es el objeto. Si el motor de inferencia no puede encontrar un objeto que cumpla con los requisitos, el SE pide más información. Los atributos que definen al objeto crean un camino que conduce al mismo objeto: la única forma de alcanzar dicho objeto es satisfacer todas sus reglas. En resumen el sistema de encadenamiento hacia delante construye un árbol desde las hojas hasta la raíz, como se puede ver en la figura 2.6. 5 Atributo Atributo Atributo Atributo Objeto Figura 2.6 Método de encadenamiento hacia adelante 5.2.2.2. Método de encadenamiento hacia atrás. Este método es el contrario al método anterior. Un motor de inferencia de encadenamiento hacia atrás comienza con una hipótesis (objeto) y pide información para confirmarlo o negarlo. A este método se le llama conducido por objetos porque el SE empieza con un objeto e intenta verificarlo. En resumen, el encadenamiento hacia atrás poda un árbol, lo cual es lo contrario al método anterior, en el cual se construye un árbol, esto se muestra en la figura 2.7. Intenta objeto Atributo cumplido Atributo no cumplido Atributo cumplido Atributo no cumplido Atributo cumplido Atributo cumplido Objeto encontrado Figura 2.7. Encadenamiento hacia atrás 5.2.2.3. Método de reglas de producción Este método es una mejora al método de encadenamiento hacia atrás. La teoría operativa general es que el sistema pide como información aquella que elimine la mayor incertidumbre posible. El problema que existe con este método está en su 6 dificultad para llevarse a cabo, primeramente debido a que la base de conocimiento a menudo es tan grande que el número de combinaciones que el sistema puede soportar se rebasa fácilmente, por lo tanto, el sistema no puede determinar exactamente qué información eliminará una mayor incertidumbre. En segundo lugar, los sistemas de reglas de producción requieren que la base de conocimientos contenga no sólo la información objeto – atributo, sino además un valor cuantificador, lo que hace aun más difícil la construcción de la base de conocimientos. Lección 23 5.2.3. Construcción del Mecanismo de Inferencia Un motor de inferencia interpreta y evalúa los hechos en la base de conocimientos para proveer una respuesta. Este debe ser independiente del conocimiento y de los hechos. Se caracterizar por: El lenguaje en que ha sido escrito. La velocidad de trabajo: Inferencias / segundo. Las estrategias de búsqueda de soluciones: o No Ordenada: aleatoria, heurística. o Ordenada: Encadenamiento hacia adelante (guiado por los datos, deductivo), encadenamiento hacia atrás (guiado por los objetivos, inductivo). La forma en que elige el conocimiento. La posibilidad de incorporar metaconocimiento. El tipo de lógica que emplea en el razonamiento: o Booleana, trivalente, multivalente, difusa. o Monotónica o no monotónica. o Atemporal o temporal. o Lógica de orden 0, orden 0+, orden 1. El método que utiliza para la evaluación del conocimiento incompleto o incierto: o Determinístico. o Probabilístico. o Aproximado. o Difuso. En un sistema experto, dado un estado particular de la base de datos, se deben reconocer las reglas aplicables y esto se llama filtrado o identificación de patrones, operación especialmente larga, ya que muchos sistemas realizan una preselección de las reglas antes de que comience la identificación propiamente tal. Es decir, se considera un subconjunto de reglas y entre éstas, las aplicables. Esto, es lo que se llama restricción. 7 Adicionalmente puede existir una base de datos con información puntual sobre problemas específicos anteriormente resueltos por el sistema, y que se usa como información adicional en el proceso de inferencia. Una vez que las reglas han sido reconocidas deben ser elegidas, dependiendo de la estrategia de control, que es la selección y una vez estas han sido elegidas deben de ejecutarse. 5.2.3.1. Identificación de patrones Esta operación determina cuáles son las reglas potencialmente aplicables en un estado dado de la base de datos. Hay ciertos métodos típicos para resolver problemas mediante Inteligencia Artificial como: descomposición de problemas, inferencia deductiva, deducción lógica, etc. No es necesario que la búsqueda se aplique a todas las reglas, el sistema de control puede decidir cuáles no son necesarias a ese nivel. El filtrado significa tener el conocimiento para encontrar las reglas cuya precondición se satisfaga. Se debe comparar por tanto la precondición con la base de datos. Si es una regla deductiva "si premisa entonces conclusión", la parte a ser probada de la regla, se llama disparador o activador (tigger) es siempre una fórmula bien formada ya sea de lógica proposicional o de lógica de primer orden. Puede aplicarse a cualquier hecho. El único lenguaje que está totalmente basado en el cálculo de predicados es el PROLOG. Los procesos de identificación de patrones pueden mejorarse examinando, dentro del activador de cada regla, primero los predicados con más restricciones, es decir, los que tienen el menor número de variables libres. Otra forma de proceder es que, para cada regla o parte de su activador, se guarda en la memoria el resultado de las posibles unificaciones para cada parte del activador. Después de cada ciclo del motor de inferencia, esta memoria se actualiza y se denomina filtrado por propagación. 5.2.3.2. Ejecución de las reglas Después de la fase de filtrado, cuando una regla está reconocida como aplicable, teniendo en cuenta la base de datos existente, solo resta ejecutarla. Si hay varias posibles reglas, la elección la realiza la estrategia de control. La conclusión de la regla tiene por objeto modificar la base de conocimiento, creando, modificando o suprimiendo un hecho. 8 Lección 24 5.2.3.3. La fase de restricción En un sistema dirigido por los datos, el filtrado consiste en retener todas las reglas cuyas premisas son verdaderas teniendo en cuenta los hechos (verdaderos) presentes en la base de datos. Este sistema funciona en encadenamiento hacia delante. Si el sistema es a la vez dirigido por los datos y por los objetivos, se denomina mixto. La restricción también puede estar especificada explícitamente por el experto para utilizar reglas dentro de las reglas, es decir, meta reglas. Indica qué grupo de reglas debe ser retenido, por prioridad, o definir un orden en los subconjuntos de las reglas. El conocimiento puede organizarse en forma de red como en las redes semánticas utilizadas en el análisis sintáctico del lenguaje. Su posición dentro de la red dirige las restricciones utilizando heurísticas. Esta formulación es particularmente eficiente si se establece válidamente una organización jerárquica del conocimiento, en este caso existiría una taxonomía de los hechos. Otro modo de gobernar las restricciones es organizar las reglas en paquetes o esquemas, lo que genera una estructura de árbol en reglas, lo que es una ventaja. Todos estos modos dependen de la forma en que está representado el conocimiento. 5.2.3.4. La fase de selección Como después de las fases anteriores quedan varias reglas se debe seleccionar una y luego de procesada el programa debe saber dónde volver. Cuando hay una o más reglas, se usan dos estrategias: La búsqueda en anchura, que elige una, generalmente la primera y se van ejecutando por turno antes de comprobar que se ha alcanzado la condición final. Si no es así se inicia otro ciclo del motor de inferencia. Este tipo de búsqueda es exhaustiva y la usa el sistema experto MYCIN. Otra estrategia es la de elegir una regla entre las aplicables por medio de una heurística, procesarla y modificar la base de datos. Si no se alcanza la condición final, comienza otro ciclo del motor de inferencia. Es por lo tanto, una estrategia en profundidad. Cada una de las estrategias pueden ser irrevocables o avanzar por prueba y error. 9 Muchos sistemas efectúan marcha atrás, si no hay regla aplicable, pero si el sistema está bajo un control irrevocable se detendrá. Ejemplos Ejemplo No. 1 Un ejemplo sencillo que ilustra cómo representar conocimiento a través de reglas: Afirmación: Todos los catedráticos son doctores. Representación Lógica - Matemática: En esta representación la variable x constituye el conjunto de todas las personas posibles, CATEDRÁTICO representa la relación "SER CATEDRÁTICO" y DOCTOR la de "SER DOCTOR". De esta manera la regla anterior representa el hecho: Para toda persona x, Si x es catedrático entonces x es doctor. Representación en SE: SI (x ES CATEDRÁTICO) ENTONCES (x ES DOCTOR) En este caso CATEDRÁTICO y DOCTOR representan de nuevo relaciones que deben estar representadas sobre el sistema. Ejemplo No. 2 Una Regla es: Si p y q entonces r p y q son justo aquellos hechos que se mencionan en la cláusula "si" de la regla, es decir, las condiciones para la aplicabilidad de la regla. Aplicar la regla es: deducir de los hechos p y q el hecho r. En un sistema experto existirá un hecho sólo cuando esté contenido en la base de conocimientos. Cuando se aplica una regla sobre algunos hechos cualesquiera se dice que se dispara. El disparo de una regla provoca la inserción del nuevo hecho en la base de conocimientos. Ante problemas o clases de problemas distintos se estructuran, como es lógico, diferentes mecanismos de inferencia. El mecanismo de inferencia debe de estar "adaptado" al problema a solucionar. Una imposición de dinero exige, bajo ciertas circunstancias, una estrategia distinta de procesamiento del conocimiento que un diagnóstico de fallos de máquina. 10 Lección 25 5.2.4. Ejemplo de Funcionamiento del Motor de Inferencia Para ilustrar cómo trabajan los procedimientos de inferencia, se supondrá un sistema que contiene las siguientes reglas en la base de conocimiento: R1: SI abrigo ENTONCES bingo R2: SI chaqueta ENTONCES dentista R3: SI bingo ENTONCES esposa Enfoque guiado por datos (o encadenamiento hacia adelante): El problema es determinar si se da esposa sabiendo que se cumplen abrigo y chaqueta. Lo primero que se hace es introducir en la base de datos abrigo y chaqueta: B.D. = {abrigo, chaqueta} El sistema identifica las reglas aplicables: R = {R1, R2} Selecciona R1 y la aplica. Esto genera bingo que se añade a la base de datos: B.D. = {abrigo, chaqueta, bingo} Como no se ha solucionado el problema, vuelve a identificar un conjunto de reglas aplicables (excepto la ya aplicada, que no cambiaría el estado de la base de datos): R = {R2, R3} Selecciona y aplica R2 quedando: B.D. = {abrigo, chaqueta, bingo, dentista} El problema todavía no se ha solucionado, luego el sistema selecciona otro conjunto de reglas aplicables: R = {R3} Seleccionando y aplicando R3, la base de datos queda: B.D. = {abrigo, chaqueta, bingo, dentista, esposa} Como esposa se encuentra en ella, se ha llegado a la solución del problema. 11 Enfoque guiado por objetivos (o encadenamiento hacia atrás): Se quiere determinar si se cumple esposa teniendo en la base de datos abrigo y chaqueta: B.D. = {abrigo, chaqueta}. El conjunto de reglas aplicables en este caso será: R = {R3} (R3 es la única que tiene esposa en su parte derecha). Se selecciona R3 y se genera bingo. Como no se encuentra en la base de datos ( no es verdadero ni falso) se le considera como subobjetivo. El sistema intentará ahora probar bingo. Identifica las reglas aplicables: R = {R1}. Aplica R1 y se obtiene abrigo que es verdadero en la base de datos. De esta forma, se prueba el subobjetivo, y al probar éste, se prueba esposa resolviendo el problema. El motor de inferencias, es un programa que, mediante el empleo de los conocimientos puede resolver el problema que está especificado. Lo resuelve gracias a los datos que contiene la base de hechos del sistema experto. Por regla general, el tipo de reglas que forman la base de conocimientos es tal que, si A es válido, puede deducirse B como conclusión. En este caso, la tarea que lleva a cabo el motor de inferencias es la de seleccionar, validar y activar algunas reglas que permiten obtener finalmente la solución correspondiente al problema planteado. El sistema experto establecido se compone, por lo tanto, de dos tipos bien diferenciados de elementos, los propios del campo de los expertos relacionados con el problema concreto (es decir, la base de conocimientos y la base de hechos) y el que se puede aplicar de forma general a una gran variedad de problemas de diversos campos (como el caso del motor de inferencias). Sin embargo, el motor de inferencias no es un mecanismo universal de deducción, ya que hay dos tipos: los que emplean el razonamiento aproximativo (para el cual el resultado puede ser erróneo) y aquellos que emplean un tipo de razonamiento capaz de obtener un resultado (si llegan a él), con toda seguridad, verdadero. Los métodos generales desarrollados para la resolución de problemas y técnicas de búsqueda al inicio de la era de la Inteligencia Artificial demostraron no ser suficientes para resolver los problemas orientados a las aplicaciones, ni fueron capaces de satisfacer los difíciles requerimientos de la investigación. A este conjunto de métodos, procedimientos y técnicas, se lo conoce como Inteligencia Artificial Débil. La principal conclusión que se derivó de este trabajo 12 inicial fue que los problemas difíciles sólo podrían ser resueltos con la ayuda del conocimiento específico acerca del dominio del problema. La aplicación de estas ideas dio lugar al desarrollo de los denominados Sistemas Basados en Conocimiento (Knowledge Based Systems) y al aparecimiento de la Ingeniería Cognoscitiva, como una rama de la Inteligencia Artificial, que estudia los sistemas basados en el conocimiento. 13 CAPITULO 6. SISTEMAS EXPERTOS BASADOS EN CONOCIMIENTO Lección 26 6.1 Definición de sistemas basados en conocimiento La definición de un sistema basado en conocimiento (SBC) puede ser la siguiente: Es un sistema computarizado capaz de resolver problemas en el dominio en el cual posee conocimiento específico. La solución es esencialmente la misma que hubiera dado un ser humano confrontado con idéntico problema, aunque no necesariamente el proceso seguido por ambos puede ser igual. El simple concepto dado, puede causar confusión ya que muchos sistemas basados en programas convencionales podrían ser incorrectamente categorizados como sistemas basados en conocimiento. Esta inconsistencia puede ser aclarada, sobre la base de tres conceptos fundamentales que distinguen a los sistemas basados en conocimiento de los programas algorítmicos convencionales y de los programas generales basados en búsqueda. Inteligencia Artificial débil. Primero, la separación del conocimiento y el modo en que es usado. Segundo, la naturaleza del conocimiento empleado (heurística antes que algorítmica). Tercero, El uso de conocimiento específico de un determinado dominio. 6.2 Características principales de sistemas basados en conocimiento Las características mas sobresalientes de este tipo de sistemas son: Amplia difusión del conocimiento Fácil modificación Respuestas coherentes Disponibilidad casi completa Conservación del conocimiento Capacidad de resolver problemas disponiendo de información incompleta Capacidad de explicar los resultados y la forma de obtenerlos 6.3 Principales Problemas Los principales problemas asociados a este método son: Las soluciones no siempre son las mejores o correctas. Conocimiento limitado frente al dominio de un experto. Carecen del sentido común o criterio que puede tener un experto. 1 Difícil extraer todo el conocimiento que maneja un experto. Experiencia, Habilidades y Conocimiento. Los tipos de experiencia que son de interés en los sistemas basados en conocimiento, pueden ser clasificados en tres categorías: asociativa, motora y teórica. Los sistemas basados en conocimiento son excelentes para representar conocimiento asociativo. Este tipo de experiencia refleja la habilidad heurística o el conocimiento que es adquirido mayoritariamente, a través de la observación. Puede ser que no se comprenda exactamente lo que ocurre al interior de un sistema (caja negra), pero se pueden asociar entradas o estímulos con salidas o respuestas, para resolver problemas que han sido previamente conocidos. La experiencia motora es más física que cognitiva. La habilidad se adquiere fundamentalmente a través del ejercicio y la práctica física constante. Los sistemas basados en conocimiento no pueden emular fácilmente este tipo de experiencia, principalmente por la limitada capacidad de la tecnología robótica. La experiencia teórica y el conocimiento profundo permite que los humanos puedan resolver problemas que no se han visto antes, es decir, no existe una posibilidad asociativa. El conocimiento teórico y profundo se adquiere a través de estudio y entrenamiento formal, así como por medio de la resolución directa de problemas. Debido a su naturaleza teórica, este conocimiento se puede olvidar fácilmente, a no ser que se use en forma continua. Al momento, los sistemas convencionales basados en conocimiento tienen muchas dificultades para duplicar este tipo de experiencia. Sin embargo, los Sistemas de Razonamiento Basado en Modelos representan un notable intento de encapsular este conocimiento profundo y razonar con él. Lección 27 6.4 Estructura de los sistemas basados en conocimiento La arquitectura de un sistema basado en conocimiento de alguna manera refleja la estructura cognitiva y los procesos humanos. La primera parte es la memoria de largo plazo, en la que guarda los hechos (Base de Hechos) y los conocimientos (Base de Conocimientos) acerca del dominio en el que tiene experiencia. 2 Figura 2.8. Sistema Basado en conocimiento La segunda parte es el sistema que realiza la función de razonamiento para resolver problemas (Motor de Inferencia). Finalmente, la tercera parte la conforman las unidades de entrada y salida que permiten la comunicación entre el sistema y su entorno. La representación del conocimiento determina el desarrollo de un sistema experto e influye en las estrategias de control. Es muy versátil, hay muchas formas de hacerlo y es complicada la elección. Generalmente la elección está basada en la intuición o en las especiales circunstancias del problema. La adquisición del conocimiento desde un experto depende de la cantidad y de su adecuada representación. Se deben conocer los límites, pues sólo llegan hasta donde son capaces de resolver un problema. Esto implica, que tiene que circunscribirse a un dominio homogéneo. El lenguaje de programación debe ser adecuado, se usan principalmente el LISP y PROLOG, que difieren de los lenguajes clásicos en que sus reglas (que también contienen hechos) entran masivamente, y que el programa, es decir, el motor de inferencia, encontrará el camino a través de reglas. Por otra parte, la programación es importante en esta etapa de desarrollo y para ello existen dos modos que son teóricamente iguales, pero en la práctica difieren: La programación declarativa es un tipo de programación implantada en los sistemas expertos y por ciertos lenguajes. La principal diferencia es que en la 3 declarativa las reglas se formulan independientemente de su secuencia de aplicación. El modo en que se ejecutan las reglas corresponde al motor de inferencia y es independiente de las reglas en sí mismas. En la programación procedural o procedimental, las reglas se implantan y ejecutan en un orden establecido consiste en una cuidadosa descripción de los algoritmos que marcan el camino de los diferentes procedimientos y funciones en los programas. Las ventajas en los sistemas expertos es la modularidad, no hay un solo camino para responder a un problema y son fáciles de leer, lo que simplifica comprobar su consistencia. Lección 28 6.4.1. Fases en la adquisición del conocimiento Identificación del problema. Estructuración del conocimiento. La arquitectura del sistema y la maqueta. El prototipo y terminación del sistema. 6.4.2. Tecnología de los Sistemas Basados en Conocimiento Desde el punto de vista tecnológico, los sistemas basados en conocimiento pueden presentar varias formas de aplicación: Aislada: un Sistema Basado en Conocimiento único se relaciona con el entorno. Integrada: varios Sistemas Basados en Conocimiento conectados a bases de conocimiento comunes. Tipo Front-End cuando todos los hechos y datos están físicamente en la base común. Tipo Back-End cuando los hechos y datos necesarios que no estén en las bases comunes, pueden obtenerse de otros SBC. Embebida: un Sistema Basado en Conocimiento está integrado con otros sistemas y no se lo distingue. Lección 29 6.5 Metodologías para la construcción de SE 6.5.1. Metodología de Prototipos En el desarrollo de sistemas expertos se nos plantean dos importantes riesgos: 4 No existen implementaciones similares que puedan servir de orientación al encargado del desarrollo en casi la totalidad de los casos. 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 de la interfaz del software y de la funcionalidad de los componentes. Durante el desarrollo, resulta apropiado empezar con implementaciones 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 sistema experto que permita llevar a cabo las funciones más importantes de éste, aunque con un esfuerzo de desarrollo considerablemente inferior al de una implementación convencional. Este proceder se define bajo el nombre de ‘Rapid Prototyping’. Para sistemas expertos, el ‘Rapid Prototyping’ es el procedimiento más adecuado, pues posibilita una rápida reacción a los deseos en constante cambio tanto por parte de los expertos como parte del usuario. 6.5.2. Metodología Orientada a Objetos La programación orientada a objetos (POO en adelante) es un tipo de programación que provee una manera de modularizar programas estableciendo áreas de memoria particionadas para datos y procedimientos, que pueden ser usadas como plantillas para crear copias de tales módulos conforme se requieran. Cada área de memoria a la que se refiere en el párrafo anterior es conocida como clase, mientras que las copias creadas a partir de la clase son llamadas objetos. La POO tiene varias propiedades, entre los cuales destacan: Abstracción. Permite enfocarse en la solución general del problema, sin preocuparse de los detalles. Encapsulación. Es el concepto de que un objeto debería tener separada su interfaz de su implementación. Es decir, un objeto es visto como una “caja negra”. Polimorfismo. Significa que un objeto se puede comportar de diversas maneras, dependiendo del contexto en el que se encuentre. Herencia. Significa que se pueden crear clases que “hereden” el comportamiento de una o más clases padre; y que además añadan su propio comportamiento. El concepto de encapsulación evita que se pueda modificar el estado interno de un objeto por el código cliente que lo utiliza, es decir solamente el código mismo del objeto puede modificar el estado interno del mismo. Esto se puede aprovechar en 5 la construcción de SE creando clases que correspondan a los componentes de un SE. Por lo tanto si se utiliza la metodología orientada a objetos a la construcción de SE, se debe crear una clase que contenga el código referente a la base de conocimiento. Si dicha base de conocimiento es un conjunto de objetos con sus propiedades, entonces dicha clase será una clase contenedor de objetos de otra clase, los cuales contendrán el nombre del objeto y una lista de atributos. Objeto Objeto Atributo Atributo Atributo Objeto Atributo Atributo Atributo Objeto Atributo Atributo Atributo Objeto Atributo Atributo Atributo Objeto Atributo Atributo Atributo Atributo Atributo Atributo Figura 2.9. La base de conocimientos es vista como un objeto contenedor de otros objetos usando la Metodología Orientada a Objetos Obviamente, la clase Base de Conocimiento deberá tener todo el código necesario para leer los objetos, quizá de una base de datos, quizá de un archivo, guardar los objetos, ingresar nuevos objetos o atributos, eliminar objetos o atributos, etc. De manera similar, el motor de inferencia se implementa como una clase, la cual contiene encapsulada toda la lógica que hace que funcione el SE, es decir si se implementa usando encadenamiento hacia adelante, encadenamiento hacia atrás o reglas de producción, dicha implementación estará contenida dentro de la clase. Esta metodología tiene diversas ventajas, entre las cuales destaca el hecho que cualquier modificación o mantenimiento que se le quiera realizar a un determinado componente no afectará al otro y viceversa. Tello propone crear especializaciones o jerarquías de clases (usando herencia) que incluyan métodos que permitan a los objetos modificarse a sí mismos, logrando con esto que un SE aprenda por sí mismo, modificando su base de conocimiento sin modificar los demás componentes. Otra ventaja de la POO es que mediante la herencia, las clases hijas heredarán el comportamiento de las clases padres, evitando con esto, tener que incluir código redundante en las especializaciones. 6 Lección 30 6.6 Ejemplo de Construcción de Un SE, Problema de Monitorización32 6.6.1. Árboles de decisión Paradigma útil para resolver problemas de clasificación ofrecen la solución a un problema a partir de un conjunto de respuestas predeterminadas: Adecuado para clasificación, diagnóstico No adecuado para planificación, o diseño Reducen el conjunto de posibles soluciones mediante una serie de decisiones o cuestiones que podan el espacio de búsqueda33 No Es una serpiente Nodo respuesta Nodo respuesta ¿Es un animal de sangre caliente? Nodo decisión Es un perro No Si ¿El animal ronronea? Nodo decisión Es un gato Si Nodo respuesta Figura 2.10. Representación de dispositivos para el problema en la planta de procesamiento 6.6.2. Árboles de decisión que aprenden Algoritmo Resuelve-Árbol-y-Aprende Establece como nodo actual en el árbol el nodo raíz; MientrasQue el nodo actual es de decisión hacer Preguntar la pregunta del nodo actual; Si la respuesta es si entonces Establece como actual el nodo de la rama si sino Establece como actual el nodo de la rama no fsi; fmq; Preguntar si la respuesta en el nodo actual es correcta; Si la respuesta es correcta entonces Determina respuesta correcta sino Pide la respuesta correcta; Pide qué pregunta cuando se responda “si” distinguirá la respuesta del nodo actual de la repuesta correcta; Reemplaza el nodo respuesta por un nodo decisión que tiene como rama no el nodo respuesta actual y como rama si 32 J.A. Bañares Bañares. 1999. Resolución de Problemas en LBR. Departamento de Informática e Ingeniería de Sistemas C.P.S. Universidad de Zaragoza 33 Ibd 73 7 la respuesta correcta. La pregunta del nodo de decisión es la que distingue los dos nodos respuesta. fsi; Fin. Nodo de árbol de decisión (deftemplate nodo (slot nombre) (slot tipo) (slot pregunta) (slot nodo-si) (slot nodo-no) (slot respuesta)) Árbol inicial (nodo (nombre raíz) (tipo decisión) (pregunta "Es un animal de sangre caliente?") (nodo-si nodo1) (nodo-no nodo2)) (nodo (nombre nodo1) (tipo decisión) (pregunta "El animal ronronea?") (nodo-si nodo3) (nodo-no nodo4)) (nodo (nombre nodo2) (tipo respuesta) (respuesta serpiente)) (nodo (nombre nodo3) (tipo respuesta) (respuesta gato)) (nodo (nombre nodo4) (tipo respuesta) (respuesta perro)) Regla para inicializar árbol (defrule inicializa (not (nodo (nombre raiz))) => (load-facts "ANIMAL.DAT") (assert (nodo-actual raiz))) Reglas que preguntan cuestión asociada a nodo decisión (defrule pide-decision-nodo-pregunta ?nodo <- (nodo-actual ?nombre) (nodo (nombre ?nombre) (tipo decision) (pregunta ?pregunta)) (not (respuesta ?)) => (printout t ?pregunta " (si o no) ") (assert (respuesta (read)))) (defrule respuesta-incorrecta ?respuesta <- (respuesta ~si&~no) => 8 (retract ?respuesta)) 6.6.3. Definición del problema Una planta de procesamiento contiene varios dispositivos que deben ser monitorizados. Cada dispositivo tiene uno o más sensores que ofrecen valores numéricos que indican la salud del dispositivo El programa de monitorización debe 1. Leer los valores de los sensores 2. Evaluar las lecturas, 3. Emitir alarmas o parar dispositivos Acciones para realizar el monitor Tabla 6.1 Acciones que debe realizar el monitor Valor del Sensor valor <= línea roja baja línea roja baja < valor <= línea guarda baja línea guarda baja > valor < línea guarda alta línea guarda alta >= valor < línea roja alta valor >= línea guarda alta Acción PARADA dispositivo Da ALARMA o PARADA dispositivo Ninguna Da ALARMA o PARADA dispositivo PARADA dispositivo 6.6.4. Proceso del desarrollo del programa Proceso iterativo Se parte de la descripción general del problema y se van incorporando detalles específicos. Técnica Gracias a las técnicas de desarrollo iterativas que soportan los SE’s, es posible construir prototipos a partir de problemas con especificaciones pobres. • Se realiza un prototipo • Se apuntan los detalles que faltan en la especificación • Se consulta con el experto los detalles y se elabora otro prototipo Detalles necesarios para empezar • Decisiones sobre la implementación: • Reglas generales que permitan incorporar nuevos dispositivos y sensores fácilmente, en lugar de reglas específicas. • Detalles sobre el flujo de control • 3 Fases por ciclo: Lectura sensores, Análisis valores, acciones • Lectura sensores: • Posibilidades: 9 -¿Lectura directa del sensor? - ¿Simulación de los valores de los sensores? - ¿El valor está disponible cuando se requiere? - ¿Puede dar una lectura incorrecta el sensor? Durante el desarrollo se debe mantener • Una lista de asunciones • Lista de preguntas • Posibles inconsistencias relacionadas con la especificación • Lista inicial de asunciones del problema de monitorización • Los datos de los sensores siempre están disponibles y son fiables • Los valores de los sensores se podrán leer directamente de éstos. Se debería soportar el uso de valores de sensores simulados. • Los valores de sensores de dispositivos parados no se monitorizarán. • El programa de monitorización realiza las acciones especificadas: ALARMA o PARADA de dispositivos. El problema de divide en tres fases - Lectura de los valores de los sensores - Análisis de los valores - Acciones • También se debe mantener una lista de detalles sobre decisiones de implementación • Como representar la información, el control y la depuración del programa Implementación y Representación Sensor S1 Sensor S2 Dispositivo D1 Sensor S3 Dispositivo D2 Sensor S4 Sensor S5 Dispositivo D3 Sensor S6 Dispositivo D4 Figura 2.11. Representación de dispositivos para el problema en la planta de procesamiento34 34 J.A. Bañares Bañares. 1999. Resolución de Problemas en LBR. Departamento de Informática e Ingeniería de Sistemas C.P.S. Universidad de Zaragoza 10 6.7 ACTIVIDADES COMPLEMENTARIAS 1. Explique las funciones que realiza cada uno de los miembros del equipo de desarrollo de un sistema experto. 2. ¿A quien se le considera un experto? Y ¿porque? 3. Cual es la función del usuario en el desarrollo de un sistema experto 4. ¿Que es una regla y para que son usadas en la base de conocimientos? 5. ¿Qué es una base de conocimientos y que es un motor de inferencia? ¿Cuál es la diferencia entre ellos? 6. Realice un cuadro comparativo entre los métodos básicos para construir un motor de inferencia. 7. ¿Que es el metaconocimento? 8. ¿Qué es la modularidad? Y ¿porque es una ventajas de los sistemas expertos? 9. Realice un cuadro comparativo entre las metodologías para la construcción de SE. 10. Realice un mapa conceptual que resuma la unidad. 11 UNIDAD 3. APRENDIZAJE DE LOS SISTEMAS EXPERTOS CAPITULO 7. TIPOS DE SISTEMAS EXPERTOS Lección 31 7.1 Sistemas Basados en Reglas En nuestra vida diaria encontramos muchas situaciones complejas gobernadas por reglas deterministas: sistemas de control de tráfico, sistemas de seguridad, transacciones bancarias, etc. Los sistemas basados en reglas son una herramienta eficiente para tratar estos problemas. Las reglas deterministas constituyen la más sencilla de las metodologías utilizadas en sistemas expertos. La base de conocimiento contiene el conjunto de reglas que definen el problema, y el motor de inferencia saca las conclusiones aplicando la lógica clásica a estas reglas. Los sistemas basados en reglas son los más utilizados por su simplicidad y similitud con el razonamiento humano, han contribuido para su popularidad en diferentes dominios. Las reglas representan de forma correcta conocimiento. Los Sistemas Basados en Reglas son una herramienta eficiente para tratar muchas situaciones complejas gobernadas por reglas deterministas, sistemas de control de tráfico, sistemas de seguridad, transacciones bancarias, etc. La base de conocimiento contiene el conjunto de reglas que definen el problema y el motor de inferencia saca las conclusiones aplicando la lógica clásica a estas reglas.35 Las reglas representan el conocimiento utilizando un formato SI-ENTONCES (IF-THEN), es decir tienen 2 partes: La parte SI (IF), es el antecedente, premisa, condición o situación. La parte ENTONCES (THEN), es el consecuente, conclusión, acción o respuesta. Las reglas pueden ser utilizadas para expresar un amplio rango de asociaciones, una declaración de que algo es verdadero o es un hecho conocido, es una afirmación. El conjunto de afirmaciones se conoce frecuentemente con el nombre de base de afirmaciones. De igual forma, al conjunto de reglas se lo denomina base de reglas. Un sistema basado en reglas utiliza el modus ponens para manipular las afirmaciones y las reglas durante el proceso de inferencia. Mediante técnicas de búsqueda y procesos de unificación, los sistemas basados en reglas automatizan sus métodos de razonamiento y proporcionan una progresión lógica desde los 35 El Concepto es tomado del documento: Inteligencia Artificial. 2003. Arrua Luciana. Meza Fernández Eduardo. 1 datos iniciales, hasta las conclusiones deseadas. Esta progresión hace que se vayan conociendo nuevos hechos o descubriendo nuevas afirmaciones, a medida que va guiando hacia la solución del problema. En consecuencia, el proceso de solución de un problema en los sistemas basados en reglas va realizando una serie de inferencias que crean un sendero entre la definición del problema y su solución, es por estas razones que utilizaremos el conocimiento basado en reglas para nuestro objeto bajo estudio. Las inferencias están concatenadas y se las realiza en forma progresiva, por lo que se dice que el proceso de solución origina una cadena de inferencias.36 Una regla es una afirmación lógica que relaciona dos o más objetos e incluye dos partes, la premisa y la conclusión. Cada una de estas partes consiste en una expresión lógica con una o mas afirmaciones objeto-valor conectadas mediante los operadores lógicos y, o, o no.37 En un sistema basado en reglas la representación del conocimiento formaliza y ordena el conocimiento. Una representación ampliamente usada es la regla de producción, o simplemente regla. Una regla consiste en: una parte SI, y otra parte ENTONCES (también llamada como una condición y una acción). Las listas de partes SI son un conjunto de condiciones en una cierta combinación lógica. La porción del conocimiento representado por la regla es relevante a la línea del razonamiento que es convertido si la parte SI de la regla está satisfecha; por lo tanto, la parte ENTONCES puede ser concluida, o su acción de solucionar el problema, ser tomada. 38 En los sistemas basados en reglas intervienen dos elementos importantes: Los datos: Están formado por la evidencia o los hechos conocidos en una situación particular. Este elemento es dinámico, es decir, puede cambiar de una aplicación a otra, por lo tanto no es de naturaleza permanente y se almacena en la memoria de trabajo. En situaciones deterministas, las relaciones entre un conjunto de objetos pueden ser representadas mediante un conjunto de reglas. El conocimiento: Se almacena en la base de conocimiento y consiste en un conjunto de objetos y un conjunto de reglas que gobierna las relaciones entre esos objetos. La información almacenada en la base de conocimiento es permanente y estática, es decir, no cambia de una aplicación a otra, a menos que se incorporen al sistema experto elementos de aprendizaje. Las reglas componen la base de conocimiento y las mismas pueden relacionarse dando lugar a nuevos hechos y contienen los siguientes procesos. 36 Sistemas Expertos y Modelos de Redes Probabilísticas. Enrique Castillo, José Manuel Gutiérrez, y Ah S. Hadi. 37 Castillo, Enrique. Gutiérrez, José Manuel Sistemas Expertos y Modelos de Redes Probabilísticas 38 Pignani Juan Manuel. (2000). Informática aplicada a la Ingeniería de Procesos 1. Universidad Tecnológica Nacional, Facultad Regional Rosario. España. 2 a. El proceso lógico de carga: En esta fase se determinan las reglas y se incorporan a la base de conocimientos. Figura 3.1 Proceso lógico de carga de la Base de conocimiento.39 Si no existe al menos una regla que contenga ese hecho debemos determinarla ya que de no ser así, ese hecho estaría de más en la base de hechos. b. El proceso de inferencia Durante la inferencia puedo verificar o deducir hechos. En la verificación de un hecho el proceso está dirigido por los objetivos mientras que en la deducción está dirigido por los datos. Figura 3.2. Proceso de inferencia de carga de la base de hechos40 39 Fuente: Dennis, Alonso.(2001) Sistemas Expertos. Documento en línea URL(http://es.geocities.com/denisalonso2001/SISTEMAS_EXPERTOS.htm) 3 Por medio de cascadas de órdenes, se explica estos dos procesos. VERIFICACIÓN DE UN HECHO Una vez tomado un hecho, se produce el encadenamiento hacia atrás. Es decir, se parte de la premisa para llegar a los datos. DEDUCCIÓN DE UN HECHO En este proceso, primero se requieren los datos para analizar la premisa. O sea, partimos del: IF < condición > Para tomar luego la decisión de continuar o no con él: THEN < conclusión > La conclusión de una regla puede constituirse en condición de la premisa necesaria para otra regla y seguir así sucesivamente. Hasta llegar al resultado final de la inferencia.41 El siguiente ejemplo corresponde a un sistema experto basado en reglas IF-THEN, que describen como es que cada posibilidad podría ser seleccionada. La regla rompe el problema en sub-problemas. Por ejemplo, las siguientes reglas formarían parte de un SE para identificar aves: 42 IF Familia es albatros AND Color es blanco THEN Ave es albatros laysan. IF Familia es albatros AND Color es negro THEN Ave es albatros de pies negros. El sistema puede usar otras reglas para resolver las sub-metas planteadas por las reglas de alto nivel, por ejemplo: IF Orden es tubonasales AND Tamaño es grande AND Alas es grandes anguladas THEN Familia es albatros. 40 Fuente: Dennis, Alonso.(2001) Sistemas Expertos. Documento en línea http://es.geocities.com/denisalonso2001/SISTEMAS_EXPERTOS.htm 41 BENCHIMOL, G y otros (1990) Los Sistemas Expertos en la Empresa. Ed. Macrobit, México 42 Guerra Hernández, Alejandro. Metodología de Programación I Sistemas Expertos. Departamento de Inteligencia Artificial. Universidad Veracruzana. México. 2006. 4 7.1.1. Base del conocimiento Los datos están formados por la evidencia o los hechos conocidos en una situación particular. Este elemento es dinámico, es decir, puede cambiar de una aplicación a otra. Por esta razón, no es de naturaleza permanente y se almacena en la memoria de trabajo. En situaciones deterministas, las relaciones entre un conjunto de objetos pueden ser representadas mediante un conjunto de reglas. El conocimiento se almacena en la base de conocimiento y consiste en un conjunto de objetos y un conjunto de reglas que gobiernan las relaciones entre esos objetos. La información almacenada en la base de conocimiento es de naturaleza permanente y estática, es decir, no cambia de una aplicación a otra, a menos que se incorporen al sistema experto elementos de aprendizaje. Para dar una idea intuitiva de lo que es una regla, supóngase que se tiene un conjunto de objetos y, por simplicidad, que cada objeto puede tener uno y sólo uno de un conjunto de posibles valores. Ejemplos de objetos con sus posibles valores se dan en la Tabla 7.1 Tabla 7.1 Un ejemplo de objetos con sus posibles valores Objeto Conjunto de Valores Posibles Nota {0,1,...,10} Calificación {sobresaliente, notable, aprobado, suspenso} Puesto {0,1,...,100} Admitir {si, pendiente, no} Notificar {sí, no} Ejemplos de reglas: Regla 1: Si nota > 9, entonces calificación = sobresaliente. Regla 2: Si puesto < 20 o nota > 7, entonces Admitir = si y Notificar =si. Cada una de las reglas anteriores relaciona dos o más objetos y está formada por las partes siguientes: La premisa de la regla, que es la expresión lógica entre las palabras clave si y entonces. La premisa puede contener una o más afirmaciones objeto-valor conectadas con operadores lógicos y, o, o no. Por ejemplo, la premisa de la Regla 1 consta de una única afirmación objeto-valor, mientras que las premisas de la Regla 2 constan de dos afirmaciones objeto-valor conectadas por un operador lógico. La conclusión de la regla, que es la expresión lógica tras la palabra clave entonces. Como ejemplo de problema determinista que puede ser formulado usando un conjunto de reglas, considérese una situación en la que un usuario (por ejemplo, 5 un cliente) desea sacar dinero de su cuenta corriente mediante un cajero automático (CA). En cuanto el usuario introduce la tarjeta en el CA, la máquina la lee y la verifica. Si la tarjeta no es verificada con éxito (por ejemplo, porque no es legible), el CA devuelve la tarjeta al usuario con el mensaje de error correspondiente. En otro caso, el CA pide al usuario su número de identificación personal (NIP). Si el número fuese incorrecto, se dan tres oportunidades de corregirlo. Si el NIP es correcto, el CA pregunta al usuario cuánto dinero desea sacar. Para que el pago se autorice, la cantidad solicitada no debe exceder de una cierta cantidad límite diaria, además de haber suficiente dinero en su cuenta. Tabla 7.2 Objetos y posibles valores para el ejemplo del cajero automático Objeto Conjunto de Valores Posibles Tarjeta {Verificada, no verificada} Fecha {Expirada, no expirada} Clave {Correcta, incorrecta} Intentos {Excedidos, no excedidos} Fondos {Suficiente, insuficiente} Limite {Excedido, no excedido} Pago {Autorizado, no autorizado} La tabla anterior muestra siete reglas que gobiernan la estrategia que el CA debe seguir cuando un usuario intenta sacar dinero de su cuenta. En la Regla 1, por ejemplo, la premisa consiste en seis afirmaciones objeto-valor conectadas mediante el operador lógico y, lo que indica que la premisa, es cierta si las seis afirmaciones lo son. Por ello, la Regla 1 relaciona el objeto Pago (en la conclusión) con los demás objetos. Según la Regla 1, la acción que debe iniciar el CA es dar el dinero al usuario si la tarjeta se ha verificado correctamente, la fecha no ha expirado, la clave es correcta, el número de intentos para dar la clave correcto no se ha excedido y la cantidad solicitada no excede ni la cantidad disponible ni el limite máximo diario. Si (Tarjeta = verificada Y Fecha = no expirada Y Clave = correcta Y Intentos = no se excedido Y Fondos = suficiente Y Limite = no excedido) Entonces Pago = Autorizado. La Tabla 7.3 muestras ejemplos de sustitución de reglas. Nótese que cada regla de la primera columna puede ser sustituida por el correspondiente conjunto de reglas de la segunda columna y que todas las reglas de ésta satisfacen las condiciones anteriores. Por ejemplo, la primera regla compuesta es: Regla 1: Si A o B, entonces C, puede ser reemplazada por las dos reglas simples. Regla 1a: Si A, entonces C. Regla 1b: Si B, entonces C. 6 Como ejemplo adicional, muestra que • Regla 2: Si A o B, entonces C, puede ser reemplazada por la regla • Regla 2: Si A y B , entonces C, donde A significa no A. Tabla 7.3 Una tabla de verdad mostrando que las expresiones lógicas AoB y A y B son equivalentes. Los símbolos C y F se utilizan para cierto y falso, respectivamente. A B A B AoB A y B C C F F C F C F F F C C F C F C F F F C F F F C Tabla 7.4 Ejemplos de sustitución de reglas: Las reglas en la primera columna Regla Reglas Equivalentes Si A o B, entonces C Si A, entonces C Si B, entonces C Si AoB , entonces C Si A y B , entonces C Si AyB , entonces C Si A , entonces C Si B, entonces C Si A y C, entonces D Si B y C, entonces D Si (A o B) y C, entonces D Si AoB y C, entonces D Si A y B y C, entonces D Si AyB y C, entonces D Si A y C, entonces D Si B y C, entonces D Si A, entonces B y C Si A, entonces B Si A, entonces C Si A, entonces B o C Si A y B , entonces C Si A y C , entonces B Si A, entonces ByC Si A y B, entonces C Si A y C, entonces B Si A, entonces BoC Si A, entonces B Si A, entonces C Son equivalentes a las reglas de la segunda columna. Nótese que en los seis primeros ejemplos las sustituciones se aplican a la premisa y en los cuatro últimos, a la conclusión. 7 7.1.2. Motor de inferencia El motor de inferencia en un sistema experto, se encarga de realizar las inferencias en la base del conocimiento de acuerdo con los parámetros definidos en la heurística del sistema y que permitirá inferir la solución de un problema o llevar a cabo la toma de decisiones la cual podría ser diagnosticar una posible enfermedad a partir de la relación síntoma – enfermedad. Existen dos tipos de elementos: los datos (hechos o evidencia) y el conocimiento (el conjunto de reglas almacenado en la base de conocimiento). El motor de inferencia usa ambos para obtener nuevas conclusiones o hechos. Por ejemplo, si la premisa de una regla es cierta, entonces la conclusión de la regla debe ser también cierta. Los datos iniciales se incrementan incorporando las nuevas conclusiones. Por ello, tanto los hechos iniciales o datos de partida como las conclusiones derivadas de ellos forman parte de los hechos o datos de que se dispone en un instante dado. Las conclusiones pueden clasificarse en dos tipos: simples y compuestas. Las conclusiones simples son las que resultan de una regla simple. Las conclusiones compuestas son las que resultan de más de una regla. Para obtener conclusiones, los expertos utilizan diferentes tipos de reglas y estrategias de inferencia y control (Castillo y Álvarez (1991), Durkin (1994), Shapiro (1987), Waterman (1985)). Estrategias de control • Modus Ponens, • Modus Tollens, • Resolución. Estrategias de inferencia • Encadenamiento de reglas, • Encadenamiento de reglas orientado a un objetivo, • Compilación de reglas, que son utilizadas por el motor de inferencia para obtener conclusiones simples y compuestas. Las dos primeras reglas de inferencia se usan para obtener conclusiones simples y el resto de reglas y estrategias para obtener conclusiones compuestas. Sin embargo, ninguna de las estrategias anteriores, implementadas por si solas, conducen a todas las conclusiones posibles. Por ello, se debe implementar varias reglas y estrategias en el sistema experto para que el motor de inferencia sea capaz de obtener tantas conclusiones como sea posible. 8 7.1.2.1. Modus Ponens y Modus Tollens El Modus Ponens es quizás la regla de inferencia mas comúnmente utilizada. Se utiliza para obtener conclusiones simples. En ella, se examina la premisa de la regla, y si es cierta, la conclusión pasa a formar parte del conocimiento. Como ilustración, supóngase que se tiene la regla, “Si A es cierto, entonces B es cierto” y que se sabe además que “A es cierto.” Entonces, tal como muestra la Figura 3.3, la regla Modus Ponens concluye que “B es cierto.” Esta regla de inferencia, que parece trivial, debido a su familiaridad, es la base de un gran número de sistemas expertos. 43 Modus Ponens Regla Si A es cierto Entonces B es cierto B es Cierto Hecho: A es Cierto Figura: 3.3. Regla de inferencia de Modus Ponens En forma más sencilla y matemática A A B B y B C Entonces A C La regla de inferencia Modus Tollens se utiliza también para obtener conclusiones simples. En este caso se examina la conclusión y si es falsa, se concluye que la premisa también es falsa. Por ejemplo, supóngase de nuevo que se tiene la regla, “Si A es cierto, entonces B es cierto” pero se sabe que “B es falso.” Entonces, utilizando la regla Modus Ponens no se puede obtener ninguna conclusión, pero, tal como se muestra en la Figura 7.4, la regla Modus Tollens concluye que “A es falso.” Aunque muy simple y con muchas aplicaciones útiles, la regla Modus Tollens es menos utilizada que la Modus Ponens. Por ello, la regla Modus Ponens se mueve hacia adelante, es decir, de la premisa a la conclusión de una regla, mientras que la regla Modus Tollens se mueve hacia atrás, es decir, de la conclusión a la premisa. Las dos reglas de inferencia no deben ser vistas como alternativas sino como complementarias. La regla Modus Ponens necesita información de los objetos de la premisa para concluir, mientras que la regla Modus Tollens necesita información sobre los objetos de la conclusión. 43 Documento en linea: www.webelectronica.com.ar. Creación de una base del conocimiento determinística. Consultado en Octubre 13 de 2008. 9 Modus Tollens Regla Si A es cierto Entonces B es cierto A es Falso Hecho: B es Falso Figura 3.4. Regla de inferencia de Modus Tollens Un motor de inferencia que solamente utiliza Modus Ponens, la incorporación de la regla de inferencia Modus Tollens puede ser considerada como una expansión de la base de conocimiento mediante la adición de reglas, tal como ilustra el ejemplo que sigue. 7.1.2.2. Encadenamiento de Reglas Esta estrategia puede utilizarse cuando las premisas de ciertas reglas coinciden con las conclusiones de otras. Cuando se encadenan las reglas, los hechos pueden utilizarse para dar lugar a nuevos hechos. Esto se repite sucesivamente hasta que no pueden obtenerse más conclusiones. El tiempo que consume este proceso hasta su terminación depende, por una parte, de los hechos conocidos, y, por otra, de las reglas que se activan. Este algoritmo puede ser implementado de muchas formas. Una de ellas comienza con las reglas cuyas premisas tienen valores conocidos. Estas reglas deben concluir y sus conclusiones dan lugar a nuevos hechos. Estos nuevos hechos se añaden al conjunto de hechos conocidos, y el proceso continúa hasta que no pueden obtenerse nuevos hechos. La Figura 3.5 muestra un ejemplo de seis reglas que relacionan 13 objetos, del A al M. Las relaciones entre estos objetos implicadas por las seis reglas pueden representarse gráficamente, tal como se muestra en la Figura 3.6, donde cada objeto se representa por un nodo. Las aristas representan la conexión entre los objetos de la premisa de la regla y el objeto de su conclusión. Nótese que las premisas de algunas reglas coinciden con las conclusiones de otras reglas. Por ejemplo, las conclusiones de las Reglas 1 y 2 (objetos C y G) son las premisas de la Regla 4. 10 Figura 3.5 Un ejemplo de un conjunto de seis reglas relacionando 13 objetos. Supóngase que se dan los hechos H = cierto, I = cierto, K = cierto y M = falso. Supóngase, en primer lugar, que el motor de inferencia usa las dos reglas de inferencia Modus Ponens y Modus Tollens. En este caso, se obtiene 1. La Regla 3 concluye que J = cierto (Modus Ponens). 2. La Regla 6 concluye (Modus Tollens) que K = falso o L = falso, pero, puesto que K = cierto, debería ser L = falso. 3. La Regla 5 concluye (Modus Tollens) que G = falso o J = falso, pero, puesto que J = cierto, debería ser G = falso. En consecuencia, se obtiene la conclusión G = falso. Sin embargo, si el motor de inferencia sólo utiliza la regla de inferencia Modus Ponens, el algoritmo se detendría en la Etapa 1, y no se concluiría nada para el objeto G. Este es otro ejemplo que ilustra la utilidad de la regla de inferencia Modus Tollens. Figura 3.6 Una representación gráfica de las relaciones entre las seis reglas de la Figura 3.5 11 7.1.2.3. Encadenamiento de Reglas orientado a un objetivo El algoritmo de encadenamiento de reglas orientado a un objetivo requiere del usuario seleccionar, en primer lugar, una variable o nodo objetivo; entonces el algoritmo navega a través de las reglas en búsqueda de una conclusión para el nodo objetivo. Si no se obtiene ninguna conclusión con la información existente, entonces el algoritmo fuerza a preguntar al usuario en busca de nueva información sobre los elementos que son relevantes para obtener información sobre el objetivo. Considérense las seis reglas de las Figuras 3.5 y 3.6. Supóngase que se selecciona el nodo M como nodo objetivo y que se sabe que los objetos D; E; F y L son ciertos. Estos nodos están sombreados en la Figura 3.7. Las etapas del algoritmo de encadenamiento de reglas orientado a un objetivo se ilustran en la Figura 3.7, donde el número en el interior de un nodo indica el orden en el que se visita cada nodo. Estas etapas son: El algoritmo de encadenamiento de reglas orientado al objetivo marcado procedería de la forma siguiente: a. Se asigna el valor cierto a los objetos D; E; F y L y se marcan. Puesto que el nodo objetivo M no está marcado, entonces Se designa el objeto M como objeto en curso. Se marca el objeto M. Por tanto, se tiene ObjetosMarcados = {D; E; F; L; M}. ObjetivosPrevios = . Las seis reglas están activas. Por tanto, se tiene ReglasActivas = {1; 2; 3; 4; 5; 6} b. Se busca una regla que incluya el objetivo en curso M. c. La Regla 6 no puede concluir puesto que el valor del objeto K es desconocido. d. El objeto K no está marcado. Entonces ObjetivosPrevios = {M}. Se elige el objeto K como objetivo en curso. El objeto K está marcado. Por tanto se tiene, ObjetosMarcados = {D;E; F; L;M;K} 12 Figura 3.7 Un ejemplo que ilustra el algoritmo de encadenamiento de reglas orientado a un objetivo. Los nodos cuyo valor es conocido se han sombreado, el nodo objetivo se ha rodeado por una circunferencia, y el número en el interior de un nodo indica el orden en el que se visita cada nodo.44 7.1.3. Control de Coherencia En situaciones complejas, incluso verdaderos expertos pueden dar información inconsistente (por ejemplo, reglas inconsistentes y/o combinaciones de hechos no factibles). Por ello, es muy importante controlar la coherencia del conocimiento tanto durante la construcción de la base de conocimiento como durante los procesos de adquisición de datos y razonamiento. Si la base de conocimiento contiene información inconsistente (por ejemplo, reglas y/o hechos), es muy probable que el sistema experto se comporte de forma poco satisfactoria y obtenga conclusiones absurdas. El objetivo del control de la coherencia consiste en 1. Ayudar al usuario a no dar hechos inconsistentes, por ejemplo, dándole al usuario las restricciones que debe satisfacer la información demandada. 2. Evitar que entre en la base de conocimiento cualquier tipo de conocimiento inconsistente o contradictorio. El control de la coherencia debe hacerse controlando la coherencia de las reglas y la de los hechos. 44 Las figuras 2.10, 2.11, 2.12, fueron tomadas del documentos Sistemas Expertos Basados en Reglas. Autor: Prof. José Manuel Gutiérrez. Dpto. de Matemática Aplicada. Universidad de Cantabria. España. 2006 13 7.1.3.1. Coherencia de Reglas Un conjunto de reglas se denomina coherente si existe, al menos, un conjunto de valores de todos los objetos que producen conclusiones no contradictorias. En consecuencia, un conjunto coherente de reglas no tiene por qué producir conclusiones contradictorias para todos los posibles conjuntos de valores de los objetos. Tabla 7.5 Una tabla de verdad que muestra que las Reglas 1 y 2 son coherentes Objetos Conclusiones Conclusiones Contradictorias A B Regla 1 Regla 2 C C B=C B=F Si C F B=C B=F Si F C No F F No Por ejemplo Supóngase que se tienen los cuatro objetos: A Î {0, 1}, B Î {0, 1}, C Î {0, 1, 2} y D Î {0, 1}. Considérense las cuatro reglas: . Regla 1: Si A = 0 y B = 0, entonces C = 0. . Regla 2: Si A = 0 y D = 0, entonces C = 1. . Regla 3: Si A = 0 y B = 0, entonces C = 1. . Regla 4: Si A = 0, entonces B = 0. . Regla 5: Si B = 0, entonces A = 1. Supóngase ahora que se desea añadir las tres últimas reglas a una base de conocimiento que contiene las dos primeras reglas. Entonces, las Reglas 1 y 3 son inconsistentes, puesto que tienen la misma premisa pero diferentes conclusiones. Por lo que, la Regla 3 debe ser rechazada y el experto humano informado de la razón del rechazo. El experto humano corregirá la regla en cuestión y / o las reglas existentes si fueran incorrectas. La Regla 4 entrará en la base de conocimiento, puesto que es consistente con las Reglas 1 y 2. La Regla 5 es inconsistente con la Regla 4. Por ello, la consistencia de ambas reglas debe ser comprobada antes de pasar a formar parte de la base de conocimiento 7.1.3.2. Incoherencia de Reglas Considérense las cuatro reglas siguientes, que relacionan dos objetos A y B binarios {C, F}: . Regla 1: Si A = C, entonces B = C. . Regla 2: Si A = C, entonces B = F. . Regla 3: Si A = F, entonces B = C. . Regla 4: Si A = F, entonces B = F. Entonces, pueden obtenerse las siguientes conclusiones (Tabla 7.6): 14 1. Las Reglas 1 - 2 son coherentes puesto que, para A = F, no producen conclusiones. 2. Las Reglas 1 - 3 son coherentes puesto que para A = F y B = C, producen una conclusión (B = C) 3. Las Reglas 1 - 4 son incoherentes porque producen conclusiones contradictorias para todos los posibles valores de A y B Un conjunto de reglas puede ser coherente, aunque algunos conjuntos de valores puedan producir conclusiones inconsistentes. Estos conjuntos de valores se llaman valores no factibles. Por ejemplo, las Reglas 1 - 2 son coherentes, aunque producen conclusiones inconsistentes en todos los casos en que A = C. En consecuencia, el subsistema de control de coherencia eliminará automáticamente el valor C de la lista de posibles valores del objeto A, permitiendo de esta forma al usuario seleccionar sólo valores factibles de los objetos. Tabla 7.6 Una tabla de verdad que muestra que las Reglas 1 y 2 son coherentes Objetos Conclusiones Conclusiones Contradictorias A B Regla 1 Regla 2 Regla 3 Regla 4 C C B=C B=F Si C F B=C B=F Si F C B=C B=F Si F F B=C B=F Si Es decir, es suficiente que exista un conjunto de valores que conduzcan a conclusiones no contradictorias. Considérense las cuatro reglas siguientes, que relacionan dos objetos A y B binarios {C; F}: Regla 1: Si A = C, entonces B = C. Regla 2: Si A = C, entonces B = F. Regla 3: Si A = F, entonces B = C. Regla 4: Si A = F, entonces B = F. Las Reglas 1 y 2 son coherentes puesto que, tal como se muestra en la Tabla II.5, para A = F, no producen conclusiones. Sin embargo, las Reglas 1 y 4 son incoherentes porque producen conclusiones contradictorias para todos los posibles valores de A y B. Nótese que un conjunto de reglas puede ser coherente, aunque algunos conjuntos de valores puedan producir conclusiones inconsistentes. Estos conjuntos de valores se llaman valores no factibles. Por ejemplo, las Reglas 1 y 2 son coherentes, aunque producen conclusiones inconsistentes en todos los casos en que A = C. En consecuencia, el subsistema de control de coherencia eliminaría automáticamente el valor C de la lista de posibles valores del objeto A, 15 permitiendo de esta forma al usuario seleccionar sólo valores factibles de los objetos. Se dice que un valor a para el objeto A no es factible si las conclusiones obtenidas al hacer A = a contradicen cualquier combinación de valores del resto de los objetos. Por ello, cualquier valor no factible debe ser eliminado de la lista de valores posibles de su correspondiente objeto para eliminar la posibilidad de que el motor de inferencia pueda obtener conclusiones inconsistentes. 7.1.3.3. Coherencia de Hechos Los datos o evidencias suministrados por los usuarios deben ser también consistentes en sí y con el conjunto de reglas de la base de datos. Por ello, el sistema no debe aceptar hechos que contradigan el conjunto de reglas y/o el conjunto de hechos existente en cada instante del proceso. El sistema debe también comprobar si existe o no, una solución factible e informar al usuario en consecuencia. Si en el ejemplo anterior se trata de dar la información A = 0; B = 0 y D = 0, el sistema debe detectar que no existe ningún valor de C que sea consistente con la base de conocimiento. Nótese que antes de conocer los valores de los objetos, existe una solución factible. Por ejemplo, A = 0; B = 0; C = 0 y D=1 (estos hechos no contradicen la base de conocimiento). Por ello, la inconsistencia surge que los hechos y las reglas sean inconsistentes. La coherencia de los hechos puede lograrse mediante las estrategias siguientes: 1. Eliminar todos los valores no factibles (los que contradicen el conjunto de reglas y / o hechos) de los objetos una vez detectados. Cuando se pregunte al usuario por información sobre los valores de un conjunto de objetos, el sistema experto debería aceptar sólo los valores de cada objeto que sean consistentes con las reglas y con el conocimiento previo. 2. El motor de inferencia debe comprobar que los hechos conocidos no contradicen el conjunto de reglas. Si el sistema no elimina los valores no factibles, entonces el usuario podrá dar evidencias contradictorias tales como Pago = autorizado y NIP = incorrecto en el ejemplo del cajero automático (CA). Por ello, tan pronto como se de la primera evidencia, Pago = autorizado, el sistema debe seleccionar sólo los valores del NIP que no conduzcan a conclusiones contradictorias. 3. Suministrar al usuario una lista de objetos a los que no se ha asignado valores previamente. 4. Para cada uno de los objetos, mostrar y aceptar sólo sus valores factibles. 5. Actualizar continuamente la base de conocimiento, es decir, tan pronto como se dé un hecho o se obtenga una conclusión, y eliminar los valores no factibles. El motor de inferencia obtiene todas las conclusiones posibles examinando, y posiblemente concluyendo, las reglas tan pronto como una simple unidad de información llegan al sistema 16 7.1.4. Ejemplo45 Los sistemas de control de tráfico actuales son necesariamente complejos. El siguiente ejemplo ilustra cómo puede diseñarse un sistema experto basado en reglas para resolver un problema de control de tráfico muy simple. La Figura 3.8 muestra un trazado de ferrocarril en el que varios trenes pueden circular en las dos direcciones. Hay cinco vías, S1, . . . , S5, y 14 señales de tráfico, ocho en la parte superior del diagrama, U1, . . . , U8, y seis en la parte inferior, L1, . . . , L6. Figura 3.8 Trazado de ferrocarril con cinco vías. Tabla 7.7 Objetos y sus correspondientes valores para el ejemplo del control de tráfico ferroviario. Objeto Valor U1 a U8 {verde, rojo} L1 a L6 {verde, rojo} S1 a S5 {libre, ocupada} El objetivo de este sistema es diseñar un conjunto de reglas que eviten la colisión de los trenes. Estas reglas pueden obtenerse como sigue: 1. Si la señal de tráfico U1 está verde, entonces puede permitirse la salida de un tren que esté en la vía S1 y no debe permitirse la salida de los trenes de la vía S2, por lo que L1 tiene que estar en rojo. Lo mismo es cierto para las vías S4 y S5. Nótese que si el motor de inferencia utiliza la regla de inferencia Modus Tollens, estas reglas garantizan también que cuando las señales de la parte baja de las vías estén en verde, las señales de sus correspondientes partes superiores estén en rojo. Es decir, las dos primeras reglas implican las dos reglas siguientes: • Regla 1a: Si L1 = verde, entonces U1 = rojo. • Regla 2a: Si L6 = verde, entonces U6 = rojo. 45 Ejemplo tomado del texto: Sistemas experto y Modelos de Redes Probabilísticas. Castillo, Enrique y Otros. España 2005. 17 2. Si la vía S1 está ocupada, entonces la señal U2 debe estar en rojo para evitar que un tren entre en la vía ocupada. Similarmente, para las demás vías. Esto da lugar a las seis reglas adicionales (Reglas 3−8) 3. Si ambas señales U3 y L3 están en rojo, entonces ningún tren puede salir de la vía S1. La misma condición vale para las señales U5 y L5. Por ello, se tiene la regla • Regla 9: Si (U3 = rojo y L3 = rojo) o (U5 = rojo o L5 = rojo), entonces U1 = rojo. Las cinco reglas asociadas a las otras cinco vías pueden ser obtenidas de forma análoga. 4. Para evitar la colisión de los trenes procedentes de las vías S1 −S2 y S4 − S5, son necesarias las reglas siguientes: • Regla 15: Si U3 = verde, entonces U4 = rojo • Regla 16: Si L3 = verde, entonces L4 = rojo. 5. Para evitar que las señales de la parte alta y sus correspondientes señales de la parte baja estén simultáneamente en verde, es necesario incluir las Reglas 17−20 de la Tabla 7.8. 6. Finalmente, para evitar la colisión de un tren de la vía S3 con un tren de las otras cuatro vías, se imponen las dos últimas reglas de la Tabla 7.8. Tabla 7.8 Reglas para el ejemplo del control de tráfico ferroviario. Regla Premisa Conclusión Regla 1 Regla 2 U1 = verde U6 = verde L1 = rojo L6 = rojo Regla 3 Regla 4 Regla 5 Regla 6 Regla 7 Regla 8 S1 = ocupada S2 = ocupada S3 = ocupada S4 = ocupada S5 = ocupada S6 = ocupada U2 = rojo L2 = rojo U3 = rojo U4 = rojo U5 = rojo L5 = rojo Regla 9 Regla 10 Regla 11 Regla 12 Regla 13 Regla 14 (U3 = rojo y L3 = rojo) o (U5 = rojo y L5 = rojo) (U3 = rojo y L3 = rojo) o (U5 = rojo y L5 = rojo) (U2 = rojo y L2 = rojo) o (U4 = rojo y L4 = rojo) (U2 = rojo y L2 = rojo) o (U4 = rojo y L4 = rojo) U2 = rojo y L2= rojo U5 = rojo y L5 = rojo U1 = rojo L1 = rojo U6 = rojo L6= rojo U7 = rojo U8 = rojo Regla 15 Regla 16 U3= verde L3 = verde U4 = rojo L4= rojo Regla 17 Regla 18 Regla 19 Regla 20 U2= verde U3= verde U4= verde U5= verde L2 = rojo L3 = rojo L4= rojo L5= rojo Regla 21 Regla 22 U1 = verde o L1 = verde U6 = verde o L6 = verde U7 = rojo U8 = rojo 7.1.5. Conclusiones Normalmente, los usuarios esperan que el sistema les dé algún tipo de explicación que indique el por qué de las conclusiones. Durante el proceso realizado por el motor de inferencia, las reglas activas (las que han concluido) forman la base del mecanismo de explicación, que es regulado por el subsistema de explicación. 18 En los sistemas expertos basados en reglas, es fácil dar explicaciones de las conclusiones obtenidas. El motor de inferencia obtiene conclusiones bastándose en un conjunto de reglas y, por tanto, conoce de qué regla procede cada conclusión. Por ello, el sistema puede dar al usuario la lista de hechos concluidos junto con las reglas que se han utilizado para obtenerlos. Lección 32 7.2 Sistemas Expertos Probabilísticos 7.2.1. La incertidumbre Es muy común que los seres humanos tomen decisiones en condiciones de incertidumbre, es más la incertidumbre hace parte de nuestro diario vivir, un ejemplo tan cotidiano como el de ir tarde al trabajo y preguntarse si tomar bus o taxi, la persona decide con incertidumbre, por que no sabe si el bus se demore o no, o si estará lleno, por otro lado el taxi le costará mas, pero debe tomar una decisión que lo lleve a su trabajo. Este tipo de decisiones se presenta a menudo tanto en la vida cotidiana, como en el ámbito científico o en el empresarial; aunque la incertidumbre este presente en todos esos campos, el ser humano ha desarrollado técnicas y teorías, como la probabilidad y estadística, para enfrentar este tipo de decisiones, pero además de estos métodos, el rápido desarrollo de los sistemas ha permitido fusionar todo el conocimiento, en aplicaciones que permiten dar soluciones que aunque no son perfectas tienen un soporte teórico que le da mayor probabilidad de éxito, que a una decisión tomada al azar. Para medir la incertidumbre se parte de un conjunto S (El espacio muestral), en el que se incluyen todos los posibles resultados de un cierto experimento, una vez definido este conjunto, el objetivo consiste en asignar a todo subconjunto S un número real que mida el grado de incertidumbre sobre su realización. Para obtener medidas con significado claro y práctico, se imponen ciertas propiedades intuitivas adicionales que definen una clase de medidas que se conocen como medidas de probabilidad. 7.2.2. Tipos de variables aleatorias Variable aleatoria: Aquella que toma valores, que a priori, no conocemos con certeza. Por ej: cogemos 2 personas al azar. Su edad y sexo, serán 2 variables aleatorias. Existen dos tipos de variables aleatorias, entre ellas: Discretas: el número de valores es finito. o Ejemplos: Número de puerto TCP origen. Dirección IP origen. Continuas: puede asumir todos los valores posibles en cierto intervalo a-b. 19 o Ejemplos: Temperatura ambiente. Tiempo de fallo de un dispositivo. Distancia del robot a la pared. 7.2.3. Definición de Sistemas Expertos Basados en Probabilidad Los sistemas expertos comunes, basados en reglas no tienen en cuenta la incertidumbre, ya que la forma de tratar los objetos y las reglas, es de tipo determinista, pero como se aprecio anteriormente, es frecuente la toma de decisiones en condiciones de incertidumbre, ya sea en áreas de la ingeniería, los negocios o inclusive la salud. El ejemplo que se presenta a continuación es el de un paciente que asiste al médico, con ciertos síntomas para que este le determine en base a estos, que tipo de enfermedad de las posibles padece. Se dice que el sistema no es determinista, ya que la relación entre las enfermedades y los síntomas que tiene un paciente no son deterministas, por que los mismos síntomas pueden estar presentes en distintas enfermedades. En el diagnóstico médico la pregunta típica es: Dado que el paciente presenta un conjunto de síntomas, ¿cuál de las enfermedades posibles es la que tiene el paciente? Esto crea la necesidad, de herramientas que tengan la capacidad para funcionar, en estos ambientes, una buena opción son los sistemas de tipo probabilístico. Estos como los otros, cuentan con una base de conocimiento, pero esta se forma por el espacio probabilístico, que describe el problema. El motor de inferencias es basado en probabilidades condicionales y este se encarga de actualizar dichas probabilidades con base en los hechos que observa del ambiente en que se desempeña. 7.2.3.1. Medidas de Probabilidad. Una función p que proyecta los sub-conjuntos de S A en el intervalo [0, 1] se llama medida de la probabilidad si satisface los siguientes axiomas: Axioma 1 (Normalización): La probabilidad total de todo el espacio muestral es igual a 1 p(S) = 1. Axioma 2 (Aditividad): Para cualquier sucesión infinita A1, A2 , ... de subconjuntos disjuntos de S, se cumple la igualdad 20 p( Ai) = S p(Ai) Lo que determina que la probabilidad de la unión de todos los subconjuntos es igual a la suma total de todas las probabilidades de cada subconjunto. Ejemplo probabilidades: Lanzamiento de un dado no trucado S = {1, 2, 3, 4, 5, 6} p(S) = 1=1/6+1/6+1/6+1/6+1/6+1/6 p({1})= 1/6 p({1, 3}) = p({1})+ p({3}) = 1/3. 7.2.3.2. Propiedades Propiedad 1 (Normalización): p( ) = 0 Evidencia asociada a una ausencia completa de información es cero Propiedad 2 (Monotonicidad): Si S B A, entonces p(A) p(B) La evidencia de la pertenencia de un elemento a un conjunto dado A no debe decrecer con la adición de elementos a A. Propiedad 3 (Continuidad-Consistencia): Para toda sucesión creciente ... A2 A1 , o decreciente A1 A2 ... de subconjuntos de S se tiene: lim p(Ai) = p(lim Ai) Si se eligen dos sucesiones de conjuntos que convergen al mismo subconjunto de S, se debe obtener la misma evidencia o incertidumbre. Propiedad 4 (Inclusión-Exclusión): Dado cualquier par de subconjuntos A y B de S se cumple siempre la igualdad: p(A B) = p(A) + p(B) - p (A B) 7.2.3.3. Distribución de probabilidad Sea {X1, ... Xn} un conjunto de variables aleatorias discretas y {x1, ... xn} el conjunto de sus posibles realizaciones. Por ejemplo, si Xi es una variable binaria xi puede ser 0 o 1. Se denomina función de probabilidad conjunta a: p(x1, ... xn) = p( X1= x1 , ... Xn= xn) Se denomina función de probabilidad marginal de la i-ésima variable median-te la fórmula: p(xi) = p( Xi = xi ) = p(x1, ... xn) x1, ..., xi -1 , xi 1 ,..., xn 21 El conocimiento de la ocurrencia de un suceso puede modificar las probabilidades de otros sucesos. Por ejemplo, la probabilidad de que un paciente tenga una enfermedad dada puede cambiar tras el conocimiento de los resultados de un análisis de sangre. 7.2.3.4. Probabilidad Condicional A la probabilidad de que un evento B se de cuando se sabe que un evento a se ha presentado se llama probabilidad condicional y se escribe P(B / A) . Esta expresión, por lo general se lee “la probabilidad de que B ocurra dado que ya ocurrió A “, o simplemente “la probabilidad de B dado A” Sean X e Y dos conjuntos disjuntos de variables tales que p(y) > 0 . Entonces, la probabilidad condicional (función de probabilidad condicionada) de X dado Y=y viene dada por p(X=x | Y=y) = p(x|y) = p(x,y)/p(y) Esta definición implica que la función de probabilidad conjunta de X e Y puede escribirse como p(x,y) = p(y)p(x|y). Se obtiene un caso particular cuando X es una única variable e Y es un subconjunto de variables: p(xi |x1, ..., xk) = p(xi , x1 , ..., xk)/p(x1 , ..., xk ) = P( X j , X 1 , X 2 ,... X K ) P( X j , X 1 , X 2 ,... X K ) Xj 7.2.3.5. Dependencia e Independencia Independencia de dos variables. Sean X e Y dos subconjuntos disjuntos del conjunto de variables aleatorias {X1, ... Xn} . Entonces se dice que X es independiente de Y si y solamente si p(x|y) = p(x), Para todos los valores posibles de x e y de X e Y; en otro caso, X se dice dependiente de Y. Nótese que al si x e y son valores posibles de X e Y, entonces p(x) > 0 y p(y) > 0. Si X es independiente de Y, entonces el conocimiento de Y no afecta el conocimiento sobre X, es decir, Y no tienen información sobre X. Si X es independiente de Y entonces p(x,y) = p(x) p(y). Una propiedad importante de la relación de independencia es su simetría: 22 p(y|x) = p(x,y) / p(x) = p(x) p(y) / p(x) = p(y) 7.2.3.6. Teorema de Bayes B 1, B 2,..., m constituyen una división del espacio muestral S, Si los eventos B ,2 ,3 ,..., m, entonces para cualquier evento A en S donde P(Bi ) 0 , para i 1 es tal que P( A) 0 . P ( B A ) P ( A / B ) * P ( B ) i i i P ( B / A ) i m m P ( B A ) P ( A / B ) * P ( B ) i i i i 1 i 1 . B , B ,..., B m, forman una partición del espacio En el modelo general los eventos 1 2 muestral S, donde P(Bi ) 0 , para i 1,2,3,...,m, entonces para cualquier evento A de S, en particular entonces se tiene que: A Aj iJ P(Bi / Ai ) = ,2 ,3 ,..., n tal que P(Aj ) 0 , , para j 1 P(Bi A j ) = m P(B A i i=1 j ) P(A j / Bi ) P(Bi ) m P(A j / Bi ) P(Bi ) i=1 Esto se puede representar mediante diagramas de Ven como lo muestra la figura 3.9. Figura 3.9. Diagrama de Ven de la regla de Bayes en forma General.46 7.2.3.7. Reglas generalizadas Una forma de introducir la incertidumbre en los sistemas basados en reglas consiste en utilizar reglas generalizadas. 46 J.A. Bañares Bañares. 1999. Resolución de Problemas en LBR. Departamento de Informática e Ingeniería de Sistemas C.P.S. Universidad de Zaragoza 23 Por ejemplo, dada la regla determinista Regla 1: Si A es cierta, entonces B es cierta se puede introducir incertidumbre asociando una probabilidad a esta afirmación Reglas 2: Si A es cierta, entonces la probabilidad de que B sea cierta es p(b), donde 0<= p(b) <=1 es una medida de la incertidumbre de B. El uso de las reglas generalizadas requiere utilizar medidas de incertidumbre para ambos, objetos y reglas, junto con formulas de agregación para combinar la incertidumbre de los objetos en las premisas con la de las reglas. MYCIN y PROSPECTOR son los primeros S.E. que utilizan reglas generalizadas. Problema: No cumplen los axiomas de la probabilidad. Por contra, a los S.E. que describen las relaciones entre los objetos (variables) mediante una función de probabilidad conjunta se les denomina SE de tipo probabilístico. 7.2.4. Introducción de los sistemas expertos basados en probabilidad 1. Los S.E. Probabilísticos pueden memorizar información. Ejemplo de base de datos con diez pacientes para el diagnóstico con cinco enfermedades y tres síntomas binarios. Tabla 7.9 Tabla de diez pacientes y el diagnostico binario de 5 enfermedades. Enfermedad Sintomas Paciente (E) S1 S2 S3 1 2 3 4 5 6 7 8 9 10 E5 E2 E3 E5 E3 E1 E1 E3 E1 E5 1 1 1 0 0 1 1 1 1 1 1 0 1 0 1 1 1 0 1 0 1 1 0 1 0 0 1 0 1 1 2. Los S.E. probabilísticos pueden contar o calcular las frecuencias absolutas y relativas de cualquier subconjunto de variables a partir de la base de datos. Estas frecuencias pueden utilizarse para calcular las probabilidades condicionales 24 3. Los S.E. probabilísticos pueden aprender de la experiencia. Tan pronto como un nuevo paciente es examinado y diagnosticado, se añade nueva información a la base de datos y se cambian las frecuencias como corresponda. 4. Los S.E. probabilísticos pueden tomar (o ayudar a los expertos humanos a tomar) decisiones tales como: ¿Se tiene suficiente información como para diagnosticar la enfermedad? ¿Se necesitan nuevas pruebas clínicas? y si la respuesta es positiva, ¿Qué prueba o pruebas suministran la máxima información sobre la enfermedad que se sospecha tiene el paciente? 7.2.5. La Base del Conocimiento La base de conocimiento de un sistema experto probabilístico consiste en un conjunto de variables, {X1, . . . , Xn}, y una función de probabilidad conjunta definida sobre ellas, p(x1, . . . , xn). Por ello, para construir la base de conocimiento de un sistema experto probabilístico, se necesita definir la función de probabilidad conjunta de las variables. El modelo más general posible se basa en especificar directamente la función de probabilidad conjunta, es decir, asignar un valor numérico (parámetro) a cada una de las posibles combinaciones de valores de las variables. Pero, la especificación directa de la función de probabilidad conjunta implica un gran número de parámetros por lo que, no hay ordenador en el mundo capaz de almacenarlo incluso para un valor de n tan pequeño como 50. Esta fue una de las primeras críticas al uso de la probabilidad en los sistemas expertos. Ejemplo: Considérese las siguientes características de las personas de una población Sexo = {hombre, mujer} Fumador = {si (f), no (~f)} Estado civil = {casado (c), no casado (~c)} Embarazo = {si (e), no (~e)} Función de probabilidad conjunta 25 Tabla 7.10 Tabla con datos de funciones de probabilidad. Probabilidad conjunta H M F ~F F ~F C ~C E ~E E ~E 0.00 0.02 0.00 0.07 0.00 0.18 0.00 0.23 0.01 0.04 0.01 0.10 0.05 0.10 0.01 0.18 Por ejemplo, el 50% de las personas son mujeres, y el 0.01+0.04+0.01+0.01/ (0.01+0.04+0.01+0.01)+ (0.00+0.02+0.00+0.07) = 64% de los fumadores son mujeres Sea A una persona elegida al azar de la población. Sin conocer si la persona es fumadora, la probabilidad de que se trate de una mujer es p(A=mujer) = 0.50 Si se sabe que las persona es fumadora, esta probabilidad cambia de 0.50 a p(A=mujer | A = f) = 0.64. Por lo tanto, se tiene que p(A=mujer | A = f) ° p (A = mujer) ; por lo que las variables Sexo y Fumador son dependientes. Supóngase ahora que se sabe que la persona está embarazada Entonces, p(A=mujer | A = e) = 1 ° p (A = mujer) = 0.50. Por lo que Sexo y Embarazo son dependientes. Fumador y Embarazo contienen información relevante sobre el Sexo. Pero el suceso “la persona está embarazada” contiene mucha más información sobre el Sexo que el suceso “la persona es fumadora” . p(A=mujer | A =e) / p(A = mujer | A = f) = 1/0.64 >1 ¿Estado Civil contiene información relevante sobre el Sexo? Sin embargo, en la mayor parte de las situaciones prácticas, muchos subconjuntos de variables pueden ser independientes o condicionalmente independientes. Ejemplos de simplificaciones son: El Modelo de Síntomas Dependientes (MSD) El Modelo de Síntomas Independientes (MSI) El Modelo de Síntomas Relevantes Independientes (MSRI) El Modelo de Síntomas Relevantes Dependientes (MSRD) 7.2.5.1. Modelo de Síntomas Dependientes Para un modelo de una supuesta enfermedad, en este modelo se supone que los síntomas son dependientes pero que las enfermedades son independientes entre sí, dados los síntomas. 26 Figura 3.10. Modelo de Síntomas dependientes 47 7.2.5.2. Modelo de Síntomas Independientes Una simplificación consiste en suponer que, para una enfermedad dada, los síntomas son condicionalmente independientes entre sí: Figura 3.11. Modelo de Síntomas independientes 48 Puesto que lo síntomas se suponen condicionalmente independientes 47 J.A. Bañares Bañares. 1999. Resolución de Problemas en LBR. Departamento de Informática e Ingeniería de Sistemas C.P.S. Universidad de Zaragoza 48 Ibd 49 27 7.2.5.3. Modelo de Síntomas Relevantes Independientes Se puede conseguir una reducción aún mayor del número de parámetros suponiendo que cada enfermedad tiene un número reducido de síntomas relevantes: Para cada valor ei de la enfermedad E se seleccionan algunos síntomas relevantes S1 , ..., Sr y los restantes síntomas se suponen independientes para ese valor de E. Figura 3.12. Modelo de Síntomas relevantes independientes49 Supóngase que S1 , ..., Sri son relevantes para la enfermedad ei y que los restantes síntomas Sri +1 , ..., Sn son irrelevantes. Según el MSRI, p(sj| ei) se supone idéntica para todos los síntomas que son irrelevantes para la enfermedad Sea cual sea el modelo elegido, la base de conocimiento debe contener el conjunto de variables de interés y el mínimo de parámetros (probabilidades o frecuencias) necesarios para especificar la función de probabilidad conjunta de las variables. 7.2.5.4. Modelo de Síntomas Relevantes Dependientes Aunque el MSRI reduce el número de parámetros considerablemente, es poco realista: 49 Los síntomas asociados a ciertas enfermedades suelen producirse en grupos o síndromes. EL modelo de síntomas relevantes dependientes evita este inconveniente: Es el mismo que el MSRI pero sin obligar a los síntomas relevantes a ser independientes, dada la correspondiente enfermedad. Se puede pensar en el MSRD como una solución de compromiso entre el MSD y el MSRI. Ibd 50 28 Figura 3.13. Modelo de Síntomas Relevantes dependientes 7.2.6. Motor de Inferencia Hay dos tipos de conocimiento en los S.E. probabilísticos: El conocimiento, que está formado por el conjunto de variables y el conjunto de probabilidades asociadas necesarias para construir su función de probabilidad conjunta. (Se almacena en la base de conocimiento) Los datos, que consiste en un conjunto de valores de algunas variables (por ejemplo, síntomas) conocidas por el usuario. A esta información se la conoce con el nombre de evidencia, y se almacena en la memoria de trabajo. El motor de inferencia utiliza ambos para responder a preguntas como: Pregunta 1: Antes de ser examinado por el doctor, ¿cuál es la enfermedad más probable para el paciente? No hay evidencia disponible. El problemas consiste en calcular la probabilidad marginal inicial de E p(E = ei). Pregunta 2: Dado que el paciente presenta un subconjunto de síntomas S1=s1 ..., Sk=sk , ¿qué enfermedad tiene el paciente con mayor probabilidad? El conjunto evidencial consiste en los valores s1 ... sk. El problema consiste en calcular la función de probabilidad conjunta para cada enfermedad ei dada la evidencia s1 ... sk: p(E= ei | s1 ... sk), i = 1 ...m. El motor de inferencia es responsable de actualizar las probabilidades condicionales cuando se conocen nuevos síntomas: p(ei | s1 ... sk)= p(ei ,s1 ... sk)/ p(s1 ... sk); i = 1 ...m. El papel del término p(s1 ... sk) consiste en actuar como constan-te de normalización. Una decisión basada en el máximo de p(ei | s1 ... sk) coincide con la basada en el máximo de p(ei ,s1 ... sk). Los cocientes siguientes suministran información sobre la importancia relativa de las diferentes enfermedades. 29 Uno de los problemas más serios de los S.E. es la presencia de incoherencias en su base de conocimiento y/o en su memoria de trabajo: Los expertos humanos pueden suministrar conocimiento incoherente EL usuario puede suministrar datos incoherentes El motor de inferencia no actualiza la base de conocimiento tan pronto se de un hecho. No hay un subsistema para controlar la coherencia. Lección 33 7.3 Redes Bayesianas Una red bayesiana está compuesta por: 1. Un grafo dirigido acíclico (GDA) donde cada nodo representa una variable aleatoria y los arcos representan dependencias probabilísticas entre variables. A esta parte de la red se la denomina estructura o modelo. 2. Una distribución de probabilidades condicionadas de la forma P(x | πx) para cada nodo x dado su conjunto de padres πx. Estos son los llamados parámetros de la red bayesiana. En una red bayesiana se considera que cada nodo es independiente de todos los nodos no descendientes dados sus padres. Así, a partir del producto de probabilidades condicionadas se puede obtener la distribución conjunta de probabilidades: P(x1, ..., xi, ..., xn)=Πi=1n P(xi | πxi) Hallazgo: determinación del valor de una variable, a partir de un dato (una observación, una medida...). Evidencia: conjunto de todos los hallazgos disponibles en un determinado momento. Probabilidad a priori: es la probabilidad de una variable o subconjunto de variables cuando no hay ningún hallazgo. Coincide con la probabilidad marginal P(x). Probabilidad a posteriori: es la probabilidad de una variable o subconjunto de variables dada la evidencia e. Se trata de la probabilidad condicional P(x|e). 7.3.1. Aprendizaje Automático de la Red Bayesiana50 Si la base de conocimiento de un sistema experto la constituye una red bayesiana, ésta debe cambiar conforme aumentan los datos concretos o casos. Así, en sus primeros estados, la red bayesiana puede ser construida según la opinión de los expertos o bien según la información de la que se parta o teniendo en cuenta ambas cosas. Conforme se añade información (conocimiento concreto) a la 50 Disponible en: URL (http://lsi.ugr.es/~rosana/investigacion/papers/abad-efsi02.pdf) 30 misma, se va modificando tanto su estructura como los parámetros mediante un proceso de aprendizaje. En este trabajo consideraremos la construcción de la base de conocimiento teniendo en cuenta exclusivamente los datos concretos, con el objeto de poder comparar los métodos de aprendizaje de la red bayesiana con otros métodos, ya sean estadísticos o pertenecientes también al propio campo de la inteligencia artificial. 7.3.2. Clasificadores Bayesianos Un clasificador es una función que asigna un valor de un atributo discreto, llamado clase, a instancias o ejemplos descritos mediante un conjunto de atributos, que pueden ser tanto continuos como discretos. Un sistema experto puede ser utilizado como clasificador. Así por ejemplo, un sistema experto en un hospital determina que para un conjunto de síntomas presentados por un individuo, no es probable que exista cáncer. O bien, el sistema experto para ayuda a la decisión en una entidad financiera, aconsejar no otorgar un préstamo a un cliente porque la probabilidad de no pago sea muy elevada, a partir de una serie de atributos, fundamentalmente financieros, del mismo. En el caso de que la base de conocimientos sea una red bayesiana, la función de clasificación estará definida a partir de probabilidades condicionadas. Otros modelos que suelen ser utilizados son los árboles de decisión 51 , las redes neuronales 52 o las más recientes máquinas de soporte vectorial. Una de las redes bayesianas más eficientes en la clasificación es el llamado clasificador simple (del inglés Naïve Bayes classifier). La estructura de esta red bayesiana se basa en una fuerte restricción: todos los atributos que describen los casos son independientes entre sí dado el valor de la clase (Figura. 3.14). Figura 3.14. Gráfico correspondiente al clasificador simple bayesiano con 6 atributos de entrada Han sido propuestos otros modelos más sofisticados. Entre ellos, las redes bayesianas simples aumentadas (del inglés Augmented Naïve Bayesian networks Quinlan, J. R. (1996). “Improved use of continuous attributes in C4.5”, Journal of Artificial Intelligence Research, 4, 77-90. 52 Leigh, W; Purvis, R; Ragusa, J. (2002). “Forecasting the nyse composite index with technical analysis, pattern recognition, neural network, and genetic algorithm: a case study in romantic decision support”, Decision Support Systems, 32, 361- 377. 51 31 (AN)), permiten arcos entre los atributos de entrada, de manera que se reduce la fuerte restricción propia de las redes simples. Para decidir la estructura concreta de una red AN han sido propuestos diversos algoritmos en las publicaciones sobre Inteligencia Artificial de la última década Ezawa K. J.; Schuermann T. (1995), Sahami, M. (1996). Entre ellos cabe destacar el algoritmo de aprendizaje de red bayesiana Simple Aumentada en árbol (del inglés Tree Augmented Naïve Bayesian network (TAN)) (Friedman, N.; Geiger, D; Goldszmidt, M. (1997). y el de red bayesiana Simple Aumentada Estructurada (Abad, M. 2001) (del inglés Structured Augmented Naïve Bayesian network (SAN)). El algoritmo TAN construye una red bayesiana con una estructura TAN (Figura 3.15), es decir, una estructura en la que la variable clase no tiene padres y los atributos de entrada tienen como padres la clase y como máximo otro atributo más de entrada. Figura 3.15. Un ejemplo de estructura TAN Para seleccionar el atributo padre z de un atributo x se utiliza como medida la llamada información mutua condicionada de x y z dada la clase y: Se trata de una medida del grado de independencia condicional de x y z dada la clase y: I (x, z | y). Por otra parte, el algoritmo SAN es aun más flexible que TAN, en el sentido de que permite la construcción de estructuras AN menos restrictivas. Estas estructuras, llamadas también SAN (Figura 3.16) se caracterizan porque la clase no tiene padres y los atributos de entrada pueden tener como padres además de la clase, cualquier número de atributos de entrada, siempre que no haya ciclos dirigidos, pues la estructura de una red bayesiana es siempre un GDA. Figura 3.16. Un ejemplo de estructura SAN 32 Sin embargo, cuanto más compleja es una estructura, es decir, cuantos más arcos existan en una estructura SAN, mayor es el riesgo de sobreajuste, es decir, mayor es el riesgo de que la estructura aprendida clasifique bien los casos usados para el aprendizaje pero tenga una baja eficiencia para casos nuevos. Así, su capacidad de generalización será baja y por tanto el aprendizaje no se puede considerar aceptable. Para evitar el problema del sobreajuste en estructuras complejas el algoritmo de aprendizaje SAN utiliza un principio inductivo que favorece la creación de estructuras simples. Así, si el número de casos del que se dispone es pequeño, la estructura elegida ser más sencilla que si el número de casos es mayor. Dicho principio es el llamado Minimización del Riesgo Estructural (del inglés Structural Risk Minimization). Así, este principio define un equilibrio entre la calidad de un modelo dado un conjunto de datos y la complejidad del mismo. Todos los algoritmos de aprendizaje que generan una estructura AN pertenecen al llamado paradigma de la muestra. Los algoritmos pertenecientes a este paradigma adolecen de los siguientes inconvenientes: 1. No son robustos frente a atributos superfluos. 2. Tienen una escasa capacidad de generalización cuando las muestras son pequeñas o el número de atributos de cada ejemplo muy elevado. 7.3.2.1. Ejemplo: Adenocarcinoma gástrico Un centro médico tienen una base de datos consistente en las historias clínicas de N= 1000 pacientes Figura 3.17. Diagrama de Ven del Adenocarcinoma gástrico53 Existen 700 pacientes (región no sombreada) que tienen la enfermedad adenocarcinoma gástrico (G), y 300 (región sombreada) no la tienen. 53 Ibd 33 Tres síntomas: Dolor (D), pérdida de peso (P) y vómitos (V) están ligados a la enfermedad. Cuando un paciente nuevo llega a la consulta, hay una probabilidad 700/1000 = 70% de que el paciente tenga G. Pueden hacerse las siguientes afirmaciones: 440 = 0.44 1000 Verosimilitud: El 50% de los pacientes que tienen la enfermedad vomitan. p(v|g) = card(v,g)/card(g)=350/750=0.5 Probabilidad a priori: 440 de 1000 pacientes vomitan => p(v) = Mientras que sólo el 30% de los pacientes que no tienen la enfermedad vomitan p(v| ¬ g)=card(v, ¬ g)/card(¬ g)= 90/300=0.3 Verosimilitud: El 45% de los pacientes que tienen la enfermedad vomitan y pierden peso, p(v,p|g) = card(v,p,g)/card(g)=315/750=0.45 Mientras que sólo el 12% de los que no tienen la enfermedad vomitan y pierden peso p(v,p| ¬ g) = card(v,p, ¬ g)/card(¬ g)=35/300=0.12 Puesto que la probabilidad inicial de que el paciente tenga adenocarcinoma gástrico, p(g)=0.7, no es suficientemente alta para hacer un diagnóstico (tomar una decisión ahora implica una probabilidad 0.3 de equivocarse), el doctor decide examinara al paciente para obtener más información: Supóngase que los resultados muestran que el paciente tiene los síntomas vómitos (V=v) y pérdida de peso (P=p). ¿Cuál es ahora la probabilidad de que el paciente tenga la enfermedad? Tras observar que V=v la probabilidad a posteriori es: Tras observar que V=v y P = p la probabilidad a posteriori es 34 Nótese que cuando se aplica el teorema de Bayes sucesivamente, la probabilidad “a posteriori” calculada en una etapa dada es la misma que la probabilidad “a priori” en la siguiente. Por ejemplo, la probabilidad “a posteriori” que se ha calculado en el primer paso anterior, puede ser utilizada como probabilidad “a priori” en la siguiente: 7.4 Comparación entre los SE basado en Reglas y los SE basados en Probabilidades Tabla 7.11 Comparación entre los sistemas expertos basados en reglas y los sistemas expertos basados en probabilidades. BASADOS EN REGLAS PROBABILISTICOS Objetos y conjunto de reglas. Espacio de probabilidad, que incluye Fácil de implementar, pues sólo las variables, sus posibles valores, y es necesario utilizar elementos su función de probabilidad conjunta. Base de simples, tales como objetos, Inconveniente: el alto numero de Conocimiento conjuntos de valores, premisas, parámetros que manejan, lo que hace conclusiones y reglas. que sea difícil su especificación y El conocimiento que puede ser definición. almacenado es limitado. Se basa en la evaluación de las Las conclusiones se obtienen de probabilidades condicionales los hechos aplicando las utilizando uno o vario métodos diferentes estrategias de propuestos por los diferentes tipos de Motor de inferencia, tales como Modus sistemas expertos probabilisticos. El Inferencia Ponens, Modus Tollens y grado de dificultar depende del encadenamiento de reglas; por lo modelo seleccionado y varia desde que es rápido y fácil de baja, para los modelos de implementar. independencia, a alta, para los modelos de dependencia generales. La explicación es fácil, ya que se Se basa en los valores relativos de sabe que reglas han sido las probabilidades condicionadas que utilizadas para concluir en cada miden los grados de dependencia. Subsistema momento. El motor de inferencia Una comparación de las de sabe que reglas se han utilizado probabilidades condicionales para Explicación en el encadenamiento y han diferentes conjuntos de evidencia contribuido a obtener permite analizar sus efectos en las conclusiones y que reglas se han conclusiones. utilizado sin éxito. 35 Consiste en incorporar nuevos objetos, nuevos conjuntos de Consiste en incorporar o modificar la Subsistema valores factibles para los objetos, estructura del espacio de de nuevas reglas o modificaciones probabilidad: variables, conjunto de Aprendizaje de los objetos existentes, de los posibles valores, o los parámetros conjuntos de valores posibles o (valores de las probabilidades). de las reglas. Lección 34 7.5 Sistemas Basados en Casos También conocido como Razonamiento basado en casos (CBR) es el proceso de solucionar nuevos problemas basándose en las soluciones de problemas anteriores, aprender a partir de experiencias precedentes o casos, adaptando soluciones antiguas para resolver problemas nuevos. Se usa razonamiento basado en casos cuando un mecánico de automóviles repara un motor por que recordó que otro auto presentaba los mismos síntomas o cuando un abogado que apela a precedentes legales para defender alguna causa, también un ingeniero cuando copia elementos de la naturaleza, está tratando a esta como una “base de datos de soluciones”. El Razonamiento basado en casos es una manera razonar haciendo analogías. Se ha argumentado que el razonamiento basado en casos es más que un método poderoso para el razonamiento de computadoras, sino que es usado por las personas para solucionar problemas cotidianos. Más radicalmente se ha sostenido que todo razonamiento es basado en casos por que está basado en la experiencia previa. La siguiente es la definición dada por Kolodner en 1993: “A case is a contextualized piece of knowledge representing an experience that teaches a lesson fundamental to achieving the goals of the reasoner”, [Kolodner, 1993] 7.5.1. Historia Razonamiento basado en casos tiene sus raíces en el trabajo de Roger Schank y sus estudiantes en la universidad de Yale a principio de la década de los 80. El modelo de memoria dinámica de Schank54 fue la base de los tempranos sistemas CBR: Janet Kolodner's en 1983 ayudo a la construcción de CYRUS55 and Michael 54 Roger Schank, Dynamic Memory: A Theory of Learning in Computers and People (New York: Cambridge University Press, 1982). 55 Janet Kolodner, "Reconstructive Memory: A Computer Model," Cognitive Science 7 (1983): 4. 36 Lebowitz's a la de IPP.56 Otra escuela de Razonamiento basado en casos también emergió en la década del 80, investigando los asuntos tales como Razonamiento basado en casos en el razonamiento legal, el razonamiento basado en la memoria (una manera de razonar con ejemplos en las máquinas masivamente paralelas, y combinaciones de razonamiento basado en casos con otros métodos de razonamiento. En los años 90, el interés en razonamiento basado en casos creció en la comunidad internacional, según lo evidenciado por el establecimiento de una conferencia internacional sobre el razonamiento basado en casos en 1995, así como europeo, alemán, británicos, el italiano, y otros talleres de Razonamiento basado en casos. La tecnología Razonamiento basado en casos produjo numerosos casos de éxito. El primero fue en un sistema llamado Lockheed's CLAVIER57 utilizado para presentar a las piezas compuestas que se cocerán en un horno industrial de convección, de igual forma se está utilizando en aplicaciones de ayuda de escritorio como Compaq SMART system.58 Y otras. 7.5.2. El ciclo del razonamiento basado en casos En el proceso de dividir el razonamiento basado en casos en diferentes subprocesos nos encontramos el ciclo que lo conforman puede ser dividido en 4 procesos claramente diferenciados59: RECORDAR o RECUPERAR los casos similares al que analizamos. (un nuevo problema se aparea con casos similares guardados en la base de casos) REUTILIZAR la información y el conocimiento que tenemos en este caso para resolver el problema. REVISAR la solución propuesta. (en caso de ser necesario) RETENER o ALMACENAR las partes de esta experiencia que nos puedan ser útiles para la resolución de futuros problemas. Cuando nos encontramos delante de un nuevo problema para el cual tenemos que dar una solución lo que primer que tenemos que hacer es dado ese determinado problema recordar los casos relevantes que pueden solucionarlo. Estos casos relevantes tendrán que ser una selección de aquellos casos de los que disponemos en la base de conocimiento del sistema experto. 56 Michael Lebowitz, "Memory-Based Parsing," Artificial Intelligence 21 (1983), 363-404. Bill Mark, "Case-Based Reasoning for Autoclave Management," Proceedings of the Case-Based Reasoning Workshop (1989). 58 Trung Nguyen, Mary Czerwinski, and Dan Lee, "COMPAQ QuickSource: Providing the Consumer with the Power of Artificial Intelligence," in Proceedings of the Fifth Annual Conference on Innovative Applications of Artificial Intelligence (Washington, DC: AAAI Press, 1993), 142-151. 59 Documento en línea: URL (http://es.wikipedia.org/wiki/Case-based_reasoning) 57 37 Una vez tenemos este conjunto de casos que guardan una serie de similitudes con el caso para el cual se propone una solución lo que se tiene que hacer es adaptar la solución de todos esos problemas, en su globalidad o solamente en alguna de sus partes que nos interese para transformar el contexto de esos problemas en el problema que tenemos actualmente. Este es un proceso circular en el que reutiliza diversos casos de la base de conocimiento, se revisa la solución y si no es factible se vuelve a modificar con la inclusión o la eliminación de los casos que fuesen incorrectos o añadiendo aquellos que faltasen para perfeccionar la solución. Finalmente el último paso es la retención. Después de que la solución haya sido adaptada satisfactoriamente para solucionar el problema dado, almacenaríamos la experiencia resultante como un nuevo caso en la memoria. Lección 35 7.6 Redes Neuronales Artificiales Una red neuronal consiste en simular las propiedades observadas en los sistemas neuronales biológicos a través de modelos matemáticos recreados mediante mecanismos artificiales (como un circuito integrado, un ordenador o un conjunto de válvulas). El objetivo es conseguir que las máquinas den respuestas similares a las que es capaz de dar el cerebro que se caracterizan por su generalización y su robustez60. Figura 3.18. Perceptrón con 2 entradas Una red neuronal se compone de unidades llamadas neuronas. Cada neurona recibe una serie de entradas a través de interconexiones y emite una salida. Esta salida viene dada por tres funciones: Una función de propagación (también conocida como función de excitación), que por lo general consiste en una sumatoria de cada entrada multiplicada por el peso de su interconexión (valor neto). Si el peso es positivo, la conexión se denomina excitatoria; si es negativo, se denomina inhibitoria. Una función de activación, que modifica a la anterior. Puede no existir, siendo en este caso la salida la misma función de propagación. 60 Tomado de: http://es.wikipedia.org/wiki/Red_neuronal_artificial 38 Una función de transferencia, que se aplica al valor devuelto por la función de activación. Se utiliza para acotar la salida de la neurona y generalmente viene dada por la interpretación que queramos darle a dichas salidas. Algunas de las más utilizadas son la función sigmoidea (para obtener valores en el intervalo [0,1]) y la tangente hiperbólica (para obtener valores en el intervalo [-1,1]). 7.6.1. Ventajas Las redes neuronales artificiales (RNA) tienen varias ventajas debido a que se basan en la estructura del sistema nervioso, principalmente el cerebro. Aprendizaje: Las RNA tienen la habilidad de aprender mediante una etapa que se llama etapa de aprendizaje. Esta consiste en proporcionar a la RNA datos como entrada a su vez que se le indica cuál es la salida (respuesta) esperada. Auto organización: Una RNA crea su propia representación de la información en su interior, descargando al usuario de esto. Tolerancia a fallos: Debido a que una RNA almacena la información de forma redundante, ésta puede seguir respondiendo de manera aceptable aun si se daña parcialmente. Flexibilidad: Una RNA puede manejar cambios no importantes en la información de entrada, como señales con ruido u otros cambios en la entrada (ej. si la información de entrada es la imagen de un objeto, la respuesta correspondiente no sufre cambios si la imagen cambia un poco su brillo o el objeto cambia ligeramente) Tiempo real: La estructura de una RNA es paralela, por lo cuál si esto es implementado con computadoras o en dispositivos electrónicos especiales, se pueden obtener respuestas en tiempo real. 39 CAPITULO 8. LENGUAJES UTILIZADOS Lección 36 8.1 Lenguajes utilizados en la construcción de SE 8.1.1. LISP LISP, acrónimo de lenguaje de Procesamiento de Listas, fue inventado por John McCarthy y su equipo en la Universidad de Stanford a finales de 1950. Originalmente fue creado como un modelo computacional de procesos matemáticos, reflejando el rigor de las propias matemáticas.61 LISP actualmente está diseñado para manejar símbolos matemáticos (variables), por lo que es utilizado perfectamente para la investigación en IA, donde un símbolo puede representar cualquier cosa. LISP tiene dos características principales que lo hacen sobresalir de entre los demás lenguajes para IA; a. Primero, es altamente flexible, es decir, es posible escribir un programa LISP para producir cualquier comportamiento deseable de la computadora. b. Segundo, es indefinidamente extensible, lo que significa que si como programador siente que a LISP le falta alguna característica, puede escribir un programa LISP que provea dicha característica y hacer que ese programa forme parte de su LISP personal. LISP utiliza un ciclo llamado leer – evaluar – imprimir. Cuando el programador teclea algo en LISP, el lenguaje toma lo que se ha tecleado, intenta responder de cualquier forma y después despliega dicha respuesta en la pantalla. Leer en LISP, es el termino usado para ver lo que se ha tecleado. Evaluar, es el término usado para tratar de responder de cualquier forma Imprimir, es el término usado para .desplegar la respuesta en la pantalla. Si hubiera una persona en vez de una máquina en frente del programador, diríamos que dicha persona estaría escuchando, comprendiendo y respondiendo al programador. LISP utiliza los siguientes conceptos característicos: 61 Listas y Átomos. La estructura más importante es la lista. Los átomos pueden subordinarse a cualidades. La Función. Cada función LISP y cada programa LISP tiene estructura de lista. Los programas no pueden distinguirse sintácticamente de los datos. LISP ofrece sus propias funciones básicas. HASEMER, Tony y John Domingue. Common LISP Programming for Artificial Inteligence. 1 Forma de Trabajo. LISP es un lenguaje funcional. Ofrece la posibilidad de realizar definiciones recursivas de funciones. La unión de procedimientos se realiza de forma dinámica, es decir en plena ejecución, no como en otros lenguajes de programación. El sistema realiza automáticamente una gestión dinámica de memoria. Los átomos son números, cadenas de caracteres o símbolos. Un símbolo puede tener varios valores, al igual que una variable en otros lenguajes de programación, como por ejemplo un número, o también puede ser el nombre de una función, o incluso ambos. Además a un símbolo se le pueden subordinar cualidades, que además del valor del símbolo, contienen información adicional. Estas cualidades también reciben el nombre de atributos. Un componente importante de un sistema LISP es la gestión dinámica de la memoria. El sistema administrará el espacio en la memoria para las listas en constante modificación, sin que el usuario lo deba solicitar. Libera los espacios de memoria que ya no son necesarios y los pone a disposición de usos posteriores. La necesidad de este proceso se deriva de la estructura básica de LISP, las listas, que se modifican de forma dinámica e ilimitada. Además un sistema LISP abarca bastante más que el solo intérprete del lenguaje LISP. Consta de algunos cómodos módulos que ofrecen ayuda en el desarrollo y control del progreso en programas, como son el Editor, el File-System y el Trace. Por supuesto estos módulos sólo están en versiones de LISP que contengan la conocida interfaz gráfica IDE (entorno de desarrollo integrado) típica de los modernos lenguajes visuales. 8.1.2. CLIPS CLIPS es otra herramienta para el desarrollo de S. que ofrece un entorno completo para su construcción basado en reglas y objetos. CLIPS está siendo utilizado por numerosos usuarios como la NASA (que es su creadora), muchas universidades y empresas. CLIPS viene de (C Language Integrated Production System) y como su nombre indica uno de los objetivos que buscaban sus creadores era la fácil integración con programas en C. Así, al darle una portabilidad con programas en lenguaje C, las universidades que lo usan pueden trasladar fácilmente sus aplicaciones al entorno del agente.62 8.1.3. PROLOG Prolog es un lenguaje de programación que se centra alrededor de un conjunto pequeño de mecanismos, incluyendo reconocimiento de patrones, estructuras de datos basadas en árboles y bactraking (retroceso) automático. Este conjunto pequeño constituye una estructura de programación sorprendentemente poderosa 62 BAÑARES, José Ángel. Herramientas para las asignaturas del IAIC. URL(http://diana.cps.unizar.es/IA/noticias.html) 2 y flexible. Prolog es ideal para resolver problemas que involucren objetos – en particular objetos estructurados – y relaciones entre ellos. Por ejemplo, un ejercicio muy sencillo en Prolog es expresar relaciones espaciales, de la forma: “la esfera azul detrás de la verde”. Prolog nació en Europa, y fue implementado primeramente para dar soporte al Procesamiento del Lenguaje Natural (PLN). Prolog trabajaba (y sigue haciéndolo hasta nuestros días) esencialmente con la lógica matemática. Bratko completa el comentario afirmando que Prolog nació de una idea de programación lógica que emergió a principios de 1970, para usar la lógica como un lenguaje de programación. Prolog tiene cierto vigor híbrido en el sentido de que contiene características declarativas de la lógica computacional matemática y algunos aspectos procedurales de la programación convencional. En vez de escribir un procedimiento con una secuencia de pasos, un programador Prolog escribe un conjunto declarativo de reglas y hechos con sus respectivas relaciones. Debido a esto, los diagramas de flujos y las técnicas convencionales de programación no aplican en Prolog. Walker afirma que niños de 10 años de edad encuentran a Prolog como un lenguaje sencillo de aprender. Pero los programadores profesionales con muchos años de experiencia a menudo lo encuentran revuelto y confuso. Lo revuelto de Prolog es su simplicidad y que no tiene las características más comunes de los lenguajes procedimentales. Entre tales características con las que no cuenta Prolog se encuentran: Sentencias de asignación. Sentencias goto. Sentencias if – then – else. Ciclos do, ciclos for y ciclos while. Sin embargo, Prolog compensa tales características con las siguientes, las cuales lo hacen un lenguaje poderoso para la representación del conocimiento: Predicados que expresan relaciones entre entidades. Un método para definir predicados mediante reglas de aserción y hechos. Un método para hacer preguntas para comenzar cómputos. Un procedimiento de búsqueda hacia atrás para evaluar metas. Estructura de datos que pueden simular registros estilo Pascal o listas estilo Lisp. Un reconocedor de patrones que construye y analiza las estructuras de datos. Un conjunto de predicados preconstruidos para aritmética, entrada y salida y servicios de sistemas. 3 8.1.4. Smalltalk Smalltalk fue el primer lenguaje de programación que fue diseñado para basarse exclusivamente en objetos. Fue originalmente inventado por Alan Kay en Xerox PARC en 1972, pero mucha gente le ha hecho importantes contribuciones al diseño del lenguaje. Este lenguaje se ha convertido en una opción muy popular en diversos campos como los videojuegos y la Inteligencia Artificial. Virtualmente todo lo que existe en un sistema Smalltalk es una instancia de una clase particular de objeto y generalmente puede haber tantas instancias como se deseen. Esto significa que se pueden tener cualquier número de instancias de cualquier característica del sistema activas al mismo tiempo63. 8.1.5. C y C++ C es uno de los lenguajes de programación más populares en uso. Proporciona un esqueleto estructurado sin límites para la creatividad del programador; una de las ventajas de C sobre otros lenguajes usados para investigación en IA es que es un lenguaje estructurado y además, si su aplicación no requiere usar la técnica Backtracking ni los recursos de una base de datos, estos no se convierten en un peso extra que debe soportar la aplicación. No hay una sola técnica de IA que no pueda ser desarrollada en un lenguaje procedimental como lo es C. De hecho, el desarrollo de ciertas rutinas es en verdad más claro en C que un lenguaje de IA. En cuanto a C++ se puede decir que es una extensión orientada a objetos de C, la cual permite utilizar la metodología orientada a objetos para la creación de diversos sistemas y programas, incluso los de IA64. Lección 37 8.2 Herramientas y SHELLS utilizados en la construcción de SE Inicialmente cada SE que se creaba, se construía a partir de un lenguaje de IA tal como LISP. Pero después de que muchos sistemas expertos se construyeron así, quedo claro que estos sistemas estaban construidos como un conjunto de representaciones declarativas (reglas) combinado con un intérprete de estas representaciones; también quedo claro que era posible separar el intérprete del conocimiento específico del dominio y por lo tanto se podían crear sistemas que podían ser usados para construir nuevos SE agregando simplemente conocimiento correspondiente al dominio del nuevo problema. 63 64 TELLO, Ernest. Op. cit. SCHILDT Herbert. Op. cit. 4 Así nacieron los shells los cuales sirven como base para muchos SE, ya que proporcionan mucha flexibilidad en representación del conocimiento y razonamiento, así como adquisición de conocimiento. 65 Los principales shells de SE, que como ya se mencionó, son SE sin su base de conocimiento, es decir, se pueden utilizar de forma genérica para cualquier tema, se describen a continuación. 8.2.1. Gold Works II Esta herramienta de programación creada por Gold Hill Computers Inc. Se ejecuta bajo LISP y utiliza la metodología orientada a objetos. Este programa corre en computadoras IBM compatibles, Macintosh y estaciones de trabajo Sun. Las características que realzan a este programa incluyen una herramienta dinámica de gráficos que permite la creación de imágenes activas así como también permite desarrollar interactivamente interfaces gráficas dinámicas sin tener que escribir ni una línea de código; también se incluyen visores orientados a gráficos para marcos, reglas y afirmaciones (aserciones). Se integra fácilmente con C. 8.2.2. ART ART es una herramienta que tiene un número de características poderosas para el desarrollo de SE, por ejemplo, permite la construcción de varios escenarios o mundo hipotéticos, los cuáles pueden ser explorados automáticamente para determinar su deseabilidad. De esta forma varios escenarios alternos pueden ser explorados para probar un plan estratégico dado con un conjunto de sentencias dado. La característica de esquema es otro aspecto de este programa el cual provee una representación orientada a objetos para sistemas resolutores de problemas basados en conocimientos.66 8.2.3. LOOPS LOOPS fue desarrollado en el Xerox PARC en 1983. Una de las ideas centrales en el diseño del ambiente LOOPS es proveer un sistema de programación de IA que pueda soportar una estructura de múltiples paradigmas que permitan tantas opciones de entre paradigmas de programación como sea posible. La versión actual soporta cuatro paradigmas de programación principales: 65 66 RICH Elaine y Kevin Knight. Op. cit. TELLO Ernest. Op. cit. 5 El paradigma orientado a objetos, el paradigma basado en reglas, el paradigma orientado a accesos y el paradigma procedural normal. Como cualquier otro. 8.2.4. KEE KEE, acrónimo de Ambiente de Ingeniería del Conocimiento, de IntelliCorp es una de las herramientas de desarrollo orientados a objetos de SE más avanzada en la actualidad. Hoy en día tiene un considerable uso en esfuerzos mayores de desarrollo tanto en el sector comercial como en el gobierno. Las funciones en KEE se implementan como extensiones de LISP, de manera que todo el vocabulario del lenguaje LISP puede usarse en conjunción con las funciones predefinidas. El sistema entero esta construido en una estructura de objetos, que en el ambiente son llamados unidades. 8.2.5. Humble Humble es un Shell orientado a objetos para SE escrito en Smalltalk que combina reglas con encadenamiento hacia delante y hacia atrás con representación de objetos, paso de mensajes y uso de objetos. Las reglas de sintaxis usadas en Humble son una versión modificada de la sintaxis de Smalltalk. A diferencia de la mayoría de los shells, Humble tiene la capacidad de construir bloques if – then – else. La característica principal de Humble es que las reglas operan sobre entidades. Las entidades son un importante tipo de objeto que tienen una representación específica. En las aplicaciones las entidades se categorizan en un número de tipos diferentes los cuáles son definidos por el desarrollador o por el Ingeniero de conocimientos. 8.2.6. EMYCIN EMYCIN es acrónimo de Empty MYCIN (MYCIN vacío); este shell fue creado a partir de MYCIN, uno de los SE más exitosos en la época de los setentas. Se construyó con el fin de que fuera usado para otros fines, además del diagnóstico de enfermedades en la sangre (objetivo para el cual fue creado). Este shell utiliza un lenguaje, llamado ARL, el cual es una notación de Algol y provee facilidades para monitorear el comportamiento de reglas. Sin embargo es difícil distinguir diferentes tipos de conocimiento (no se puede hacer diferencia entre conocimiento de control y conocimiento a cerca de los valores esperados de los parámetros), por lo que el agregar una nueva regla también se vuelve un proceso complicado.67 67 VALDIVIA Rosas, David. Sistemas Expertos. URL(http://www.fortunecity.com/skycraper/romrow/207/se/Portada.html) 6 Lección 38 8.3 Representación del conocimiento El conocimiento es la comprensión adquirida, implica aprendizaje, conciencia y familiaridad con una o más materias; el conocimiento se compone de ideas, conceptos, hechos y figuras, teorías, procedimientos y relaciones entre ellos, y formas de aplicar los procedimientos a la resolución práctica de problemas. El conocimiento que ha de funcionar en un SE es el conocimiento heurístico; el conocimiento heurístico es aquel conocimiento que ayuda a las personas u ordenadores a aprender, es el uso de los conocimientos empíricos. Las reglas de pensamiento, los trucos, los procedimientos o cualquier tipo de información que nos ayuda en la resolución de problemas. La representación del conocimiento es un esquema o dispositivo utilizado para capturar los elementos esenciales del dominio de un problema. Una representación manipulable es aquella que facilita la computación. En representaciones manipulables, la información es accesible a otras entidades que usan la representación como parte de un cómputo. Debido a la variedad de formas que el conocimiento puede asumir, los problemas involucrados en el desarrollo de una representación del conocimiento son complejos, interrelacionados y dependientes del objetivo. En términos generales, el conocimiento debe estar representado de tal forma que: Capture generalizaciones. Pueda ser comprendido por todas las personas que vayan a proporcionarlo y procesarlo. Pueda ser fácilmente modificado. Pueda ser utilizado en diversas situaciones aún cuando no sea totalmente exacto o completo. Pueda ser utilizado para reducir el rango de posibilidades que usualmente debería considerarse para buscar soluciones. El conocimiento declarativo puede ser representado con modelos relacionales y esquemas basados en lógica. Los modelos relacionales pueden representar el conocimiento en forma de árboles, grafos o redes semánticas. Los esquemas de representación lógica incluyen el uso de lógica proposicional y lógica de predicados. Los modelos procedimentales y sus esquemas de representación almacenan conocimiento en la forma de cómo hacer las cosas. Pueden estar caracterizados 7 por gramáticas formales, usualmente implantadas por sistemas o lenguajes procedimentales y sistemas basados en reglas (sistemas de producción). 68 En forma natural, el ser humano representa el conocimiento simbólicamente: imágenes, lenguaje hablado y lenguaje escrito. Adicionalmente, ha desarrollado otros sistemas de representación del conocimiento: literal, numérico, estadístico, estocástico, lógico. La ingeniería cognoscitiva ha adaptado diversos sistemas de representación del conocimiento que, implantados en un computador, se aproximan mucho a los modelos elaborados por la psicología cognoscitiva para el cerebro humano. Tradicionalmente la representación del conocimiento conlleva el uso de marcos (frames), redes semánticas, cálculo de predicados o sistemas de producción69. Sin embargo, existen otros sistemas para la representación del conocimiento. Entre los principales sistemas se tienen: Lógica Simbólica Formal: Lógica proposicional Lógica de predicados. Reglas de producción. Formas Estructuradas: Redes asociativas. Estructuras frame. Representación orientada a objetos. 8.4 Lógica Proposicional La lógica proposicional es la más antigua y simple de las formas de lógica. Utilizando una representación primitiva del lenguaje, permite representar y manipular aserciones sobre el mundo que nos rodea. La lógica proposicional permite el razonamiento a través de un mecanismo que primero evalúa sentencias simples y luego sentencias complejas, formadas mediante el uso de conectivos proposicionales, por ejemplo Y (AND), O (OR). Este mecanismo determina la veracidad de una sentencia compleja, analizando los valores de veracidad asignados a las sentencias simples que la conforman. La lógica proposicional permite la asignación de un valor verdadero o falso para la sentencia completa, pero no tiene la facilidad de analizar las palabras individuales que componen la sentencia. 68 ARTEAGA, René y Juan Carlos Armijos. Tutorial de programación Heurística. URL(www.uc3m.es/cgibin/nph-count) 69 DE ALBORNOZ Bueno, Álvaro. Laboratorio de procesamiento de imágenes. URL(http://www.cic.ipn.mx/organizacion/lab_de_int_art.htm) 8 La principal debilidad de la lógica proposicional es su limitada habilidad para expresar conocimiento. 8.5 Lógica de Predicados Existen varias sentencias complejas que pierden mucho de su significado cuando se les representa en lógica proposicional. Por esto se desarrolló una forma lógica más general, capaz de representar todos los detalles expresados en las sentencias, esta es la lógica de predicados. La lógica de predicados está basada en la idea de que las sentencias realmente expresan relaciones entre objetos, así como también cualidades y atributos de tales objetos. Los objetos pueden ser personas, objetos físicos, o conceptos. Tales cualidades, relaciones o atributos, se denominan predicados. Los objetos se conocen como argumentos o términos del predicado. Al igual que las proposiciones, los predicados tienen un valor de veracidad, pero a diferencia de las proposiciones, su valor de veracidad, depende de sus términos. Es decir, un predicado puede ser verdadero para un conjunto de términos, pero falso para otro. 8.5.1. Ventajas y desventajas de la lógica de predicados A continuación se presentan algunos aspectos característicos de la lógica de predicados y su implementación computacional, el lenguaje de programación PROLOG: Manejo de incertidumbre. Una de las mayores desventajas de la lógica de predicados es que sólo dispone de dos niveles de veracidad: verdadero y falso. Esto se debe a que la deducción siempre garantiza que la inferencia es absolutamente verdadera. Sin embargo, en la vida real no todo es blanco y negro. En cierta forma el PROLOG ha logrado mitigar esta desventaja, permitiendo la inclusión de factores de certeza. Razonamiento monotónico. La lógica de predicados al ser un formalismo de razonamiento monótono, no resulta muy adecuada para ciertos dominios del mundo real, en los cuales las verdades pueden cambiar con el paso del tiempo. PROLOG compensa esta deficiencia proporcionando un mecanismo para remover los hechos de la base de datos. Por ejemplo, en TURBO PROLOG se tiene la cláusula RETRACTALL. Programación declarativa. La lógica de predicados, tal como está diseñada en PROLOG, es un lenguaje de programación declarativo, en donde el programador sólo necesita preocuparse del conocimiento expresado en términos del operador de implicación y los axiomas. El mecanismo deductivo de la lógica de predicados llega a una respuesta (si esto es factible), utilizando un proceso exhaustivo de unificación y búsqueda. A pesar de que la búsqueda exhaustiva puede ser apropiada en 9 muchos problemas, también puede introducir ineficiencias durante la ejecución. Para lograr un cierto control en el proceso de búsqueda, PROLOG ofrece la operación de corte, CUT. Cuando no se utiliza el CUT, PROLOG se convierte en un lenguaje puramente declarativo. Lección 39 8.6 Reglas de Producción La Representación del conocimiento en forma de reglas de producción fue propuesta por Post en 1943. La regla es la forma más común de representar el conocimiento, debido a su gran sencillez y a que es la formulación más inmediata del principio de causalidad. Una regla consta de un conjunto de acciones o efectos (una o más) que son ciertas cuando se cumplen un conjunto de condiciones o causas. La potencia de una regla está en función de la lógica que admita en las expresiones de las condiciones y de las conclusiones. La conclusión se suele referir a la creación de un nuevo hecho válido, o la incorporación de una nueva característica a un hecho, mientras que la acción suele referirse a la transformación de un hecho. 8.6.1. Ventajas y desventajas de las reglas de producción Las ventajas que representan las reglas de producción son su carácter declarativo, su sencillez, su uniformidad - que permite la representación de conocimiento como de meta-conocimiento -, su independencia - que permite la supresión o inclusión sin que se vea afectado el resto de la base de conocimientos - y su modularidad al ser fácilmente agrupables. La principal desventaja que presentan las reglas de producción, es la dificultad de establecer relaciones, para lo cual hay que recurrir al uso de meta reglas, lo que produce el crecimiento muy rápido del número de reglas, lo que hace lento el proceso de inferencia y conduce a la introducción repeticiones y lo que es peor, contradicciones.70 8.7 Redes Asociativas Las redes semánticas o redes asociativas, fueron originalmente desarrolladas para representar el significado o semántica de oraciones en inglés, en términos de objetos y relaciones. Actualmente, el término redes asociativas ya no sólo se usa para representar relaciones semánticas, sino también para representar asociaciones físicas o causales entre varios conceptos u objetos. Las redes asociativas se caracterizan por representar el conocimiento en forma gráfica. Agrupan una porción de conocimiento en dos partes: objetos y relaciones 70 BRATKO Ivan. Prolog programming for Articial Intelligence. 10 entre objetos. Los objetos se denominan también nodos (elementos del conocimiento) y las relaciones entre nodos se denominan enlaces o arcos. Cada nodo y cada enlace en una red semántica, deben estar asociados con objetos descriptivos. Estas redes son muy apropiadas para representar conocimiento de naturaleza jerárquica. Su concepción se basa en la asociación de conocimientos que realiza la memoria humana. Las principales aplicaciones son: comprensión de lenguaje natural, bases de datos deductivas, visión por computadora y sistemas de aprendizaje.71 8.7.1. Ventajas y desventajas de las Redes Asociativas Las redes asociativas tienen dos ventajas sobre los sistemas basados en reglas y sobre los sistemas basados en lógica: Permiten la declaración de importantes asociaciones, en forma explícita. Debido a que los nodos relacionados están directamente conectados, y no se expresan las relaciones en una gran base de datos, el tiempo que toma el proceso de búsqueda por hechos particulares puede ser significativamente reducido. Entre las desventajas de las redes asociativas, se pueden mencionar: No existe una interpretación normalizada para el conocimiento expresado por la red. La interpretación de la red depende exclusivamente de los programas que manipulan la misma. La dificultad de interpretación a menudo puede derivar en inferencias inválidas del conocimiento contenido en la red. La exploración de una red asociativa puede derivar en una explosión combinatoria del número de relaciones que deben ser examinadas para comprobar una relación.72 Lección 40 8.8 Estructuras frame Una plantilla (frame) es una estructura de datos apropiada para representar una situación estereotípica. Las plantillas organizan el conocimiento en objetos y eventos que resultan apropiados para situaciones específicas. La evidencia psicológica sugiere que la gente utiliza grandes plantillas para codificar el conocimiento de experiencias pasadas, o conocimiento acerca de cosas que se encuentran comúnmente, para analizar y explicar una situación nueva en su cotidiana actividad cognoscitiva. 71 72 ANGULO Usategui, José María y Anselmo del Moral Bueno. Guía fácil de la inteligencia artificial. ARTEAGA, René y Juan Carlos Armijos. Op. cit. 11 Una plantilla representa un objeto o situación describiendo la colección de atributos que posee. Cada plantilla está formada por un nombre y por una serie de campos de información o ranuras (slots). Cada ranura puede contener uno o más enlaces (facets). Cada enlace tiene un valor asociado. Varios enlaces pueden ser definidos para cada ranura, por ejemplo: Rango. El conjunto de posibles valores para la ranura. Valor. El valor de la ranura. Default. El valor a ser asumido si no se especifica alguno. Además los enlaces pueden ser procedimientos que residen en la base de datos y están aguardando para ser utilizados cuando se les necesite. Entre los más comunes se pueden mencionar: Si-Necesitado. Procedimiento(s) para determinar el valor actual de una ranura. Si-Agregado. Procedimiento(s) a ejecutarse cuando un valor es especificado para una ranura. Si-Modificado. Procedimiento(s) a ejecutarse si el valor de una ranura es cambiado. A estos procedimientos también se los denomina demons y representan un concepto poderoso en las plantillas, esto es, la habilidad de combinar conocimiento procedimental dentro de la estructura de conocimiento declarativo de la plantilla. Esto sugiere que una plantilla puede ser un medio poderoso de representación del conocimiento, especialmente si se la incorpora en una red de plantillas.73 8.8.1. Ventajas y desventajas de los frames Las ventajas que se pueden establecer para los sistemas basados en plantillas son las siguientes: 73 Facilidad de proceso guiado por las expectativas. Un sistema basado en plantillas, mediante los demons es capaz de especificar acciones que deben tener lugar cuando ciertas condiciones se han cumplido durante el procesamiento de la información. El conocimiento que posee un sistema basado en plantillas es significativamente más estructurado y organizado que el conocimiento dentro de una red asociativa. Las plantillas pueden ser estructuradas de tal forma que sean capaces de determinar su propia aplicabilidad en determinadas situaciones. En el caso BENCHIMOL, Guy, Pierre Levine y Jean Charles Promerol. Los sistemas expertos en la empresa. 12 de que una plantilla en particular no sea aplicable, puede sugerir otras plantillas que pueden ser apropiadas para la situación. Se puede fácilmente almacenar en las ranuras valores dinámicos de variables, durante la ejecución de un sistema basado en conocimiento. Esto puede ser particularmente útil para aplicaciones de simulación, planeamiento, diagnóstico de problemas o interfaces para bases de datos. Las principales desventajas que se pueden establecer para la representación del conocimiento mediante plantillas, son: Dificultad de representar objetos que se alejen considerablemente de estereotipos. No tiene la posibilidad de acomodarse a situaciones u objetos nuevos. Dificultad para describir conocimiento heurístico que es mucho más fácilmente representado mediante reglas. 8.9 Representación orientada a objetos Los objetos, son similares a las plantillas. Ambos sirven para agrupar conocimiento asociado, soportan herencia, abstracción y el concepto de procedimientos agregados. La diferencia radica en lo siguiente: 1. En las plantillas, a los programas y a los datos se los trata como dos entidades relacionadas separadas. En cambio en los objetos se crea una fuerte unidad entre los procedimientos (métodos) y los datos. 2. Los demons de las plantillas sirven sólo para computar valores para las diversas ranuras o para mantener la integridad de la base de conocimientos cada vez que una acción de alguna plantilla, afecta a otra. En cambio, los métodos utilizados por los objetos son más universales ya que proporcionan cualquier tipo general de computación requerida y además soportan encapsulamiento y polimorfismo. Un objeto es definido como una colección de información que representa una entidad del mundo real y una descripción de cómo debe ser manipulada esta información, esto es, los métodos. Es decir, un objeto tiene un nombre, una caracterización de clase, varios atributos distintivos y un conjunto de operaciones. La relación entre los objetos viene definida por los mensajes. Cuando un objeto recibe un mensaje válido, responde con una acción apropiada, retornando un resultado. 8.9.1. Ventajas y desventajas de la representación orientada a objetos Los objetos, como forma de representación del conocimiento ofrecen las siguientes ventajas: Poder de abstracción. 13 Encapsulamiento o capacidad de esconder información. Herencia, es decir pueden recibir características de sus ancestros. Polimorfismo, que permite crear una interfaz común para todos los diversos objetos utilizados dentro del dominio. Posibilidad de reutilización del código. Mayor facilidad para poder trabajar eficientemente con sistemas grandes. Las desventajas son similares a las que se indicaron para las plantillas: 8.10 Dificultades para manejar objetos que se alejan demasiado de la norma. Dificultades para manejar situaciones que han sido encontradas previamente. ACTIVIDADES COMPLEMENTARIAS 1. Realice un cuadro comparativo de los diferentes lenguajes programación utilizados en la construcción de SE. 2. En que consiste la lógica proposicional y la lógica de predicados,¿Cual su uso en las SE? 3. Realice un cuadro comparativo destacando las ventajas y desventajas la lógica de predicados y la lógica proposicional. 4. ¿Que es una regla de producción y como son aplicadas en los SE? 5. ¿Que es un Frame? y que ventajas y desventajas traen al ser utilizados la construcción de SE de es de en 14 CAPITULO 9. INTRODUCCIÓN A PROLOG Lección 41 9.1 Conceptos Básicos PROLOG es un lenguaje de programación para la creación de sistemas inteligentes y trabaja mediante reglas o programación lógica relacional, fue creado para representar y utilizar el conocimiento que se tiene sobre un determinado dominio, donde el dominio es un conjunto de objetos y el conocimiento se representa por un conjunto de relaciones que describen las propiedades de los objetos y sus interrelaciones; la extensión de los archivos en prolog es .pl74 9.1.1 Hechos Expresan relaciones entre objetos. Suponga que se quiere expresar el hecho de que "un coche tiene ruedas". Este hecho, consta de dos objetos, "coche" y "ruedas", y de una relación llamada "tiene". La forma de representarlo en PROLOG es: tiene(coche,ruedas). // en esta relación se denota una existencia de tenencia //entre coche y ruedas, prolog en este punto no conoce quien es el coche, somos nosotros quienes le damos esa interpretación, prolog solamente se encarga de //crear una relación en su base del conocimiento. Los nombres de objetos y relaciones deben comenzar con una letra minúscula. Primero se escribe la relación, y luego los objetos separados por comas y encerrados entre paréntesis. Al final de un hecho debe ir un punto (el carácter "."). El orden de los objetos dentro de la relación es arbitrario, pero hay que ser coherentes a lo largo de la base de hechos. 9.1.2 Variables Representan objetos que el mismo PROLOG determina. Las variables son cadenas de letras, dígitos y el signo '_'. Estas empiezan con una letra mayúscula o el símbolo '_': Una variable puede estar instanciada o no instanciada. Esta instanciada cuando existe un objeto determinado representado por la variable. De este modo, cuando preguntamos "Un coche tiene X ?", PROLOG busca en los hechos cosas que tiene un coche y respondería: X = ruedas. 74 Tomado de: http://fcqi.tij.uabc.mx/docentes/ardiaz/conceptos.html 15 instanciando la variable X con el objeto ruedas. Los nombres de variables comienzan siempre por una letra mayúscula. Un caso particular es la variable anónima, representada por el carácter subrayado ("_"). Es una especie de comodín que utilizaremos en aquellos lugares que debería aparecer una variable, pero no nos interesa darle un nombre concreto ya que no vamos a utilizarla posteriormente. La regla: para toda X, X tiene un hijo si X es el padre de alguna Y. hijo(X) :- padre (X,Y). Si se está definiendo la propiedad hijo el cual, no depende del nombre del hijo. Entonces, aquí hay un lugar en donde se puede usar una variable anónima. hijo(X) :- padre(X,_). 9.1.3 Reglas Las reglas se utilizan en PROLOG para significar que un hecho depende de uno o más hechos. Son la representación de las implicaciones lógicas del tipo p → q (p implica q). Una regla consiste en una cabeza y un cuerpo, unidos por el signo ":-". La cabeza esta formada por un único hecho. El cuerpo puede ser uno o más hechos (conjunción de hechos), separados por una coma (","), que actúa como el "y" lógico. Las reglas finalizan con un punto ("."). La cabeza en una regla PROLOG corresponde al consecuente de una implicación lógica, y el cuerpo al antecedente. Este hecho puede conducir a errores de representación. Supongamos el siguiente razonamiento lógico: tiempo(lluvioso) → suelo(mojado) suelo(mojado) Que el suelo esta mojado, es una condición suficiente de que el tiempo sea lluvioso, pero no necesaria. Por lo tanto, a partir de ese hecho, no podemos deducir mediante la implicación, que esta‚ lloviendo (pueden haber regado las calles). La representación “correcta” en PROLOG, sería: suelo(mojado) :- tiempo(lluvioso). suelo(mojado). 16 Cabe señalar que la regla esta "al revés". Esto es así por el mecanismo de deducción hacia atrás que emplea PROLOG. Si cometiéramos el “error” de representarla como: tiempo(lluvioso) :- suelo(mojado). suelo(mojado). PROLOG, partiendo del hecho de que el suelo esta mojado, deduciría incorrectamente que el tiempo es lluvioso. Para generalizar una relación entre objetos mediante una regla, utilizaremos variables. Por ejemplo: Representación lógica | Representación PROLOG Es un coche(X) → | tiene(X,ruedas) : tiene(X,ruedas) | es un coche(X). Con esta regla generalizamos el hecho de que cualquier objeto que sea un coche, tendrá ruedas. Al igual que antes, el hecho de que un objeto tenga ruedas, no es una condición suficiente de que sea un coche. Por lo tanto la representación inversa sería incorrecta. 9.1.4 Comentarios Cuando se quiere hacer un comentario que cuenta con más de una línea, se hace de la siguiente manera: /* Comentario x Comentario y */ Si el comentario es de una solo línea simplemente se antecede el signo de % al comentario. Es importante saber que los comentarios no tienen efecto en la ejecución del programa. % Comentario 9.1.5 El ámbito de las variables. Cuando en una regla aparece una variable, el ámbito de esa variable es Únicamente esa regla. Supongamos las siguientes reglas: (1) hermana_de(X,Y) :- hembra(X), padres(X,M,P), padres(Y,M,P). (2) puede_robar(X,P) :- ladron(X), le_gusta_a(X,P), valioso(P). Aunque en ambas aparece la variable X (y la variable P), no tiene nada que ver la X de la regla (1) con la de la regla (2), y por lo tanto, la instanciación de la X en (1) no implica la instanciación en (2). Sin embargo todas las X de *una misma regla* si que se instanciaran con el mismo valor. 17 Lección 42 9.1.6 Operadores Son predicados predefinidos en PROLOG para las operaciones matemáticas básicas. Su sintaxis depende de la posición que ocupen, pudiendo ser infijos o prefijos. Por ejemplo el operador suma ("+"), podemos encontrarlo en forma prefija '+(2,5)' o bien infija, '2 + 5'. 9.1.6.1 Aritméticos Todas las versiones de Prolog soportan los siguientes operadores aritméticos, listados en el orden de prioridad de ejecución. + SUMA - RESTA * MULTIPLICACIÓN / DIVISIÓN // DIVISION ENTERA MOD RESIDUO ^ POTENCIA Los paréntesis se pueden utilizar para dar preferencia de ejecución en una expresión compuesta. Prolog utiliza la precedencia de operadores con la regla de la mano izquierda. A continuación se muestran algunas operaciones más complejas que PROLOG provee: Tabla 9.1 Otros operadores que soporta prolog Operación 9.1.6.2 Descripción Sqrt(X) Calcula la raíz cuadrada de la variable log(X) Calcula el logaritmo de X ln(X) Calcula el logaritmo natural de X abs(B) Regresa el valor absoluto de B sin(T) Seno de T cos(A) Coseno de A tan(C) Tangente de C Relacionales También dispone de predicados de igualdad y desigualdad. 18 = IGUAL QUE (X = Y igual) > MAYOR QUE (X < Y menor) (X > Y mayor) >= MAYOR O IGUAL QUE (X <= Y) >= MENOR O IGUAL QUE (X >= Y) <> DESIGUAL QUE =/= DIFERENTE QUE (X \= Y distinto) is EVALUADOR DE EXPRESIÓN seed GENERADOR DE NÚMEROS ALEATORIOS Al igual que en otros lenguajes de programación es necesario tener en cuenta la precedencia y la asociatividad de los operadores antes de trabajar con ellos. En cuanto a precedencia, es la típica. Por ejemplo, 3+2*6 se evalúa como 3+(2*6). En lo referente a la asociatividad, PROLOG es asociativo por la izquierda. Así, 8/4/4 se interpreta como (8/4)/4. De igual forma, 5+8/2/2 significa 5+((8/2)/2). El operador 'is'. Es un operador infijo, que en su parte derecha lleva un término que se interpreta como una expresión aritmética, contrastándose con el término de su izquierda. Por ejemplo, la expresión '6 is 4+3.' es falsa. Por otra parte, si la expresión es 'X is 4+3.', el resultado será la instanciación de X: X=7 Una regla PROLOG puede ser esta: densidad(X,Y) :- población(X,P), área(X,A), Y is P/A. Algunos comandos básicos * consult. El predicado _consult_ esta pensado para leer y compilar un programa PROLOG o bien para las situaciones en las que se precise añadir las cláusulas existentes en un determinado fichero a las que ya están almacenadas y compiladas en la base de datos. Su sintaxis puede ser una de las siguientes: consult(fichero). consult('fichero.ext'). consult('c:\ia\prolog\fichero'). * recon. 19 El predicado recon es muy parecido a consult, con la salvedad de que las cláusulas existentes en el fichero consultado, reemplazan a las existentes en la base de hechos. Puede ser útil para sustituir una única cláusula sin consultar todas las demás, situando esa cláusula en un fichero. Su sintaxis es la misma que la de consult. *forget. Tiene como fin eliminar de la base de datos actual aquellos hechos consultados de un fichero determinado. Su sintaxis es: forget(fichero). * exitsys. Este predicado nos devuelve al sistema operativo. 9.1.7 Predicados Un predicado es la relación directa con una expresión. Cada predicado usado en una cláusula de Prolog debe ser declarado, basado en la declaración de los tipos de dominios para cada uno de los nombres de los objetos. paciente(nombre, edad, peso, presion_sanguínea). mercado(encargado, vendedor). 9.1.8 Estructuras Los objetos estructurados (o simplemente estructuras) son objetos que tienen varios componentes. Los componentes pueden ser a su vez estructuras. Por ejemplo, la fecha, puede ser vista como una estructura con 3 componentes: día, mes y año. Las estructuras son tratadas en el programa como objetos simples, aunque estén formadas por muchos componentes. El orden en que se combinan los componentes dentro de un objeto simple, es la forma en que escogemos una functor. Un functor conveniente para nuestro ejemplo es fecha. Entonces la fecha 1o. de Enero 1975 puede escribirse: fecha(1, enero, 1975) Todos los componentes en este ejemplo son constantes (2 enteros y un átomo). En la siguiente figura vemos como se representa en forma de árbol, y a su vez cómo está escrito en Prolog: Ahora bien, cualquier día de enero de 1975 puede representarse mediante la estructura: fecha(Día, enero, 1975) Donde Día es una variable que puede ser instanciada por cualquier objeto en cualquier momento de la ejecución del programa. Sintácticamente, todos los objetos de datos en Prolog son términos. Por ejemplo, enero y date(1,enero,1975) son términos. 20 9.1.9 Consultas Para plantear una consulta en Prolog, el usuario simplemente prueba ésta, para ver si ésta es verdadera. Si la prueba es positiva, Prolog contesta: YES, de lo contrario responde NO, o también se usa TRUE o FALSE, dependiendo del programa que se use para la programación. lenguaje. paciente ("ana", femenino). yes 9.1.10 Cláusulas y Relaciónes La programación lógica está basada en la noción de relación. Debido a que en la relación es un concepto más general de una aplicación. La programación lógica es potencialmente de alto nivel. Considerar 2 conjuntos de valor S y T, R es la Relación entre S y T, para toda X que pertenece a S y Y que pertenece a T y R(X,Y) es verdadero o falso. Dado a, determinar el valor m(a). En la programación Lógica se implementa las relaciones. Sea R una relación: Dado a y b, determinar cuando R(a,b) es verdadero. Dado a, encontrar todos los Y/R(a,y) es verdadero. Dado b, encontrar todos los X/R(x,b) es verdadero. Encontrar X y Y/R(x,y) es verdadero. 9.1.10.1 Tipos de Relaciones Si R(x) entonces relación unitaria. Si R(x ,y) entonces relación binaria. Si R(x, y, z) entonces relación ternaria. Un programa en PROLOG define una colección de relaciones. Cada relación es definida por una o más cláusulas. 9.1.10.2 Interpretación de una Cláusula en Prolog A:- A1,...,An. :- Es equivalente "Si" o "si". , Es equivalente "AND". ; Es equivalente a "OR" Lección 43 9.2 Construcción de reglas de producción en Prolog La estructura de una regla en PROLOG es la siguiente: consecuente :- condicion1, condicion2, ..., condicionN. La cual se lee: El Consecuente es verdadero si y solo si las n condiciones especificadas a la izquierda del símbolo :- son todas verdaderas, pues la coma representa la conjunción lógica. Así el consecuente representa la consecuencia de la veracidad de las condiciones mencionadas. 21 Según esta estructura las reglas se pueden dividir en tres partes: Cabeza: El consecuente Cuello: El símbolo : Cuerpo: la conjunción de las n condiciones Existen dos tipos de reglas fundamentales: Hechos o Axiomas, reglas que representan un elemento cuya veracidad se admite sin necesidad de verificar ninguna condición, dentro del universo de trabajo elegido. Por lo tanto no poseen cuerpo. Reglas de Producción o reglas normales que sí necesitan de cierta verificación para asegurar su veracidad. Por ejemplo el conjunto de cláusulas para decir que “si X es catedrático entonces X es doctor” y “si (X es jefe_dpto) entonces (x es catedrático)” se codifica en PROLOG. (1) catedratico(X) :-jefe(X). (2) doctor(X) :- catedratico(X). (3) catedratico("Ivan Gonzalez"). (4) catedratico("Diana Cardona"). (5) jefe("Angel Cruz"). La regla (1) y (2) son reglas de producción y el resto son axiomas o hechos saludo:nl, write('Ingrese su nombre, por favor'), tab(3), read(Name), nl,nl, write('Hola '), write(Name). Otro de los ejemplos de los cuales abordamos en el modulo fue el un estudio electrofisiológico así: El tiempo de latencia distal del nervio mediano mide el tiempo que tarda en llegar un impulso eléctrico desde su origen hasta el sitio en que está localizado el electrodo de registro. If Latencia Distal >= 4 Then Latencia Distal Normal If Latencia Distal < 4 Then Latencia Distal Anormal En Prolog las reglas de producción serian latenciadistal(X):-X>=4,write('Normal'). latenciadistal (X):-X<4,write('Anormal'). 22 y la pregunta para saber si tiene latencia distal normal o anormal seria: latenciadistal (5). Si (el termómetro marca 39º) Y (el termómetro funciona correctamente) Entonces el paciente tiene fiebre En Prolog las reglas de producción serian temperatura(X):-X>37,termometro(Y),write('Paciente tiene fiebre'). termometro(Y):-write('El termometro funciona? (si.,no.) '), read(si). Y la pregunta para saber si tiene fiebre temperatura(39). Al tener por ejemplo dentro de nuestra base del conocimiento, los siguientes hechos75: sucesor(1,2). sucesor(2,3). sucesor(3,4). sucesor(4,5). sucesor(5,6). sucesor(6,7). Podemos realizar consultas como las siguientes: sucesor(X,6). sucesor(2,Y). sucesor(X,Y). Nótese como los átomos de información que se desean consultar han sido reemplazados por variables (letra inicial en mayúscula); en este punto Prolog busca dentro de su base del conocimiento un hecho que haga emparejamiento con la información suministrada en la consulta. Primero, busca una predicado (nombre de la relación) llamado sucesor, luego hace una comparación entre la información que se tiene (6), para llenar la variable X con la información almacenada en el hecho, así, prolog responde X=5. De la misma forma ocurre con la segunda consulta; en la tercera no existe información para hacer emparejamiento en la base del conocimiento, por lo tanto el responderá con el primer hecho que tenga ese predicado. Responderá: X=1 Y = 2; En este punto tenemos dos opciones: quedar satisfechos con la respuesta que prolog nos ha suministrado oprimiendo enter o solicitarle consultas sobre otros posibles emparejamientos, para la cual debemos oprimir punto y coma (;). 75 Tomado de: http://dis.unal.edu.co/~fgonza/courses/2005-I/AI/taller3-PROLOG.html 23 Es también posible construir en prolog consultas complejas con los operadores AND(,), OR(;) y NOT(not) de la siguiente forma: legusta(pepe,pesca). legusta(maria,bailar). legusta(ana,pesca). legusta(pepe,musica). legusta(maria,musica). legusta(ana,bailar). Se pueden realizar las siguientes preguntas sobre la base de información: - ¿Le gusta la música a Pepe y a Maria?: ?-legusta(pepe,musica),legusta(maria,musica). - ¿Le gusta bailar a Pepe o a Maria le gusta la música?: ?-legusta(pepe,musica);legusta(maria,musica). - ¿Le gusta bailar a Pepe y a Maria no le gusta la música?: ?-legusta(pepe,musica),not(legusta(maria,musica)). Para que estas consultas funcionen de forma adecuada es necesario no dejar espacios entre los operadores. sucesor(1,2). sucesor(2,3). sucesor(3,4). sucesor(4,5). sucesor(5,6). sucesor(6,7). suma(1,X,R):-sucesor(X,R). suma(N,X,R):-sucesor(M,N),suma(M,X,R1),sucesor(R1,R). Aquí podemos apreciar como suma es una regla que depende en gran medida de la condición sucesor. En la segunda regla de suma se observa que existe mas de una condición, por tanto estas van separadas por coma; podemos observar también que se realiza una operación recursiva. Esta misma sentencia traducida en un lenguaje de programación como Java quedaría: int suma(int N, int X, int R) { if ( N == 1 ) { sucesor(X,R); } else { sucesor(M,N); suma(M,X,R1); sucesor(R1,R2); 24 } } Obsérvese que en la segunda línea del bloque else se realiza un llamado recursivo al método suma, de forma tal, que se realiza la operación disminuyendo el valor de N hasta que este se hace 1, en el cual termina la recursividad y se origina la respuesta. Lección 44 9.3 Estructura de un programa PROLOG Un programa Prolog está formado por una secuencia de enunciados: hechos, reglas y comentarios. Una relación puede estar especificada por hechos, simplemente estableciendo objetos que satisfacen la relación o por reglas establecidas acerca de la relación. Cada regla está formada por un primer miembro (o la cabeza de la regla), un segundo miembro (o cola de la regla) ligados por " :- " y termina con el carácter " . ". código del programa ** Comentarios ** % ejemplo de la estructura que % debe llevar un programa prolog ** Hechos ** mujer(maria). hombre(pedro). hombre(manuel). hombre(arturo). ** Relaciones ** padre(pedro,manuel). padre(pedro,arturo). padre(pedro,maria). ** Reglas ** nino(X,Y):- padre(Y,X) hijo(X,Y):-nino(X,Y),hombre(X). hija(X,Y):-nino(X,Y),mujer(X). hermano_o_hermana(X,Y):-padre(Z,X),padre(Z,Y). hermano(X,Y):-hermano_o_hermana(X,Y),hombre(X). hermana(X,Y):-hermano_o_hermana(X,Y),mujer(X). 25 Lección 45 9.4 Ejemplo de un programa en PROLOG Una vez tengas instalado SWI-Prolog en tu equipo y lo ejecutes te aparecerá la consola que permite hacer consultas. En Windows Al iniciar Prolog, aparece la consola en la cual se hacen las consultas: Figura 3.19. Consola de Prolog En el menú de File/New se abre un nueva ventana para escribir código fuente. Figura 3.20. Archivo de Prolog 1. Tener el programa de Prolog abierto. 26 2. En el código fuente se compila, haciendo clic en el menú compile. 3. En la consola se hace la consulta. Una vez hayas compilado y guardado el archivo, vas al menú File/Consult y cargas el archivo del cual vas a hacer la consulta y luego ejecutas las consultas necesarias. Likes.pl, es un ejemplo que viene con SWI-Prolog, pueden copiarlo y luego realizar las consultas pertinentes, la cual puede ser: likes(sam,pizza)., la respuesta a esta consulta es “yes” de acuerdo a lo que está escrito en el programa . %% Demo coming from http://clwww.essex.ac.uk/course/LG519/2facts/index_18.html %% Please load this file into SWI-Prolog %% Sam's likes and dislikes in food %% %% Considering the following will give some practice %% in thinking about backtracking. %% ?- likes(sam,dahl). %% ?- likes(sam,chop_suey). %% ?- likes(sam,pizza). %% ?- likes(sam,chips). %% ?- likes(sam,curry). likes(sam,Food) :- indian(Food), mild(Food). likes(sam,Food) :- chinese(Food). likes(sam,Food) :- italian(Food). likes(sam,chips). indian(curry). indian(dahl). indian(tandoori). indian(kurma). mild(dahl). mild(tandoori). mild(kurma). chinese(chow_mein). chinese(chop_suey). chinese(sweet_and_sour). italian(pizza). italian(spaghetti). 27 10. BIBLIOGRAFIA PROLOG / Francois Giannesini, Henry Kanoui, Robert Paseroy Michael Van Canaghen .-- s.c: Editorial Iberoamericana. Patrick Henry Winston , Inteligencia Artificial , Editorial Iberoamericana Castillo, E., Gutierrez, J.M. y Hadi, H (1997), Expert Systems and Probabilistic Network Models. Springer, New York. Versión Española editada por la Academia Española de Ingeniería. Durkin, J. (1994), Expert Systems: Design and Development. Maxwell Macmillan, New York. Russell Stuart y Norving Meter, (2.004), Inteligencia Artificial, Pearson Education Giarratano Joseph y Riley Gary, Programación, Thomson Editores. Ezawa K. J.; Schuermann T. (1995). “Fraud/uncollectable debt detection using a Bayesian network based learning system: A rare binary outcome with mixed data structures”, Proceedings of the Eleventh Conference on Uncertainty in Artificial Intelligence, 157-166. Sahami, M. (1996). “Learning limited dependence Bayesian classifiers”, Proceedings of the Second International Conference on Knowledge Discovery and Data Mining”, 335, 338, Menlo Park, CA. Friedman, N.; Geiger, D; Goldszmidt, M. (1997). “Bayesian network classifier”, Machine Learning, 29, 131-163, 1997. Abad, M. (2001). “Aplicación del principio inductivo de MEVR en la construcción de clasificadores”, tesis doctoral. Departamento de Ingeniería de la Información y las Comunicaciones, Universidad de Murcia, España. (2.001), Sistemas Expertos Principios y SITIOS WEB www.Qdl.vcag.mx/66/ola.htm/ www.lafacu.com/apuntes/informatica/sist_expe/ http://home.worldonline.es/jmariocr/ www.ingenieroseninformatica.org/recursos/tutoriales/sist_exp/index.php www.go.to/inteligencia_artificial www.el-mundo.es/entradasecreta/inteligencia.html www.cs.us.es/ www.aircenter.net/ www.laopinion.com/vidayestilo/ 28 www.laguia.com.ar/aaia.htm http://es.wikipedia.org/wiki/Case-based_reasoning http://www.ingenieria.uady.mx/weblioteca/sistemasinteligentes/Tema05/CB R1.htm http://www.inf.udec.cl/~revista/ediciones/edicion9/psalcedo.pdf Esta es la última versión de SWI-Prolog para Windows. http://www.swi.psy.uva.nl/cgi-bin/nph-download/SWI-Prolog/w32pl5213.exe En este vínculo se encuentran una serie de transparencias que ilustran los conceptos básicos de Prolog. http://webepcc.unex.es/agomez/prolog.htm Otro vínculo con información sobre conceptos básicos, (se recomiendan los archivos pdf Tema0,I,II,III,IV). http://polaris.lcc.uma.es/~pacog/apuntes/pd/ Pdf con un buen tutorial y ejemplos de programas http://euitio.trisquelmedia.net/apuntes/viejo/primero/logica/Programacion%2 0practica%20en%20prolog.zip Programas de ejemplo: http://www.lsi.upc.es/~bejar/docencia/ia.html 29