stringtranslate.com

Máquina de inferencia

En el campo de la inteligencia artificial , un motor de inferencia es un componente de software de un sistema inteligente que aplica reglas lógicas a la base de conocimientos para deducir nueva información. Los primeros motores de inferencia fueron componentes de sistemas expertos . El sistema experto típico constaba de una base de conocimientos y un motor de inferencia. La base de conocimientos almacenó datos sobre el mundo. El motor de inferencia aplicó reglas lógicas a la base de conocimientos y dedujo nuevos conocimientos. Este proceso se repetiría a medida que cada hecho nuevo en la base de conocimientos podría desencadenar reglas adicionales en el motor de inferencia. Los motores de inferencia funcionan principalmente en uno de dos modos, ya sea reglas especiales o hechos: encadenamiento hacia adelante y encadenamiento hacia atrás . El encadenamiento directo comienza con los hechos conocidos y afirma hechos nuevos. El encadenamiento hacia atrás comienza con los objetivos y trabaja hacia atrás para determinar qué hechos deben afirmarse para que se puedan alcanzar los objetivos. [1]

Además, el concepto de "inferencia" se ha ampliado para incluir el proceso mediante el cual las redes neuronales entrenadas generan predicciones o decisiones. En este contexto, un "motor de inferencia" podría referirse a la parte específica del sistema, o incluso al hardware, que ejecuta estas operaciones. Este tipo de inferencia juega un papel crucial en diversas aplicaciones, incluidas (entre otras) el reconocimiento de imágenes , el procesamiento del lenguaje natural y los vehículos autónomos . La fase de inferencia en estas aplicaciones suele caracterizarse por un gran volumen de entradas de datos y requisitos de procesamiento en tiempo real.

Arquitectura

La lógica que utiliza un motor de inferencia suele representarse como reglas SI-ENTONCES. El formato general de dichas reglas es IF <expresión lógica> ENTONCES <expresión lógica>. Antes del desarrollo de sistemas expertos y motores de inferencia, los investigadores de inteligencia artificial se centraron en entornos de demostración de teoremas más potentes que ofrecían implementaciones mucho más completas de la lógica de primer orden . Por ejemplo, enunciados generales que incluían cuantificación universal (para todo X algún enunciado es verdadero) y cuantificación existencial (existe algo X tal que algún enunciado es verdadero). Lo que los investigadores descubrieron es que el poder de estos entornos de demostración de teoremas también era su desventaja. En 1965, era demasiado fácil crear expresiones lógicas que pudieran tardar un tiempo indeterminado o incluso infinito en terminar. Por ejemplo, en la cuantificación universal es común hacer afirmaciones sobre un conjunto infinito, como el conjunto de todos los números naturales. Tales declaraciones son perfectamente razonables e incluso necesarias en demostraciones matemáticas, pero cuando se incluyen en un demostrador de teoremas automatizado que se ejecuta en una computadora, pueden hacer que la computadora caiga en un bucle infinito. Centrarse en declaraciones SI-ENTONCES (lo que los lógicos llaman modus ponens ) aún les dio a los desarrolladores un mecanismo general muy poderoso para representar la lógica, pero que podría usarse de manera eficiente con recursos computacionales. Es más, hay algunas investigaciones psicológicas que indican que los humanos también tienden a favorecer las representaciones SI-ENTONCES cuando almacenan conocimientos complejos. [2]

Un ejemplo sencillo de modus ponens que se utiliza a menudo en los libros de introducción a la lógica es "Si eres humano, entonces eres mortal". Esto se puede representar en pseudocódigo como:

Regla 1: Humano(x) => Mortal(x)

Un ejemplo trivial de cómo se usaría esta regla en un motor de inferencia es el siguiente. En el encadenamiento directo , el motor de inferencia encontraría cualquier hecho en la base de conocimiento que coincidiera con Humano(x) y por cada hecho que encontrara agregaría la nueva información Mortal(x) a la base de conocimiento. Entonces, si encontrara un objeto llamado Sócrates que fuera humano, deduciría que Sócrates era mortal. En el encadenamiento hacia atrás , al sistema se le daría un objetivo, por ejemplo, responder a la pregunta: ¿Sócrates es mortal? Buscaría en la base de conocimientos y determinaría si Sócrates era humano y, de ser así, afirmaría que también es mortal. Sin embargo, en el encadenamiento hacia atrás una técnica común era integrar el motor de inferencia con una interfaz de usuario. De esa manera, en lugar de simplemente automatizarse, el sistema ahora podría ser interactivo. En este ejemplo trivial, si al sistema se le diera el objetivo de responder la pregunta si Sócrates era mortal y aún no sabía si era humano, generaría una ventana para preguntarle al usuario "¿Es Sócrates humano?" y luego usaría esa información en consecuencia.

Esta innovación de integrar el motor de inferencia con una interfaz de usuario condujo al segundo avance temprano de los sistemas expertos: las capacidades de explicación. La representación explícita del conocimiento como reglas en lugar de código hizo posible generar explicaciones para los usuarios: explicaciones en tiempo real y a posteriori. Entonces, si el sistema preguntara al usuario "¿Es Sócrates humano?", el usuario podría preguntarse por qué le estaban haciendo esa pregunta y el sistema usaría la cadena de reglas para explicar por qué estaba tratando de determinar ese conocimiento: es decir , necesita determinar si Sócrates es mortal y para ello necesita determinar si es humano. Al principio, estas explicaciones no eran muy diferentes de la información de depuración estándar con la que se enfrentan los desarrolladores al depurar cualquier sistema. Sin embargo, un área activa de investigación fue la utilización de tecnología del lenguaje natural para formular, comprender y generar preguntas y explicaciones utilizando lenguajes naturales en lugar de formalismos informáticos. [3]

Un motor de inferencia recorre tres pasos secuenciales: hacer coincidir reglas , seleccionar reglas y ejecutar reglas . La ejecución de las reglas a menudo resultará en la adición de nuevos hechos u objetivos a la base de conocimientos, lo que provocará que el ciclo se repita. Este ciclo continúa hasta que no se puedan igualar nuevas reglas.

En el primer paso, coincidir con reglas , el motor de inferencia encuentra todas las reglas activadas por el contenido actual de la base de conocimientos. En el encadenamiento directo, el motor busca reglas en las que el antecedente (lado izquierdo) coincida con algún hecho en la base de conocimientos. En el encadenamiento hacia atrás, el motor busca antecedentes que puedan satisfacer uno de los objetivos actuales.

En el segundo paso, seleccionar reglas , el motor de inferencia prioriza las distintas reglas que coincidieron para determinar el orden de ejecución. En el paso final, ejecutar reglas , el motor ejecuta cada regla coincidente en el orden determinado en el paso dos y luego regresa al paso uno nuevamente. El ciclo continúa hasta que no se cumplan nuevas reglas. [4]

Implementaciones

Los primeros motores de inferencia se centraban principalmente en el encadenamiento directo. Estos sistemas generalmente se implementaban en el lenguaje de programación Lisp . Lisp fue una plataforma frecuente para las primeras investigaciones de IA debido a su gran capacidad para realizar manipulación simbólica. Además, como lenguaje interpretado ofrecía entornos de desarrollo productivo apropiados para depurar programas complejos. Una consecuencia necesaria de estos beneficios fue que los programas Lisp tendían a ser más lentos y menos robustos que los lenguajes compilados de la época , como C. Un enfoque común en aquellos primeros días era tomar una aplicación de sistema experto y reempaquetar el motor de inferencia utilizado para ese sistema como una herramienta reutilizable que otros investigadores podrían utilizar para el desarrollo de otros sistemas expertos. Por ejemplo, MYCIN fue uno de los primeros sistemas expertos para diagnóstico médico y EMYCIN fue un motor de inferencia extrapolado de MYCIN y puesto a disposición de otros investigadores. [1]

A medida que los sistemas expertos pasaron de ser prototipos de investigación a sistemas implementados, se prestó más atención a cuestiones como la velocidad y la robustez. Uno de los primeros y más populares motores de encadenamiento directo fue OPS5 , que utilizaba el algoritmo Rete para optimizar la eficiencia de la activación de reglas. Otra tecnología muy popular que se desarrolló fue el lenguaje de programación lógica Prolog . Prolog se centró principalmente en el encadenamiento hacia atrás y también presentó varias versiones comerciales y optimizaciones para lograr eficiencia y solidez. [5]

A medida que los sistemas expertos despertaron un interés significativo en el mundo empresarial, varias empresas, muchas de ellas iniciadas o guiadas por destacados investigadores de IA, crearon versiones productivas de motores de inferencia. Por ejemplo, Intellicorp fue dirigida inicialmente por Edward Feigenbaum . Estos productos de motores de inferencia también se desarrollaron al principio en Lisp. Sin embargo, la demanda de plataformas más asequibles y comercialmente viables acabó haciendo muy populares las plataformas de ordenadores personales .

Implementaciones de código abierto

ClipsRules y RefPerSys (inspirados en CAIA [6] y el trabajo de Jacques Pitrat ). El analizador de código fuente estático Frama-C también utiliza algunas técnicas de motor de inferencia.

Ver también

Referencias

  1. ^ ab Hayes-Roth, Federico; Donald Waterman; Douglas Lenat (1983). Construcción de sistemas expertos. Addison-Wesley. ISBN 0-201-10686-8.
  2. ^ Feigenbaum, Eduardo; Avron Barr (1 de septiembre de 1986). El manual de inteligencia artificial, volumen I. Addison-Wesley. pag. 195.ISBN 0201118114.
  3. ^ Barzilayt, Regina; Daryl McCullough; Owen Rambow; Jonathan DeCristofaro; Tanya Korelsky; Benoît Lavoie. "Un nuevo enfoque para las explicaciones de sistemas expertos" (PDF) . Informe del laboratorio de Roma de la USAF . Archivado desde el original el 5 de julio de 2016.
  4. ^ Griffin, NL, Un motor de inferencia basado en reglas que es óptimo e implementable con VLSI , Universidad de Kentucky.
  5. ^ Sterling, León; Ehud Shapiro (1986). El arte del prólogo. Cambridge, MA: MIT. ISBN 0-262-19250-0.
  6. ^ Pitrat, Jacques (2009). Seres artificiales, la conciencia de una máquina consciente . Wiley. ISBN 978-1848211018.