INTRODUCCIÓN Y ORIENTACIONES PARA EL ESTUDIO INDEPENDIENTE Los métodos generales desarrollados para la resolución de problemas y técnicas de búsqueda al inicio de la era de la IA 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 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. Los sistemas expertos constituyen uno de los éxitos comerciales más importantes de la Inteligencia Artificial. Algunos de los sistemas más famosos son: el MICYN, desarrollado en la universidad de stanford a mediado de la década de los 70; el PROSPECTOR, entre otros. Los SE representan la avanzada del paso de las técnicas de inteligencia artificial desde los laboratorios académicos, al ambiente productivo. 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 IA, que estudia los sistemas basados en el conocimiento. La definición de un sistema basado en conocimiento puede ser simplemente 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 (IA débil): 1. La separación que existe entre el conocimiento, y la forma cómo éste es utilizado. 2. El uso de conocimiento específico de un determinado dominio. 3. La naturaleza heurística, antes que algorítmica del conocimiento utilizado. Dicho de una manera simple, los programas convencionales utilizan algoritmos para resolver problemas, mientras que los sistemas basados en conocimiento resuelven problemas donde las soluciones algorítmicas no existen o son muy costosas para ser implementadas. Para el estudio de esta unidad es necesario que nos documentemos en libros, revistas, direcciones de paginas web, para poder introducirnos un poco más en los elementos de un sistema experto. También debemos estar conscientes que para una mayor comprensión debemos explorar sistemas expertos ya desarrollados y realizar practica de laboratorios para poner en practica los conocimientos teóricos. 1 OBJETIVOS Estudiar una de las aplicaciones más importantes de la IA, los SE que han sido uno de los principales éxitos comerciales y de desarrollo tecnológico de los sistemas computacionales. Conocer los componentes principales de un sistema experto. Con el propósito de comprender la importancia y utilidad que estos tienen en el desarrollo de un sistema basado en conocimiento. Comprender las diferentes etapas a seguir para el desarrollo de un sistema experto. Con el propósito de aplicar dichas etapas en el desarrollo de un sistema experto, durante el desarrollo de la asignatura. Evaluar diferentes sistemas expertos ya desarrollados, con el objeto de desarrollar habilidades y destrezas que serán de gran importancia en el desarrollo de cualquier sistema; ya se este tradicional o basado en conocimiento. 2 ESQUEMA DE CONTENIDO 1. 2. DEFINICIONES DE SISTEMAS EXPERTOS.................................................................... 4 ESTRUCTURA DE LOS SISTEMAS BASADOS EN CONOCIMIENTO ......................... 4 2.1 El motor de Inferencia (MI).......................................................................................... 5 2.2 La Base de Conocimientos ........................................................................................... 5 2.3 La Base de Hechos ........................................................................................................... 6 2.4 Módulos de Comunicación ........................................................................................... 6 3. TECNOLOGÍA DE LOS SBC ............................................................................................. 6 4. EL CICLO DE VIDA DE LOS SBC .................................................................................... 6 4.1 ETAPAS DEL CICLO DE VIDA DE UN SBC............................................................ 7 4.1.1 Análisis del Problema ........................................................................................... 8 4.1.2 Especificación de Requerimientos ........................................................................ 8 4.1.3 Diseño Preliminar ................................................................................................. 8 4.1.4 Prototipo inicial (Rápido) y Evaluación ................................................................ 8 4.1.5 Rápido Prototipaje ................................................................................................ 9 4.1.6 Diseño Final ......................................................................................................... 9 4.1.7 Ajustes al Diseño .................................................................................................. 9 4.1.8 Implementación .................................................................................................... 9 4.1.9 Pruebas ................................................................................................................. 9 4.1.10 Instalación, Implantación y Mantenimiento ........................................................ 10 4.2 Desarrollo Incremental ............................................................................................... 11 5. CARACTERÍSTICAS DE LOS SISTEMAS EXPERTOS ................................................. 12 5.1 Comparación entre la experticidad humana y la artificial ................................................. 12 5.2 Requerimientos para emplear un sistema experto ............................................................. 13 5.3 Justificación para desarrollar un sistema experto .............................................................. 13 5.4 Limitaciones de los sistemas expertos .............................................................................. 13 6. TAREAS Y APLICACIONES DE LOS SISTEMAS EXPERTOS .................................... 14 6.1 Las tareas ................................................................................................................... 14 6.2 Campos de Aplicación ............................................................................................... 14 7. HERRAMIENTAS PARA DESARROLLO DE SBC ........................................................ 14 7.1 Lenguajes de Programación ............................................................................................ 15 8. ELEMENTOS IMPORTANTES DE LOS SBC ................................................................. 16 3 DESARROLLO DE CONTENIDO 1. DEFINICIONES DE SISTEMAS EXPERTOS El surgimiento de los SE esta directamente vinculado al cambio de concepción ocurrido a fines de la década de los 60, pues intenta emular el pensamiento humano mediante potentes métodos de razonamiento Desde el punto de vista de la especificidad del conocimiento, los sistemas basados en conocimiento ocupan un lugar intermedio entre los sistemas originales de IA débil, en los que el conocimiento utilizado es de carácter general, y los Sistemas Expertos (SE) que operan en un dominio muy restringido, utilizando conocimiento altamente especializado. A la luz de esta cadena de desarrollo, un sistema experto puede ser definido como: Un sistema basado en conocimiento que emula la competencia de un experto, dentro de un campo de aplicación bien delimitado. También puede ser definido como un conjunto de programas de computadora cuyo comportamiento es similar al que tendría un experto humano. 2. 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. Figura 1. Estructura de un sistema basado en conocimiento 4 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. A continuación se describen las principales características de estas unidades. 2.1 El motor de Inferencia (MI) Selecciona, decide, interpreta y aplica el conocimiento de la base de conocimientos sobre la base de hechos con el fin de obtener la solución buscada. Un mecanismo de inferencia debe ser independiente del conocimiento y de los hechos. Está caracterizado por: El lenguaje en que ha sido escrito. La velocidad de trabajo: Inferencias / segundo. Las estrategias de búsqueda de soluciones: No Ordenada: aleatoria, heurística. 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: Booleana, trivalente, multivalente, difusa. Atemporal o temporal. El método que utiliza para la evaluación del conocimiento incompleto o incierto: Determinístico. Probabilística. Aproximado. Difuso. 2.2 La Base de Conocimientos Contiene el conocimiento del dominio en el cual el programa es competente. El conocimiento tiene que estar representado en la forma que resulte más adecuada para el dominio de su competencia. Adicionalmente hay que tratar que esa representación sea: Sencilla. Independiente. Fácil de modificar. Transparente: justificación de soluciones y explicación de los procesos. Relacional. Potente: poder expresivo y eficiencia de cálculo. Un aspecto importante de una base de conocimientos es su capacidad, expresada sobre la base del número de reglas que posee: Demostración interesante: 50 reglas. Prototipo funcional: 250 reglas. SE operacional medio: 500 - 1000 reglas. SE operacional especial: 4000 reglas. 5 Una base de conocimientos debe ser coherente, rápida, modular, fácil de desarrollar y mantener. 2.3 La Base de Hechos La base de hechos es el conjunto de información invariable de una a otra resolución. Los hechos se diferencian de los datos en el sentido que los hechos forman parte del SBC, mientras que los datos, al poder variar de una solución a otra, conviene agruparlos en archivos externos al SBC. Algunos autores no consideran a la base de hechos en forma independiente. Los conocimientos y los hechos pueden aparecer conjuntamente en una sola base, la de conocimientos. 2.4 Módulos de Comunicación Un SE necesita medios y canales adecuados, sencillos y potentes, para comunicarse: Con el usuario: Para permitir el diálogo en forma sencilla. Con el experto: Para la configuración del sistema; para la adquisición, mantenimiento, depuración y validación del conocimiento. Con archivos externos: Bases de datos, hojas electrónicas de cálculo, archivos de texto, programas. 3. TECNOLOGÍA DE LOS SBC Desde el punto de vista tecnológico, los SBC pueden presentar varias formas de aplicación: Aislada: un SBC único se relaciona con el entorno. Integrada: varios SBC 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 SBC está integrado con otros sistemas. 4. EL CICLO DE VIDA DE LOS SBC Los SBC, al igual que otras formas de software, tienen como objetivo crear soluciones computacionales a problemas. A pesar de que los SBC se basan principalmente en procesos heurísticos antes que algorítmicos, el desarrollo de un SBC tiene un ciclo de vida similar al de un sistema de software convencional. Sin embargo, existen varias diferencias significativas entre la ingeniería cognoscitiva y la ingeniería de software: Una de las mayores diferencias es el tipo de conocimiento que se representa. La ingeniería de software involucra la representación de procedimientos algorítmicos bien definidos y típicamente bien conocidos por muchas personas; mientras que la ingeniería cognoscitiva involucra la representación del conocimiento heurístico amplio, impreciso, mal definido, que está almacenado en la mente de pocos expertos. Debido a que el conocimiento heurístico no es ampliamente conocido, ni entendido, tienen que ser utilizadas ciertas técnicas para lograr transferirlo desde las 6 mentes de los individuos que lo poseen, hasta una representación computarizada. Esta transferencia, denominada Adquisición de Conocimiento, es elaborada y consume mucho tiempo. Otra de las diferencias significativas está relacionada con la naturaleza y la cantidad de conocimiento. Mientras la naturaleza y la cantidad del conocimiento requerido para resolver un problema algorítmico tradicional pueden ser razonablemente bien estimados, este no es el caso para SBC. Típicamente, la naturaleza y la cantidad de conocimiento requeridos dentro de un SBC para resolver un problema no es bien conocido, aún por los propios expertos. Esto dificulta la predicción del esfuerzo total requerido para desarrollar un SBC. Además, puede ser difícil llegar a un diseño adecuado desde las etapas iniciales del proyecto, dando lugar al problema denominado dilema del cambio. El dilema del cambio, puede aparecer durante el proceso del desarrollo, cuando un ingeniero cognoscitivo descubre que la estructura de representación del conocimiento, la herramienta u otros aspectos de diseño del sistema resultan inadecuados. Este descubrimiento es debido, generalmente, a la falta de comprensión inicial de las complejidades del dominio del problema o al hecho de haber subestimado su magnitud. Si esto ocurre dentro de una etapa avanzada del desarrollo, puede ser un serio problema. El ingeniero cognoscitivo puede vérselas ante el dilema de continuar con la infraestructura inadecuada, que puede resultar en graves dificultades al final del proyecto; o, volver a iniciar el desarrollo con lo que parece ser una mejor estructura de representación del conocimiento y otros aspectos más adecuados de diseño. Cualquiera que sea la decisión, sin lugar a dudas, se retardará la ejecución del proyecto. Sin embargo si el dilema del cambio aparece en las etapas iniciales del proceso, puede ser beneficioso, ya que permitiría corregir los errores identificados, antes de que se invierta demasiado tiempo y recursos en el paradigma inicial. Para evitar estos obstáculos y proporcionar confianza al equipo de desarrollo, muchos ingenieros cognoscitivos utilizan técnicas combinadas de Rápido Prototipaje y Desarrollo Incremental ETAPAS DEL CICLO DE VIDA DE UN SBC A continuación se describen los detalles de las etapas del ciclo de vida de un SBC, tal como se muestra en la Figura 2. 7 Figura 2. Ciclo de vida de un Sistema Basado en Conocimiento 4.1.1 Análisis del Problema Evaluar el problema y los recursos disponibles para determinar la aplicabilidad de una solución basada en conocimiento. Se debe realizar un análisis costo - beneficio del SBC propuesto para saber si su desarrollo puede ser garantizado. Puede también requerirse de una investigación de mercado o un examen profundo del propósito del sistema pedido, para determinar la efectividad del costo del sistema. También se hace necesario identificar las áreas y elementos fundamentales del problema a desarrollar; tales como identificar los lugares, expertos, etc, donde se buscara información. 4.1.2 Especificación de Requerimientos Formalizar y poner por escrito lo que fue adquirido durante la fase de análisis. Esto permite determinar los objetivos del proyecto, de una manera inequívoca y establece los medios para obtener dichos objetivos. La experiencia acumulada en el desarrollo de SBC’s demuestra que sin tener especificaciones no es posible diseñar un SBC de real utilidad. El documento de especificaciones debe plantear claramente y discutir los objetivos y las características del sistema, el entorno del usuario, y las limitaciones. 4.1.3 Diseño Preliminar Esta etapa considera únicamente las decisiones de alto nivel necesarias para preparar y desarrollar rápidamente el prototipo inicial. Específicamente, esta etapa determina el paradigma de representación del conocimiento, la herramienta escogida para construir el prototipo, y la selección de los expertos. En esta etapa puede ser necesaria una considerable recopilación de conocimiento tanto de los expertos, como de fuentes impresas, para poder tomar decisiones sólidas acerca del paradigma de representación del conocimiento, y por lo tanto de la herramienta necesaria. 4.1.4 Prototipo inicial (Rápido) y Evaluación Esta es una etapa clave debido a que todas las decisiones tomadas en el diseño preliminar deben ser ya sea confirmadas, rectificadas o desechadas, sobre la base del conocimiento recopilado de los expertos en el proceso hasta completar esta etapa. 8 El prototipo inicial debe verse como el sistema completo, excepto que estará limitado en su cobertura. Debe incluirse una relativamente bien definida interfaz con el usuario y un robusto subconjunto de conocimiento de tal forma que los usuarios puedan juzgar su aceptabilidad. Esto no significa que el prototipo debe ser altamente robusto, simplemente debe reflejar la forma que tendría el sistema final que será construido. En general se recomienda que el prototipo inicial sea desechado una vez que se haya completado su evaluación. El desarrollo del sistema final debe partir, en lo posible desde el inicio. La clave en la etapa del prototipo es que se debe extraer tanto conocimiento y opiniones de expertos y usuarios como sea posible para poder validar satisfactoriamente las decisiones de diseño. Cualquier error cometido en las etapas anteriores debería ser detectado y corregido en esta etapa. 4.1.5 Rápido Prototipaje Puede utilizarse la flexibilidad y el poderío de LISP, PROLOG o de otras herramientas de desarrollo para crear rápidamente un prototipo funcional del sistema final deseado. Este permitirá realimentar en forma temprana aspectos de profundidad y tipo de conocimiento, de las necesidades de los usuarios, así como ayudará a verificar la validez de las decisiones tomadas durante la etapa de diseño. Con esto, si se presenta un dilema de cambio, su impacto será mínimo debido a lo temprano de su ocurrencia. 4.1.6 Diseño Final El diseño final comprende la selección de las herramientas y de los recursos necesarios para desarrollar el sistema a ser entregado. En que esta etapa también se incluye la selección del paradigma para representar el conocimiento. Esta decisión tiene un impacto directo en la herramienta que será seleccionada. En muchos casos puede ser aplicable y muy útil realizar una descripción gráfica de los diferentes módulos del sistema, empleando las herramientas CASE propias de los sistemas de software convencionales. Para cada uno de estos módulos el diseño debe incluir las especificaciones de las entradas típicas y las salidas o conclusiones esperadas. Como es muy factible que una misma entrada se use en más de un módulo, es primordial preparar una descripción del subsistema de interfaces. 4.1.7 Ajustes al Diseño A medida que el trabajo avanza y los ingenieros cognoscitivos tienen a la vista los problemas detectados, deben realizar los ajustes necesarios al inicio de cada iteración. Si estos ajustes cada vez son relativamente más pequeños y no son retroactivos, se tiene una buena medida de que se está progresando. Pero si ocurre lo contrario, puede representar un serio retardo al proyecto y posiblemente requerir un cambio de paradigma. 4.1.8 Implementación Esta es la etapa que puede consumir la mayor parte del tiempo del ciclo de vida de un SBC, aun cuando exista un excelente diseño. La implementación comprende el proceso completo de adquisición del conocimiento para todos los módulos o subsistemas. Es en esta etapa que tiene lugar el desarrollo incremental. 4.1.9 Pruebas El asegurar la calidad de un SBC es una tarea muy importante que debe ser cuidadosamente planificada, especialmente a medida que el SBC es más grande y complejo, o es de aplicación crítica. El plan de pruebas de un SBC, es bastante similar al que se prepara para un sistema de software convencional. Esto 9 es, debe incluir procesos de verificación y validación. Estos dos elementos son diferentes en naturaleza, pero ambos son muy necesarios. En general, tres tipos de errores pueden introducirse en un SBC, y cada uno de ellos puede ser detectado ya sea por la verificación o la validación: 1. Insatisfacción de las especificaciones dadas para el sistema (Verificación). 2. Errores semánticos y sintácticos introducidos durante la implementación del sistema (Verificación). 3. Representación incorrecta del dominio del conocimiento, resultando en soluciones erróneas o en inhabilidad de encontrar solución a un problema (Validación). La verificación puede ser definida como una ayuda para que el sistema sea construido correctamente. Consiste de dos procesos básicos: El chequeo de la concordancia el sistema con las especificaciones dadas. El chequeo de la consistencia y la solidez de la base de conocimientos (errores n semánticos y sintácticos). La validación se define como el proceso que nos indica si hemos construido el sistema correcto para las necesidades planteadas Para ello se debe incluir y discutir aspectos importantes como: Que es lo que se está validando. La metodología de validación. Los criterios de validación. Cómo y cuándo aplicar la validación. Sobre la base de los resultados de las pruebas realizadas al sistema, el grupo responsable del desarrollo y el usuario deberán determinar finalmente si el sistema está listo para ser aceptado. De ser este el caso, el usuario deberá notificar que el SBC está listo para ser empacado como un sistema funcional. Además, deberá suscribir un documento de aceptación preliminar y consignar cualquier ajuste final que debe ser realizado, en caso de existir alguno. 4.1.10 Instalación, Implantación y Mantenimiento En la etapa final del ciclo de vida de un SBC se traslada el sistema desarrollado, como un producto operativo hacia el entorno de los usuarios. Para ello, se deben realizar varias actividades de instalación, implantación y mantenimiento similares a las de un sistema de software convencional. Empacado del producto final Durante la etapa de empacado del producto final, se debe completar todo el trabajo que falte. Por ejemplo: Preparar los programas para instalación del SBC. Completar la documentación del sistema, especialmente el Manual del Usuario. Identificar los cambios procedimentales que pueden ser requisitos necesarios para que el SBC se incorpore fácilmente al flujo de trabajo de las áreas operacionales de los usuarios. Si es del caso, preparar la interfaces necesarias para que el SBC se comunique con otros sistemas de la organización. Entrenamiento a los usuarios del producto final El plan de entrenamiento para los usuarios debe incluir los siguientes aspectos: 10 Presentación del producto final, exponiendo los aspectos más importantes del sistema desarrollado. Entrega del Manual de Usuario. Explicación de los procedimientos organizacionales requeridos. Entrenamiento en el producto. En lo posible debe realizarse con el sistema integrado dentro del flujo de trabajo normal de la organización. Pruebas de aceptación de los usuarios finales Luego que los usuarios están debidamente capacitados, se pueden realizar pruebas para determinar si el sistema está operando satisfactoriamente dentro de su ambiente normal de trabajo. Cualquier potencial problema que sea identificado por el usuario, debe ser resuelto previo a la aceptación final. Constancia de aceptación de los usuarios finales Una vez que los usuarios han completado su entrenamiento y las pruebas realizadas los ha convencido que el sistema está listo para operación normal, se debe suscribir un documento de aceptación final. Implantación y Mantenimiento Finalmente, el dueño del SBC debe ejecutar las acciones requeridas para que el sistema aceptado entre en producción. Asesoramiento y consultoría especializada pueden ser necesarios para planificar y ejecutar la implantación y el mantenimiento del sistema. A medida que se gane en experiencia y conocimiento acerca del problema que ayuda a resolver el SBC, debe irse incorporando en el mismo, a través de las actividades previstas en el plan de mantenimiento. En la Fig. 6.2, se puede apreciar que el desarrollo del prototipo inicial utiliza un ciclo de vida modificado del que normalmente se emplea en ingeniería de software. Las fases de análisis y especificación deben realizarse teniendo en cuenta el sistema completo, pero el diseño y la implementación del prototipo son realizados de una manera rápida y preliminar. Esto proporciona un sistema funcional que puede ser evaluado para obtener la realimentación necesaria. El prototipo inicial puede ser desechado una vez que se ha obtenido la realimentación esperada o puede ser mejorado en forma incremental para constituirse en un subsistema del SBC final. En la mayoría de casos se opta por desecharlo debido a las dificultades que existen para modificarlo y acomodar todas las ideas generadas durante su desarrollo y evaluación. En general, es más fácil empezar un nuevo proceso de desarrollo, siguiendo las diferentes etapas del ciclo de vida con mayor detalle. 4.2 Desarrollo Incremental Una vez que el prototipo del sistema ha sido evaluado, se realiza su diseño final y se le somete a un ciclo continuo de modificaciones para que mejore sus características y su calidad. A este proceso se conoce como desarrollo incremental. La estrategia que se sigue, puede ser definida como: Un proceso iterativo de extracción, representación y confirmación del conocimiento en un limitado subconjunto del dominio del problema con el objetivo de construir en forma incremental el SBC en segmentos autocontenidos. El desarrollo incremental se centra en dos conceptos: Dividir para conquistar, donde un segmento de conocimiento manejable pero completo, es seleccionado y desarrollado. 11 Desarrollo iterativo, donde el concepto de dividir para conquistar es aplicado iterativamente sobre los diferentes segmentos que conforman el problema completo. En consecuencia, el desarrollo incremental involucra varios ciclos de recopilación del conocimiento de los expertos, incorporación del conocimiento en el sistema, revisión de la implementación resultante con los expertos y corrección de los problemas encontrados. A través de la progresiva incorporación de módulos independientes al sistema en desarrollo, un SBC puede ser rápidamente puesto en funcionamiento, aunque sea en forma parcial. En cambio un programa convencional, debido a su naturaleza procedimental, en general debe ser completamente implementado, antes de ser utilizado 5. CARACTERÍSTICAS DE LOS SISTEMAS EXPERTOS El corazón de un sistema experto es la fuerza del conocimiento que acumula, se considera que la acumulación y codificación de conocimiento es uno de los aspectos más importantes de un SE. El conocimiento de los SE debe ser explicito y accesible a diferencia de los programas convencionales. El rasgo más útil de los sistemas expertos es el alto nivel de experticidad que tiene que ofrecer para ayudar en la solución de un problema, estos resuelven problemas que requieren años de entrenamiento a los humanos. Por tanto un SE, puede actuar como una teoría de procesamiento de información, y esto permite al usuario evaluar los efectos potenciales de nuevos datos y comprender su relación, similarmente el usuario puede evaluar el efecto de nuevas estrategias o procedimientos añadiendo o modificando reglas. Si la base de conocimiento fue desarrollada a través de una interacción con el personal clave de una institución, entonces esta compilación de conocimiento se convierte en un consenso de opiniones de alto nivel, luego representa la política actual del grupo, por lo que el SE tiene el rasgo de ser una memoria institucional. 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. Dada la complejidad de los problemas que usualmente tiene que resolver un SE, puede existir cierta duda en el usuario sobre la validez de respuesta obtenida. Por este motivo, es una condición indispensable que un SE sea capaz de explicar su proceso de razonamiento o dar razón del por qué solicita tal o cual información o dato. 5.1 Comparación entre la experticidad humana y la artificial EXPERTICIADAD HUMANA Puede perderse Difícil de transferir Difícil de documentar Impredecible Costoso Creativo e imaginativo EXPERTICIDAD ARTIFICIAL Permanente Fácil de transferir Fácil de documentar Consistente Relativamente barato Sin inspiración 12 Adaptable a las condiciones ambientales Espectro ancho Conocimiento con sentido común Se agota con el trabajo intenso Se necesita enseñarles todo el conocimiento Espectro estrecho Conocimiento técnico Puede trabajar las 24 horas del día. 5.2 Requerimientos para emplear un sistema experto La solución no requiere de sentido común La solución de las tareas sólo requiere el empleo de habilidades cognoscitivas, no físicas. Existen expertos genuinos en el dominio de la aplicación Los expertos pueden articular sus métodos Los expertos se pueden poner de acuerdo Las tareas de este dominio están bien comprendidas, pues en caso contrario se necesita desarrollar previamente investigaciones básicas para hallar las soluciones 5.3 Justificación para desarrollar un sistema experto La solución de las tareas del dominio de aplicación da un resultado de mucho valor. La experticidad humana puede perderse La experticidad humana escasea La experticidad humana se necesita en muchos ambientes La experticidad humana se necesita en ambientes hostiles. 5.4 Limitaciones de los sistemas expertos Los sistemas expertos no son buenos en: Representar y manipular conocimiento temporal. Representar y manipular conocimiento espacial Realizar razonamiento con sentido común. Reconocer el limite de su habilidad Manipular conocimiento inconsciente Las herramientas actuales para el desarrollo de los sistemas expertos, no son buenas para: Realizar la adquisición del conocimiento Refinar la base de conocimiento Manipular el conocimiento almacenado usando formas de representación del conocimiento mixtas y complejas No pueden dar generalmente una adecuada conclusión de sus conclusiones. 13 6. TAREAS Y APLICACIONES DE LOS SISTEMAS EXPERTOS Las tareas Entre las principales tareas que un SE, puede realizar, se pueden mencionar las siguientes: Interpretación: Análisis y síntesis (PROSPECTOR) Simulación, pronóstico o predicción Diagnóstico (MYCIN) Supervisión Reparación, corrección o terapia Planificación Control: Tiempo real y tiempo diferido Diseño Educación. Campos de Aplicación Múltiples son los campos de aplicación de los SE: Medicina Aeronáutica. Finanzas y Gestión Agricultura. Industria Arqueología. Electrónica, informática y telecomunicaciones Derecho Militar Geología, Química. Educación, ventas y transporte, 7. HERRAMIENTAS PARA DESARROLLO DE SBC Para pasar desde el diseño abstracto hasta un sistema implementado y listo para ser ejecutado en una computadora, se debe lo debe expresar en una forma que el sistema computacional entienda. Para ello se puede utilizar un lenguaje programación o un sistema especialmente diseñado para desarrollar SBC. La pregunta inmediata es ¿Cuál de ellos utilizar? En las siguientes secciones se puede encontrar una posible respuesta. 14 7.1 Lenguajes de Programación En principio, cualquier lenguaje de programación puede ser utilizado. Siendo así de amplio el espectro del cual se puede escoger un lenguaje para programar un SBC, se debe considerar como factor importante de decisión, la extensión en la cual el lenguaje cubre o se adecua a los requerimientos de diseño. Atendiendo a la forma de estructurar sus instrucciones, se los puede dividir en: IMPERATIVOS: PASCAL, C/C++. FUNCIONALES: LISP. DECLARATIVOS: PROLOG, CHIP, OPS5. ORIENTADOS A OBJETOS: SmallTalk, Hypercard, CLOS. CUARTA GENERACIÓN: VISUAL BASIC, ACCESS, VISUAL FOXPRO Tradicionalmente LISP y PROLOG han sido los lenguajes que se han utilizado para la programación de SBC. Estos lenguajes ofrecen características especialmente diseñadas para manejar problemas generalmente encontrados en IA. Por este motivo se los conoce como lenguajes de IA. Una de las principales características que comparten los lenguajes LISP y PROLOG, como consecuencia de su respectiva estructura, es que pueden ser utilizados para escribir programas capaces de examinar a otros programas, incluyendo a ellos mismos. Esta capacidad se requiere, por ejemplo, para hacer que el programa explique sus conclusiones. Esto sólo puede hacerse si el programa tiene la capacidad de examinar su propio modo de operación. LISP Su nombre se deriva de LISt Processor. LISP fue el primer lenguaje para procesamiento simbólico. John McCarthy lo desarrolló en 1958, en el Instituto de Tecnología de Massachusetts (MIT), inicialmente como un lenguaje de programación con el cual los investigadores pudieran implementar eficientemente programas de computadora capaces de razonar. Rápidamente LISP se hizo popular por su capacidad de manipular símbolos y fue escogido para el desarrollo de muchos sistemas de IA. Existen varios dialectos de LISP en el mercado informático, sin embargo COMMON LISP puede considerarse como el estándar de facto. Actualmente, LISP se lo utiliza en varios dominios que incluyen la escritura de compiladores, sistemas para diseño VLSI, sistemas para diseño mecánico asistido por computadora (AUTOCAD), animaciones gráficas y sistemas basados en conocimiento. PROLOG PROgramming in LOGic (PROLOG), es otro de los lenguajes de programación ampliamente utilizados en IA. PROLOG fue desarrollado en Francia, en 1973 por Alain Colmenauer y su equipo de investigación en la Universidad de Marseilles. Inicialmente fue utilizado para el procesamiento de lenguaje natural, pero posteriormente se popularizó entre los desarrolladores de aplicaciones de IA por su capacidad de manipulación simbólica. Utilizando los resultados del grupo francés, Robert Kowalski de la Universidad de Edimburgo, en Escocia, desarrolló la teoría de la programación lógica. La sintaxis propuesta por Edimburgo, se considera el estándar de facto del PROLOG. A partir de 1981 tuvo una importante difusión en todo el mundo, especialmente porque los japoneses decidieron utilizar PROLOG para el desarrollo de sus sistemas de computación de quinta generación. Actualmente existen varios dialectos del PROLOG para diferentes plataformas. OPS5 Official Production System 5 (OPS5), es un lenguaje para ingeniería cognoscitiva que soporta el método de representación del conocimiento en forma de reglas. Incorpora un módulo unificador, un intérprete que incluye un mecanismo de encadenamiento progresivo, y herramientas para edición y depuración de los programas. OPS5 es un miembro de la familia de lenguajes de programación desarrollados en la 15 Universidad Carnegie - Mellon. Varias compañías han desarrollado implementaciones comerciales de OPS5, para diferentes plataformas. 8. ELEMENTOS IMPORTANTES DE LOS SBC Los tipos de experiencia que son 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 puede 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 podamos resolver problemas que no los hemos visto antes, es decir que no existe una posibilidad asociativa. El conocimiento teórico y profundo se lo adquiere a través de estudio y entrenamiento formal, así como por medio de la resolución directa de problemas. Debido a la naturaleza teórica, este conocimiento se lo puede olvidar fácilmente, a no ser que se lo 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. 16 RESUMEN Históricamente, los primeros SBC fueron desarrollados utilizando lenguajes de programación como el LISP y el PROLOG. A medida que el desarrollo de SBC iba aumentado en cantidad y complejidad, la comunidad científica comenzó a buscar formas de desarrollar los sistemas en menor tiempo y con menor esfuerzo. Esto dio lugar al aparecimiento, en primer lugar a sistemas vacíos como el EMYCIN, a los que denominó shells, ya que ofrecen toda la arquitectura de un SBC a la que hay que incorporar la base de conocimientos. Posteriormente ingresaron al mercado otras herramientas que incorporaron, además de opciones de representación del conocimiento, esquemas de inferencia y control. Estas herramientas tomaron el nombre de Entornos de Desarrollo de SBC. A continuación se dan algunos ejemplos de sistemas comerciales que los estudiantes pueden consultar en libros y direcciones en Internet: Sistemas Vacíos (shells): EMYCIN, Crystal, Leonardo, XiPlus, EXSYS, VP-Expert, Intelligence Compiler. Entornos híbridos de desarrollo: CLIPS, KEE, ART, EGERIA, Kappa, Nexpert Object, Goldworks, LOOPS, Flavors. Las Perspectivas Futuras son que en unos pocos años, se prevé que los SE tendrán una mayor difusión, se abaratará su costo, 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, como el producido por Microsoft; y, en sistemas de supervisión y control. En el campo de la investigación, se dará énfasis al desarrollo de SE con capacidad de aprendizaje o SE con sentido común. La aplicación de SE en simulación y control, permitirá conocer, de una manera idónea, el comportamiento de sistemas y la forma de optimizar procesos industriales. Para concluir podríamos decir que los sistemas expertos en el futuro podrían reemplazar a los sistemas tradicionales, pues estos resuelven los problemas de manera más eficiente y se podría decir, que esta n compuesto por el sistema tradicional y el desarrollador del mismo. Esto quiere decir, que por medio del sistema experto los usuarios podemos aprender sin necesidad de tener a un guía.. En este sentido nosotros siempre que desarrollemos un sistema debemos de procurar en la mediada de lo posible acercarlo a un sistema basado en conocimiento, que nos permitirá disminuir gran tiempo de capacitación e inclusive de mantenimiento. También es bueno que nos dediquemos con paciencia y esmero a la investigación de todas las áreas relacionadas y además consultar sistemas expertos ya desarrollados y nos servirían de base en el desarrollo de nuestras capacidades y habilidades en esta área de la ingeniería. 17 GLOSARIO Ciclo de Vida: Se refiere a todas las etapas que se tienen que seguir para desarrollar un sistema. Estas etapas se tienen que seguir de manera ordenada, para al final obtener buenos resultados. Sin embargo, normalmente existe una gran flexibilidad en la secuencia de los pasos. Conocimiento técnico: En el caso de los SE, se refiere que estos poseen información sobre un tema especifico, no tienen la capacidad e auto enriquecerse por si mismo. Es decir, normalmente están orientados para un tema, y solamente de ese tema nos pueden proveer información. Sistema Expertos: Es un sistema computarizado capaz de resolver problemas en el dominio en el cual posee conocimiento específico. Son sistemas que intentan emular el pensamiento humano mediante potentes métodos de razonamiento. SHELL: En el caso de los SE, es el conjunto formado por la maquina de inferencia y la interfaz con el usuario. También se le conoce como sistema experto vació o esencial. Puede ser empleado en la creación de diversos SE siempre que los dominios de aplicación de estos sean similares respecto al formalismo necesario para representar el conocimiento. Sentido Común: Es una habilidad que poseemos los seres humanos para decidir, evaluar y analizar, discriminar, etc. Es una de las cualidades que poseemos los humanos para tomar decisiones ante eventos o actividades que ocurren en nuestro entorno. Es de gran importancia que todos y cada uno de nosotros procuremos desarrollar esta habilidad en nuestra vida, pues es de suma necesidad en nuestro medio. 18 EJERCICIOS DE AUTOCOMPROBACIÓN 1. Responda las siguientes preguntas a. Cual es la importancia de los sistemas expertos b. Mencione los componentes principales de un SE. c. Mencione las diferentes etapas para el desarrollo de un SE. d. Mencione 3 causas por las cuales usted desarrollaría un SE. e. Cuales son las aplicaciones de los SE más importantes para usted. SOLUCIÓN A LOS EJERCICIOS DE AUTOCOMPROBACIÓN 1.a. En nuestra vida diaria son de gran importancia, pues, sin necesidad de tener a un experto directamente podemos consultar y trabajar haciendo de cuenta que tenemos al experto enfrente. Se podría decir, que son un medio autodidáctico de gran importancia que nos permiten desarrollar habilidades y destrezas, sin necesidad de involucrar mucho tiempo y costo. 1.b Motor de Inferencia Base de conocimiento Base de Hechos Módulos de comunicación Análisis Especificación de requerimientos Diseño preliminar Prototipo Inicial Evaluación Diseño Final Implementación Pruebas Instalación, implantación y mantenimiento. 1.c 19 1.d La experticidad humana puede perderse La experticidad humana escasea La experticidad humana se necesita en muchos ambientes 1.e Todas son de gran importancia en el desarrollo de nuestras vidas. Pero, de manera general las más importantes son: Medicina Finanzas y Gestión Agricultura. Industria Electrónica, informática y telecomunicaciones Militar 20