introducción y orientaciones para el estudio independiente

Anuncio
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
Descargar