5.3 Ingeniería del conocimiento


La Ingeniería del conocimiento es una disciplina que forma parte de la I.A., consiste en diseñar y generar Sistemas Expertos basados en el conocimiento que antes no existía, a partir de la información contenida en las bases de datos documentales y mediante el cruce del contenido de los documentos. 

Se apoya en metodologia de instrucciones y en tecnologias de informacion, en un intento por representar el conocimiento y razonamiento humanos en un tema especifico, dentro de un sistema artificial.

La ingeniería del conocimiento engloba a los científicos, tecnología y metodología necesarios para procesar el conocimiento. Su objetivo es extraer, articular e informatizar el conocimiento de un experto.

La ingeniería del conocimiento parte lógicamente de la Teoría actor-red, ya que pone de manifiesto redes y genera otras nuevas. Además hace uso de la Teoría de la Traducción-Traslación, ya que mediante el acercamiento y puesta en relación de actores, se produce una traducción para llevar los enunciados o modalidades a nuevos estadios de evolución.

La Ingeniería del Conocimiento debe usar técnicas y metodologías de carácter cuantitativo e instrumental. Así, las redes las describe matemáticamente mediante la teoría de los grafos. Para determinar la intensidad de los enlaces emplea índices de similitud o cercanía y como algoritmo fundamental el Análisis de Palabras Asociadas. Alternativamente también se puede emplear análisis mediante redes neuronales. 

El Análisis de Palabras Asociadas se basa en “leer” los documentos y generar redes sociocognitivas a partir de la asociación de las palabras que hay en los documentos. El resultado es lo que se denominan Bases de Conocimiento, en oposición a Bases de Datos, que tan solo contienen datos

5.2 Seguridad en la programacion


La mayoria de las personas piensan que la seguridad es cosa de juego y que muchas veces la inseguridad de software es un problema que aqueja solo a los desarrolladores de software. Pero la verdad, hoy en dia la mayoria de las aplicaciones, si no es que todas tiene un bug o una vulnerabilidad por donde se puede acceder y escalar privilegios o modificar informacion confidencial. Estas son las  fuentes de vulnerabilidades mas comunes en el software:

1. Cambios en el ambiente de ejecución: Los parches, los cambios en la configuración y variables de entorno alrededor de las aplicaciones son elementos críticos para mantener una ejecución adecuada y controlada de las rutinas y acciones previstas en el software. Al descuidar este aspecto, es probable involucrar efectos de borde o condiciones de excepción no previstas que comprometan no solamente un módulo de la aplicación sino el sistema de información mismo.

2. Desbordamientos y chequeos de sintaxis: Dos elementos importantes en la revisión y evaluación de software. Por un lado la evaluación de los desbordamientos bien sea de memoria o de variables específicas dentro de un programa y por otro lado, la verificación de buen uso de los comandos o palabras reservadas en el lenguaje de programación, que permitan al programador un uso adecuado y eficiente de las estructuras. Si este aspecto no se considera con el rigor necesario, se estará comprometiendo la integridad del ambiente de ejecución de la aplicación.

3. Convenientes pero peligrosas características del diseño del software: Esta fuente de vulnerabilidad nos presenta funcionalidades que son deseables en el software para aumentar la versatilidad de uso de las aplicaciones. Entre estas tenemos herramientas de depuración o debugging, conexiones remotas en puertos especiales, entre otras, las cuales ofrecen importante elementos a los programadores y usuarios, pero que generalmente abren posibilidades de ingresos no autorizados que comprometen la integridad de sistemas y socavan la confianza del usuario frente a la aplicación.

4. Invocaciones no controladas: Este hacemos referencia a un inadecuado manejo de errores o excepciones en las aplicaciones o exceso de privilegios de ejecución, los cuales se manifiestan en comportamientos inesperados del software que generalmente ofrecen mayores privilegios o accesos adicionales a la información del sistema. En este sentido, el control adecuado de interrupciones, mensajes de error y entorno de ejecución de los programas se vuelve crítico al ser éstos elementos los que definen la interacción del software con el usuario final y su relación con el entorno de ejecución.

5. Bypass a bajo nivel: Las implicaciones de esta fuente de vulnerabilidades hace referencia al aseguramiento que la aplicación debe tener al ser invocada o ejecutada en un ambiente computacional seguro. El programador debe fortalecer y asegurar una manera autorizada de ingreso a la aplicación por parte del usuario, estableciendo mecanismos de monitoreo y control que velen porque esto se cumpla. El sobrepasar un control de acceso a un objeto, bien sea a través de permisos deficientemente otorgados, artificios que interrumpan la normal ejecución (contraseñas de BIOS) o por la manipulación de la memoria de ejecución de la aplicación constituye un atentado directo contra la confiabilidad e integridad del software.

6. Fallas en la implementación de protocolos: Los elementos de seguridad mencionados en este apartado, hacen referencia a las medidas de seguridad en redes. Si bien, los protocolos utilizados para transmisión y control de datos, presentan múltiples fallas, éstas con frecuencia no son consideradas dentro del proceso de implementación de una aplicación. En este sentido, sabemos que las aplicaciones que se ejecutan sobre TCP/IP tienen inherentes las fallas de éste conjunto de protocolos, por tanto es menester del programador establecer junto con el encargado de la seguridad informática, analizar los posibles requerimientos de seguridad necesarios para que la aplicación funcione sobre un ambiente de red que brinde mayores niveles de seguridad y control de tráfico.

7. Fallas en software de base: Todas las aplicaciones finalmente se ejecutan bajo la supervisión de un software de base o sistema operacional. Generalmente cuando se desarrollan aplicaciones, las condiciones o aseguramiento del software de base, no es condición para la adecuada ejecución de aplicaciones. Nada ganamos con aplicar y efectuar un amplio espectro de pruebas y controles, cuando el ambiente de ejecución o el software base no ha pasado por una valoración y afinamiento necesario para asegurar un ambiente de ejecución estable y seguro. En este punto, se llama la atención tanto a proveedores como a programadores, donde el trabajo conjunto debe ser una constante para incrementar los niveles de seguridad y disminuir las vulnerabilidades frecuentes inherentes al arte y la ciencia de programar.

¿Pero que pueden hacer los programadores?

Primero que nada es recomendable aprender sobre ingenieria de software, no solo para la seguridad si no para el buen funcionamiento y/o optimizacion del codigo fuente.

Algunas reglas paa una programacion segura son:

1. Menor Privilegio: Este principio establece que un sujeto sólo debe dar a un objeto los privilegios que necesita para completar sus tareas asignadas.

2. Economía y simplificación de mecanismos de seguridad: Este principio establece que los mecanismos de seguridad que se establezcan deben ser tan sencillos como sea posible.

3. Configuraciones por defecto seguras: Este principio comenta que a menos que un sujeto haya otorgado acceso explícito a un objeto, éste no debería tenerlo. Es decir, todo lo que no está estrictamente permitido es prohibido.

4. Mediación completa: Este principio afirma que todos los accesos a un objeto(s) deben ser verificados para asegurarse de que cuentan con el permiso para hacerlo.

5. Diseño abierto: Este principio establece que la seguridad de un mecanismo no debería depender del secreto o confidencialidad de su diseño o implementación.

6. Privilegios condicionados: Este principio dice que se deben mantener los privilegios necesarios en diferentes momentos, en diferentes rutinas o programas. Es decir, los privilegios no deben ser estáticos para los programas o rutinas en el tiempo y en ejecución.

7. Menor mecanismo común: Este principio comenta que deben existir el menor número de recursos compartidos entre sujetos u objetos.

8. Aceptación psicológica: Este principio comenta que el mecanismo de seguridad que se establezca para un objeto no debe sugerir mayor dificultad a la que si el mecanismo no estuviese presente. En otras palabras, el mecanismo de seguridad deber ser fácil de usar.

UNIDAD V - CONSTRUCCION DE SISTEMAS EXPERTOS


Que tal bloggers ahora les presentare informacion de la 5a. unidad (construccion de sistemas expertos), espero les sea de ayuda...

5.1 Metodología de construcción

Al igual que para desarrollar un sistema de información convencional existen varias metodologías para desarrollar un sistema experto. Como ya sabemos el área de sistemas expertos es relativamente joven por lo cual no se dispone de una única metodología sino que cada autor propone una de acuerdo a su forma de desarrollo. Sin embargo existen algunas que han tenido éxito mas que otras lo cual ha llevado a su mayor difusión. En este post, solo se mencionaran algunas de las mas conocidas.
  • Metodología de Buchanan 
Este método puede esquematizarse en seis etapas:

Etapa 1: Familiarizarse con el Problema y el Dominio.

Abarca desde la lectura de libros o artículos, las entrevistas o charlas con las personas familiarizadas con el tema y la búsqueda de un experto que esté dispuesto a colaborar en la construcción del sistema; como así también la definición de cuales son la funciones o tareas más idóneas para ser realizadas por el sistema experto. Estas tareas son importantes para determinan que lenguaje y que sistema se usará.

Etapa 2: Delimitar el Sistema.

Se realizan entrevistas con el experto, con el objetivo de identificar y caracterizar el problema informalmente. El experto de campo y el ingeniero de conocimiento definen el alcance del sistema experto, es decir, que problemas va a resolver concretamente el sistema experto.

Etapa 3: Obtener la Estructura de Inferencia del Sistema Experto.

Con el problema adecuadamente definido el ingeniero de conocimiento empieza a determinar los principales conceptos del dominio que se requieren para realizar cada una de las tareas que va a resolver el sistema, tratando de entender que conceptos son relevantes e importantes solicitándole al experto que explique y justifique los razonamientos que utiliza para resolver los problemas. Esto es importante para la tarea de definición del sistema experto y para mantener una adecuada documentación del mismo, ya que es útil para la tarea de diseño, construcción y para posteriores modificaciones del sistema.

La estructura del conocimiento indica que tareas y términos está usando y la estrategia indica como y cuando el sistema experto debe establecerlas.

Etapa 4: Definir el Sistema Experto Prototipo.

El ingeniero de conocimiento debe formalizar el conocimiento obtenido del experto. Esta tarea implica definir que arquitectura permitirá una mejor organización del conocimiento. Es necesario elegir la organización, lenguaje y medio ambiente de programación adecuados para la aplicación particular.

Se definen los conceptos primitivos, con la forma de representación elegida. Este es el primer paso hacia la implementación del prototipo. 

Etapa 5: Depurar el Sistema Prototipo.

Se refina el sistema prototipo, depurado la base de conocimientos, refinando reglas, rediseñando la estructura del conocimiento, o reformulando conceptos básicos, con el objetivo de capturar información adicional que haya proporcionado el experto. También se consultan en esta etapa otros expertos para corroborar, controlar, ampliar y refinar el prototipo.

Etapa 6: Optimizar el Sistema Experto Prototipo.

Cuando el sistema prototipo ha crecido tanto que resulta difícil de manejar el ingeniero de conocimiento rediseña un sistema más eficiente. Este nuevo sistema deberá refinarse y extenderse a fin de completar así el desarrollo del sistema experto.
  • Metodología de Grover 
El Método de Grover es uno de los mas importantes para el diseño de una Base de conocimiento. Este método además de definir una serie de etapas, propone con énfasis una documentación de los procesos: los cuales reemplazan parcialmente al experto y  sirven de medio de comunicación y referencia entre los usuarios y los diseñadores. El desarrollo de un S.E. a traves de este metodo esta dividido por etapas:

Etapa 1: Definición del Dominio

El objetivo de esta etapa consiste en realizar una cuidadosa interpretación del problema y documentarla, elaborando un Manual de Definiciones del Dominio, el cual debe contener:
  • Una descripción general del problema
  • La bibliografía de referencia
  • Un glosario de términos y símbolos
  • La identificación del o los Expertos
Etapa 2: Formulación del Conocimiento Fundamental

Esta etapa tiene como objetivo examinar los escenarios ejemplo a partir de criterios de evaluación y reclasificarlos según:
  • los mas importantes y los mas insignificantes
  • los mas esperados
  • los mas arquetípicos - caracteristicos,representativos-
  • los mas comprensibles
Para obtener el Conocimiento Fundamental, una técnica conveniente es la simulación del proceso y la reclasificación. La simulación consiste en sugerirle al experto que resuelva un problema como lo haría habitualmente y que vaya construyendo verbalmente las reglas de razonamiento que utiliza.

La reclasificación consiste en analizar las reglas obtenidas y reclasificarlas según diferentes niveles para alcanzar el objetivo propuesto. El estudio final consiste en la definición computacional de las reglas, lo cual incluye:
  • Una descripción ontológica de las entidades del dominio, de los objetos relacionados y de las relaciones entre los objetos.
  • Una definición de las entradas y de los formatos
  • Una descripción del estado Inicial que incluya el conocimiento de base
  • Un conjunto de reglas de razonamiento
  • Una lista de metarreglas, estrategias humanas, que serán consideradas por  los diseñadores como posibles reglas de control.
Durante esta etapa de Formulacion del Conocimiento Fundamental, se pueden considerar distintos enfoques de entrevistas al experto, estas pueden ser:
  • Simulación por escenarios
  • Descomposición de Objetivos
  • Simulación de Procedimientos
  • Reclasificación Pura
  •  Metodología KADS 
 Es  una  metodología  para  la  construcción  de  sistemas  basados  en  el  conocimiento, desarrollada en  la  Universidad  de  Ámsterdam.

A lo largo del proceso de desarrollo de un Sistema Basado en el Conocimiento utilizando metodología KADS, se producen fases alternativas de análisis y síntesis. La salida de una fase es la entrada de la siguiente. Este proceso es similar al de un sistema de bloques en un sistema continuo. El proceso a seguir es el siguiente:

ANALISIS DE LA APLICACION A NIVEL GLOBAL: como resultado, se descompone el problema en 3 módulos:
  1. Módulo basado en el conocimiento
  2. Interfaz
  3. Resto de la aplicación
ADQUISICION DEL CONOCIMIENTO DEL EXPERTO : se construye un modelo en 4 capas:
  1. Aspectos estratégicos del conocimiento
  2. TG
  3. Modelación de inferencia ( relacion con 1)
  4. Conocimiento estático dependiente del dominio (redes, marcos, guiones, etc)
ANALISIS DE RESTRICCIONES: se obtiene un modelo de restricciones.

Estos tres pasos son de análisis en el dominio del observador.
  • Ingeniería del Conocimiento de Jhon Durkin
  El desarrollo de un sistema experto basandose en esta metodologia se lleva a cabo a traves de varias fases, a continuacion veremos la descricion de cada una de estas fases:

FASE  1: EVALUACIÓN

 1.1  Motivación para el Esfuerzo.
            1.2  Identificar problemas candidatos.
            1.3  Estudio de viabilidad.
            1.4  Análisis de Costo/Beneficio.
            1.5  Seleccionar el mejor proyecto.
            1.6  Escribir el proyecto propuesto.

FASE 2: ADQUISICIÓN DEL CONOCIMIENTO

2.1 Recolección del conocimiento.
2.2  Interpretación.
2.3 Análisis.
2.4 Diseño de métodos para recolectar conocimiento adicional.

FASE 3: DISEÑO

            3.1 Seleccionar Técnica de Representación del Conocimiento.
            3.2 Seleccionar Técnica de Control.
            3.3 Seleccionar Software de Desarrollo de Sistema Experto.
            3.4 Desarrollo de Prototipo.
            3.5 Desarrollo de Interfase.
            3.6 Desarrollo del Producto.

FASE 4: PRUEBAS

      4.1 Validación del Sistema.
            4.2 Evaluación de la Prueba/Evaluación.

FASE 5: DOCUMENTACIÓN

            5.1  Relación de temas que deben ser documentados.
            5.2 Organización de la documentación.

            5.3 Documentación Impresa.

            5.4 Documentación en hipertexto.
             5.5 Reporte Final

FASE 6: MANTENIMIENTO

6.1 Modificaciones probables del sistema.
6.2 Responsables de mantenimiento.
6.3 Interfaces de documentación del mantenimiento

UNIDAD 4 - REPRESENTACION DEL CONOCIMIENTO


Que tal bloggers en esta ocasion comenzaremos con la unidad IV de Sistemas expertos en donde desarrollare los temas correspondientes a la representacion del conocimiento en un S.E., por esta unica ocasion tambien presentare toda la unidad en un solo post, ya que no cuento con el temario de esta unidad, aun asi... espero les sea de mucha ayuda esta informacion.

Introduccion

El conocimiento es la comprensión adquirida, implica aprendizaje, concienciación y familiaridad con una o más materias; se compone de ideas, conceptos, hechos y figuras, teorías, procedimientos y relaciones entre ellos, y formas de aplicar los procedimientos a la resolución práctica de problemas.

El conocimiento que se usa en un S.E. es el conocimiento heurístico; este es el que ayuda a las personas o computadoras a aprender, es el uso de los conocimientos empíricos. Las reglas de pensamiento, los trucos,
los procedimientos o cualquier tipo de información que nos ayuda en la resolución de problemas.

Existen algunos sistemas para la representación del conocimiento. Entre los principales sistemas se tienen:
  1. Lógica Simbólica Formal:
  • Lógica proposicional.
  • Lógica de predicados.
  • Reglas de producción.
  1. Formas Estructuradas:
  • Redes asociativas.
  • Estructuras frame.
  • Representación orientada a objetos.
Lógica Proposicional.

La lógica utiliza una representación primitiva del lenguajey  permite representar y manipular aserciones sobre el mundo que nos rodea. La lógica proposicional permite el razonamiento a través de un mecanismo que primero evalúa sentencias simples y luego sentencias complejas, formadas mediante el uso de conectivos como (AND) y (OR).

Esta lógica permite la asignación de un valor verdadero o falso para la sentencia completa, pero no tiene la facilidad de analizar las palabras individuales que componen la sentencia.

Logica de predicados

La lógica de predicados está basada en la idea de que las sentencias expresan relaciones entre objetos, así como también cualidades y atributos de tales objetos. Los objetos pueden ser personas, objetos físicos, o conceptos. Tales cualidades, relaciones o atributos, se denominan predicados. Los objetos se conocen como argumentos o términos del predicado.

Al igual que las proposiciones, los predicados tienen un valor de veracidad, pero a diferencia de las proposiciones, su valor de veracidad, depende de sus términos. Es decir, un predicado puede ser verdadero para un conjunto de términos, pero falso para otro.

Reglas de produccion

La regla es la forma más común de representar el conocimiento, debido a su gran sencillez y a que es la formulación más inmediata del principio de causalidad. Una regla consta de un conjunto de acciones o efectos (una o más) que son ciertas cuando se cumplen un conjunto de condiciones o causas. La potencia de una regla está en función de la lógica que admita en las expresiones de las condiciones y de las
conclusiones.

La conclusión se suele referir a la creación de un nuevo hecho válido, o la incorporación de una nueva característica a un hecho, mientras que la acción suele referirse a la transformación de un hecho.

Redes asociativas

Las redes asociativas se caracterizan por representar el conocimiento en forma gráfica. Agrupan una porción de conocimiento en dos partes: objetos y relaciones entre objetos. Los objetos se denominan también nodos (elementos del conocimiento) y las relaciones entre nodos se denominan enlaces o arcos. Cada nodo y cada enlace en una red semántica, deben estar asociados con objetos descriptivos.

Estas redes son muy apropiadas para representar conocimiento de naturaleza jerárquica. Su concepción se basa en la asociación de conocimientos que realiza la memoria humana.

Las principales aplicaciones de las redes asociativas son:
  • comprensión de lenguaje natural
  • bases de datos deductivas
  • visión por computador
  • sistemas de aprendizaje
Estructuras Frame

Un frame organiza el conocimiento en objetos y eventos que resultan apropiados para situaciones específicas. La gente utiliza grandes plantillas para codificar el conocimiento de experiencias pasadas, o conocimiento acerca de cosas que se encuentran comúnmente, para analizar y explicar una situación nueva en su cotidiana actividad cognoscitiva.

Una plantilla representa un objeto o situación describiendo la colección de atributos que posee. Cada plantilla está formada por un nombre y por una serie de campos de información o ranuras. Cada ranura puede contener uno o más enlaces y cada enlace tiene un valor asociado.

Representación orientada a objetos

Los objetos son similares a las plantillas, ambos sirven para agrupar conocimiento asociado, soportan herencia, abstracción y el concepto de procedimientos agregados. La diferencia radica en lo siguiente:
  1. En las plantillas, a los programas y a los datos se los trata como dos entidades relacionadas separadas. En cambio en los objetos se crea una fuerte unidad entre los procedimientos (métodos) y los datos.
  1. Los demons de las plantillas sirven sólo para procesar valores para las diversas ranuras o para mantener la integridad de la base de conocimientos cada vez que una acción de alguna plantilla, afecta a otra. En cambio, los métodos utilizados por los objetos son más universales ya que proporcionan cualquier tipo general de computación requerida y además soportan encapsulamiento y polimorfismo.
Un objeto es definido como una colección de información que representa una entidad del mundo real y una descripción de cómo debe ser manipulada esta información, esto es, los métodos. 

Es decir, un objeto tiene un nombre, una caracterización de clase, varios atributos distintivos y un conjunto de operaciones. La relación entre los objetos viene definida por los mensajes. Cuando un objeto recibe un mensaje válido, responde con una acción apropiada, retornando un resultado.

3.10 Arquitecturas

Sistemas basados en conocimiento (SBC-KBS)

Sistemas de software capaz de soportar la representación explícita del conocimiento de un dominio específico y de explotarlo a través de mecanismos apropiados de razonamiento para proporcionar un comportamiento de alto nivel en la resolución de problemas.

SE basados en reglas de producción

Estos consisten de un conjunto de reglas de la forma (SI – ENTONCES), partiendo de un estado inicial, mediante las acciones u operaciones posibles se llega a un estado final.

Las reglas expresan las transformaciones que pueden efectuarse sobre el estado actual de resolución, inicialmente sobre el estado inicial y a medida que realizamos acciones sobre los nuevos estados. Hay dos tipos de estas arquitecturas:

Forward chaining: Es denominado también data-driven y bottom-up (manejado por datos y de abajo hacia arriba). Parte de los datos iniciales, aplica las reglas al estado inicial y a los sucesores de éste hasta llegar al estado final.

Backward chaining: Es denominado también goal-driven y top-down (manejado por el objetivo y de arriba hacia abajo). Se parte del objetivo (una hipótesis que se quiere probar) y se busca que reglas permiten esta hipótesis.

3.9 Aprendizaje







El motor de inferencia de un sistema experto realiza el aprendizaje y obtiene conocimiento nuevo a partir del conocimiento existente por medio de tres tipos de inferencia: 
  • Deducción: Es donde el nuevo conocimiento es cierto si, el punto de partida de la inferencia es verdadera.
  • Inducción: Es el mecanismo de aprendizaje automático. Presenta el problema de dudosa fiabilidad del conocimiento inferido. Compara correlación con la causalidad.
  • Abducción: Es un conjunto de conocimiento del que se puede obtener un conjunto de explicaciones posibles que, usando la deducción, harían coherente el conocimiento de partida.

3.8 Encadenamiento mixto


En el encadenamiento mixto se combinan los métodos guiados por datos con los guiados por objetivos.
La interfaz de usuario permite que el usuario pueda describir el problema al Sistema Experto. Interpreta sus preguntas, los comandos y la información ofrecida. A la inversa, formula la información generada por el sistema incluyendo respuestas a las preguntas, explicaciones y justificaciones. Es decir, posibilita que la respuesta proporcionada por el sistema sea inteligible para el interesado. También puede solicitar más información al SE si le es necesaria. En algunos sistemas se utilizan técnicas de tratamiento del lenguaje natural para mejorar la comunicación entre el usuario y el SE.

La mayoría de los sistemas expertos contienen un módulo de explicación, diseñado para aclarar al usuario la línea de razonamiento seguida en el proceso de inferencia. Si el usuario pregunta al sistema cómo ha alcanzado una conclusión, éste le presentará la secuencia completa de reglas usada. Esta posibilidad de explicación es especialmente valiosa cuando se tiene la necesidad de tomar decisiones importantes amparándose en el consejo del SE. Además, de esta forma, y con el tiempo suficiente, los usuarios pueden convertirse en especialistas en la materia, al asimilar el proceso de razonamiento seguido por el sistema. El subsistema de explicación también puede usarse para depurar el SE durante su desarrollo.

El módulo de adquisición del conocimiento permite que se puedan añadir, eliminar o modificar elementos de conocimiento (en la mayoría de los casos reglas) en el SE. 

Si el entorno es dinámico, entonces este componente es muy necesario, puesto que el sistema funcionará correctamente sólo si se mantiene actualizado su conocimiento. El módulo de adquisición permite efectuar ese mantenimiento, anotando en la base de conocimientos los cambios que se producen.


3.7 Encadenamiento hacia atrás



El encadenamiento regresivo se le suele llamar guiado por objetivos, ya que, el sistema comenzará por el objetivo (parte acción de las reglas) y operará retrocediendo para ver cómo se deduce ese objetivo partiendo de los datos. 

Esto se produce directamente o a través de conclusiones intermedias o subobjetivos. Lo que se intenta es probar una hipótesis a partir de los hechos contenidos en la base de datos y de los obtenidos en el proceso de inferencia.

Este enfoque tiene la ventaja de que el sistema va a considerar únicamente las reglas que interesan al problema en cuestión. El usuario comenzará declarando una expresión y el objetivo del sistema será establecer la verdad de esa expresión.


Para ello se pueden seguir los siguientes pasos:
  • Obtener las reglas relevantes, buscando la expresión en la parte acción (éstas serán las que puedan establecer la verdad de la expresion)
  • Si no se encuentran reglas para aplicar, entonces no se tienen datos suficientes para resolver el problema; se termina sin éxito o se piden al usuario más datos.
  • Si hay reglas para aplicar, se elige una y se verifica su parte de condición con respecto a la base de datos.
  • Si la condicion es verdadera en la base de datos, se establece la veracidad de la expresión y se resuelve el problema.
  • Si la condicion es falsa, se descarta la regla en curso y se selecciona otra regla.
  • Si la condicion es desconocida en la base de datos (es decir, no es verdadera ni falsa), se le considera como sub-objetivo y se vuelve al principio de la evaluacion (la condicion será ahora la expresión).

3.6 Encadenamiento hacia adelante



En el encadenamiento hacia adelante se comienza con los hechos disponibles en la base de datos, y se buscan reglas que satisfagan esos datos, es decir, reglas que verifiquen la parte SI. 

Normalmente, se siguen siguientes pasos:
  • Evaluar las condiciones de todas las reglas respecto a la base de datos, identificando el conjunto de reglas que se pueden aplicar.
  • Si no se puede aplicar ninguna regla, se termina sin éxito; en caso contrario se elige cualquiera de las reglas aplicables y se ejecuta su parte acción (esto último genera nuevos hechos que se añaden a la base de datos).
  • Si se llega al objetivo, se ha resuelto el problema; en caso contrario, se vuelve al principio de la evaluacion.
A este encadenamiento se le llama también guiado por datos, porque es el estado de la base de datos el que identifica las reglas que se pueden aplicar. Cuando se utiliza este método, el usuario comenzará introduciendo datos del problema en la base de datos del sistema.