stringtranslate.com

Motor 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 conocimiento para deducir nueva información. Los primeros motores de inferencia eran componentes de sistemas expertos . El sistema experto típico consistía en una base de conocimiento y un motor de inferencia. La base de conocimiento almacenaba hechos sobre el mundo. El motor de inferencia aplicaba reglas lógicas a la base de conocimiento y deducía nuevos conocimientos. Este proceso se iteraría ya que cada nuevo hecho en la base de conocimiento podría activar reglas adicionales en el motor de inferencia. Los motores de inferencia funcionan principalmente en uno de dos modos, ya sea regla especial o hechos: encadenamiento hacia adelante y encadenamiento hacia atrás . El encadenamiento hacia adelante comienza con los hechos conocidos y afirma nuevos hechos. El encadenamiento hacia atrás comienza con los objetivos y trabaja hacia atrás para determinar qué hechos deben afirmarse para que se puedan lograr los objetivos. [1]

Además, el concepto de "inferencia" se ha ampliado para incluir el proceso a través del 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 varias aplicaciones, incluidas (pero no limitadas a) el reconocimiento de imágenes , el procesamiento del lenguaje natural y los vehículos autónomos . La fase de inferencia en estas aplicaciones se caracteriza típicamente por un alto volumen de entradas de datos y requisitos de procesamiento en tiempo real.

Arquitectura

La lógica que utiliza un motor de inferencia se representa típicamente como reglas IF-THEN. El formato general de tales reglas es IF <expresión lógica> THEN <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 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 algún 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 inconveniente. En 1965, era demasiado fácil crear expresiones lógicas que pudieran tardar un tiempo indeterminado o incluso infinito en terminar. Por ejemplo, es común en la cuantificación universal hacer enunciados sobre un conjunto infinito como el conjunto de todos los números naturales. Tales enunciados son perfectamente razonables e incluso necesarios en las 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 las declaraciones IF-THEN (lo que los lógicos llaman modus ponens ) todavía proporcionó a los desarrolladores un mecanismo general muy poderoso para representar la lógica, pero que podí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 IF-THEN al almacenar conocimiento complejo. [2]

Un ejemplo sencillo de modus ponens que se suele utilizar en libros introductorios de 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 hacia adelante , 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 , se le daría un objetivo al sistema, por ejemplo, responder a la pregunta ¿es Sócrates mortal? Buscaría en la base de conocimiento 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 estar automatizado, el sistema ahora podría ser interactivo. En este ejemplo trivial, si se le diera al sistema el objetivo de responder a la pregunta si Sócrates era mortal y aún no supiera 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: tanto explicaciones en tiempo real como a posteriori. De modo que si el sistema le preguntaba al usuario "¿Sócrates es humano?", el usuario podría preguntarse por qué se le estaba haciendo esa pregunta y el sistema usaría la cadena de reglas para explicar por qué estaba tratando de averiguar ese fragmento de conocimiento: es decir, necesita determinar si Sócrates es mortal y para hacer eso 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 los desarrolladores tratan cuando depuran cualquier sistema. Sin embargo, un área activa de investigación fue la utilización de la 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 pasa por tres pasos secuenciales: hacer coincidir reglas , seleccionar reglas y ejecutar reglas . La ejecución de las reglas suele dar como resultado que se agreguen nuevos hechos u objetivos a la base de conocimiento, lo que activará la repetición del ciclo. Este ciclo continúa hasta que no se puedan hacer coincidir nuevas reglas.

En el primer paso, las reglas de coincidencia , el motor de inferencia encuentra todas las reglas que se activan con el contenido actual de la base de conocimiento. En el encadenamiento hacia adelante, el motor busca reglas en las que el antecedente (lado izquierdo) coincida con algún hecho de la base de conocimiento. 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 vuelve a iterar al paso uno. El ciclo continúa hasta que no se coincidan nuevas reglas. [4]

Implementaciones

Los primeros motores de inferencia se centraban principalmente en el encadenamiento hacia adelante. Estos sistemas se implementaban normalmente en el lenguaje de programación Lisp . Lisp era 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 productivos adecuados 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 estos 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 pudieran usar para el desarrollo de otros sistemas expertos. Por ejemplo, MYCIN fue uno de los primeros sistemas expertos para el 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 puso más énfasis en cuestiones como la velocidad y la robustez. Uno de los primeros y más populares motores de encadenamiento hacia adelante fue OPS5 , que utilizaba el algoritmo Rete para optimizar la eficiencia de la ejecució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 la eficiencia y la robustez. [5]

A medida que los sistemas expertos despertaron un interés significativo en el mundo empresarial, varias empresas, muchas de ellas iniciadas o dirigidas por destacados investigadores de IA, crearon versiones en forma de producto de motores de inferencia. Por ejemplo, Intellicorp fue dirigida inicialmente por Edward Feigenbaum . Estos productos de motores de inferencia también se desarrollaron en Lisp al principio. Sin embargo, las demandas de plataformas más asequibles y comercialmente viables finalmente hicieron que las plataformas de computadoras personales fueran muy populares.

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.

Véase también

Referencias

  1. ^ de Hayes-Roth, Frederick; Donald Waterman; Douglas Lenat (1983). Construcción de sistemas expertos. Addison-Wesley. ISBN 0-201-10686-8.
  2. ^ Feigenbaum, Edward; Avron Barr (1 de septiembre de 1986). El manual de inteligencia artificial, volumen I. Addison-Wesley. pág. 195. ISBN 0201118114.
  3. ^ Barzilayt, Regina; Daryl McCullough; Owen Rambow; Jonathan DeCristofaro; Tanya Korelsky; Benoit Lavoie. "Un nuevo enfoque para las explicaciones de los sistemas expertos" (PDF) . Informe del laboratorio de la USAF en Roma . 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 mediante VLSI , Universidad de Kentucky.
  5. ^ Sterling, Leon; Ehud Shapiro (1986). El arte de Prolog. 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.