Un sistema basado en conocimiento ( KBS , por sus siglas en inglés) es un programa informático que razona y utiliza una base de conocimiento para resolver problemas complejos . Los sistemas basados en conocimiento fueron el foco de atención de los primeros investigadores de inteligencia artificial en la década de 1980. El término puede referirse a una amplia gama de sistemas. Sin embargo, todos los sistemas basados en conocimiento tienen dos componentes definitorios: un intento de representar el conocimiento de manera explícita, llamado base de conocimiento , y un sistema de razonamiento que les permite derivar nuevos conocimientos, conocido como motor de inferencia .
La base de conocimiento contiene hechos y reglas específicos de un dominio [1] sobre un dominio problemático (en lugar de conocimiento implícitamente incorporado en un código procedimental, como en un programa informático convencional). Además, el conocimiento puede estructurarse por medio de una ontología de subsunción , marcos , gráficos conceptuales o afirmaciones lógicas. [2]
El motor de inferencia utiliza métodos de razonamiento de propósito general para inferir nuevos conocimientos y resolver problemas en el dominio del problema. Lo más común es que emplee encadenamiento hacia adelante o encadenamiento hacia atrás . Otros enfoques incluyen el uso de demostración automatizada de teoremas , programación lógica , sistemas de pizarra y sistemas de reescritura de términos como las Reglas de manejo de restricciones (CHR). Estos enfoques más formales se tratan en detalle en el artículo de Wikipedia sobre representación y razonamiento del conocimiento .
El término "sistema basado en el conocimiento" se ha utilizado a menudo indistintamente con el de " sistema experto ", posiblemente porque casi todos los primeros sistemas basados en el conocimiento se diseñaron para tareas de expertos. Sin embargo, estos términos nos informan sobre diferentes aspectos de un sistema:
Hoy en día, prácticamente todos los sistemas expertos están basados en el conocimiento, mientras que la arquitectura de sistemas basada en el conocimiento se utiliza en una amplia gama de tipos de sistemas diseñados para una variedad de tareas.
Los primeros sistemas basados en el conocimiento eran principalmente sistemas expertos basados en reglas. Estos representaban hechos sobre el mundo como afirmaciones simples en una base de datos plana y utilizaban reglas específicas del dominio para razonar sobre estas afirmaciones y luego agregarles información. Uno de los más famosos de estos primeros sistemas fue Mycin , un programa para diagnóstico médico.
Representar el conocimiento explícitamente mediante reglas tenía varias ventajas:
Arquitecturas posteriores [¿ cuándo? ] para razonamiento basado en conocimiento, como la arquitectura de pizarra BB1 (un sistema de pizarra ), [4] permitieron que el proceso de razonamiento en sí se viera afectado por nuevas inferencias, proporcionando razonamiento de meta-nivel. BB1 permitió que el proceso de resolución de problemas en sí fuera monitoreado. Diferentes tipos de resolución de problemas (por ejemplo, de arriba hacia abajo, de abajo hacia arriba y resolución de problemas oportunista) podían combinarse selectivamente en función del estado actual de la resolución de problemas. Esencialmente, el solucionador de problemas se estaba utilizando tanto para resolver un problema de nivel de dominio junto con su propio problema de control, que podía depender del primero.
Otros ejemplos de arquitecturas de sistemas basados en el conocimiento que admiten el razonamiento de meta-nivel son MRS [5] y SOAR .
En los años 1980 y 1990, además de los sistemas expertos, otras aplicaciones de los sistemas basados en el conocimiento incluyeron el control de procesos en tiempo real, [6] sistemas de tutoría inteligente, [7] y solucionadores de problemas para dominios específicos como el análisis de la estructura de proteínas, [8] el diseño de sitios de construcción, [9] y el diagnóstico de fallas en sistemas informáticos. [10]
A medida que los sistemas basados en el conocimiento se volvieron más complejos, las técnicas utilizadas para representar la base de conocimiento se volvieron más sofisticadas e incluyeron lógica, sistemas de reescritura de términos, gráficos conceptuales y marcos .
Los marcos, por ejemplo, son una forma de representar el conocimiento del mundo utilizando técnicas que pueden verse como análogas a la programación orientada a objetos , específicamente clases y subclases, jerarquías y relaciones entre clases y comportamiento [ aclaración necesaria ] de los objetos. Con la base de conocimiento más estructurada, el razonamiento ahora podría ocurrir no solo mediante reglas independientes e inferencia lógica, sino también en función de interacciones dentro de la base de conocimiento misma. Por ejemplo, los procedimientos almacenados como daemons en [ aclaración necesaria ] objetos podrían activarse y podrían replicar el comportamiento de encadenamiento de reglas. [11]
Otro avance en la década de 1990 fue el desarrollo de sistemas de razonamiento automatizados de propósito especial llamados clasificadores . En lugar de declarar estáticamente las relaciones de subsunción en una base de conocimiento, un clasificador permite al desarrollador simplemente declarar hechos sobre el mundo y dejar que el clasificador deduzca las relaciones. De esta manera, un clasificador también puede desempeñar el papel de un motor de inferencia. [12]
El avance más reciente de los sistemas basados en el conocimiento fue la adopción de tecnologías, especialmente un tipo de lógica llamada lógica descriptiva , para el desarrollo de sistemas que utilizan Internet. Internet a menudo tiene que lidiar con datos complejos y no estructurados en los que no se puede confiar para que se ajusten a un modelo de datos específico. La tecnología de los sistemas basados en el conocimiento, y especialmente la capacidad de clasificar objetos a pedido, es ideal para tales sistemas. El modelo para este tipo de sistemas de Internet basados en el conocimiento se conoce como la Web Semántica . [13]