Un clasificador deductivo es un tipo de motor de inferencia de inteligencia artificial . Toma como entrada un conjunto de declaraciones en un lenguaje de marco sobre un dominio como la investigación médica o la biología molecular. Por ejemplo, los nombres de clases, subclases , propiedades y restricciones sobre los valores permitidos. El clasificador determina si las diversas declaraciones son lógicamente consistentes y, si no, resaltará las declaraciones inconsistentes específicas y las inconsistencias entre ellas. Si las declaraciones son consistentes, el clasificador puede entonces afirmar información adicional en función de la entrada. Por ejemplo, puede agregar información sobre las clases existentes, crear clases adicionales, etc. Esto difiere de los motores de inferencia tradicionales que se activan a partir de condiciones IF-THEN en las reglas. Los clasificadores también son similares a los demostradores de teoremas en que toman como entrada y producen salida a través de la lógica de primer orden . Los clasificadores se originaron con los lenguajes de marco KL-ONE . Son cada vez más importantes ahora que forman parte de la tecnología habilitadora de la Web semántica . Los clasificadores modernos aprovechan el lenguaje de ontología web . Los modelos que analizan y generan se denominan ontologías . [1]
Un problema clásico en la representación del conocimiento para la inteligencia artificial es el equilibrio entre el poder expresivo y la eficiencia computacional del sistema de representación del conocimiento. La forma más poderosa de representación del conocimiento es la lógica de primer orden. Sin embargo, no es posible implementar una representación del conocimiento que proporcione el poder expresivo completo de la lógica de primer orden. Tal representación incluirá la capacidad de representar conceptos como el conjunto de todos los números enteros que son imposibles de iterar. Implementar una afirmación cuantificada para un conjunto infinito por definición da como resultado un programa indecidible y sin terminación. Sin embargo, el problema es más profundo que no poder implementar conjuntos infinitos. Como demostró Levesque, cuanto más se acerca un mecanismo de representación del conocimiento a la lógica de primer orden, más probable es que dé como resultado expresiones que requieren recursos infinitos o inaceptablemente grandes para su cálculo. [2]
Como resultado de esta disyuntiva, una gran parte del trabajo inicial sobre la representación del conocimiento para la inteligencia artificial implicó experimentar con varios compromisos que proporcionan un subconjunto de la lógica de primer orden con velocidades de cálculo aceptables. Uno de los primeros y más exitosos compromisos fue desarrollar lenguajes basados predominantemente en modus ponens , es decir, reglas IF-THEN. Los sistemas basados en reglas fueron el mecanismo de representación del conocimiento predominante para prácticamente todos los primeros sistemas expertos . Los sistemas basados en reglas proporcionaban una eficiencia computacional aceptable al mismo tiempo que proporcionaban una representación del conocimiento potente. Además, las reglas eran muy intuitivas para los trabajadores del conocimiento. De hecho, uno de los puntos de datos que alentó a los investigadores a desarrollar la representación del conocimiento basada en reglas fue la investigación psicológica que mostraba que los humanos a menudo representaban la lógica compleja a través de reglas. [3]
Sin embargo, después del éxito inicial de los sistemas basados en reglas, surgió un uso más generalizado de lenguajes de marcos en lugar de reglas o más a menudo combinados con ellas. Los marcos proporcionaban una forma más natural de representar ciertos tipos de conceptos, especialmente conceptos en jerarquías de subpartes o subclases. Esto condujo al desarrollo de un nuevo tipo de motor de inferencia conocido como clasificador. Un clasificador podía analizar una jerarquía de clases (también conocida como ontología ) y determinar si era válida. Si la jerarquía no era válida, el clasificador resaltaría las declaraciones inconsistentes. Para que un lenguaje utilizara un clasificador, requería una base formal. El primer lenguaje que demostró con éxito un clasificador fue la familia de lenguajes KL-ONE. El lenguaje LOOM de ISI estuvo muy influenciado por KL-ONE. LOOM también estuvo influenciado por la creciente popularidad de las herramientas y entornos orientados a objetos. Loom proporcionó una verdadera capacidad orientada a objetos (por ejemplo, paso de mensajes) además de las capacidades del lenguaje de marcos. Los clasificadores juegan un papel importante en la visión de la próxima generación de Internet conocida como la Web Semántica. El lenguaje de ontología web proporciona un formalismo que puede validarse y razonarse a través de clasificadores como Hermit y Fact++. [4]
Las primeras versiones de los clasificadores eran probadores de teoremas lógicos . El primer clasificador que funcionó con un lenguaje de marco fue el clasificador KL-ONE . [5] [6] Un sistema posterior creado sobre Common Lisp fue LOOM del Information Sciences Institute. LOOM proporcionó capacidades verdaderamente orientadas a objetos aprovechando el Common Lisp Object System, junto con un lenguaje de marco. [7] En la Web Semántica, la herramienta Protege de Stanford proporciona clasificadores (también conocidos como razonadores) como parte del entorno predeterminado. [8]
La buena noticia de reducir el servicio de KR a la demostración de teoremas es que ahora tenemos una noción muy clara y muy específica de lo que el sistema de KR debería hacer; la mala noticia es que también está claro que los servicios no se pueden proporcionar... decidir si una oración en FOL es o no un teorema... es irresoluble.