Sistemas Expertos

Sistemas expertos

44

La Inteligencia Artificial sigue siendo una ciencia para elegidos y su utilización es propiedad casi exclusiva de centros de investigación y universidades. Y es que, aún en estos tiempos, sigue exigiendo por parte del programador de una gran derroche de ingenio, y de gran esfuerzo y dedicación.

Un Sistema Experto simple, consta de:
1. Una base de hechos.
2. Una base de conocimientos.
3. Una máquina de inferencias.

Este es un ejemplo de un programita en Javascript. ¿Conocen el problema de las tinas?

Se tienen dos tinas, una de 3 gls y otra de 4 gls, ambas vacías y una pila o llave de agua, para ir llenándolas. Se quiere dejar dos galones en la tina de 4 gls, ejecutando las acciones de llenar una tina, vaciar una tina en la otra y botar el contenido de una tina.

(La tina es un recipiente para contener agua)

Aquí les va el programa en Javascript.

Tinas

Programa TINAS
function tinas()
{//Base de hechos
var x = 0
var y = 0
if (document.ftinas.tina[0].checked)
{x = eval(document.ftinas.tina[0].value)
document.write(“Llenar la tina de 3 gls (3,0)” + ”
” )
}
else
{y = eval(document.ftinas.tina[1].value)
document.write(“Llenar la tina de 4 gls (0,4)” + ”
” )
}
//Maquina de inferencia
for (i=1;i<=15;i++)
{ if (y == 2)
{ document.write(“Solucion satisfactoria: Hay dos galones en la tina de 4″ + ”
” )
break
}
//Base de conocimientos
//Regla 1:
if (x == 0 && y == 0)
{ x = 3
y = 0
document.write(“Llenar la tina de 3 gls (3,0)” + ”
” )
continue
}
//Regla 2:
if (x == 0 && y == 0)
{ x = 0
y = 4
document.write(“Llenar la tina de 4 gls (0,4)” + ”
” )
continue
}
//Regla 3:
if (x == 3 && y == 0)
{ x = 0
y = 3
document.write(“Vaciar la tina de 3 gls en la de 4 gls (0,3)” + ”
” )
continue
}
//Regla 4:
if (x == 0 && y == 4)
{ x = 3
y = 1
document.write(“Vaciar la tina de 4 gls en la de 3 gls (3,1)” + ”
” )
continue
}
//Regla 5:
if (x == 0 && y == 3)
{ x = 3
y = 3
document.write(“Llenar la tina de 3 gls (3,3)” + ”
” )
continue
}
//Regla 6:
if (x == 3 && y == 1)
{ x = 0
y = 1
document.write(“Botar el contenido de la tina de 3 gls (0,1)” + ”
” )
continue
}
//Regla 7:
if (x == 3 && y == 3)
{ x = 2
y = 4
document.write(“Vaciar la tina de 3 gls en la de 4 gls (2,4)” + ”
” )
continue
}
//Regla 8:
if (x == 0 && y == 1)
{ x = 1
y = 0
document.write(“Vaciar la tina de 4 gls en la de 3 gls (1,0)” + ”
” )
continue
}
//Regla 9:
if (x == 2 && y == 4)
{ x = 2
y = 0
document.write(“Botar el contenido de la tina de 4 gls (2,0)” + ”
” )
continue
}
//Regla 10:
if (x == 1 && y == 0)
{ x = 1
y = 4
document.write(“Llenar la tina de 4 gls (1,4)” + ”
” )
continue
}
//Regla 11:
if (x == 2 && y == 0)
{ x = 0
y = 2
document.write(“Vaciar la tina de 3 gls en la de 4 gls (0,2)” + ”
” )
continue
}
//Regla 12:
if (x == 1 && y == 4)
{ x = 3
y = 2
document.write(“Vaciar la tina de 4 gls en la de 3 gls (3,2)” + ”
” )
continue
}

}
}

Cual de las tinas prefiere llenar?

Tina de 3 gls

Tina de 4 gls

Observen que el programa consta de una base de hechos, una máquina de inferencia y una base de conocimientos, compuesta por 12 reglas. Noten que las reglas impares se refieren a comenzar llenando la tina de 3 gls y las reglas pares son para el llenado de la tina de 4 gls.

La máquina de inferencia, lo único que hace es recorrer todas las reglas y en caso de que se llegue a la solución detiene el proceso.

La base de hechos inicializa los hechos (pone en cero las variables) y prepara las condiciones para la interfaz con el usuario.

Es bueno destacar que la base de conocimientos (BC) y la máquina de inferencias (MI) estan separadas lógicamente (usted puede seguir agregando reglas sin que esto afecte la ejecución del programa), pero físicamente están unidas dentro del mismo programa. En la practica la BC y la MI deben estar separadas lógica y físicamente.

Para descargarlo, vaya al Menú de este blog arriba donde dice Inicio, Aceca de, Libros, etc., y vaya al enlace Descargas, al dar clic ira a la pagina, La Cibernetica. al final esta Tinas.zip y a la derecha donde esta la flecha, dar clic en descargar.  Y ahora solo tiene que ejecutar el html en su computadora.

 

0

Característica de los SE:
• Un SE no debe demorar mas de 3 horas en resolver un problema.
• Un SE se debe aplicar a cosas practicas.
• Debe contar con la colaboración del experto.
• El conocimiento del experto no esta en los libros de texto.
• El conocimiento esta distribuido pertenece a varias personas.
• Los sistemas expertos tienen pocos niveles de profundidad.
• Para resolver la incompletitud de los conocimientos (información incompleta) se utilizan reglas redundantes. Ejemplo:
Si A y B y C entonces X
Si A y B entonces X
Si A entonces X
• Los expertos no razonan a partir de principios (razona a partir de su experiencia), solo los inexpertos razonan a partir de principios.

Consejos a la hora de diseñar un sistema experto:
• Separar el generador de inferencias de la base de conocimientos.
• Utilizar una representación tan uniforme como sea posible, siendo las reglas de producción la forma preferida.
• Mantener simple el generador de inferencias (estructura de control).
• Proporcionar algún tipo de facilidad para que el sistema pueda explicar sus conclusiones.
• Favorecer los problemas que requieran el uso de sólidos cuerpos de conocimientos asociativos empíricos sobre aquellos que se puedan resolver utilizando conocimiento causal o matemático.
• Es esencial el compromiso sobre la relación de capacidades humanas a transferir a la maquina.

Etapas de desarrollo de un sistema experto:
1. Identificación: Que se quiere que haga el SE.
2. Conceptualización: Expresar los conocimientos de manera semiformal.
3. Formalización: Diseñar las estructuras para organizar los conocimientos.
4. Implementación: Formalizar las reglas que representan conocimientos.
5. Chequeo: Validación de las reglas

Identificación: se determinan las características del problema, se describen los casos.

Conceptualizacion: Encontrar los conceptos que representen los conocimientos. La identificación del problema.

Formalización: Durante la formalización es importante que el ingeniero del conocimiento se familiarice con los siguientes tópicos:
• Las diferentes técnicas de representación del conocimiento y las búsquedas heurísticas usadas en los SE.
• Los shells existentes que puedan agilizar el desarrollo del proceso.
• Otros sistemas expertos que puedan resolver similares problemas y se puedan adaptar al problema.

Implantación: Hacer el prototipo: Llevarlo a la computadora y hacer las interfaces con el usuario.

Ingenieria del conocimiento:
1. Representación del conocimiento.
2. Adquisición de los conocimientos.
3. Procesamiento del conocimiento

Hasta ahora se ha hecho referencia al núcleo del sistema experto (BC,BH y MI) en los cuales se representan los conocimientos del experto en forma de reglas, los hechos o datos globales de partida y la forma de inferir esos conocimientos, pero no se ha dicho como se comunica el sistema con el usuario y con el experto.

Módulo de interacción con el usuario (interfaces con el usuario):
Facilita el diálogo con el usuario, permite hacerle preguntas al sistema e incluso obtener conocimientos análogos a los del experto. Estas interfaces podrían ser programas de entrada/salida de forma dialogada y las explicaciones pueden ser obtenidas de la memoria de trabajo donde se almacenan los pasos para llegar a la solución.

Módulo de ayuda para la adquisición de conocimientos (interfaces con el experto):
Permite al experto consultar los conocimientos almacenados en la base de conocimientos y en muchos casos dar la posibilidad de incluirle nuevos conocimientos. Su objetivo es que el experto pueda introducir directamente sus conocimientos en la m’,uina sin necesidad de ver al ingeniero del conocimiento.

47

Durante años la actividad de la Inteligencia Artificial estuvo dedicada a las investigaciones teóricas y al desarrollo de experimentos a través de programas que demostraran “actitudes inteligentes”, con estos programas se pretend’ia que la máquina jugara ajedrez, demostrara teoremas matemáticos, etc.

No fue hasta los años 70 que surgió un nuevo paradigma en la Inteligencia Artificial “los Sistemas Expertos”, cuya función es desarrollar trabajos similares a los que desarrollar’ia un especialista en un área determinada, la idea no es sustituir a los expertos, sino que estos sistemas sirvan de apoyo a los especialistas en un “dominio” de aplicación específico.

Estos sistemas expertos son en lo esencial sistemas de computación basados en conocimientos cuyos componentes representan un enfoque cualitativo de la programación. Muchas personas pueden creer que un Sistema Experto (SE) es un sistema compuesto por subsistemas y a su vez estos por otros subsistemas hasta llegar a los programas, y que los SE se miden por la cantidad de programas que contienen. Sin embargo la cantidad no es lo que prima en los SE, si no la cualidad del mismo, esta cualidad está dada por la separación de las reglas que describen el problema (Base de Conocimientos), del programa de control que es quien selecciona las reglas adecuadas (Motor de inferencias).

Podemos decir que un Sistema Experto es una Base de Conocimientos (BC), una Base de Hechos (BH) y un Motor (o Máquina) de Inferencias (MI). Por otra parte estos sistemas no se miden por la cantidad de instrucciones o programas sino por la cantidad de reglas que hay contenida en su Base de Conocimientos.

Para desarrollar los sistemas expertos primero es necesario abordar un área de interés, dentro de esta área se seleccionan a los expertos, que son los especialistas capaces de resolver los problemas en dicha área. Por ejemplo el área de interés de las empresas de proyectos, son precisamente los proyectos y un especialista podría ser un arquitecto, un ingeniero civil, etc. Ahora bien, casi siempre estos especialistas, son expertos en un dominio específico y es sobre este dominio, donde poseen su mayor experiencia (Dominio de Experticidad), por ejemplo un Ing. civil especializado en cimientos.

Una vez seleccionado al experto o a los expertos y estos estén de acuerdo en dar sus conocimientos, comienza a jugar su papel el “Ingeniero de Conocimientos”, que es el encargado de extraerle los conocimientos al experto y darle una representación adecuada, ya sea en forma de reglas u otro tipo de representación, conformando as’i la base de conocimientos del sistema experto.

Formas de representación de los conocimientos:
Reglas de producción
Redes semánticas
Marcos (Frames).

La forma de representación más usada es por reglas de producción, también llamadas reglas de inferencias. Casi todos los sistemas expertos están basados en este tipo de representación, ahora nos ocuparemos de los sistemas basados en reglas.

Las reglas de producción son del tipo:
SI Premisa ENTONCES Conclusion (SI A ENTONCES B).

Donde tanto las premisas como la conclusión, no son más que una cadena de hechos conectados por “Y” o por “O”, de forma general sería:

SI Hecho1 Y/O Hecho2 Y/O… HechoN ENTONCES Hecho1 Y/O … HechoN

Los hechos son afirmaciones que sirven para representar conceptos, datos, objetos, etc. Y el conjunto de hechos que describen el problema es la base de hechos.

Ejemplo de hechos:
Juan es un estudiante
Juan tiene 8 años
el perro es blanco
a María le gusta el cine
Pedro prefiere la película
la edad de Luis es de 25 años
Pedro tiene un salario de 200 pesos

Una regla es una combinación de hechos que permite representar conocimientos y sacar inferencias de los mismos.

Ejemplo de reglas:

R1: SI Juan es esgudiante Y Juan tiene 8 años Entonces Juan estudia en la primaria .

R2: SI el perro es blanco Y el perro se llama Dinky ENTONCES el perro es de Juan.

R3: SI a Maria le gusta la pelicula Y Juan prefiere la pelota ENTONCES hacen falta e televisiores

Observe como partiendo de hechos conocidos que describen algún conocimiento se pueden inferir nuevos hechos (nuevos conocimientos), por otra parte la regla #2 (R2), no tiene porque ser totalmente cierta, existe la posibilidad de que el perro sea de Juan, quizás se puede afirmar, si fuéramos a cuantificar esa posibilidad, que el perro pertenece a Juan con una certeza de un 80%, y por último la regla #3 (R3) es dependiente del contexto, ya que aquí se supone que ambos viven juntos y que los programas de TV coinciden.

La Base de Conocimientos (BC).
Son el conjunto de reglas que permiten representar los conocimientos del dominio de experto donde cada regla aisladamente tiene significado propio. Normalmente los conocimientos son de tipo declarativo por lo cual la BC casi siempre es una descripción de los conocimientos del experto, por lo tanto requiere de algún mecanismo que obtenga las inferencias adecuadas para resolver el problema, alguien que seleccione las reglas y las vaya ejecutando, ese alguien es el motor de inferencias.

El Motor de Inferencias (MI) es un programa de control cuya función es seleccionar las reglas posibles a satisfacer el problema, para ello se vale de ciertas estrategias de control sistemáticas o de estrategias heurísticas.

Estrategias de control sistemático:
Encadenamiento hacia adelante o hacia atrás.
Búsqueda en profundidad o a lo ancho.
Régimen de control irrevocable o por tentativa.

Estas estrategias son de forma sistemática las cuales deben llevar a la solución del problema. Podemos decir que el control sistemático es un programa de control hecho de forma “algorítmica” que aplican una heurística de propósito general cuya función es una exploración exhaustiva y metódica de la base de conocimientos.

Estos mecanismos de control son muy generales y a veces resultan ineficientes ya que siguen una secuencia de búsqueda demasiado rígida, para resolver esto se idearon las estrategias de control heurísticas.

Las estrategias de control heurísticas son programas de control que utilizan una heurística más específica y su función es una selección más restringida orientada por las necesidades del problema. Estas estrategias actúan sobre el control sistemático y en ciertos casos toma el control y dirige la búsqueda hacia ciertos criterios rompiendo así el control sistemático, una vez logrado su objetivo le devuelve el control nuevamente al sistemático.

Estrategias de control heurísticas:
Orden de las reglas.
Mayor credibilidad en las reglas.
Menor número de cláusulas no instanciadas.
Mayor número de conclusiones en las reglas.

Podemos decir que un sistema experto, es un sistema informático que utiliza técnicas apropiadas para la representación de conocimientos y la manipulación de este, de forma tal que exhiba el comportamiento de un avezado especialista en un determinado dominio del saber.

Lectura recomendada

libro-portada-ia_El libro es una propuesta sobre el futuro del hombre y como será su relación con una tecnología que cada vez se hace más independiente y más ajena al destino del hombre como ser humano y es un esfuerzo por responder a las preguntas sobre cuál será nuestro futuro ante el acelerado desarrollo de las máquinas. Y que opciones tenemos.

Disponible en Amazon:
Inteligencia Artificial, el futuro del hombre