lunes, 20 de septiembre de 2010

Sistemas Expertos en Java - Comenzando...

Si googleamos y nos enfrentamos a una primera definición sobre que son estos tipos de sistemas, los sistemas expertos son llamados así porque emulan el comportamiento de un experto en un dominio concreto y en ocasiones son usados por éstos. Con los sistemas expertos se busca una mejor calidad y rapidez en las respuestas dando así lugar a una mejora de la productividad del experto.

Es un software capaz de solucionar problemas que necesitan de un gran conocimiento sobre un determinado tema. Un sistema experto es un conjunto de programas que, sobre una base de conocimientos, posee información de uno o más expertos en un área específica. Se puede entender como una rama de la inteligencia artificial, donde el poder de resolución de un problema en un programa viene del conocimiento de un dominio específico. Estos sistemas imitan las actividades de un humano para resolver problemas de distintos temas (no necesariamente tiene que ser de inteligencia artificial). También se dice que un Sistema Experto (SE) se basa en el conocimiento declarativo (hechos sobre objetos, situaciones) y el conocimiento de control (información sobre el seguimiento de una acción).

Para que un sistema experto sea herramienta efectiva, los usuarios deben interactuar de una forma fácil, reuniendo dos capacidades para poder cumplirlo:

  1. Explicar sus razonamientos o base del conocimiento: los sistemas expertos se deben realizar siguiendo ciertas reglas o pasos comprensibles de manera que se pueda generar la explicación para cada una de estas reglas, que a la vez se basan en hechos.
  2. Adquisición de nuevos conocimientos o integrador del sistema: son mecanismos de razonamiento que sirven para modificar los conocimientos anteriores. Sobre la base de lo anterior se puede decir que los sistemas expertos son el producto de investigaciones en el campo de la inteligencia artificial ya que ésta no intenta sustituir a los expertos humanos, sino que se desea ayudarlos a realizar con más rapidez y eficacia todas las tareas que realiza.

Debido a esto, en la actualidad se están mezclando diferentes técnicas o aplicaciones aprovechando las ventajas que cada una de estas ofrece para poder tener empresas más seguras, o al menos, realizar implementar software más seguro y estable. Un ejemplo de estas técnicas sería los agentes que tienen la capacidad de negociar y navegar a través de recursos en la web.

Un Sistema Experto está formado por:

  • Base de conocimientos (BC): Contiene conocimiento modelado extraído del diálogo con un experto.
  • Base de hechos (Memoria de trabajo): contiene los hechos sobre un problema que se ha descubierto durante el análisis.
  • Motor de inferencia: Modela el proceso de razonamiento humano.
  • Módulos de justificación: Explica el razonamiento utilizado por el sistema para llegar a una determinada conclusión.
  • Interfaz de usuario: es la interacción entre el SE y el usuario, y se realiza mediante el lenguaje natural.

Tipos de SE

Principalmente existen tres tipos de sistemas expertos:

En cada uno de estos, 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 el teorema de Bayes.

VENTAJAS
Los Sistemas Expertos nos dan la capacidad de trabajar con grandes cantidades de información, que son uno de los grandes problemas que enfrenta el analista humano que puede afectar negativamente a la toma de decisiones pues el analista humano puede depurar datos que no considere relevantes, mientras un SE debido a su gran velocidad de proceso analiza toda la información incluyendo las no útiles para de esta manera aportar una decisión más sólida.

Ademas, permite manejar información y resolver problemas sin tener presente al "Experto Humano", algo que puede resultar muy costoso de tener.


LIMITACIONES
Es evidente que para actualizar se necesita de reprogramación de estos (tal vez este sea una de sus limitaciones más acentuadas) otra de sus limitaciones puede ser el elevado costo en dinero y tiempo, además que estos programas son poco flexibles a cambios y de difícil acceso a información no estructurada. Su desarrollo inicial, sobre todo al armar la Base de Conocimientos, es muy alto

Debido a la escasez de expertos humanos en determinadas áreas, los SE pueden almacenar su conocimiento para cuando sea necesario poder aplicarlo. Así mismo los SE pueden ser utilizados por personas no especializadas para resolver problemas. Además si una persona utiliza con frecuencia un SEaprenderá de el.

Por otra parte la inteligencia artificial no ha podido desarrollar sistemas que sean capaces de resolver problemas de manera general, de aplicar el sentido común para resolver situaciones complejas ni de controlar situaciones ambiguas.

El futuro de los SE da vueltas por la cabeza de cada persona, siempre que el campo elegido tenga la necesidad y/o presencia de un experto para la obtención de cualquier tipo de beneficio.


Nosotros aquí vamos a estudiar como integrar Drools Expert dentro de las aplicaciones de la Plataforma Java. Hasta la próxima entrada del blog!

1 comentario:

cel81 dijo...

Hola, Muchas gracias por tan valioso aporte y aprovecho la oportunidad para consultarte como se puede utilizar drools para desarrollar sistemas expertos implementando marcos o scripts. Si tubieses un ejemplo te lo agradeceria mucho