La representación y razonamiento del conocimiento ( KRR , KR&R , KR² ) es el campo de la inteligencia artificial (IA) dedicado a representar información sobre el mundo en una forma que un sistema informático pueda usar para resolver tareas complejas como diagnosticar una condición médica o tener un diálogo en un lenguaje natural . La representación del conocimiento incorpora hallazgos de la psicología [1] sobre cómo los humanos resuelven problemas y representan el conocimiento, con el fin de diseñar formalismos que harán que los sistemas complejos sean más fáciles de diseñar y construir. La representación y razonamiento del conocimiento también incorpora hallazgos de la lógica para automatizar varios tipos de razonamiento .
Entre los formalismos de representación del conocimiento se incluyen las redes semánticas , los marcos , las reglas , los programas lógicos y las ontologías . Entre los motores de razonamiento automatizado se incluyen los motores de inferencia , los demostradores de teoremas , los generadores de modelos y los clasificadores.
Los primeros trabajos sobre representación computarizada del conocimiento se centraron en los solucionadores de problemas generales, como el sistema General Problem Solver (GPS) desarrollado por Allen Newell y Herbert A. Simon en 1959 y el Advice Taker propuesto por John McCarthy también en 1959. El GPS incluía estructuras de datos para la planificación y la descomposición. El sistema comenzaba con un objetivo. Luego descomponía ese objetivo en subobjetivos y luego se disponía a construir estrategias que pudieran lograr cada subobjetivo. El Advisor Taker, por otro lado, proponía el uso del cálculo de predicados para representar el razonamiento de sentido común .
Muchos de los primeros enfoques de representación del conocimiento en la inteligencia artificial (IA) utilizaban representaciones gráficas y redes semánticas , similares a los gráficos de conocimiento actuales. En dichos enfoques, la resolución de problemas era una forma de recorrido de gráficos [2] o de búsqueda de rutas, como en el algoritmo de búsqueda A* . Las aplicaciones típicas incluían la formación de planes de robots y la realización de juegos.
Otros investigadores se centraron en el desarrollo de demostradores de teoremas automatizados para la lógica de primer orden, motivados por el uso de la lógica matemática para formalizar las matemáticas y automatizar la demostración de teoremas matemáticos. Un paso importante en esta dirección fue el desarrollo del método de resolución por parte de John Alan Robinson .
Mientras tanto, John McCarthy y Pat Hayes desarrollaron el cálculo de situaciones como una representación lógica del conocimiento de sentido común sobre las leyes de causa y efecto. Cordell Green , a su vez, mostró cómo hacer la formación de planes de robots aplicando la resolución al cálculo de situaciones. También mostró cómo usar la resolución para la respuesta a preguntas y la programación automática. [3]
Por el contrario, los investigadores del Instituto Tecnológico de Massachusetts (MIT) rechazaron el paradigma del procedimiento de prueba uniforme de resolución y abogaron en su lugar por la incorporación procedimental del conocimiento. [4] El conflicto resultante entre el uso de representaciones lógicas y el uso de representaciones procedimentales se resolvió a principios de la década de 1970 con el desarrollo de la programación lógica y Prolog , utilizando la resolución SLD para tratar las cláusulas de Horn como procedimientos de reducción de objetivos.
El desarrollo temprano de la programación lógica fue en gran medida un fenómeno europeo. En América del Norte, investigadores de IA como Ed Feigenbaum y Frederick Hayes-Roth abogaron por la representación de conocimiento específico de un dominio en lugar de razonamiento de propósito general. [5]
Estos esfuerzos llevaron a la revolución cognitiva en psicología y a la fase de la IA centrada en la representación del conocimiento que dio lugar a sistemas expertos en los años 1970 y 1980, sistemas de producción , lenguajes marco , etc. En lugar de solucionadores de problemas generales, la IA cambió su enfoque hacia sistemas expertos que pudieran igualar la competencia humana en una tarea específica, como el diagnóstico médico. [6]
Los sistemas expertos nos dieron la terminología que todavía se usa hoy en día, donde los sistemas de IA se dividen en una base de conocimiento , que incluye hechos y reglas sobre un dominio de problema, y un motor de inferencia , que aplica el conocimiento en la base de conocimiento para responder preguntas y resolver problemas en el dominio. En estos primeros sistemas, los hechos en la base de conocimiento tendían a ser una estructura bastante plana, esencialmente afirmaciones sobre los valores de las variables utilizadas por las reglas. [7]
Mientras tanto, Marvin Minsky desarrolló el concepto de marco a mediados de la década de 1970. [8] Un marco es similar a una clase de objeto: es una descripción abstracta de una categoría que describe cosas en el mundo, problemas y soluciones potenciales. Los marcos se utilizaron originalmente en sistemas orientados a la interacción humana, por ejemplo, la comprensión del lenguaje natural y los entornos sociales en los que varias expectativas predeterminadas, como pedir comida en un restaurante, reducen el espacio de búsqueda y permiten que el sistema elija respuestas apropiadas a situaciones dinámicas.
No pasó mucho tiempo antes de que las comunidades de marcos y los investigadores basados en reglas se dieran cuenta de que había una sinergia entre sus enfoques. Los marcos eran buenos para representar el mundo real, descrito como clases, subclases, ranuras (valores de datos) con varias restricciones sobre los valores posibles. Las reglas eran buenas para representar y utilizar la lógica compleja, como el proceso para hacer un diagnóstico médico. Se desarrollaron sistemas integrados que combinaban marcos y reglas. Uno de los más poderosos y conocidos fue el Knowledge Engineering Environment (KEE) de 1983 de Intellicorp . KEE tenía un motor de reglas completo con encadenamiento hacia adelante y hacia atrás . También tenía una base de conocimiento completa basada en marcos con activadores, ranuras (valores de datos), herencia y paso de mensajes. Aunque el paso de mensajes se originó en la comunidad orientada a objetos en lugar de la IA, fue rápidamente adoptado por los investigadores de IA también en entornos como KEE y en los sistemas operativos para máquinas Lisp de Symbolics , Xerox y Texas Instruments . [9]
La integración de marcos, reglas y programación orientada a objetos fue impulsada significativamente por empresas comerciales como KEE y Symbolics, que surgieron de varios proyectos de investigación. Al mismo tiempo, hubo otra corriente de investigación que estaba menos enfocada en lo comercial y estaba impulsada por la lógica matemática y la demostración automatizada de teoremas. [ cita requerida ] Uno de los lenguajes más influyentes en esta investigación fue el lenguaje KL-ONE de mediados de los 80. KL-ONE era un lenguaje de marco que tenía una semántica rigurosa, definiciones formales para conceptos como una relación Is-A . [10] KL-ONE y los lenguajes que fueron influenciados por él, como Loom, tenían un motor de razonamiento automatizado que se basaba en la lógica formal en lugar de en reglas IF-THEN. Este razonador se llama clasificador. Un clasificador puede analizar un conjunto de declaraciones e inferir nuevas afirmaciones, por ejemplo, redefinir una clase para que sea una subclase o superclase de alguna otra clase que no se especificó formalmente. De esta manera, el clasificador puede funcionar como un motor de inferencia, deduciendo nuevos hechos a partir de una base de conocimiento existente. El clasificador también puede proporcionar una comprobación de la coherencia en una base de conocimiento (que en el caso de los lenguajes KL-ONE también se denomina ontología). [11]
Otro campo de investigación de la representación del conocimiento fue el problema del razonamiento de sentido común . Una de las primeras conclusiones que se aprendieron al intentar crear software que pudiera funcionar con el lenguaje natural humano fue que los humanos recurren regularmente a una amplia base de conocimientos sobre el mundo real que simplemente damos por sentado pero que no son del todo obvios para un agente artificial, como los principios básicos de la física del sentido común, la causalidad, las intenciones, etc. Un ejemplo es el problema del marco , que en una lógica impulsada por eventos debe haber axiomas que establezcan que las cosas mantienen su posición de un momento a otro a menos que sean movidas por alguna fuerza externa. Para crear un verdadero agente de inteligencia artificial que pueda conversar con humanos utilizando el lenguaje natural y pueda procesar declaraciones y preguntas básicas sobre el mundo, es esencial representar este tipo de conocimiento. [12] Además del cálculo de situaciones de McCarthy y Hayes, uno de los programas más ambiciosos para abordar este problema fue el proyecto Cyc de Doug Lenat . Cyc estableció su propio lenguaje de marcos y tuvo un gran número de analistas que documentaron varias áreas de razonamiento de sentido común en ese lenguaje. El conocimiento registrado en Cyc incluía modelos de sentido común sobre el tiempo, la causalidad, la física, las intenciones y muchos otros. [13]
El punto de partida para la representación del conocimiento es la hipótesis de representación del conocimiento formalizada por primera vez por Brian C. Smith en 1985: [14]
Cualquier proceso inteligente encarnado mecánicamente estará compuesto de ingredientes estructurales que a) nosotros, como observadores externos, tomamos naturalmente como una explicación proposicional del conocimiento que exhibe el proceso general, y b) independientemente de dicha atribución semántica externa, desempeñan un papel formal pero causal y esencial en la generación del comportamiento que manifiesta ese conocimiento.
Una de las áreas más activas de investigación sobre la representación del conocimiento es la Web Semántica . [ cita requerida ] La Web Semántica busca añadir una capa de semántica (significado) sobre la Internet actual. En lugar de indexar sitios web y páginas a través de palabras clave, la Web Semántica crea grandes ontologías de conceptos. La búsqueda de un concepto será más eficaz que las búsquedas tradicionales de solo texto. Los lenguajes de marco y la clasificación automática desempeñan un papel importante en la visión de la Web Semántica del futuro. La clasificación automática proporciona a los desarrolladores la tecnología para proporcionar orden en una red de conocimiento en constante evolución. Definir ontologías que sean estáticas e incapaces de evolucionar sobre la marcha sería muy limitante para los sistemas basados en Internet. La tecnología de clasificación proporciona la capacidad de lidiar con el entorno dinámico de Internet.
Los proyectos recientes financiados principalmente por la Agencia de Proyectos de Investigación Avanzada de Defensa (DARPA) han integrado lenguajes de marco y clasificadores con lenguajes de marcado basados en XML. El marco de descripción de recursos (RDF) proporciona la capacidad básica para definir clases, subclases y propiedades de objetos. El lenguaje de ontología web (OWL) proporciona niveles adicionales de semántica y permite la integración con motores de clasificación. [15] [16]
La representación del conocimiento es un campo de la inteligencia artificial que se centra en el diseño de representaciones informáticas que capturan información sobre el mundo que puede utilizarse para resolver problemas complejos.
La justificación de la representación del conocimiento es que el código procedimental convencional no es el mejor formalismo para resolver problemas complejos. La representación del conocimiento hace que el software complejo sea más fácil de definir y mantener que el código procedimental y puede utilizarse en sistemas expertos .
Por ejemplo, hablar con expertos en términos de reglas de negocio en lugar de código reduce la brecha semántica entre usuarios y desarrolladores y hace que el desarrollo de sistemas complejos sea más práctico.
La representación del conocimiento va de la mano con el razonamiento automatizado porque uno de los propósitos principales de representar explícitamente el conocimiento es poder razonar sobre ese conocimiento, hacer inferencias, afirmar nuevos conocimientos, etc. Prácticamente todos los lenguajes de representación del conocimiento tienen un motor de razonamiento o inferencia como parte del sistema. [17]
Un equilibrio clave en el diseño de formalismos de representación del conocimiento es el que existe entre expresividad y manejabilidad. [18] La lógica de primer orden (FOL), con su alto poder expresivo y su capacidad para formalizar gran parte de las matemáticas, es un estándar para comparar la expresividad de los lenguajes de representación del conocimiento.
Se podría decir que FOL tiene dos desventajas como formalismo de representación del conocimiento por derecho propio, a saber, la facilidad de uso y la eficiencia de la implementación. En primer lugar, debido a su alto poder expresivo, FOL permite muchas formas de expresar la misma información, y esto puede dificultar a los usuarios la formalización o incluso la comprensión del conocimiento expresado en formas complejas y orientadas a las matemáticas. En segundo lugar, debido a sus complejos procedimientos de prueba, puede resultar difícil para los usuarios comprender pruebas y explicaciones complejas, y puede resultar difícil que las implementaciones sean eficientes. En consecuencia, un FOL sin restricciones puede resultar intimidante para muchos desarrolladores de software.
Uno de los descubrimientos clave de la investigación en IA en la década de 1970 fue que los lenguajes que no tienen todo el poder expresivo de FOL aún pueden proporcionar un poder expresivo cercano al mismo de FOL, pero pueden ser más fáciles de entender tanto para el desarrollador promedio como para la computadora. Muchos de los primeros formalismos de representación del conocimiento de IA, desde bases de datos hasta redes semánticas y sistemas de producción, pueden considerarse como la toma de diversas decisiones de diseño sobre cómo equilibrar el poder expresivo con la naturalidad de la expresión y la eficiencia. [19] En particular, este acto de equilibrio fue una motivación impulsora para el desarrollo de reglas IF-THEN en sistemas expertos basados en reglas .
Un acto de equilibrio similar también fue una motivación para el desarrollo de la programación lógica (PL) y el lenguaje de programación lógica Prolog . Los programas lógicos tienen una sintaxis basada en reglas, que se confunde fácilmente con la sintaxis IF-THEN de las reglas de producción . Pero los programas lógicos tienen una semántica lógica bien definida, mientras que los sistemas de producción no la tienen.
La primera forma de programación lógica se basó en el subconjunto de cláusulas de Horn de FOL. Pero las extensiones posteriores de LP incluyeron la regla de inferencia de negación como falla , que convierte a LP en una lógica no monótona para el razonamiento predeterminado . La semántica extendida resultante de LP es una variación de la semántica estándar de las cláusulas de Horn y FOL, y es una forma de semántica de base de datos, [20] que incluye la suposición de nombre único y una forma de suposición de mundo cerrado . Estas suposiciones son mucho más difíciles de enunciar y razonar explícitamente utilizando la semántica estándar de FOL.
En un artículo clave de 1993 sobre el tema, Randall Davis del MIT describió cinco funciones distintas para analizar un marco de representación del conocimiento: [21]
La representación y el razonamiento del conocimiento son una tecnología clave para la Web semántica . Los lenguajes basados en el modelo Frame con clasificación automática proporcionan una capa de semántica sobre la Internet existente. En lugar de buscar mediante cadenas de texto como es habitual hoy en día, será posible definir consultas lógicas y encontrar páginas que correspondan a esas consultas. [15] El componente de razonamiento automatizado en estos sistemas es un motor conocido como clasificador. Los clasificadores se centran en las relaciones de subsunción en una base de conocimiento en lugar de en las reglas. Un clasificador puede inferir nuevas clases y cambiar dinámicamente la ontología a medida que se dispone de nueva información. Esta capacidad es ideal para el espacio de información en constante cambio y evolución de Internet. [22]
La Web Semántica integra conceptos de representación y razonamiento del conocimiento con lenguajes de marcado basados en XML. El Resource Description Framework (RDF) proporciona las capacidades básicas para definir objetos basados en el conocimiento en Internet con características básicas como relaciones Is-A y propiedades de objetos. El Web Ontology Language (OWL) añade semántica adicional y se integra con razonadores de clasificación automática. [16]
En 1985, Ron Brachman categorizó los temas centrales para la representación del conocimiento de la siguiente manera: [23]
En los primeros años de los sistemas basados en el conocimiento, las bases de conocimiento eran bastante pequeñas. Las bases de conocimiento que se suponía que debían resolver problemas reales en lugar de realizar demostraciones de prueba de concepto debían centrarse en problemas bien definidos. Por ejemplo, no solo en el diagnóstico médico en su conjunto, sino también en el diagnóstico médico de ciertos tipos de enfermedades.
A medida que la tecnología basada en el conocimiento se fue ampliando, se hizo evidente la necesidad de bases de conocimiento más grandes y modulares que pudieran comunicarse e integrarse entre sí. Esto dio lugar a la disciplina de la ingeniería ontológica, que consiste en diseñar y construir grandes bases de conocimiento que pudieran utilizarse en múltiples proyectos. Uno de los principales proyectos de investigación en esta área fue el proyecto Cyc . Cyc fue un intento de construir una enorme base de conocimiento enciclopédica que contuviera no solo conocimiento experto, sino también conocimiento de sentido común. Al diseñar un agente de inteligencia artificial, pronto se dieron cuenta de que representar el conocimiento de sentido común, conocimiento que los humanos simplemente dan por sentado, era esencial para crear una IA que pudiera interactuar con los humanos utilizando el lenguaje natural. Cyc estaba destinado a abordar este problema. El lenguaje que definieron se conoció como CycL .
Después de CycL, se han desarrollado varios lenguajes de ontología . La mayoría son lenguajes declarativos , y son lenguajes de marco o se basan en lógica de primer orden . La modularidad (la capacidad de definir límites en torno a dominios específicos y espacios de problemas) es esencial para estos lenguajes porque, como afirma Tom Gruber , "Cada ontología es un tratado, un acuerdo social entre personas con un motivo común para compartir". Siempre hay muchos puntos de vista en competencia y diferentes que hacen imposible cualquier ontología de propósito general. Una ontología de propósito general tendría que ser aplicable en cualquier dominio y se deben unificar diferentes áreas de conocimiento. [27]
Existe una larga historia de trabajo que intenta construir ontologías para una variedad de dominios de tareas, por ejemplo, una ontología para líquidos, [28] el modelo de elementos concentrados ampliamente utilizado para representar circuitos electrónicos (por ejemplo, [29] ), así como ontologías para el tiempo, las creencias e incluso la programación misma. Cada una de ellas ofrece una forma de ver alguna parte del mundo.
El modelo de elementos concentrados, por ejemplo, sugiere que pensemos en los circuitos en términos de componentes con conexiones entre ellos, con señales que fluyen instantáneamente a lo largo de las conexiones. Esta es una visión útil, pero no la única posible. Una ontología diferente surge si necesitamos prestar atención a la electrodinámica en el dispositivo: aquí las señales se propagan a una velocidad finita y un objeto (como una resistencia) que antes se consideraba un componente único con un comportamiento de E/S puede ahora tener que considerarse como un medio extendido a través del cual fluye una onda electromagnética.
Por supuesto, las ontologías pueden escribirse en una amplia variedad de lenguajes y notaciones (por ejemplo, lógica, LISP, etc.); la información esencial no es la forma de ese lenguaje sino el contenido, es decir, el conjunto de conceptos que se ofrecen como una forma de pensar sobre el mundo. En pocas palabras, lo importante son nociones como conexiones y componentes, no la elección entre escribirlos como predicados o como construcciones de LISP.
El compromiso que se asume al seleccionar una u otra ontología puede producir una visión radicalmente diferente de la tarea en cuestión. Consideremos la diferencia que surge al seleccionar la visión de elementos agrupados de un circuito en lugar de la visión electrodinámica del mismo dispositivo. Como segundo ejemplo, el diagnóstico médico visto en términos de reglas (por ejemplo, MYCIN ) parece sustancialmente diferente de la misma tarea vista en términos de marcos (por ejemplo, INTERNIST). Mientras que MYCIN ve el mundo médico como compuesto de asociaciones empíricas que conectan los síntomas con las enfermedades, INTERNIST ve un conjunto de prototipos, en particular enfermedades prototípicas, que deben compararse con el caso en cuestión.
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.