¿Qué es un Sistema experto?

 

Un sistema experto  es un programa que emula la toma de decisiones de un experto humano en un dominio específico, utilizando una base de conocimientos (hechos y reglas) y un motor de inferencia para razonar y resolver problemas. 

Prolog es ideal para esto debido a su capacidad para manejar lógica declarativa y realizar inferencias automáticamente.

Componentes principales

  1. Base de conocimientos: Hechos (datos) y reglas (lógica) que representan el conocimiento del dominio. 
  2. Motor de inferencia: Mecanismo de Prolog que aplica las reglas a los hechos para derivar conclusiones. 
  3. Interfaz de usuario: Permite al usuario consultar el sistema y recibir respuestas.

Ejemplo. Crear un sistema experto para diagnosticar si una persona tiene fiebre según síntomas.

sistema_diagnostico.pl

% Hechos: síntomas de pacientes
sintoma(juan, temperatura_alta).
sintoma(juan, escalofrios).
sintoma(maria, dolor_cabeza).

% Regla: una persona tiene fiebre si tiene temperatura alta y escalofríos
tiene_fiebre(Persona) :- 
    sintoma(Persona, temperatura_alta),
    sintoma(Persona, escalofrios).

% Consulta: ¿Quién tiene fiebre?
% En la consola de Prolog: ?- tiene_fiebre(X).
% Respuesta: X = juan.

Los hechos (datos) nos dicen los padecimientos de Juan y María.

La regla ``tiene_fiebre`` define que alguien con temperatura alta y escalofríos tiene fiebre.

La consulta usa el Motor de Inferencia para encontrar que Juan cumple con la regla.

¿Ventaja de un Sistema Experto?

La principal ventaja de un sistema experto en Prolog es su capacidad para representar conocimiento de manera lógica y declarativa, permitiendo razonamiento automatizado y transparente con reglas claras. Es ideal para dominios bien definidos, ya que ofrece interpretabilidad, facilidad para codificar conocimiento experto y un motor de inferencia eficiente para consultas.

¿Existen inconvenientes en un Sistema Experto?

Los sistemas expertos en Prolog, aunque útiles, tienen varios inconvenientes:

  1. Limitación en el manejo de incertidumbre: Los sistemas expertos tradicionales en Prolog trabajan con lógica binaria (verdadero/falso), lo que dificulta modelar situaciones con incertidumbre o datos imprecisos, como en diagnósticos médicos donde los síntomas no siempre son definitivos. 
  2. Mantenimiento complejo: La base de conocimientos puede volverse grande y difícil de actualizar o depurar, especialmente si las reglas son numerosas o están interconectadas, lo que puede generar conflictos o redundancias. 
  3. Escalabilidad limitada: Prolog no es ideal para manejar grandes volúmenes de datos o sistemas muy complejos, ya que el motor de inferencia puede volverse lento con bases de conocimientos extensas. 
  4. Falta de aprendizaje automático: Los sistemas expertos no aprenden de nuevos datos; requieren que un experto humano actualice manualmente las reglas y hechos, lo que puede ser laborioso. 
  5. Dependencia del conocimiento del experto: La calidad del sistema depende de la precisión y completitud del conocimiento proporcionado por el experto humano. Si el conocimiento es incompleto o sesgado, el sistema dará resultados erróneos. 
  6. Interfaz limitada: La interacción con el usuario en Prolog suele ser básica (consultas en consola), lo que puede no ser amigable para usuarios no técnicos.

En resumen, un sistema experto en Prolog representa conocimiento y resuelve consultas de manera lógica y automatizada. Aunque para problemas bien definidos, su rigidez, dificultad para manejar incertidumbre y necesidad de mantenimiento manual los hacen menos prácticos en dominios dinámicos o complejos.

Es lo que se hace actualmente en el Vibe Coding. El usuario hace preguntas y la I.A. responde con base a su "base de conocimientos". Esto ya entra en el campo del Machine Learning.

Enlaces:

https://athena.ecs.csus.edu/~mei/logicp/prolog/programming-examples.html
https://github.com/Anniepoo/prolog-examples
https://medium.com/@himashasilva/prolog-data-types-exploring-atoms-variables-and-terms-52a4339d8b30
https://medium.com/@himashasilva/a-beginners-guide-to-prolog-unlocking-the-power-of-logic-programming-c9ef3cc7cf47
https://lpn.swi-prolog.org
https://www.j-paine.org/prolog/library.html

Comentarios