Articulo de referencia

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

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 fueron componentes de sistemas expertos . El sistema experto típico constaba de 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 nuevo conocimiento. Este proceso se repetía, ya que cada nuevo hecho en la base de conocimiento podía activar reglas adicionales en el motor de inferencia. Los motores de inferencia funcionan principalmente en uno de dos modos: con reglas especiales o con 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 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 toman 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 desempeña un papel crucial en diversas aplicaciones, como 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 datos de entrada y requisitos de procesamiento en tiempo real.

Arquitectura

La lógica que utiliza un motor de inferencia se representa típicamente mediante reglas SI-ENTONCES. El formato general de dichas reglas es SI <expresión lógica> ENTONCES <expresión lógica> . Antes del desarrollo de los sistemas expertos y los 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 algún X tal que algún enunciado es verdadero). Lo que los investigadores descubrieron es que la potencia de estos entornos de demostración de teoremas también era su desventaja. En 1965, era demasiado fácil crear expresiones lógicas que podían tardar un tiempo indeterminado o incluso infinito en terminar. Por ejemplo, en la cuantificación universal es común hacer enunciados sobre un conjunto infinito, como el conjunto de todos los números naturales. Dichos 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 un ordenador, pueden provocar que el ordenador caiga en un bucle infinito. Centrarse en las sentencias IF-THEN (lo que los lógicos llaman modus ponens ) seguía proporcionando a los desarrolladores un mecanismo general muy potente para representar la lógica, pero que podía utilizarse de forma eficiente con los recursos computacionales. Es más, algunas investigaciones psicológicas indican que los humanos también tienden a preferir las representaciones IF-THEN al almacenar conocimiento complejo. [ 2 ]

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

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

Un ejemplo sencillo 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 buscaría en la base de conocimiento cualquier hecho que coincidiera con Humano(x) y, por cada hecho encontrado, añadiría la nueva información Mortal(x) a la base de conocimiento. Así, 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 ¿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 esta forma, en lugar de ser simplemente automatizado, el sistema podría ser interactivo. En este ejemplo sencillo, si al sistema se le diera el objetivo de responder a la pregunta de si Sócrates era mortal y aún no supiera si era humano, generaría una ventana para preguntar 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 inicial de los sistemas expertos: las capacidades de explicación. La representación explícita del conocimiento como reglas en lugar de código permitió generar explicaciones para los usuarios, tanto en tiempo real como a posteriori. Así, si el sistema preguntaba al usuario "¿Es Sócrates humano?", este podría preguntarse por qué se le hacía esa pregunta, y el sistema utilizaría la cadena de reglas para explicar por qué estaba intentando determinar ese dato: 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 trabajan los desarrolladores al depurar cualquier sistema. Sin embargo, un área de investigación activa se centraba en 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 sigue un ciclo de tres pasos secuenciales: coincidencia de reglas , selección de reglas y ejecución de reglas . La ejecución de las reglas suele resultar en la adición de nuevos hechos u objetivos a la base de conocimiento, lo que activa la repetición del ciclo. Este ciclo continúa hasta que no se puedan encontrar más reglas coincidentes.

En el primer paso, al buscar 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 donde 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 coincidentes 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 al paso uno. El ciclo continúa hasta que no se encuentran nuevas reglas coincidentes. [ 4 ]

Implementaciones

Los primeros motores de inferencia se centraban principalmente en el encadenamiento hacia adelante. Estos sistemas solían implementarse en el lenguaje de programación Lisp . Lisp era una plataforma frecuente en las primeras investigaciones de IA debido a su gran capacidad para la manipulación simbólica. Además, como lenguaje interpretado, ofrecía entornos de desarrollo productivos adecuados para depurar programas complejos. Una consecuencia necesaria de estas ventajas era 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 tiempos consistía en 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 un sistema experto inicial 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 prototipos de investigación a sistemas implementados, se prestó mayor atención a aspectos 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 contó con varias versiones comerciales y optimizaciones para la eficiencia y la robustez. [ 5 ]

A medida que los sistemas expertos despertaban un gran interés en el mundo empresarial, diversas empresas, muchas de ellas fundadas o dirigidas por destacados investigadores de IA, crearon versiones comerciales de motores de inferencia. Por ejemplo, Intellicorp fue inicialmente dirigida por Edward Feigenbaum . Estos motores de inferencia también se desarrollaron a menudo en Lisp en un principio. Sin embargo, la demanda de plataformas más asequibles y comercialmente viables acabó popularizando 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.

Véase también

Referencias

  1. 1 2 Hayes-Roth, Frederick; Donald Waterman; Douglas Lenat (1983). Building Expert Systems . Addison-Wesley. ISBN 0-201-10686-8.
  2. Feigenbaum, Edward; Avron Barr (1 de septiembre de 1986). Manual de Inteligencia Artificial, Volumen I. Addison-Wesley. pág. 195. ISBN  0201118114.
  3. Barzilayt, Regina; McCullough, Daryl; Rambow, Owen; DeCristofaro, Jonathan; Korelsky, Tanya; Lavoie, Benoit. "Un nuevo enfoque para las explicaciones de sistemas expertos". Informe del Laboratorio de la USAF en Roma . DTIC ADA457707 .
  4. Griffin, NL; Lewis, FD (1989). "Un motor de inferencia basado en reglas que es óptimo e implementable en VLSI". [ Actas de 1989 ] Taller Internacional IEEE sobre Herramientas para la Inteligencia Artificial . págs. 246–251 . Bibcode : 1989tai..conf...32G . doi : 10.1109/TAI.1989.65327 . ISBN  0-8186-1984-8.
  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.