1. ¿Que es un sistema experto?
Un sistema experto es una máquina que piensa y razona como lo haría un ser vivo (experto) en una cierta especialidad o campo. Un Sistema Experto de verdad, no sólo realiza las funciones tradicionales de manejar grandes cantidades de datos, sino que también manipula esos datos de forma tal que el resultado sea claro y tenga significado para responder a preguntas. Como tal, un sistema experto debería ser capaz de procesar y memorizar información, aprender y razonar, comunicar con los hombres y/u otros sistemas expertos, tomar decisiones, y explicar por qué se han tomado tales decisiones.
En la Informática un sistema experto puede definirse como un sistema informático (hardware y software) que simula a los expertos humanos en un área específica.
2. Ejemplos de Sistemas Expertos.
Aquí detallo un poco de ejemplos desarrollados como sistemas expertos según algunas áreas:
En la química:
DENDRAL: Es capaz de calcular o descubrir hechos relativos a las estructuras moleculares a partir de unos datos químicos sin elaborar.
En la Informática:
YES/MVS: Trabaja en tiempo real ayudando aun operador a supervisar el funcionamiento de un computador bajo MVS.
En la medicina:
MYCIN: El más famoso de todos, que diagnostica infecciones en la sangre y meningitis y además sugiere el tratamiento que se debe seguir en cada caso.
PUFF: El hermano menor de MYCIN, que diagnostica y trata enfermedades del pulmón, interpretando medidas de test respiratorio.
INTERNIST: Ayuda al diagnostico de la medicina interna.
ONCOCIN: Ayuda al tratamiento de pacientes de cáncer sometidos a quimioterapias.
En la geología:
PROSPECTOR: Es un sistema de consulta para ayuda en exploraciones geológicas.
LITHO: Ayuda a los geólogos en la interpretación de datos para prospecciones petrolíferas.
DIPMETER: Infiere la estructura geológica de la superficies interpretando medidas de conductividad de rocas.
En la ingeniería:
DART: Ayuda al diagnostico de fallos en el hardware de un sistema usando información acerca de los periféricos que se están diagnosticando.
EL: Desarrolla análisis de circuitos.
Entre otros tenemos:
MOLGEN0: "MOLecular GENetics" ayuda a los biólogos que trabajan en el campo del DNA y la ingeniería genética.
PROGRAMMER'S APPRENTICE: Como su propio nombre lo indica, se trata de un sistema que ayuda a la escritura de programas.
EURISKO: Un sistema experto capaz de aprender a medida que funciona, que crea circuitos microeléctricos tridimensionales.
GENESIS: Permite a los científicos planificar y simular experimentos en el campo de la unión de genes.
EXPERT SYSTEMS TO COMBAT INTERNATIONAL TERRORISM: Para ayudar a expertos a entender la totalidad de la misión en que trabajan y asistirlos en la toma de decisiones.
3. Componentes de un Sistema Experto.
@ La Componente Humana
Un sistema experto es generalmente el resultado de la colaboración de uno o varios expertos humanos especialistas en el tema de estudio y los ingenieros del conocimiento. 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ás, el elemento más importante en el desarrollo de un sistema experto. Esta etapa requiere una enorme dedicación y un gran esfuerzo debido a los diferentes lenguajes que hablan las distintas partes y a las diferentes experiencias que tienen.
@ La Base de Conocimiento
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 restructueren 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.
@ Subsistema de Adquisición de Conocimiento
El subsistema de adquisición de conocimiento controla el flujo del nuevo conocimiento que fluye del experto humano a la base de datos. El sistema determina que 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.
@ Control de la 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 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 bastante 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 la coherencia comprueba e informa a los expertos de las inconsistencias.
@ El 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 diagnostico medico, 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, piense en un paciente que no esta 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 ésta sea probablemente la componente más débil de casi todos los sistemas expertos existentes. .
@ El Subsistema de Adquisición de Conocimiento
Si el conocimiento inicial es muy limitado y no se pueden sacar conclusiones, el motor de inferencia utiliza el subsistema de adquisición de conocimiento para obtener el conocimiento necesario y continuar con el proceso de inferencia hasta que se hayan sacado conclusiones. En algunos casos, el usuario puede suministrar la información requerida para éste y otros objetivos. De ello resulta la necesidad de una interface de usuario y de una comprobación de la consistencia de la información suministrada por el usuario antes de introducirla en la memoria de trabajo.
@ Interface de Usuario
La interface 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 interface de usuario es un vehículo para obtener la información necesaria del usuario. Consecuentemente, una implementación inadecuada de la interface de usuario que no facilite este proceso cambiaría notablemente la calidad de un sistema experto. Otra razón de la importancia de la interface de usuario es que los usuarios evalúan comúnmente los sistemas expertos y otros sistemas por la calidad de dicha interface más que por la del sistema experto mismo, aunque no se debería juzgar la calidad de un libro por su portada.
@ El Subsistema de Ejecución de Ordenes
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 puede darse al usuario mediante el subsistema de explicación.
@ El Subsistema de Explicación
El usuario puede pedir una explicación de las conclusiones sacadas o de las acciones iniciadas por el sistema experto. Por ello, es necesario un subsistema que explique el proceso seguido por el motor de inferencia o por el subsistema de ejecución. 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.
@ El Subsistema de Aprendizaje
Una de las principales características de un sistema experto es su capacidad para aprender. Diferenciaremos entre aprendizaje estructural y aprendizaje paramétrico. Por aprendizaje estructural nos referimos a algunos aspectos relacionados con la estructura del conocimiento (reglas, distribuciones de probabilidad, etc.). Por ello, el descubrimiento de nuevos síntomas relevantes para una enfermedad o la inclusión de una nueva regla en la base de conocimiento son ejemplos de aprendizaje estructural. Por aprendizaje paramétrico nos referimos a estimar los parámetros necesarios para construir la base de conocimiento. Por ello, la estimación de frecuencias o probabilidades asociadas a síntomas o enfermedades es un ejemplo de aprendizaje paramétrico. Otra característica de los sistemas expertos es su habilidad para obtener experiencia a partir de los datos disponibles. Estos datos pueden ser obtenidos por expertos y no expertos y pueden utilizarse por el subsistema de adquisición de conocimiento y por el subsistema de aprendizaje.
4. Desarrollo de un Sistema Experto.
- Planteamiento del problema.
La primera etapa en cualquier proyecto es normalmente la definición del problema a resolver. Puesto que el objetivo principal de un sistema experto es responder a preguntas y resolver problemas, esta etapa es quizás la más importante en el desarrollo de un sistema experto. Si el sistema está mal definido, se espera que el sistema suministre respuestas erróneas.
- Encontrar expertos humanos que puedan resolver el problema.
En algunos casos, sin embargo, las bases de datos pueden jugar el papel del experto humano.
- Diseño de un sistema experto.
Esta etapa incluye el diseño de estructuras para almacenar el conocimiento, el motor de inferencia, el subsistema de explicación, la interface de usuario, etc.
- Elección de la herramienta de desarrollo, concha, o lenguaje de programación.
Debe decidirse si realizar un sistema experto a medida, o utilizar una concha, una herramienta, o un lenguaje de programación. Si existiera una concha satisfaciendo todos los requerimientos del diseño, ésta debería ser la elección, no sólo por razones de tipo financieros sino también por razones de habilidad. Las conchas y herramientas comerciales están sujetas a controles de calidad, a los que otros programas no lo están.
- Desarrollo y prueba de un prototipo.
Si el prototipo no pasa las pruebas requeridas, las etapas anteriores (con las modificaciones apropiadas) deben ser repetidas hasta que se obtenga un prototipo satisfactorio.
- Refinamiento y generalización.
En esta etapa se corrigen los fallos y se incluyen nuevas posibilidades no incorporadas en el diseño inicial.
- Mantenimiento y puesta al día.
En esta etapa el usuario plantea problemas o defectos del prototipo, corrige errores, actualiza el producto con nuevos avances, etc.
Bibliografía:
Castillo E, Gutiérrez J.M, Hadi A.S. Sistemas Expertos y Modelos de Redes Probabilísticas. España: Universidad de Cantabria.
Santisteban A. Introducción a los Sistemas Expertos, IBM Santander 1987 jun 29. [cited 2012 mar 30]: Universidad Internacional Menendez Pelayo.