# Sistema experto

Un sistema experto (SE) es un sistema informático que emula el razonamiento actuando tal y como lo haría un experto en cualquier área de conocimiento.
Los sistemas expertos son una de las aplicaciones de la inteligencia artificial que pretende simular el razonamiento humano, de la misma manera que lo haría un experto en un área de especialización.
Los sistemas expertos están diseñados para resolver problemas complejos mediante el razonamiento a través de cuerpos de conocimiento, representados principalmente como normas sí-entonces más que a través de código de procedimiento convencional. Los primeros sistemas expertos se crearon en la década de 1970 y después proliferaron en los años 80. Los sistemas expertos fueron una de las primeras formas de software de inteligencia artificial (IA) realmente exitosas. Un sistema experto se divide en dos subsistemas: el motor de inferencia y la base de conocimiento. La base de conocimiento representa hechos y reglas. El motor de inferencia aplica las reglas a los hechos conocidos para deducir nuevos hechos. Los motores de inferencia también pueden incluir habilidades de explicación y depuración.

## Tipos de sistemas expertos

Principalmente existen tres tipos de sistemas expertos:
* Basados en reglas previamente establecidas o RBR (Rule Based Reasoning)
* Basados en casos o CBR (Case Based Reasoning).
* Basados en redes bayesianas.
En cada uno de ellos, la solución a un problema planteado se obtiene:
* Aplicando reglas heurísticas apoyadas generalmente en lógica difusa para su evaluación y aplicación.
* Aplicando el razonamiento basado en casos, donde la solución a un problema similar planteado con anterioridad se adapta al nuevo problema.
* Aplicando redes bayesianas, basadas en estadística y en el teorema de Bayes.

## Ventajas y limitaciones de los sistemas expertos
### Ventajas

El objetivo de los sistemas basados en el conocimiento es hacer que la información crítica requerida para que el sistema funcione sea explícita en lugar de implícita. En un programa informático tradicional, la lógica está incrustada en un código que, por lo general, solo puede ser revisado por un especialista en TI. Con un sistema experto, el objetivo era especificar las reglas en un formato que fuera intuitivo y fácil de entender, revisar e incluso editar por expertos en el dominio en lugar de expertos en TI. Los beneficios de esta representación del conocimiento explícita fueron el desarrollo rápido y la facilidad de mantenimiento.
La facilidad de mantenimiento es el beneficio más obvio. Esto se logró de dos maneras. En primer lugar, al eliminar la necesidad de escribir código convencional, muchos de los problemas normales que pueden causar incluso pequeños cambios en un sistema podrían evitarse con sistemas expertos. Esencialmente, el flujo lógico del programa (al menos en el nivel más alto) era simplemente un hecho para el sistema, simplemente invocar el motor de inferencia. Esta también fue una razón para el segundo beneficio: creación rápida de prototipos. Con un shell de sistema experto, fue posible ingresar algunas reglas y tener un prototipo desarrollado en días en lugar de los meses o años típicamente asociados con proyectos complejos de TI.
Un reclamo para los shells de sistemas expertos que se hacía a menudo era que eliminaban la necesidad de programadores capacitados y que los expertos podían desarrollar sistemas por sí mismos. En realidad, esto rara vez o nunca fue cierto. Si bien las reglas para un sistema experto eran más comprensibles que el código de computadora típico, todavía tenían una sintaxis formal en la que una coma u otro carácter fuera de lugar podía causar estragos como con cualquier otro lenguaje de ordenador. Además, a medida que los sistemas expertos pasaron de los prototipos en el laboratorio a la implementación en el mundo empresarial, los problemas de integración y mantenimiento se volvieron mucho más críticos. Inevitablemente, surgieron demandas para integrarse y aprovechar grandes bases de datos y sistemas heredados. Para lograr esto, la integración requería las mismas habilidades que cualquier otro tipo de sistema.
Resumiendo los beneficios del uso de sistemas expertos, se pueden destacar los siguientes:
* Permanencia: a diferencia de un experto humano, un SE no envejece, y por tanto no sufre pérdida de facultades con el paso del tiempo.
* Replicación: una vez programado un SE lo podemos replicar infinidad de veces.
* Rapidez: un SE puede obtener información de una base de datos y realizar cálculos numéricos mucho más rápido que cualquier ser humano.
* Bajo costo: a pesar de que el costo inicial pueda ser elevado, gracias a la capacidad de duplicación el coste finalmente es bajo.
* Entornos peligrosos: un SE puede trabajar en entornos peligrosos o dañinos para el ser humano.
* Fiabilidad: los SE no se ven afectados por condiciones externas, un humano sí (cansancio, presión, etc.).
* Consolidar varios conocimientos.
* Apoyo académico.

### Limitaciones

* Sentido común: para un SE no hay nada obvio. Por ejemplo, un sistema experto sobre medicina podría admitir que un hombre lleva 40 meses embarazado, a no ser que se especifique que esto no es posible ya que un hombre no puede gestar hijos.
* Lenguaje natural: con un experto humano podemos mantener una conversación informal mientras que con un SE no podemos.
* Capacidad de aprendizaje: cualquier persona aprende con relativa facilidad de sus errores y de errores ajenos, que un SE haga esto es muy complicado.
* Perspectiva global: un experto humano es capaz de distinguir cuáles son las cuestiones relevantes de un problema y separarlas de cuestiones secundarias.
* Capacidad sensorial: un SE carece de sentidos.
* Flexibilidad: un humano es sumamente flexible a la hora de aceptar datos para la resolución de un problema.
* Conocimiento no estructurado: un SE no es capaz de manejar conocimiento poco estructurado.
* Un sistema experto no posee sentimientos ni puede comprender ciertas emociones y conceptos humanos como el matrimonio, la moralidad, el amor o planear el futuro.

## Ejemplos importantes de los sistemas expertos

* CADUCEUS
* CLIPS
* Dendral
* Dipmeter Advisor
* Mycin
* Prolog
* XCon

## Tareas
### Monitorización

La monitorización es un caso particular de la interpretación, y consiste en la comparación continua de los valores de las señales o datos de entrada y unos valores que actúan como criterios de normalidad o estándares. En el campo del mantenimiento predictivo los Sistemas Expertos se utilizan fundamentalmente como herramientas de diagnóstico. Se trata de que el programa pueda determinar en cada momento el estado de funcionamiento de sistemas complejos, anticipándose a los posibles incidentes que pudieran acontecer. Así, usando un modelo computacional del razonamiento de un experto humano, proporciona los mismos resultados que alcanzaría dicho experto.

### Diseño

Diseño es el proceso que consiste en especificar una descripción de un artefacto que satisface varias características desde un número de fuentes de conocimiento. El diseño se concibe de distintas formas:
* El diseño en ingeniería es el uso de principios científicos el máximo de economía y eficiencia.
* El diseño industrial busca rectificar las omisiones de la ingeniería, es un intento consciente de traer forma y orden visual a la ingeniería de hardware donde la tecnología no provee estas características.
Los SE en diseño ven este proceso como un problema de búsqueda de una solución óptima o adecuada. Las soluciones alternas pueden ser conocidas de antemano o se pueden generar automáticamente probándose distintos diseños para verificar cuáles de ellos cumplen los requerimientos solicitados por el usuario, esta técnica es llamada “generación y prueba”, por lo tanto estos SE son llamados de selección. En áreas de aplicación, la prueba se termina cuando se encuentra la primera solución; sin embargo, existen problemas más complejos en los que el objetivo es encontrar la solución óptima.

### Planificación

La planificación es la realización de planes o secuencias de acciones y es un caso particular de la simulación. Está compuesto por un simulador y un sistema de control. El efecto final es la ordenación de un conjunto de acciones con el fin de conseguir un objetivo global.
Los problemas que presentan la planificación mediante SE son los siguientes:
* Existen consecuencias no previsibles, de forma que hay que explorar y explicar varios planes.
* Existen muchas consideraciones que deben ser valoradas o incluirles un factor de peso.
* Suelen existir interacciones entre planes de subobjetivos diversos, por lo que deben elegirse soluciones de compromiso.
* Trabajo frecuente con incertidumbre, pues la mayoría de los datos con los que se trabaja son más o menos probables pero no seguros.
* Es necesario hacer uso de fuentes diversas tales como bases de datos.

### Control

Un sistema de control participa en la realización de las tareas de interpretación, diagnóstico y reparación de forma secuencial. Con ello se consigue conducir o guiar un proceso o sistema. Los sistemas de control son complejos debido al número de funciones que deben manejar y el gran número de factores que deben considerar; esta complejidad creciente es otra de las razones que apuntan al uso del conocimiento, y por tanto de los SE.
Cabe aclarar que los sistemas de control pueden ser en lazo abierto, si en el mismo la realimentación o el paso de un proceso a otro lo realiza el operador, o en lazo cerrado si no tiene que intervenir el operador en ninguna parte del mismo. Reparación, correcta o terapia.
La reparación, corrección, terapia o tratamiento consiste en la proposición de las acciones correctoras necesarias para la resolución de un problema. Los SE en reparación tienen que cumplir diversos objetivos, como son:
* Reparación lo más rápida y económicamente posible.
* Orden de las reparaciones cuando hay que realizar varias.
* Evitar los efectos secundarios de la reparación, es decir la aparición de nuevas averías por la reparación.

### Simulación

La simulación es una técnica que consiste en crear modelos basados en hechos, observaciones e interpretaciones sobre la computadora, a fin de estudiar el comportamiento de los mismos mediante la observación de las salidas para un conjunto de entradas. Las técnicas tradicionales de simulación requieren modelos matemáticos y lógicos, que describen el comportamiento del sistema bajo estudio. El empleo de los SE para la simulación viene motivado por la principal característica de los SE, que es su capacidad para la simulación del razonamiento de un experto humano, que es un proceso complejo.
En la aplicación de los SE para simulación hay que diferenciar cinco configuraciones posibles:
* Un SE puede disponer de un simulador con el fin de comprobar las soluciones y en su caso rectificar el proceso que sigue.
* Un sistema de simulación puede contener como parte del mismo a un SE y por lo tanto el SE no tiene que ser necesariamente de simulación.
* Un SE puede controlar un proceso de simulación, es decir que el modelo está en la base de conocimiento del SE y su evolución es función de la base de hechos, la base de conocimientos y el motor de inferencia, y no de un conjunto de ecuaciones aritmético – lógicas.
* Un SE puede utilizarse como consejero del usuario y del sistema de simulación.
* Un SE puede utilizarse como máscara o sistema frontal de un simulador con el fin de que el usuario reciba explicación y justificación de los procesos.

### Instrucción

Un sistema de instrucción realizará un seguimiento del proceso de aprendizaje. El sistema detecta errores ya sea de una persona con conocimientos e identifica el remedio adecuado, es decir, desarrolla un plan de enseñanza que facilita el proceso de aprendizaje y la corrección de errores.

### Recuperación de información

Los SE, con su capacidad para combinar información y reglas de actuación, han sido vistos como una de las posibles soluciones al tratamiento y recuperación de información, no solo documental. La década de 1980 fue prolija en investigación y publicaciones sobre experimentos de este orden, interés que aún no ha disminuido.
Lo que diferencia a este sistema de un sistema tradicional de recuperación de información es que estos últimos solo son capaces de recuperar lo que existe explícitamente, mientras que un SE debe ser capaz de generar información no explícita, razonando con los elementos que se le dan. Pero la capacidad de los SE en el ámbito de la recuperación de la información no se limita a la recuperación. Pueden utilizarse para ayudar al usuario, en selección de recursos de información, en filtrado de respuestas, etc. Un SE puede actuar como un intermediario inteligente que guía y apoya el trabajo del usuario final.