El sistema experto más sencillo se trata de un árbol de decisiones cuyas hojas finales son el resultado a nuestro problema. El juego de mesa Quién es quién? es un ejemplo de juego que puede ser resuelto con facilidad mediante un sistema experto. En internet podeis encontrar un clónico de este juego titulado ¿Quién es Cualo?.
Los datos que deben introducirse en el sistema experto deben cumplir las espectativas y ajustarse a las habilidades de los usuarios del sistema. Supongamos un sistema experto que nos sirva para distinguir entre 5 animales. Si ha de ser usado por estudiantes de secundaria preguntas como ¿Puede volar? o ¿Es un mamífero? serán adecuadas. Por el contrario la pregunta ¿Pertenece al orden Chiroptera? requiere más conocimientos de los que posee el usuario. La pregunta sería adecuada si el programa estubiera diseñada para un biólogo. Los sitemas expertos pueden servir para dar soluciones a personas sin los conocimientos adecuados, pero resultan extremadamente útiles como ayuda a expertos humanos que necesitan confirmación de sus opiniones como médicos o inversores de bolsa.
El éxito de un sistema experto radica fundamentalmente en el conocimiento sobre el dominio que trata y su capacidad de aprendizaje. El conocimiento sobre el dominio proporciona al sistema experto mayor información sobre el problema a tratar y su entorno, de forma que pueda generar y adaptar soluciones de forma más precisa, al tener un conocimiento más profundo sobre el tema, de forma similar a un experto especializado. El aprendizaje, inductivo o deductivo según corresponda, proporcionará al sistema experto mayor autonomía a la hora de abordar problemas totalmente desconocidos; pudiendo generar nuevo conocimiento partiendo del extraído inicialmente del experto o expertos humanos.
Una importante mejora en el razonamiento de los sitemas expertos es la introducción de la lógica difusa, permitiendo a los usuarios introducir los datos de una forma más natural y al sistema experto seguir un razonamiento más flexible. Otro gran avance fue la separación del sistema de razonamiento de las reglas, que permiten crear potentes sistemas expertos que admiten reglas de cualquier dominio de conocimiento.
Ventajas
- Permanencia: A diferencia de un experto humano un SE (sistema experto) no envejece, y por tanto no sufre perdida de facultades con el paso del tiempo.
- Duplicación: Una vez programado un SE lo podemos duplicar 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 coste: A pesar de que el coste 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 si (cansancio, presión, etc)
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 de que se especifique esto no es posible.
- 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 cuales 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 ejemplo: SIE: Simple Inference Engine
SIE: Simple Inference Engine es un motor de inferencia creado por Peter Hickman que nos permite definir nuestras propias reglas mediante una base de conocimientos en XML. SIE es un sistema experto basado en reglas. Para utilizarlo primero cargaremos la base de conocimientos que deseamos utilizar. Una vez cargada pulsaremos ejecutar. El programa cargará en memoria todas las reglas y empezará a realizarnos las diferentes preguntas para llegar a la solución.
SIE nos mostrará el número de Reglas que se han cargado y los posibles atributos. Además en todo momento podremos ver cuantas reglas continúan activas y cuantos valores ya han sido asignados.
Instalación y ejecución de SIE:
Puedes bajar la versión traducida al castellano: sie.zip.
Para ejecutar SIE necesitarás Ruby (Ruby para Windows , Ruby para Linux, la mejor para instalar Ruby es desde el propio instalador de aplicaciones de tu distribución)
Una vez descomprimido el fichero sie.zip ejecuta desde la línea de comandos: ruby sietk.rb
Si tienes problemas con la librería tcltklib puedes usar la linea de comandos: ruby sier.rb (En linux sera necesario renombrar los ficheros a minusculas p.e. mv Animal.xml animal.xml)
La base de conocimientos XML:
El elemento root de knowledgebase tiene tres elementos:
- goal Identifica la variable objetivo y define el texto a mostrar al usuario.
- rule Las reglas que usará SIE para realizar las preguntas y con las que decide que acciones realizar
- questions Estas son las preguntas que se realizan para asiganar valores a los atributos.
El elemento goal (objetivo) tiene dos elementos:
- attribute (atributo) El elemento del atributo objetivo. Cuando este atributo tenga un valor se terminarán las consultas.
- text (texto) El texto a mostrar al usuario al terminar. Si el texto contiene el nombre del atributo, en lugar del nombre se mostrará su valor.
<goal>
<attribute>type.animal<attribute>
<text>Creo que tu animal es un type.animal<text>
<goal>
El elemento rules (reglas) es simplemente una lista de elementos rule (regla) que contienen:
- name (nombre) El nombre de la regla. Debe ser único y
preferentemente con significado.
- conditions (condiciones) Una lista de elementos condition que son tan sólo una lista de parejas attribute / value que deben ser veraderos para que se cumpla la regla.
- actions (acciones) Una lista de pares de elementos
action que son tan sólo una lista de parejas attribute /
value que deben ser verdaderos para ejecutar la acción. En las
bases de conocimiento de ejemplo el elemento actions solo
contiene un único elemento action , pero podrían ser varios. Es
una buena práctica tener las listas de acción lo más pequeñas posibles,
aunque para ello deban existir muchas reglas.
<rule>
<name>69<name>
<conditions>
<condition>
<attribute>thintail<attribute>
<value>yes<value>
<condition>
<condition>
<attribute>species<attribute>
<value>under400<value>
<condition>
<conditions>
<actions>
<action>
<attribute>type.animal<attribute>
<value>cat<value>
<action>
<actions>
<rule>
El elemento questions (preguntas) es una lista de elementos question que contienen:
- attribute (atributo) El nombre del atributo sobre el que trata la pregunta.
- text (texto) El texto de la pregunta que se mostrará al
usuario para ayudarle a dar valor a los atributos.
- response (respuesta) Existe un elemento response por cada respuesta válida a la pregunta. Este valor será asignado al atributo.
<question>
<attribute>shell<attribute>
<text>¿Tu animal tiene una concha?<text>
<response>yes<response>
<response>no<response>
<question>
Conclusiones
Los sistemas expertos son quizá la forma de Inteligencia Artificial menos glamurosa y atrae menos atención que la Vida Artificial o las Redes Neuronales. Pero resultan extremadamente útiles y pueden llegar a ser muy potentes con la ayuda de la lógica difusa, razonamiento bayesiano e incluso con las propias redes neuronales.
Si deseas ampliar tus conocimientos sobre sistemas expertos una buena opción es estudiar el lenguaje de programación prolog.
Parte de la información de este artículo ha sido extraida de Wikipedia: La Enciclopedia Libre: Sistema Experto.
Recent comments
hace 1 día 9 horas
hace 3 días 2 horas
hace 4 semanas 4 días
hace 4 semanas 4 días
hace 5 semanas 5 días
hace 5 semanas 5 días
hace 6 semanas 6 días
hace 7 semanas 3 horas
hace 7 semanas 4 horas
hace 7 semanas 5 horas