Professional Documents
Culture Documents
Introducción.
Desde los años 50,se ha producido un notable avance dentro del campo de la inteligencia artificial. El reto
de crear maquinas cuyo comportamiento asimile el de los humanos, con capacidad para tomar propias
decisiones y obtener conclusiones comienza a ser tenido en cuenta a partir del desarrollo de la informática.
Concretamente, la inteligencia artificial (IA) es una rama de la ciencia de la computación. Paralelo al
desarrollo de la informática, comienza el desarrollo de la inteligencia artificial.
Desde el punto de vista de los objetivos, la IA puede considerarse en parte como ingeniería y en parte como
ciencia:
Como ingeniería, el objetivo de la IA es resolver problemas reales, actuando como un conjunto de ideas
acerca de cómo representar y utilizar el conocimiento, y de cómo desarrollar sistemas informáticos.
Sin embargo, como se ha indicado antes, los trabajos que han llevado a cabo numerosos investigadores en la
segunda mitad del siglo XX, han demostrado que este tipo de tareas pueden ser desarrollados y ejecutados
perfectamente por maquinas. La IA engloba diferentes subareas .Las principales subareas existentes son,
entre otras el reconocimiento de voz o de patrones, la demostración automática de teoremas, el
procesamiento del lenguaje natural, la visión artificial, la robótica, las redes neuronales y los sistemas
expertos.
Los sistemas expertos constituyen un campo de investigación dentro de la inteligencia artificial, si bien la
mayor parte de las restantes (por no decir todas) disponen de alguna componente relacionada con los
sistemas expertos. En la siguiente figura se muestran los campos que forman la IA. Se trata de un “todo”
que engloba campos como la robótica, la visión artificial, las redes neuronales, etc.
1
Fig.1 Campos englobados por la IA.
Evolución Histórica.
En el año 1950 el campo de la automática recibe un gran impulso cuando Wiener desarrolla el principio de
la retroalimentación. La teoría de la retroalimentación es base fundamental de los sistemas de control.
En 1955 Newell y Simon desarrollan la Teoría de la lógica. Este desarrollo permitió desarrollar un
programa que exploraba la solución a un problema utilizando ramas y nudos, seleccionando únicamente las
ramas que más parecían acercarse a la solución correcta del problema.
En 1956,se celebra una conferencia en Vermont (USA) de gran trascendencia en el desarrollo de la IA. John
McCarthy propone por primera vez el uso del término “Inteligencia Artificial” para denominar el estudio
del tema.
En 1957, aparece la primera versión de “The General Problem Solver” (GPS), un programa capaz de
solucionar problemas de sentido común. El GPS utilizaba la teoría de la retroalimentación de Wiener.
En 1958 McCarthy anuncia su nuevo desarrollo el lenguaje LISP (LISt Procesing), el lenguaje de elección
para todos aquellos desarrolladores inmersos en el estudio de la IA.
En 1963, el Instituto Tecnológico de Massachussets (MIT) recibe una subvención de 2,2 millones de dólares
del gobierno de los Estados Unidos en concepto de investigación en el campo de la IA. De esa forma, se
comprueba la importancia que el Gobierno concede a la investigación dentro de ese campo.
En1965 aparece DENDRAL, el primer sistema experto. Es en ese año cuando Feigenbaum entra a formar
parte del departamento de informática de Stanford. Allí conoció a Joshua Lederberg, el cual quería
averiguar cual era la estructura de las moléculas orgánicas completas. El objetivo de DENDRAL fue
estudiar un compuesto químico.
El descubrimiento de la estructura global de un compuesto exigía buscar en un árbol las posibilidades, y por
esta razón su nombre es DENDRAL que significa en griego “árbol”.Antes de DENDRAL los químicos solo
tenían una forma de resolver el problema, estar era tomar unas hipótesis relevantes como soluciones
posibles, y someterlas a prueba comparándolas con los datos.
La realización de DENDRAL duró más de diez años (1965-1975). Se le puede considerar el primer sistema
experto.
2
En 1972, en la Universidad de Standford se desarrolla MYCIN, sistema experto dentro del campo de la
medicina para diagnostico de enfermedades infecciosas en la sangre. MYCIN se trataba de un sistema
experto para el diagnóstico de enfermedades infecciosas. Desde los resultados de análisis de sangre, cultivos
bacterianos y demás datos, el programa era capaz de determinar, o en lo menos, sugerir el microorganismo
que estaba causando la infección. Después de llegar a una conclusión, MYCIN prescribía una medicación
que se adaptaba perfectamente a las características de la persona, tales como el peso corporal de este.
Al mismo tiempo, Davir Marr propone nuevas teorías sobre la capacidad de reconocimiento visual de las
diferentes máquinas.
En 1972 aparece el lenguaje PROLOGUE basado en las teorías de Minsky. En 1973 se desarrolla el
sistema experto llamado TIERESIAS. El cometido de este sistema experto era el de servir de intérprete
entre MYCIN y los especialistas que lo manejaban, a la hora introducir nuevos conocimientos en su base de
datos.
El especialista debía utilizar MYCIN de una forma normal, y cuando este cometiera un error en un
diagnóstico (hecho producido por la falta o fallo de información en el árbol de desarrollo de teorías)
TEIRESIAS corregiría dicho fallo destruyendo la regla si es falsa o ampliándola si es eso lo que se necesita.
En 1979 aparece XCON, primer programa que sale del laboratorio Su usuario fue la Digital Equipament
Corporation (DEC).
El cometido de XCON sería configurar todos los ordenadores que saliesen de la DEC. El proyecto presentó
resultados positivos y se empezó a trabajar en el proyecto más en serio en diciembre de 1978.
En abril de 1979 el equipo de investigación que lo había diseñado pensó que ya estaba preparado para salir,
y fue entonces, cuando se hizo una prueba real, esperando resolver positivamente un 95% de las
configuraciones, este porcentaje tal alto se quedó en un 20% al ser contrastado con la realidad; XCON
volvió al laboratorio, donde fue revisado y a finales de ese mismo año funcionó con resultados positivos en
la DEC.
En 1980 se instauró totalmente en DEC. Y en 1984, el XCOM había crecido hasta multiplicarse por diez. El
XCOM supuso un ahorro de cuarenta millones de dólares al año para la DEC.
Se crearon multitud de empresas dedicadas a los sistemas expertos como Teknowledge Inc., Carnegie
Group, Symbolics, Lisp Machines Inc., Thinking Machines Corporation, Cognitive Systems Inc....
formando una inversión total de 300 millones de dólares. Los productos más importantes que creaban estas
nuevas compañías eran las “máquinas Lisp”, que se trataba de unos ordenadores que ejecutaban programas
LISP con la misma rapidez que en un ordenador central, y el otro producto fueron las “herramientas de
desarrollo de sistemas expertos”.
En 1987 XCON empieza a no ser rentable. Los técnicos de DEC tuvieron que actualizar XCOM
rápidamente llegándose a gastar más de dos millones de dólares al año para mantenimiento y algo parecido
ocurrió con el DELTA..También en 1987 aparecieron los microordenadores Apple y compatibles IBM con
una potencia parecida a los LISP. El software se transfirió a máquinas convencionales utilizando el lenguaje
“C” lo que acabó con el LISP.
3
A partir de los 90 y con el desarrollo de la informatica, se produce un amplio desarrollo en el campo de la
IA y los sistemas expertos, pudiéndose afirmar que estos se han convertido en una herramienta habitual en
determinadas empresas en la actualidad.
La evolución histórica de los métodos utilizados en el desarrollo de los sistemas expertos también se ha
producido a medida que se ha ido desarrollando la IA y los diferentes métodos que se han empleado para su
resolución. El desarrollo de lenguajes como LISP y PROLOG condicionaron esa evolución, así como
investigaciones en diversos campos relacionados.
Los primeros sistemas expertos que se desarrollaron en los años 60 eran capaces de resolver solo problemas
basados en situaciones determinadas, mediante sistemas de reglas.
Es a partir de los 70 cuando se empiezan a resolver problemas basados en situaciones inciertas, basados en
medidas difusas al principio y en redes probabilísticas con posterioridad. En la siguiente figura se aprecia la
evolución histórica en la resolución de problemas mediante sistemas expertos.
Todo ello se detallara en el próximo capitulo.
4
Una de las características principales de los sistemas expertos es que están basados en reglas, es decir,
contienen unos conocimientos predefinidos que se utilizan para tomar todas las decisiones.
En Teoría estos sistemas son capaces de razonar siguiendo los mismos pasos que seguiría un especialista
(experto) en determinada materia (medico, matemático, biólogo, etc) cuando resuelve un problema propio
de su campo de su disciplina.
Por ello, el creador de un sistema experto tiene que comenzar por identificar y recoger del experto humano
los conocimientos que este utiliza, pero sobre todo los conocimientos empíricos que se adquieren con la
práctica.
Dado que los programas están basados en el conocimiento un aspecto fundamental es la programación del
conocimiento la cual hace uso de la representación explicita del conocimiento a usar por el sistema y de su
interpretación y manipulación lógica por medio de métodos de inferencia que permiten deducir nuevo
conocimiento a partir del que ya se dispone. Por ejemplo, un SE en diagnostico medico.
Los sistemas expertos son máquinas que piensan y razonan como un experto lo haría en una cierta
especialidad o campo. Por ejemplo, un sistema experto en diagnóstico médico requeriría como datos los
síntomas del paciente, los resultados de análisis clínicos y otros hechos relevantes, y, utilizando éstos,
buscaría en una base de datos la información necesaria para poder identificar la correspondiente
enfermedad.
Un Sistema Experto de verdad, no sólo realiza las funciones tradicionales de manejar grandes cantidades de
datos, sino que también manipula esos datos de forma tal que el resultado sea inteligible y tenga significado
para responder a preguntas incluso no completamente especificadas. Así, un sistema experto es un cuerpo
de programas de ordenador que intenta imitar e incluso superar en algunas situaciones a un experto humano
en un ámbito concreto de su actividad.
En aquellos campos en los que no sea necesario aplicar la intuición ni el sentido común, los sistemas
basados en el conocimiento han conseguido notables éxitos, consiguiendo en ocasiones ser más regulares y
rápidos que los propios expertos.
Los sistemas basados en el conocimiento desarrollados hasta hace poco constituyen la primera generación
cuya característica común reside en la superficialidad del conocimiento que se incluye en el mismo. Los
ingenieros de conocimiento (desarrolladores de los sistemas basados en el conocimiento) se limitan a
incorporar en los sistemas la experiencia y criterios de los especialistas sin buscar las razones últimas en las
que se basan.
Actualmente existen sistemas más avanzados, sistemas de Segunda Generación, en la que el conocimiento
se estructura en dos niveles. El primer nivel, de control (se suele aludir a él como metaconocimiento y las
reglas que lo constituyen reciben el nombre de metarreglas), sirve para determinar la forma de utilizar el
segundo nivel que es el que contiene el conocimiento de los expertos.
Dada la complejidad de los problemas que usualmente tiene que resolver un SE, puede existir cierta duda en
el usuario sobre la validez de respuesta obtenida. Por este motivo, es una condición indispensable que un SE
sea capaz de explicar su proceso de razonamiento o dar razón del por qué solicita tal o cual información o
dato.
Base de Conocimiento
Un SE posee el conocimiento del experto humano convenientemente formalizado y
estructurado; esto es lo que se conoce como Base de conocimiento. Está constituido por la
descripción de los objetos y las relaciones entre ellos, así como de casos particulares y
excepciones.
Motor de Inferencia
También llamado intérprete de reglas, es un módulo que se encarga de las operaciones de
búsqueda y selección de las reglas a utilizar en el proceso de razonamiento. Por ejemplo, al
tratar de probar una hipótesis dada, el motor de inferencia irá disparando reglas que irán
deduciendo nuevos hechos hasta la aprobación o rechazo de la hipótesis objetivo.
Base de Hechos
Se trata de una memoria temporal auxiliar que almacena los datos del usuario, datos iniciales
del problema, y los resultados intermedios obtenidos a lo largo del proceso de resolución.
A través de ella se puede saber no sólo el estado actual del sistema sino también cómo se
llegó a él. Como ya se ha mencionado antes, es conveniente que esta información se maneje
con bases de datos relacionales, en lugar de utilizar un sistema particular de almacenamiento.
Interfaz de Usuario
Todo sistema dispone de una interfaz de usuario, que gobierna el diálogo entre el sistema y el
usuario. Para el desarrollo de estas interfaces algunas herramientas de desarrollo incorporan
generadores de interfaz de usuario o bien se utilizan herramientas de desarrollo de interfaces
gráficas existentes en el mercado.
Otros módulos que forman parte de este tipo de herramientas son los siguientes:
Módulo de comunicaciones 6
En la actualidad la mayoría de los sistemas basados en el conocimiento no viven aislados
sino que interactúan con otros sistemas por lo que son capaces de interactuar no solamente
con el experto sino con estos sistemas, para poder recoger información o consultar bases de
datos.
Módulo de explicaciones
Es una utilidad importante en la etapa de desarrollo ya que aporta una ayuda considerable al
ingeniero del conocimiento para refinar el funcionamiento del motor de inferencia, y al
experto a la hora de construir y verificar la coherencia de la base de conocimiento. Sirve para
explicar al usuario tanto las reglas usadas como el conocimiento aplicado en la resolución de
un determinado problema.
Si bien estos módulos no existen en todos los sistemas basados expertos, o bien están desarrollados o
implementados de maneras diferentes, la función que desempeñan es muy interesante en el desarrollo de
estos sistemas.
Así, el motor de inferencia y las interfaces, que incluyen la interfaz de usuario, el módulo de explicaciones y
el módulo de adquisición del conocimiento, forman el esqueleto o sistema esencial, y que, separadas de las
bases de conocimiento y de hechos, constituyen una herramienta software para el desarrollo de los sistemas
basados en el conocimiento (shells).
7
Fig.3. Componentes de un Sistema Experto.
Junto a ello, se encuentra la administración del sistema, compuesta por un interfaz encargado del manejo
de la sintaxis del lenguaje y de la maquina de inferencias,que se encarga de efectuar la búsqueda en la
base de conocimientos y en la base de datos. Por ultimo, se tienen los resultados. En la fig. 4 se refleja la
arquitectura de un SE.
8
Fig.4. Arquitectura de un sistema experto.
Para conseguir su objetivo - emular la actuación de una persona experta en un dominio de conocimiento
concreto - los Sistemas Expertos están dotados de una arquitectura con un contenido y funcionalidad que
recuerda tanto las fuentes de información como las herramientas y forma de proceder que habitualmente
utiliza un experto en el desarrollo de su trabajo cotidiano. Esta arquitectura consta de tres elementos
básicos: Base de Hechos, Base de Conocimientos y Motor de Inferencias.
La Base de Hechos representa de forma convenientemente codificada el entorno real sobre el que ha de
trabajar un Sistema Experto, es decir, incluye la definición de sus diferentes componentes, las
interrelaciones entre ellos y las posible informaciones que acerca de su estado o evolución se pueden
tener disponibles. Equivale al entorno de trabajo sobre el que actuaría un experto, es algo así como los
"ojos" de un experto que analiza la situación de su entorno de trabajo.
9
Estructura Básica de un Sistema Experto.
Problema
concreto
La Base de Conocimientos, como su nombre indica, ha de contener todo el conocimiento experto acerca
del dominio de trabajo. Equivaldría a la codificación conveniente de toda la sabiduría propia de un
experto en la materia en cuestión. Es un componente clave del Sistema Experto y de él depende de forma
poderosa su éxito o fracaso.
Cuando más fielmente quede recogido el conocimiento de una persona experta, y sea luego utilizado
de forma similar a como ella lo haría, tanto más eficaz será el Sistema
Experto.
Contiene el conocimiento del dominio en el cual el programa es competente. El conocimiento tiene que
estar representado en la forma que resulte más adecuada para el dominio de su competencia.
Adicionalmente hay que tratar que esa representación sea:
• Sencilla.
• Independiente.
• Fácil de modificar.
• Relacional.
10
• Potente: poder expresivo y eficiencia de cálculo.
Un aspecto importante de una base de conocimientos basada en reglas es su capacidad, expresada sobre la
base del número de reglas que posee:
• Demostración interesante: 50 reglas.
Una base de conocimientos debe ser coherente, rápida, modular, fácil de desarrollar y mantener. Puede
poseer: CONTROL: Estrategia de alto nivel de la aplicación: fases de la aplicación, bases de
conocimiento que se van a utilizar, Ejemplo: Primero pedir los datos al cliente, después decidir si se le
concede un crédito y en caso afirmativo, estimar la cuantía del crédito. CONOCIMIENTO
HEURÍSTICO: Reglas del tipo SI (condición) Entonces (acción) Ejemplo: si el solicitante tiene avalista,
entonces se le concede el crédito. ESTRUCTURA DE DATOS: Definiciones, restricciones, tipos, valores
por defecto,… (hechos “no ordenados”) Ejemplo: un perro tiene normalmente cuatro patas, puede tener
pelo corto o largo… PATRONES. PROCEDIMIENTOS: Métodos asociados a las estructuras de datos
Funciones genéricas Interfaz con el entorno informático.
El Motor de Inferencias es el procedimiento por el cual se asocian los hechos que se observa están
ocurriendo, con conocimientos relativos a los mismos, para de ahí obtener conclusiones. El experto
observa unos síntomas del mundo real (en el Sistema Experto a través de la Base de Hechos), extrae de su
conocimiento lo que sabe acerca de estos síntomas (en el Sistema Experto se usa la Base de
Conocimientos) y finalmente relaciona los hechos observados con su experiencia (en el Sistema Experto
eso lo hace el Motor de Inferencias) para hacer una serie de conjeturas que le pueden llevar a una
explicación de las razones o causas por las que esos hechos están presentes.
El motor de inferencia es una colección integrada de algoritmos de resolución de problemas. Está ya
codificado y probado (frente a los sistemas convencionales). Lee el conocimiento de control para ver qué
instrucciones de alto nivel hay definidas. Si se inicia un proceso de inferencia:
• Mira que reglas son aplicables.
11
El motor de inferencia está caracterizado por:
En la figura se puede observar el ciclo base que sigue el motor de inferencia en un sistema basado en
reglas:
12
LOS MÓDULOS DE COMUNICACIÓN. Un SE necesita medios y canales adecuados, sencillos y
potentes, para comunicarse:
• Con el usuario: Para permitir el diálogo en forma sencilla.
• Con el experto: Para la configuración del sistema; para la adquisición, mantenimiento, depuración
y validación del conocimiento.
• Con archivos externos: Bases de datos, hojas electrónicas de cálculo, archivos de texto,
programas.
Consecuentemente, los sistemas expertos pueden clasificarse en dos tipos principales según la naturaleza de
problemas para los que están diseñados: deterministas y estocásticos. Los problemas de tipo determinista
pueden ser formulados usando un conjunto de reglas que relacionen varios objetos bien definidos. Los
sistemas expertos que tratan problemas deterministas son conocidos como sistemas basados en reglas.
En situaciones inciertas, es necesario introducir algunos medios para tratar la incertidumbre. Por ejemplo,
algunos sistemas expertos usan la misma estructura de los sistemas basados en reglas, pero introducen una
medida asociada a la incertidumbre de las reglas y a la de sus premisas. En este caso se pueden utilizar
algunas fórmulas de propagación para calcular la incertidumbre asociada a las conclusiones.
Durante las últimas décadas han sido propuestas algunas medidas de incertidumbre. Algunos ejemplos de
estas medidas son los factores de certeza, usados en las conchas para generar sistemas expertos tales como
el sistema experto MYCIN; la lógica difusa, etc.
Los sistemas expertos que utilizan la probabilidad como medida de incertidumbre se conocen como
sistemas expertos probabilístico y la estrategia de razonamiento que usan se conocen con el nombre de
sistemas expertos probabilisticos.
Consideremos el siguiente ejemplo de diagnóstico médico, donde se supone que se tiene un conjunto de
enfermedades dado (E1,...,En) y un conjunto de síntomas asociados (S1,...,Sm) a éstas. La pregunta a la que
trata de responder un sistema experto probabilístico de diagnóstico médico es: Supuesto que el paciente
presenta un subconjunto de síntomas S, ¿qué enfermedad es más probable que tenga?.
Para responder a esta pregunta han de calcularse las probabilidades P(Ei | S) , i = 1, 2, …, n. Por ejemplo, en
un caso práctico podíamos haber obtenido:
Enfermedad P(Di | S)
1 0.2
2 0.1
3 0.8 más probable
4 0.4
5 0.0
6 0.7
El problema de estos sistemas es que suponen que se conoce la función de probabilidad conjunta de todas
las enfermedades y síntomas. Sin embargo, en la práctica no se conocen todos los datos necesarios para
definir la función de probabilidad conjunta pues, en casos reales, estos pueden constituir una cantidad
ingente de información. Por ejemplo, para un caso de diagnóstico médico con 100 enfermedades binarias y
100 síntomas binarios se requieren más de 10 60 parámetros para especificar la función de probabilidad
conjunta.
Los modelos de redes probabilísticas utilizan grafos para definir relaciones de dependencia entre las
variables del modelo y simplificar la estructura de la función de probabilidad conjunta. Así, serán necesario
un número inferior de parámetros para especificar el modelo. Esta simplificación se realiza en base a una
factorización de la probabilidad.
Desarrollo del prototipo: En esta fase las herramientas deben poseer una serie de características a
nivel de estructuras de control, permitir probar y comparar los diferentes enfoques de la resolución
del problema (representación del conocimiento, estrategia de control, etc.) y ofrecer facilidades a los
ingenieros del conocimiento (traza, gestión de coherencia, etc.) en el desarrollo del sistema.
Desarrollo del sistema: El factor más importante es la eficiencia. Asimismo, debe disponer de
módulos explicativos evolucionados para una efectiva compilación de la base de conocimiento y los
métodos de inferencia. En resumen, deben adaptarse perfectamente al problema. El desarrollo de
estos sistemas suele pasar por cuatro fases:
Identificación de la aplicación y concepción de la solución.
Desarrollo del (de los) prototipo(s).
Ejecución y construcción del sistema completo. 14
Alcanzar la integración del nuevo sistema con los anteriores y la asimilación del uso
de la nueva tecnología.
De la misma forma que no existe ningún lenguaje de programación universal, tampoco se ha encontrado un
lenguaje ideal para poder representar el conocimiento formalmente. La elección dependerá, principalmente,
de la naturaleza y magnitud del problema.
Así, existen formalismos que permiten representar fácilmente mecanismos de razonamiento puramente
lógicos; otros, sin embargo, se adaptan mejor a una representación por analogía.
La representación mixta, como los objetos y marcos, emplea los dos métodos de
representación anteriores.
15
Lógica proposicional: Es similar a las reglas de producción. Su diferencia principal con
éstas es que separa los elementos que componen la base de conocimiento de aquellos que controlan
la operación del sistema.
Marcos: Consiste en asociar propiedades a los nodos que representan los conceptos u
objetos. Las propiedades son descritas en términos de atributos y los valores asociados.
En el desarrollo del sistema es necesario idear el mecanismo de inferencia que refleje lo más fielmente
posible cómo piensa o actúa el experto. Este mecanismo, que se denomina motor de inferencia, es la parte
más importante del sistema basado en el conocimiento junto con la base de conocimiento. Los mecanismos
de razonamiento que utilizan reglas de producción son los de la lógica formal: modus ponendo ponens y
modus tollendo tollens . Además existe otro método que difiere de los anteriores y que es la búsqueda en
árboles.
Encadenamiento hacia adelante: El motor de inferencia parte de los hechos para llegar a los
resultados, esto es, selecciona las reglas que verifiquen las condiciones de la parte izquierda
(premisas).
Encadenamiento hacia atrás: En este caso el motor de inferencia parte de los resultados y
trata de volver a los hechos para comprobar si encajan con el problema planteado.
Encadenamiento mixto: Este modo ofrece varias posibilidades que resultan de combinar el
encadenamiento hacia adelante y hacia atrás para paliar sus limitaciones y mantener las ventajas.
16
Dentro de los modos de razonamiento los factores de incertidumbre son valores asignados a hechos o reglas
que indican la certeza o grado de confianza que el experto tiene en una regla o el usuario en un hecho. No
representan, ni mucho menos, una probabilidad en el sentido estricto de la palabra.
Un sistema que usa factores de incertidumbre asociados a las reglas o propiedades de los objetos puede
realizar varias recomendaciones indicando el grado de confianza o nivel de certidumbre de cada una.no
todos los problemas requieren un conocimiento basado en grados de incertidumbre, es conveniente que la
herramienta para el desarrollo de un sistema basado en el conocimiento incluya este conocimiento
probabilístico porque incorpora una utilidad que refleja en gran manera la forma de trabajar de los expertos
en mucha áreas. Asimismo, es necesario tener claro el algoritmo o método que se utiliza para calcular el
grado de incertidumbre asociado a una recomendación o acción final.
En la segunda el sistema basado en el conocimiento es el sistema principal y está conectado a otros sistemas
basados en el conocimiento o convencionales, que le ayudan en su operación. Como ejemplo están los
subsistemas que realizan complejos cálculos matemáticos necesarios durante el proceso de razonamiento.
En ambos casos debe garantizarse una comunicación fluida de todos los sistemas, aunque estén funcionando
en plataformas diferentes, ya sea directamente o a través de una red local. Este aspecto es crítico en sistemas
basados en el conocimiento en tiempo real, los cuales requieren un rápido acceso a la información relevante
y a las bases de datos para poder ofrecer una solución inmediata y satisfactoria.
Por tanto, habrá que fijarse en las posibilidades de conexión a las bases de datos más conocidas y, en
especial, a aquélla que se esté utilizando como estándar en la organización así como la posibilidad de llamar
a rutinas externas en diferentes lenguajes y viceversa, o la invocación del sistema basado en el conocimiento
desde otros sistemas.
El mercado se ha ido reconfigurando aprovechando las experiencias del pasado y el avance tecnológico. Así
se ha pasado de utilizar máquinas específicas (por ejemplo máquinas LISP) a usar ordenadores comunes
(estaciones de trabajo, ordenadores personales, etc.). Las aplicaciones eran muy específicas y ahora el
ámbito es mucho más amplio. Los sistemas basados en el conocimiento estaban pensados para trabajar de
forma aislada y ahora se conciben integrados con otros sistemas. Y, finalmente, el número de personas
formadas en estas técnicas es mucho mayor que las existentes hace unos años.Un análisis del mercado
actual lleva a distinguir seis categorías de herramientas en función de la plataforma de desarrollo y de
operación que lo estructuran:
18
clasificaciones posibles:
Según plataformas
Según herramientas de desarrollo:
Lenguajes (LISP, PROLOG, C++,...)
"Shell" (utilizando esos entornos)
CBR
Otra clasificación:
Herramientas de propósito general
Herramientas de dominio.
Las herramientas de desarrollo de sistemas basados en el conocimiento se pueden clasificar de varias
formas.
Según la plataforma de desarrollo y de operación que lo estructuran podemos distinguir cuatro tipos:
Herramientas para PCs y Macintosh: Hasta hace poco, las herramientas que existían para estos
entornos estaban orientadas al desarrollo de sistemas pequeños y prototipos. Actualmente, y dado el
aumento de la potencia de los PCs, hay herramientas que antes sólo funcionaban en estaciones de
trabajo y ahora tienen versiones para PC.
Herramientas Lisp: Son ordenadores con arquitecturas especiales para ejecutar programas Lisp. El
interés por herramientas Lisp continúa descendiendo así como el número de productos en el
mercado. Se prevé un descenso continuo en los próximos años.
Orientadas a dominios y problemas específicos. Esta última categoría representa el mayor grupo
de herramientas en el mercado. Se trata de herramientas que abordan problemas o áreas específicos.
Ahorran mucho tiempo de desarrollo en el caso de ser aplicadas en los dominios para los que se
diseñaron. El número permanece estable aunque con perspectivas de crecimiento en los años
venideros debido al gran interés existente en este tipo de herramientas.
Por último podemos realizar una última división atendiendo al lenguaje o técnica para el que sirve la
herramienta y así podemos distinguir entre:
19
Herramientas CBR (Case-Based Reasoning): La demanda de herramientas de este tipo se está
consolidando mediante la mejora de la calidad de sus productos con más utilidades y nuevos
componentes. Son herramientas de razonamiento basadas en casos, para a partir de ellos inducir las
reglas y criterios por similitud.
Herramientas para lenguajes Lisp, Prolog, C++. Son entornos de desarrollo; proporcionan las
utilidades necesarias ( editores, compiladores, depuradores ) para poder programar de forma cómoda
en estos lenguajes. ( Se incluye el C++ porque cada vez hay más programas basados en el
conocimiento que se desarrollan en él).
Redes Neuronales: Consisten en nodos conectados con otros mediante enlaces, simulando las
conexiones que forman las neuronas en el cerebro. Se investiga su utilización en muchas áreas;
Visión Artificial, Razonamiento, Aprendizaje, Comprensión Lenguaje Natural.
Redes Bayesianas: Técnica para tratar el razonamiento con incertidumbre. Su base es el teorema de
Bayes que es el método matemático exacto para tratar las probabilidades. Consiste en una red donde
los nodos son hechos ciertos o no y los enlaces entre los nodos son las probabilidades condicionadas
de unos hechos con respecto a otros.
Propagando las probabilidades a través de la red, se pueden obtener los resultados más probables a
partir de los hechos que se conocen (razonamiento). El ejemplo típico son los sistemas de
diagnóstico médico.
Algoritmos genéticos: Son métodos de aprendizaje inspirados en la evolución natural, y que utilizan
las nociones de individuos, apareamiento, recombinación de cromosomas, mutación genética,
adaptación y selección natural. Son la base de las investigaciones en Vida Artificial.
Otras técnicas que se pueden mencionar son la utilización de Ontologías para representar el conocimiento,
Data Mining para obtención de conocimiento en bases de datos y los Agentes Inteligentes para la
recuperación de información en Internet.
20
Tipo de problemas que hacen apropiado el desarrollo de un sistema experto.
Las tareas requieren principalmente tratamiento y razonamiento simbólico.
Las tareas admiten el uso de métodos heurísticos.
Las tareas no son demasiado fáciles.
Las tareas tienen un valor eminentemente práctico.
Las tareas tienen un tamaño razonable, esto es, el número de conceptos que deben ser
manejados es limitado y no requiere conocimientos de muchas áreas diferentes.
Sistemas de ayuda a la toma de decisiones. Se trata de sistemas que a partir de una problemática
determinada sugieren la solución que consideran más idónea a partir del conocimiento incluido en el
sistema. En la actualidad, en España se procede al desarrollo del Sistema de Información Normativo
Aplicado al Control (SINAC) fruto de la colaboración entre la Intervención General de la
Administración del Estado y la Dirección General de Informática Presupuestaria. Su función
primordial consiste en ayudar en la fiscalización y control de la actividad económica del Sector
Público. Otro ejemplo significativo podría ser la Metodología de Análisis y Gestión de Riesgos de
los sistemas de Información de las AdminisTraciones públicas(MAGERIT), elaborada por un equipo
interdisciplinar del Comité Técnico de Seguridad de los Sistemas de Información y Tratamiento
Automatizado de Datos Personales, SSITAD, del Consejo Superior de Informática y que consiste en
un método formal para investigar los riesgos que soportan los Sistemas de Información, y para
recomendar las medidas apropiadas que deberían adoptarse para controlar estos riesgos; por tanto,
permite aportar racionalidad en el conocimiento del estado de seguridad de los Sistemas de
Información y en la introducción de medidas de seguridad.
Diagnóstico. Se trata de sistemas que a partir de unos "síntomas" determinan las causas que lo
producen. Ejemplo de ellos son los sistemas basados en el conocimiento de diagnóstico de
enfermedades o de averías.
Interpretación y Análisis. Sirven para tratar grandes volúmenes de información, interpretarla, dar
un informe explicativo y sugerir las acciones a tomar. Ejemplo de ellos pueden ser los sistemas de
evaluación de resistencia de estructuras frente a terremotos o sistemas de supervisión de procesos
industriales.
Planificación. Son sistemas que establecen las etapas y recursos necesarios para alcanzar un
determinado objetivo. Ejemplo de ellos podría ser un sistema basado en el conocimiento de
planificación de trabajos en una factoría.
21
Interfaces inteligentes. Hacen de puente entre las personas y equipos complejos y de difícil
utilización. Caso típico son los interfaces inteligentes de acceso a base de datos.
Diseño. Son aquéllos que efectúan la planificación o trazado de un objeto o sistema en base a los
requisitos especificados. Suelen ser capaces de dar diferentes soluciones de forma que el usuario
pueda elegir aquélla que le convenga. Ejemplo de este tipo son los sistemas de ayuda al diseño de
puentes, presas, microcircuitos electrónicos, etc.
A modo de resumen y sin ser exhaustivos, pues el ámbito de aplicación de los sistemas basados en el
conocimiento es muy amplio, el siguiente cuadro indica algunas de las áreas en las que se han aplicado
sistemas basados en el conocimiento y el tipo de problema que abordan:
DOMINIO PROBLEMAS
Ambito Administrativo:
- Reglamentación. - Aligerar el tiempo de procedimientos.
- Derecho interpretado. - Disminución de costes de tramitación.
- Procesos. - Homogeneidad de las interpretaciones legales.
- Procedimmientos. - Disponiblidad de la información.
Gestión:
- Ejecutivos. - Manejo de un volúmen creciente de información.
- Acceso a expertos o consultores para la resolución de un
- Gestores.
problema determinado.
- Planificación estratégica. - Reducción de la complejidad organizativa.
- Dirección.
- Consultores.
Operaciones:
- Mejora de la coordinación de la organización, programación y
- Operación de maquinaria .
gestión complejas.
- Vigilancia de sistemas complejos para poder tomar decisiones
- Controles de calidad.
rápidamente.
- Controles de inventario. - Previsión de resultados de procesos complejos y dinámicos.
- Control de maquinaria
Servicios de Apoyo:
- Relaciones Públicas. - Comunicación de procedimientos nuevos y complejos
- Entrenamiento de personal. - Exámen y explicación de las decisiones tomadas.
- Control y reducción de los costes de desarrollo y
- Servicios de proceso de datos.
mantenimiento de sistemas informáticos.
- Mantenimiento y construcción. - Entrenamiento de operarios en tareas complejas
- Investigación y desarrollo.
- Problemas legales.
Finanzas:
- Necesidad de disponer de herramientas inteligentes para la
- Gestores de cartera.
planificación.
- Contabilidad financiera. - Vigilancias de sistemas complejos existentes.
- Gestores financieros.
- Auditoría
- Control.
22
Mercadotecnia:
- Necesidad de asistencia experta para examinar cuestiones
- Ventas.
mercadotécnicas.
- Necesidad de programas de servicio de clientes, asistencia y
- Publicidad.
control.
- Investigación mercado- técnica.
- Gestión de pedidos.
Automatización del Trabajo de Oficina:
- Necesidad de incremento en el manejo, comunicación,
- Proceso de textos.
recuperación y distribución de información.
- Gestión de bases de datos.
Servicios Profesionales:
- Consultoría de gestión. - Acceso a la información de otros consultores o expertos.
- Abogacía. - Realización de informes.
- Medicina. - Modelización y simulación.
- Contabilidad. - Control de un volúmen creciente de información.
Típicamente el ciclo de vida que se aplica a los sistemas basados en inteligencia artificial, es el ciclo de
vida en espiral, en el cual se comienza desde unos pocos requisitos y centrándose un pequeño objetivo y
se continúa avanzando poco a poco desde ese punto.
Como se puede observar en la imagen, se comienza desde el centro y siguiendo hasta el exterior, se
construye sucesivas versiones de la aplicación cada vez más completas. Durante la primera vuelta
alrededor de la espiral se definen los objetivos, se conceptualiza y formaliza el conocimiento, se evalúan
los riesgos y se crea el prototipo inicial, de esta forma se puede definir más el problema y refinar los
requisitos.
• Evolución: por el cual los diferentes prototipos construidos se van acercando más al sistema real.
• Identificación de la tarea:
o Análisis de alternativas.
ƒ Selección de Herramientas.
ƒ Validación y evaluación.
• Actuar para conseguir el mantenimiento del sistema, y lograr una correcta transferencia de la
tecnología.
o Definir el mantenimiento del sistema en general y de las bases del conocimiento en
particular.
o Organizar la transferencia tecnológica.
Tecnología
Desde el punto de vista tecnológico, los SBC pueden presentar varias formas de aplicación:
Los SBC, al igual que otras formas de software, tienen como objetivo crear soluciones informáticas a
problemas. A pesar de que los SBC se basan principalmente en procesos heurísticos antes que
algorítmicos, el desarrollo de un SBC tiene un ciclo de vida similar al de un sistema de
software convencional.
Sin embargo, existen varias diferencias significativas entre la ingeniería cognoscitiva y la ingeniería de
software:
• Una de las mayores diferencias es el tipo de conocimiento que se representa: La ingeniería de
software involucra la representación de procedimientos algorítmicos bien definidos y típicamente
bien conocidos por muchas personas; mientras que la ingeniería cognoscitiva involucra la
representación del conocimiento heurístico amplio, impreciso, mal definido, que está almacenado
en la mente de pocos expertos. Debido a que el conocimiento heurístico no es ampliamente
conocido, ni entendido, tienen que ser utilizadas ciertas técnicas para lograr transferirlo desde las
mentes de los individuos que lo poseen, hasta una representación computarizada. Esta
transferencia, denominada Adquisición de Conocimiento, es elaborada y consume mucho tiempo.
• Otra de las diferencias significativas está relacionada con la naturaleza y la cantidad de
conocimiento. Mientras la naturaleza y la cantidad del conocimiento requerido para resolver un
problema algorítmico tradicional pueden ser razonablemente bien estimados, este no es el caso
para SBC. Típicamente, la naturaleza y la cantidad de conocimiento requeridos dentro de un SBC
para resolver un problema no es bien conocido, aún por los propios expertos. Esto dificulta la
predicción del esfuerzo total requerido para desarrollar un SBC. Además, puede ser difícil llegar a
un diseño adecuado desde las etapas iniciales del proyecto, dando lugar al problema denominado
dilema del cambio.
El dilema del cambio, puede aparecer durante el proceso del desarrollo, cuando un ingeniero cognoscitivo
descubre que la estructura de representación del conocimiento, la herramienta u otros aspectos de diseño
del sistema resultan inadecuados. Este descubrimiento es debido, generalmente, a la falta de comprensión
inicial de las complejidades del dominio del problema o al hecho de haber subestimado su magnitud.
Si esto ocurre dentro de una etapa avanzada del desarrollo, puede ser un serio problema. El
ingeniero cognoscitivo puede vérselas ante el dilema de continuar con la infraestructura inadecuada,
que puede resultar en graves dificultades al final del proyecto; o, volver a iniciar el desarrollo con lo
que parece ser una mejor estructura de representación del conocimiento y otros aspectos más adecuados
de diseño. Cualquiera que sea la decisión, sin lugar a dudas, se retardará la ejecución del proyecto. Sin
embargo si el dilema del cambio aparece en las etapas iniciales del proceso, puede ser beneficioso ya
que permitiría corregir los errores identificados, antes de que se invierta demasiado tiempo y recursos
en el paradigma inicial.
Para evitar estos obstáculos y proporcionar confianza al equipo de desarrollo, muchos ingenieros
cognoscitivos utilizan técnicas combinadas de Rápido Prototipaje y Desarrollo Incremental.
RÁPIDO PROTOTIPAJE
25
Esto proporciona un sistema funcional que puede ser evaluado para obtener la realimentación necesaria.
El prototipo inicial puede ser desechado una vez que se ha obtenido la realimentación esperada o puede
ser mejorado en forma incremental para constituirse en un subsistema del SBC final. En la mayoría de
casos se opta por desecharlo debido a las dificultades que existen para modificarlo y acomodar todas las
ideas generadas durante su desarrollo y evaluación. En general, es más fácil empezar un nuevo proceso de
desarrollo, siguiendo las diferentes etapas del ciclo de vida con mayor detalle.
DESARROLLO INCREMENTAL
Una vez que el prototipo del sistema ha sido evaluado, se realiza su diseño final y se lo somete a un ciclo
continuo de modificaciones para que mejore sus características y su calidad. A este proceso se conoce
como desarrollo incremental. La estrategia que se sigue, puede ser definida como: Un proceso iterativo de
extracción, representación y confirmación del conocimiento en un limitado subconjunto del dominio del
problema con el objetivo de construir en forma incremental el SBC en segmentos autocontenidos.
Se evalúa el problema y los recursos disponibles para determinar la aplicabilidad de una solución basada
en conocimiento. Esto permite determinar los objetivos del proyecto, ojalá, de una manera inequívoca y
JUSTIFICACIÓN:
POSIBILIDAD:
ADECUACIÓN:
ÉXITO.
Se trata de evaluar si el sistema experto asegurará la resolución del problema con éxito.
26
DESARROLLLO DEL PROTOTIPO
Esta es una etapa clave debido a que todas las decisiones tomadas en el diseño preliminar deben ser ya sea
confirmadas, rectificadas o desechadas, sobre la base del conocimiento recopilado de los expertos en el
proceso hasta completar esta etapa. El prototipo inicial debe verse como el sistema completo, excepto que
estará limitado en su cobertura. Debe incluirse una relativamente bien definida interfaz con el usuario y
un robusto subconjunto de conocimiento de tal forma que los usuarios puedan juzgar su aceptabilidad.
Esto no significa que el prototipo debe ser altamente robusto, simplemente debe reflejar la forma que
tendría el sistema final que será construido. En general se recomienda que el prototipo inicial sea
desechado una vez que se haya completado su evaluación. El desarrollo del sistema final debe partir, en lo
posible desde el inicio. La clave en la etapa del prototipo es que se debe extraer tanto conocimiento y
opiniones de expertos y usuarios como sea posible para poder validar satisfactoriamente las decisiones de
diseño.
DEMOSTRACIÓN:
Solamente se estudia una parte del problema, pero se hace con profundidad, con el objetivo de
demostrar su viabilidad.
EXPERIMENTACIÓN:
EVALUACIÓN:
27
Es un sistema mixto de los dos anteriores, con el objetivo de aproximarse al problema real.
Pero la razón principal es el determinar la forma de adquisición del conocimiento, que actualmente es aún
el gran problema, y se sigue resolviendo de forma artesanal por el Ingeniero del Conocimiento. En la
figura se pueden ver los pasos más significativos del desarrollo de un prototipo.
Se definen los aspectos importantes del problema, es decir, objetivos a cubrir, recursos y herramientas a
elegir, así como los participantes del mismo, ya sean Ingenieros del Conocimiento o Expertos.
CONCEPTUALIZACIÓN:
Se definen los conceptos necesarios para producir una solución, es decir, tipos de relaciones y estrategias
a seguir. Se define la estructura del a Base de conocimiento de otros módulos.
FORMALIZACIÓN:
En esta fase se representan formalmente los elementos del problema y estructuras que se han definido, es
decir, se construyen los módulos, base de conocimiento y motor de inferencia.
IMPLEMENTACIÓN:
El Ingeniero del Conocimiento refleja el conocimiento formalizado en una aplicación, la cual requiere los
siguientes aspectos:
Contenido:
Estructuras de datos, reglas de inferencia y estrategias de control.
Forma:
Herramienta elegida para desarrollar el sistema.
Integración:
Implica cambiar y reorganizar distintos elementos de conocimiento para eliminar equiparaciones globales
equivocadas. En esta etapa, además, se lleva a cabo el desarrollo de las interfaces del usuario.
VERIFICACIÓN:
El experto evalúa las prestaciones y utilidad del programa prototipo y ayuda al Ingeniero del
Conocimiento si es necesario revisarlo.
Los usuarios finales exigen, además de la calidad, que el sistema sea rápido, fiable, fácil de usar y
entender que sus fallos sean recuperables.
28
Las principales actividades a llevar a cabo son:
• Muchas veces los casos típicos que debe resolver el sistema son los mismos que se han usado para
la adquisición de conocimiento.
• No es posible en un caso real disponer de un juego de pruebas que pueda asegurar que el
comportamiento del sistema es el ideal.
29
Verificación del Sistema.
La verificación del sistema consiste en comprobar la corrección de los modelos conceptuales, formales y
computables del sistema. La debe realizar un Ingeniero de Conocimiento distinto al que desarrolló el
sistema. Lo que se verificó en INCEND-IA a lo largo de todo el proceso de creación, básicamente ha
sido:
Redundancias:
Completitud:
Elementos ausentes.
Elementos inalcanzables.
Consistencia:
(Depende de cada formalismo de representación utilizado, de los tipos de lógicas y de los
mecanismos de gestión de incertidumbre):
Elementos contradictorios. Incompatibilidades con las restricciones.
30
Proceso de validación.
También deben ser evaluadas la usabilidad y la utilidad del sistema, cuando el sistema está funcionando
en condiciones reales.
31