miércoles, 21 de noviembre de 2012

Manejo de incertidumbre en sistemas expertos

6.1 Introducción 


La inteligencia artificial busca que algún ente no orgánico se comporte de igual manera que un ser humano, pero qué posee el hombre para actuar de una manera que ni las máquinas pueden imitar con perfección. 

 El ser humano es una caja negra, donde no sabemos exactamente que contiene, pero podemos afirmar que la manera de actuar de las personas frente a una situación lo hace de acuerdo a lo que le diga su conciencia y cuanto conoce de algún tema, entonces, las máquinas pueden algún día tener conciencia, como se podría dar la sensación de esto?.  La filosofía es el conjunto de saberes que busca establecer, de manera racional, los principios más generales que organizan y orientan el conocimiento de la realidad, así como el sentido del obrar humano y la psicología 

Parte de la filosofía que trata del alma, sus facultades y operaciones, y es aquí que como el estudio principal es el hombre y es en ciertos patrones donde la base de la inteligencia artificial se origina, de esta manera se podría lograr la sensación que las máquinas parezcan más humanos.  

Todo sistema que tenga por objetivo simular las interacciones entre componentes inteligentes y autónomos debe de considerar el manejo de incertidumbre e inconsistencia. La Incertidumbre se puede resumir como la información incompleta, fuentes poco confiables, detalles y hechos importantes que cambian, hechos imprecisos, vagos o difusos. La gente llega a soluciones razonables a pesar de todo 

 6.3 Criterios de validación Verificación y validación (V&V) 


Son dos de las etapas más importantes en el análisis del comportamiento de un sistema experto. Sin entrar en grandes profundidades, con la verificación trataremos de comprobar si hemos construido nuestro sistema correctamente. Ello implica asegurarse de que el “software” implementado no contiene errores, y que el producto final satisface los requisitos y las especificaciones de diseño. 

Por otra parte, el término validación se refiere, más bien, a un análisis de la calidad del sistema inteligente en su entorno real de trabajo, lo que nos permite determinar si el producto desarrollado satisface convenientemente las expectativas inicialmente depositadas. Ambas fases, verificación y validación, forman la base de un entramado más complejo destinado a evaluar globalmente el comportamiento de un sistema inteligente. Por simplicidad, las fases posteriores a la V&V se agrupan bajo el termino evaluación. 

 La evaluación se encarga de analizar aspectos que van más allá de la corrección de las soluciones finales del sistema. Así analizaría aspectos como utilidad, robustez, velocidad, eficiencia, posibilidades de ampliación, facilidad de manejo, análisis coste/beneficio, etc. 

6.4 Problemas apropiados para el desarrollo de un sistema experto 


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.

Tipos de sistemas expertos

8.1 Estructura básica de los Sistemas Expertos


Es una aplicación informática capaz de solucionar un conjunto de problemas que exigen 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 de computadora viene del conocimiento de un dominio específico. Estos sistemas imitan las actividades de un humano para resolver problemas de distinta índole (no necesariamente tiene que ser de inteligencia artificial).

También se dice que un 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:


  • 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. 

  • 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.

Un ejemplo de estas técnicas sería los agentes que tienen la capacidad de negociar y navegar a través de recursos en línea; y es por eso que en la actualidad juega un papel preponderante en los sistemas expertos.

8.2 Tipos de Sistemas Expertos


Principalmente existen tres tipos de sistemas expertos:


  • Basados en reglas previamente establecidas. 
  • Basados en casos o CBR (Case Based Reasoning). 
  • Basados en redes bayesianas. En cada uno de ellos, 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.

8.3 Ventajas y Desventajas de los Sistemas Expertos


Ventajas Permanencia: A diferencia de un experto humano un SE (sistema experto) no envejece, y por tanto no sufre pérdida de facultades con el paso del tiempo.


  • Replicación: Una vez programado un SE lo podemos replicar 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 costo: A pesar de que el costo 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 sí (cansancio, presión, etc.). Consolidar varios conocimientos. 
  • Apoyo Académico.


Limitaciones

Sentido común: Para un Sistema Experto no hay nada obvio. Por ejemplo, un sistema experto sobre medicina podría admitir que un hombre lleva 40 meses embarazado, a no ser que se especifique que esto no es posible ya que un hombre no puede gestar hijos.


  • 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.

8.4 Ejemplos importantes

  • Control experto de molienda semiautógena (Muñoz, 1988) 
  • Sistema de supervisión inteligente del sistema de lubricación de un molino semiautógeno (Escobedo, 1990) 
  • Sistema de control experto para planta de flotación (Ríos, 1990) 
  • Control experto de flotación columnar (Atero, 1991) 
  • Procesamiento inteligente de alarmas en sistemas SCADA/EMS (Murray, 1994) 
  • Sistema experto para predicción de demanda eléctrica (Prina, 1994) 
  • Sistema experto para el control de voltaje y despacho de potencia reactiva (Talavera, 1995) 
  • Sistema experto para procesamiento inteligente de señales fisiológicas adquiridas por monitores computarizados (Oberli, 1996)

8.5 Tareas que realiza un sistema experto


En medicina: 
 - Intérprete de electroforesis 
 - Análisis de EEG 
 - Monitoreo respiratorio y anestésico 
 - Monitoreo de recién nacidos 
 - Monitoreo de pacientes con asistencia ventilatoria mecánica. 

 • En la industria aeroespacial: 
 - Monitoreo predictivo y reconfiguración de sensores de navegación 
 - Análisis de errores de telemetría 
 - Control de órbita satelital 
 - Apoyo a la navegación en le reingreso a la atmósfera 
 - Evaluación de situaciones y manejo de emergencias 
 - Planificación táctica y de rutas. 

 • En comunicaciones: 
 - Interpretación de reportes diarios de buques 
 - Interpretación de comunicaciones de radio. 

 • En robótica: 
 - Generación de planes en vehículos autónomos guiados. 

 • En supervisión y control: 
 - Supervisión de señales 
 - Control inteligente 
 - Sistemas de supervisión inteligente 
 - Detección y diagnóstico de fallas.

Proceso de desarrollo de sistemas expertos

7.1 Estructura básica del entorno

Para el desarrollo de un sistema experto, se recomienda utilizar un esquema “incremental de prototipos”, en el cual el sistema experto resuelve primeramente un problema simple. La evaluación del sistema permite refinar la Base de Conocimientos y desarrollar una segunda versión, capaz de resolver problemas de mayor complejidad o enfrentarlas en forma más apropiada.

 • El desarrollo incremental presenta la siguiente evolución:
 - Prototipo inicial
 - Prototipos intermedios
 - Prototipo de trabajo
 - Modelo productivo
 - Sistema comercial.

 • El desarrollo de un sistema experto comprende las siguientes etapas (si bien en casos especiales algunas pueden no considerarse): - Identificación

 - Conceptualización
 - Formalización
 - Implementación
 - Prueba
 - Integración
 - Mantenimiento.

 • Identificación. Los desarrolladores y expertos identifican los problemas y subproblemas, formulan los objetivos globales del sistema y definen las necesidades de hardware y software. En esta etapa se estudia también la relación costo-beneficio esperada.

 • Conceptualización. A partir de su interacción con el experto, el desarrollador define los objetos y sus interrelaciones, los mecanismos de solución de problemas y los datos que el experto utiliza en dichas soluciones.

• Formalización. Los conceptos y relaciones identificados se expresan formalmente utilizando algún mecanismo de representación dado por las herramientas disponibles y las características propias del problema.

 • Implementación. El conocimiento formalizado se incorpora al sistema experto, utilizando alguna herramienta de desarrollo, para convertir el conjunto de reglas en un programa computacional. El conocimiento almacenado se organiza de forma de reflejar el mecanismo de razonamiento del experto. El resultado de esta etapa es un programa factible de ser probado.

 • Prueba. Se evalúa el desempeño del sistema experto, revisando su capacidad para plantear soluciones a problemas y cumplir los requisitos impuestos por los expertos. La evaluación la llevan a cabo los expertos quienes sugieren aspectos en que el sistema debe ser mejorado. En esta etapa se inicia el desarrollo incremental. Dependiendo del resultado de las pruebas, será necesario volver a la Implementación o inclusive a etapas anteriores.

• Integración. Una vez terminado el desarrollo del sistema experto comercial, éste se integrará a su entorno de trabajo, lo cual incluye la conexión a bases de datos, equipos e instrumentos, y la capacitación de los usuarios. 

• Mantenimiento. Esta etapa considera la modificación de la Base de Conocimientos, lo que dependiendo del sistema puede ser realizado por un usuario experto o el desarrollador.

7.2 Lenguaje de representación del conocimiento


Las herramientas que pueden utilizarse para el desarrollo de un sistema experto se clasifican en: - Herramientas o entornos especializados (KEE, OPS5, Nexpert, G2).

 - Lenguajes de programación orientados al desarrollo de aplicaciones de Inteligencia Artificial (Lisp, Prolog, Smalltalk).

- Lenguajes de programación tradicional (Fortran, C, C++).

 • La elección de la herramienta dependerá de los recursos disponibles, las capacidades de los desarrolladores y las características de la aplicación, por ejemplo, si existen requerimientos de tiempo real.

7.3 Inferencia y control


• IF/PROLOG. Prolog para ambientes de tiempo real.
 • FORTH
 • Personal Consultant. Basado en LISP y desarrollado por Texas Instruments. Los hechos se representan como triplas objeto-atributovalor, con factores de confianza; el motor de inferencias emplea encadenamiento hacia atrás. 
• PICON (Process Intelligent Control). Primer sistema experto comercial desarrollado inicialmente en Lisp y después reprogramado en C. Ha sido utilizado en numerosas aplicaciones incluyendo sistemas de energía, petroquímica e industria aerospacial.
 • G2. Desarrollado por Gensym Corp. inicialmente en Common Lisp, se ha constituido en un estándar mundial. Ofrece un ambiente gráfico orientado al objeto para crear aplicaciones inteligentes relacionados con monitoreo, diagnóstico y control de eventos dinámicos en línea. Ofrece un lenguaje natural y estructurado para crear reglas, modelos y procedimientos. Incluye ejecución recursiva de reglas y procedimientos.

7.4. Editor de bases de conocimiento


Las bases de conocimiento se han clasificado en dos grandes tipos: Bases de conocimiento leíbles por máquinas, diseñadas para almacenar conocimiento en una forma legible por el computador, usualmente con el fin de obtener razonamiento deductivo automático aplicado a ellas.

Contienen una serie de datos, usualmente en la forma de reglas que describen el conocimiento de manera lógicamente consistente. Operadores lógicos como Y (conjunción), O (disyunción), condición lógica y negación son utilizada para aumentarla desde el conocimiento atómico.

En consecuencia la deducción clásica puede ser utilizada para razonar sobre el conocimiento en la base de conocimiento. Este tipo de bases de conocimiento son utilizadas por la Web semántica Bases de conocimiento leíbles por Humanos están diseñadas para permitir a las personas acceder al conocimiento que ellas contienen, principalmente para propósitos de aprendizaje. Estas son comúnmente usadas para obtener y manejar conocimiento explicito de las organizaciones, incluyen artículos, white papers, manuales de usuario y otros.

El principal beneficio que proveen las bases de conocimiento es proporcionar medios de descubrir soluciones a problemas ya resueltos, los cuales podrían ser aplicados como base a otros problemas dentro o fuera del mismo área de conocimiento. El más importante aspecto de una base de conocimiento es la calidad de la información que esta contiene.

Las Mejores Bases de Conocimiento tienen artículos cuidadosamente redactados que se mantiene al día, un excelente sistema de recuperación de información (Motor de Búsqueda), y un delicado formato de contenido y estructura de clasificación. Una Base de Conocimiento puede usar una ontología para especificar su estructura(tipos de entidades y relaciones) y su esquema de clasificación. Una ontología, junto con un grupo de instancias de sus clases constituyen una Base de Conocimiento. Determinando qué tipo de información es capturada, y dónde se encuentra la información en una base de conocimiento es algo que es determinado por los procesos que respaldan al sistema. Una estructura robusta de procesos es la columna vertebral de cualquier Base de Conocimiento.

Algunas Bases de Conocimiento tienen un componente de inteligencia artificial. Este tipo de Bases de Conocimiento pueden sugerir soluciones a problemas esporádicos en la retroalimentación por el usuario, y son capaces de aprender de la experiencia (sistemas expertos). Representación de Conocimiento, Razonamiento automatizado y argumentación son las áreas activas de la investigación de la inteligencia artificial.

7.5. Editor de interfaces de desarrollo y usuario

La Interfaz de Usuario, en adelante IU, de un programa es un conjunto de elementos hardware y software de una computadora que presentan información al usuario y le permiten interactuar con la información y con el computadora. También se puede considerar parte de la IU la documentación (manuales, ayuda, referencia, tutoriales) que acompaña al hardware y al software. Si la IU está bien diseñada, el usuario encontrará la respuesta que espera a su acción. Si no es así puede ser frustrante su operación, ya que el usuario habitualmente tiende a culparse a sí mismo por no saber usar el objeto.

Los programas son usados por usuarios con distintos niveles de conocimientos, desde principiantes hasta expertos. Es por ello que no existe una interfaz válida para todos los usuarios y todas las tareas. Debe permitirse libertad al usuario para que elija el modo de interacción que más se adecúe a sus objetivos en cada momento. La mayoría de los programas y sistemas operativos ofrecen varias formas de interacción al usuario. Existen tres puntos de vista distintos en una IU: el del usuario, el del programador y el del diseñador (analogía de la construcción de una casa).

Cada uno tiene un modelo mental propio de la interfaz, que contiene los conceptos y expectativas acerca de la misma, desarrollados a través de su experiencia. El modelo permite explicar o predecir comportamientos del sistema y tomar las decisiones adecuadas para modificar el mismo. Los modelos subyacen en la interacción con las computadoras, de ahí su importancia. Modelo del usuario: El usuario tiene su visión personal del sistema, y espera que éste se comporte de una cierta forma. Se puede conocer el modelo del usuario estudiándolo, ya sea realizando tests de usabilidad, entrevistas, o a través de una realimentación.

Una interfaz debe facilitar el proceso de crear un modelo mental efectivo. Para ello son de gran utilidad las metáforas, que asocian un dominio nuevo a uno ya conocido por el usuario. Un ejemplo típico es la metáfora del escritorio, común a la mayoría de las interfaces gráficas actuales. Modelo del diseñador: El diseñador mezcla las necesidades, ideas, deseos del usuario y los materiales de que dispone el programador para diseñar un producto de software. Es un intermediario entre ambos. El modelo del diseñador describe los objetos que utiliza el usuario, su presentación al mismo y las técnicas de interacción para su manipulación.

Consta de tres partes: presentación, interacción y relaciones entre los objetos (Figura 1). La presentación es lo que primero capta la atención del usuario, pero más tarde pasa a un segundo plano, y adquiere más importancia la interacción con el producto para poder satisfacer sus expectativas.

La presentación no es lo más relevante y un abuso en la misma (por ejemplo, en el color) puede ser contraproducente, distrayendo al usuario.

La segunda parte del modelo define las técnicas de interacción del usuario, a través de diversos dispositivos.

La tercera es la más importante, y es donde el diseñador determina la metáfora adecuada que encaja con el modelo mental del usuario. El modelo debe comenzar por esta parte e ir hacia arriba. Una vez definida la metáfora y los objetos del interfaz, los aspectos visuales saldrán de una manera lógica y fácil.

7.6. Herramientas de depuración y traza

Es un sistema usado para probar y depurar (eliminar los errores) de otros programas (el programa "objetivo"). El código a ser examinado puede alternativamente estar corriendo en un simulador de conjunto de instrucciones (ISS), una técnica que permite gran potencia en su capacidad de detenerse cuando son encontradas condiciones específicas pero será típicamente algo más lento que ejecutando el código directamente en el apropiado (o el mismo) procesador. 

Algunas depuradores ofrecen dos modos de operación - la simulación parcial o completa, para limitar este impacto. Si es un depurador de nivel de fuente o depurador simbólico, comúnmente ahora visto en entornos de desarrollo integrados, cuando el programa "se estrella" o alcanza una condición predefinida, la depuración típicamente muestra la posición en el código original. Si es un depurador de bajo nivel o un depurador de lenguaje de máquina, muestra la línea en el fuente desensamblado (a menos que también tenga acceso en línea al código fuente original y pueda exhibir la sección apropiada del código del ensamblador o del compilador). 

Un "estrellamiento" sucede cuando el programa no puede continuar normalmente debido a un error de programación. Por ejemplo, el programa pudo haber intentado usar una instrucción no disponible en la versión actual del CPU o haber intentado tener acceso a memoria protegida o no disponible. Típicamente, los depuradores también ofrecen funciones más sofisticadas tales como correr un programa paso a paso (un paso o animación del programa), parar el programa (breaking), es decir, pausar el programa para examinar el estado actual en cierto evento o instrucción especificada por medio de un breakpoint, y el seguimiento de valores de algunas variables. Algunos depuradores tienen la capacidad de modificar el estado del programa mientras que está corriendo, en vez de simplemente observarlo. También es posible continuar la ejecución en una posición diferente en el programa bypaseando un estrellamiento o error lógico. 

La importancia de un buen depurador no puede ser exagerada. De hecho, la existencia y la calidad de tal herramienta para un lenguaje y una plataforma dadas a menudo puede ser el factor de decisión en su uso, incluso si otro lenguaje/plataforma es más adecuado para la tarea.[cita requerida] La ausencia de un depurador, una vez estando acostumbrado a usar uno, se ha dicho que "hace que usted se sienta como un hombre ciego en un cuarto oscuro buscando un gato negro que no está allí".1 Sin embargo, el software puede (y a menudo) se comporta diferentemente corriendo bajo un depurador que normalmente, debido a los cambios inevitables que la presencia de un depurador hará a la temporización interna de un programa de software.

Como resultado, incluso con una buena herramienta de depuración, es a menudo muy difícil rastrear problemas de tiempo de corrida en complejos sistemas distribuidos con múltiples hilos.


Técnicas de razonamiento

5.1 Lógica categórica.

Las definiciones de categorías y funtores nos proveen sólo de la base inicial del álgebra categorial. Los tópicos listados abajo son muy importantes. Aunque hay fuertes interrelaciones entre todos ellos, el orden en que los damos puede ser considerado una guía para posteriores lecturas. transformación natural: Mientras los funtores dan un camino para pasar, imprimir una categoría en otra, las transformaciones naturales nos proveen de una relación similar entre funtores.

El Lema de Yoneda es uno de los resultados más famosos de la teoría de categorías. Límites y colímites: Para introducir ciertas construcciones como los productos (de conjuntos, de topologías, de órdenes parciales, ...), en la teoría, los límites y los colímites son de ayuda. funtores adjuntos:

Un funtor puede ser el adjunto por la izquierda (o por la derecha) de otro funtor que vaya en la dirección opuesta. Sin embargo, cuando los comparamos con las relaciones clásicas de las aplicaciones que preservan las estructuras (inversas...), el concepto de adjunción de funtores aparenta ser bastante abstracto y general.

Es de gran utilidad aún y tiene relación con muchos otros conceptos importantes, como ocurre en la construcción de límites. equivalencia de categorías: Para obtener un criterio adecuado para discernir si dos categorías pueden o no ser consideradas similares, es necesario encontrar una noción más general que el concepto clásico de isomorfismo.

Las equivalencias de categorías están muy relacionadas con dualidad de categorías. diagramas conmutativos: Ya que la teoría de categorías trata usualmente con objetos y flechas es conveniente expresar las identidades mediante diagramas. 5.2 Esquemas Bayesianos.

5.3 Modelo Shortliffe & Buchanan, de medidas de certeza. Mycin.


Uno de los primeros basados ​​en reglas de inteligencia artificial sistemas expertos, que obtuvo los datos clínicos de un usuario interactivamente médico y se utiliza para diagnosticar y recomendar el tratamiento para las infecciones graves. Aunque nunca se utiliza en la práctica (ya que precedieron a la era de la creación de redes de área local y no se podría integrar con los registros de pacientes y de flujo de trabajo médico), su rendimiento se demostró que era comparable a y a veces más preciso que el de la facultad de Stanford enfermedad infecciosa.

Esto estimuló el desarrollo de una amplia gama de actividades en el desarrollo de sistemas expertos basados ​​en reglas, representación del conocimiento, redes de creencias y otras áreas, y su diseño gran influencia en el posterior desarrollo de la informática en la medicina.

5.4 Modelo Dempster – Shafer.


En primer lugar, y dado un universo de discurso cualquiera, Dempster y Shafer introducen el concepto de marco de discernimiento, que definen como “... el conjunto finito de todas las hipótesis que se pueden establecer en el dominio del problema”. El marco de discernimiento debe formar un conjunto completo, y por tanto exhaustivo, de hipótesis mútuamente excluyentes. 

Por otra parte, el efecto de una determinada evidencia sobre el conjunto global de hipótesis no viene determinado por la contribución de la confianza depositada en las hipótesis individuales. Por el contrario, el efecto de cada evidencia afecta generalmente a un subconjunto de hipótesis del marco de discernimiento. Este planteamiento es coherente con la realidad de casi todos los problemas cotidianos 

Según este planteamiento: • θ es el marco de discernimiento • A es un subconjunto cualquiera del marco • h1, ..., hn son las hipótesis del marco Ahora podemos establecer fácilmente el conjunto Γθ de todos los subconjuntos posibles del marco. En este contexto, la aparición de una determinada evidencia e favorecerá a un determinado subconjunto A de θ, de forma que el grado en que A se vea favorecido se representa por m(A), en donde m es indicativo de la confianza que la evidencia e permite depositar en A. m se denomina función básica de asignación de verosimilitud, y toma valores en el intervalo cerrado [0, 1]. 

Al respecto, utilizaremos la siguiente notación: e: A = {ha, hb, hc} → m(A) = x, con x ∈ [0, 1] El hecho de que la evidencia e apoye al subconjunto A no implica, como ya hemos dicho, que las hipótesis individuales se repartan de forma explícita la confianza depositada en la propia A. Esto constituye una diferencia notable con respecto a la teoría clásica de la probabilidad, según la cual, si h1, h2, h3 y h4 son las cuatro únicas hipótesis posibles en un dominio dado: 

 Si p(h1, h2) = 0.80 de alguna manera estamos afirmando que: p(h1) = 0.40 p(h2) = 0.40 Este mismo ejemplo contemplado bajo la óptica de la teoría evidencial tendría el siguiente tratamiento: θ = { h1, h2, h3, h4 } Γθ = {ø, (h1), (h2), (h3), (h4), (h1, h2), (h1, h3), (h1, h4), (h2, h3), (h2, h4), (h3, h4), (h1, h2, h3), (h1, h2, h4), (h1, h3, h4), (h2, h3, h4), (h1, h2, h3, h4) } Γθ contiene a los 16 subconjuntos posibles que se pueden establecer con las cuatro hipótesis iniciales del marco de discernimiento. Nótese que en Γθ están incluidos el conjunto vacío {ø}, y el propio marco { θ = (h1, h2, h3, h4) } Si elegimos un subconjunto 

A del marco, por ejemplo A = (h1, h2, h3), de tal manera que: e: A = (h1, h2, h3) → m(A) = 0.75, lo único que se afirma es que, dada la evidencia e, la verosimilitud de A es 0.75. Es claro que ninguna de las hipótesis individuales de A se ve afectada por esta asignación de verosimilitud, ya que cualquier otra hipótesis, o cualquier otro conjunto de hipótesis son, en realidad, subconjuntos diferentes de Γθ, independientes -en principio- de la evidencia e. 

 Todo subconjunto del marco de discernimiento para el cual, dada una evidencia e, se verifique que m(A) ≠ 0, se denomina elemento focal. Volviendo por un instante a la función básica de asignación de verosimilitud, Dempster y Shafer definen las siguientes condiciones para m: • ∑ ⊂φ = A m( A) 1 • m(ø) = 0 Ambas condiciones son consecuencia de las restricciones impuestas al marco de discernimiento45 . 

Decíamos también que la teoría evidencial proporciona un medio elegante para tratar la falta de conocimiento asociada a los procesos de razonamiento. Supongamos un marco de discernimiento θ y una evidencia tal que: e: A ⊂ θ → m(A) = s, con 0 ≤ s ≤ 1 La primera condición exigida a m establece que ∑ ( ) = 1 A⊂φ m A , entonces ...¿qué pasa con el resto de confianza que no ha sido asignada al elemento focal A? Al respecto, Dempster y Shafer postulan que: Si: e: A ⊂ θ → m(A) = s, con 0 ≤ s ≤ 1 Entonces: m(θ) = 1 - m(A) = 1 - s Esta formulación debe interpretarse del siguiente modo: puesto que la evidencia e supone la asignación de una confianza dada a un determinado elemento focal A del marco, el resto de la confianza no asignada representa “falta de conocimiento” y, por lo tanto, debe ser asignada al propio marco de discernimiento.

Representación del conocimiento en sistemas expertos

4.1 Introducción 


En la representación del conocimiento, los asuntos claves son los conceptos, lenguajes y estándares para la representación del conocimiento. Hay muchas partes implicadas en el progreso de los sistemas expertos: definir los problemas encontrados en la búsqueda del conocimiento; desarrollo de la infraestructura para construir y compartir grandes bases de conocimiento; y acumulado de un gran cuerpo del conocimiento, por ejemplo, conocimiento del sentido común o ingeniería y conocimiento técnico. 

4.2 La lógica como representación del conocimiento


El uso del conocimiento, o el solucionar problemas, implica esfuerzos de la investigación para el desarrollo de nuevos métodos para las diferentes clases de razonamiento, tales como razonamiento analógico, razonamiento basado en la teoría de las probabilidades y la teoría de la decisión, y razonamiento de ejemplos del caso. La primera generación de los sistemas expertos fue caracterizada porque las bases del conocimiento eran estrechas y, por lo tanto, el funcionamiento era frágil. Cuando el límite del conocimiento de un sistema fue atravesado, el comportamiento del sistema pasa muy rápido de extremadamente competente a incompetente. 

Para superar tal fragilidad, los investigadores ahora están concentrados en razonar modelos, principios y causas. Así, el sistema basado en el conocimiento no tendrá que saber todo acerca de un tema, como era, pero puede razonar con una base más amplia de conocimiento usando los modelos, los principios y la causalidad. 

4.3 Representación basada en reglas


La búsqueda para una gran base de conocimiento afronta el problema del acceso a las bases de conocimiento distribuidas que implican sistemas expertos múltiples. El esfuerzo de desarrollar la infraestructura necesitó obtener el acceso a un área de la investigación llamada compartir el conocimiento. 

La meta de esta área de la investigación es superar el aislamiento de los sistemas expertos de la primera generación, que raramente intercambiaron cualquier conocimiento. Por lo tanto, las bases de conocimiento que fueron construidas para los sistemas expertos en los años 80 no acumularon.

4.4 Representación basada en Frames


Una aplicación importante de la investigación de los sistemas expertos implica los métodos para razonar con datos inciertos y conocimiento incierto. Uno de los métodos más adoptados se llama "lógica difusa (fuzzy logic)" o "razonamiento borroso", especialmente en Japón. Recientemente, ha venido en escena el asunto de la investigación de las redes neuronales, redes de componentes distribuidos que funcionaban en paralelo para tomar decisiones. 

Los enlaces entre la tecnología de las redes neuronales y la tecnología de los sistemas expertos se están aplicando. Finalmente, la investigación explora el uso de los nuevos métodos paralelos de computación para la puesta en práctica de los sistemas expertos y de los sistemas avanzados basados en conocimiento. La pregunta es, ¿cuál será el impacto de tales actividades de la computación en paralelo del alto rendimiento en las técnicas de los sistemas expertos?

Adquisición de conocimiento en Sistemas Expertos

3.1 Análisis de Viabilidad 


Es el arte de diseñar y construir los sistemas expertos donde los ingenieros del conocimiento son sus médicos. Afirmamos anteriormente que la ingeniería del conocimiento es una parte aplicada de la ciencia de la inteligencia artificial (IA) que, a su vez, es parte de la informática. 

Teóricamente, entonces, un ingeniero del conocimiento es un 6 informático que sabe diseñar y poner programas en ejecución que incorporan técnicas de inteligencia artificial. Hay hoy dos maneras de construir un sistema experto. Pueden ser construidas todo de una vez, o ser construidas usando partes de software de desarrollo conocido como una " herramienta " o " shell (carcaza)". 

3.2 Técnicas de adquisición del conocimiento. 


Antes de hablar sobre estas herramientas, hablaremos concisamente lo que hacen los ingenieros del conocimiento. Aunque existen diferentes estilos y métodos de ingeniería del conocimiento, el acercamiento básico es igual: un ingeniero del conocimiento se entrevista y observa a una persona experta o a un grupo de expertos y aprende lo que ellos saben y cómo razonan con su conocimiento. 

El ingeniero entonces traduce el conocimiento a un lenguaje útil para la computadora y diseña un motor de inferencia, una estructura del razonamiento que utilice apropiadamente el conocimiento. Él también determina cómo integrar el uso del conocimiento incierto en el proceso del razonamiento y qué clase de explicación serían útiles para el usuario final. 

3.3 Fases de desarrollo metodológicas


Después, se programan el motor de la deducción y los recursos para representar y para explicar el conocimiento; el conocimiento del dominio es cargado por partes en el programa. Puede ser que el motor de la inferencia no sea exacto; la forma de representación del conocimiento es torpe para la clase de conocimiento necesitada para la tarea; y el experto pudo detectar qué partes de conocimiento son incorrectos. Todo esto se descubre y se modifica mientras que el sistema experto gana gradualmente capacidad. 

El descubrimiento y la acumulación de técnicas de razonamiento, y la representación del conocimiento es generalmente trabajo de investigación de la inteligencia artificial. El descubrimiento y la acumulación de conocimiento del dominio de la tarea es jurisdicción de los expertos del dominio. El conocimiento del dominio consiste en conocimiento formal, los libros de textos, y el conocimiento experimental, el talento de los expertos.

Fundamentos de los Sistemas Expertos

2.1 Introducción


Aplican experiencia de una manera eficiente para solucionar problemas, realizando inferencias a partir de datos incompletos o inciertos.

Explican y justifican lo que están haciendo. Se comunican con otros expertos y adquieren nuevo conocimiento.

Reestructuran y reorganizan el conocimiento. Pueden quebrantar reglas, interpretar simultáneamente el
espíritu y la letra. Determinar cuando un problema está en el dominio de su experiencia, determinación de la relevancia del problema.


2.2 Definición estructural y funcional de los Sistemas Expertos


Es un programa que soluciona problemas y da consejos en un área especializada de conocimiento. Pueden resolver problemas muy difíciles como los expertos humanos, razonan pero en base a un conocimiento adquirido, funcionan con datos que contienen errores, contemplan múltiples hipótesis en competición simultáneamente, y pueden justificar sus conclusiones. Los programas convencionales utilizan datos exactos lo que es una indudable ventaja de los computadores. Esta clase de datos se denomina conocimiento factual o preciso. Los humanos usamos una mezcla de ese conocimiento factual y de conocimiento heurístico (o sea la intuición lógica), que es una indisputable ventaja de los humanos. Los sistemas expertos tratan de emular ese conocimiento heurístico, lo que los hace superiores a los programas convencionales ya que pueden tratar con datos "inciertos", o sea, no precisos.

2.3 Inferencia y Control


La mayoría de los sistemas expertos almacenan su conocimiento en forma de reglas de inferencia: sí esto, entonces eso; sí eso, entonces aquello otro. Las reglas de inferencia permiten relacionar hechos o situaciones del mundo real para deducir otros hechos que, en principio, no son evidentes sin la utilización de dicha reglas. MODELO (REPRESENTACION DEL CONOCIMIENTO).- Como habíamos mencionado antes existen dos clases de conocimiento a tratar: 1.Conocimiento factual, o sea, aquel que por naturaleza es preciso y libre de "ruido". Se caracteriza también por ser objetivo y fácil de representar. 2.Conocimiento heurístico, es el conocimiento que usamos intuitivamente pero en forma consciente. NO es preciso ya que generalmente es subjetivo y es difícil de representar. Existen varias maneras de representar el conocimiento, tales como: Redes semánticas, Marcos, Reglas de producción, Lógica de predicados, Libretos, Híbridos. En la construcción de los sistemas expertos el modelo mas usado es el de las reglas de producción por su versatilidad. Sin embargo recientemente los modelos híbridos, o sea, la combinación de algunos de los modelos, han tenido mucho éxito en su aplicación, especialmente para la representación del conocimiento heurístico. Las reglas de producción generalmente son escritas en la forma IF-THEN, donde: IF premisa, THEN conclusión IF entrada, THEN salida IF condición, THEN acción IF antecedente, THEN consecuente IF datos, THEN resultados IF acción, THEN meta. La parte IF generalmente contiene varias cláusulas unidas por los conectivos lógicos AND, OR. La parte THEN consiste en una o más frases que especifican la acción a tomar.

Metodologías y entornos de desarrollos


Una metodología de desarrollo de software se refiere a un framework que es usado para estructurar, planear y controlar el proceso de desarrollo en sistemas de información. A lo largo del tiempo, una gran cantidad de métodos han sido desarrollados diferenciándose por su fortaleza y debilidad. El framework para metodología de desarrollo de software consiste en: Una filosofía de desarrollo de programas de computacion con el enfoque del proceso de desarrollo de software Herramientas, modelos y métodos para asistir al proceso de desarrollo de software.

Estos frameworks son a menudo vinculados a algún tipo de organización, que además desarrolla, apoya el uso y promueve la metodología. La metodología es a menudo documentada en algún tipo de documentación formal. 

El desarrollo de los sistemas tradicionales de ciclo de vida se originó en la década de 1960 para desarrollar a gran escala funcional de sistemas de negocio en una época de grandes conglomerados empresariales. La idea principal era continuar el desarrollo de los sistemas de información en una muy deliberada, estructurada y metódica, reiterando cada una de las etapas del ciclo de vida. Los sistemas de información en torno a las actividades resueltas pesadas para el procesamiento de datos y rutinas de cálculo. Metodologías de Desarrollo de Software tiene como objetivo presentar un conjunto de técnicas tradicionales y modernas de modelado de sistemas que permitan desarrollar software de calidad, incluyendo heurísticas de construcción y criterios de comparación de modelos de sistemas. Para tal fin se describen, fundamentalmente, herramientas de Análisis y Diseño Orientado a Objetos (UML), sus diagramas, especificación, y criterios de aplicación de las mismas. 

Como complemento se describirán las metodologías de desarrollo de software que utilizan dichas herramientas, ciclos de vida asociados y discusión sobre el proceso de desarrollo de software más adecuado para las diferentes aplicaciones ejemplos que se presentarán. Principalmente, se presentará el Proceso Unificado el cual utiliza un ciclo de vida iterativo e incremental.

Introducción a la inteligencia artificial y sistemas expertos

1.1 Reseña histórica


En ciencias de la computación se denomina inteligencia artificial (IA) a la capacidad de razonar de un agente no vivo.1 2 3 John McCarthy, acuñó el término en 1956, la definió: "Es la ciencia e ingeniería de hacer máquinas inteligentes, especialmente programas de cómputo inteligentes."4 Para explicar la definición anterior, entiéndase a un Agente inteligente que permite pensar, evaluar y actuar conforme a ciertos principios de optimización y consistencia, para satisfacer algún objetivo o finalidad. De acuerdo al concepto previo, racionalidad es más general y por ello más adecuado que inteligencia para definir la naturaleza del objetivo de esta disciplina. Los SE son programas capaces de manejar problemas que normalmente requieren para su resolución la intervención humana especializada.

1.2 Arquitectura de un sistema Experto típico



Cada sistema experto tiene dos partes principales:

  • La base del conocimiento Contiene el conocimiento efectivo y heurístico. 
  • Las Reglas de producción (razonamiento) Son las reglas para obtener lo que se quiere del s sistema. 
  • Motor de inferencia Es un programa de control cuya función es seleccionar las reglas posibles a satisfacer el problema. 
  • El experto de campo revela la información colapsada sobre el conocimiento
  • El ingeniero de conocimiento da forma simbólica y automáticamente manipulable a la
  • información (conocimiento) dada por el experto de campo.

1.3 Lenguajes de programación


Son programas que se han diseñado principalmente para emular un comportamiento inteligente. Incluyen algoritmos de juego tales como el ajedrez, programas de comprensión del lenguaje natural, visión por computadora, robótica y "sistemas de expertos". responde a una interfaz ensamblador, el segundo a interfaz compilador y el ultimo a interfaz interprete. Un Lenguaje de Programación se basa en reglas de acción (silogismos), y el análisis de posibilidades dándonos una ayuda muy útil en todas las ramas de la acción humana. Es así como los Sistemas Expertos desarrollan una Función muy importante "Realizar tareas genéricas: es decir para la monitorización y el diagnóstico, además de los trabajos de simulación de la realidad (Realidad Virtual en la actualidad). Algunos lenguajes son lenguajes principalmente interpretados, como APL, PROLOG y LISP. APL (A Programing Language). Diseñado para tablas, vectores y matrices; utiliza símbolos especiales, distintos que el ASCII.. El nombre LISP es la abreviatura de List-Processing, ya que el LISP fue desarrollado para el procesamiento de listas. La lista es la estructura más importante de LISP. El lenguaje LISP fue diseñado ya a finales de los años 50 por McCarthy. A lo largo de los últimos años se han desarrollado muchos dialectos, por ejemplo MACLISP, COMMONLISP, INTERLISP, ZETALISP, donde el COMMONLISP se está imponiendo cada vez más como estándar.