stringtranslate.com

Marco (inteligencia artificial)

Los marcos son una estructura de datos de inteligencia artificial que se utiliza para dividir el conocimiento en subestructuras representando " situaciones estereotipadas ".

Fueron propuestos por Marvin Minsky en su artículo de 1974 "Un marco para representar el conocimiento". Los marcos son la estructura de datos principal utilizada en los lenguajes de marcos de inteligencia artificial; se almacenan como ontologías de conjuntos .

Los marcos también son una parte importante de los esquemas de representación y razonamiento del conocimiento . Originalmente se derivaron de redes semánticas y, por lo tanto, forman parte de las representaciones del conocimiento basadas en estructuras .

Según Inteligencia artificial: un enfoque moderno de Russell y Norvig , las representaciones estructurales reúnen "[...] hechos sobre objetos particulares y tipos de eventos y organizan los tipos en una gran jerarquía taxonómica análoga a una taxonomía biológica ".

Estructura del marco

El marco contiene información sobre cómo utilizarlo, qué esperar a continuación y qué hacer cuando estas expectativas no se cumplen.

Algunos datos del marco no suelen variar, mientras que otros, almacenados en "terminales", suelen cambiar. Los terminales pueden considerarse variables.

Los marcos de nivel superior contienen información que siempre es verdadera sobre el problema en cuestión; sin embargo, los terminales no tienen por qué serlo. Su valor puede cambiar con la nueva información encontrada. Diferentes marcos pueden compartir los mismos terminales.

Cada pieza de información sobre un cuadro en particular se almacena en una ranura.

La información puede contener:

Características y ventajas

Las terminales de un marco ya están llenas de valores predeterminados, lo que se basa en cómo funciona la mente humana .

Por ejemplo, cuando a una persona se le dice "un niño patea una pelota", la mayoría de la gente visualizará una pelota particular (como una pelota de fútbol familiar ) en lugar de imaginar una pelota abstracta sin atributos.

Una ventaja particular de las representaciones de conocimiento basadas en marcos es que, a diferencia de las redes semánticas, permiten excepciones en casos particulares. Esto les otorga a los marcos un grado de flexibilidad que permite que las representaciones reflejen fenómenos del mundo real con mayor precisión.

Al igual que las redes semánticas , los marcos se pueden consultar mediante activación por propagación. Siguiendo las reglas de herencia , cualquier valor asignado a una ranura que es heredada por submarcos se actualizará (SI SE AGREGA) a las ranuras correspondientes en los submarcos y cualquier nueva instancia de un marco en particular tendrá ese nuevo valor como predeterminado.

Como los marcos se basan en estructuras, es posible generar una red semántica dado un conjunto de marcos, aunque carezca de arcos explícitos. En general, en la obra de Minsky no hay referencias a Noam Chomsky y su gramática generativa de 1950 .

Las estructuras simplificadas de los marcos permiten un razonamiento analógico sencillo, una característica muy valorada en cualquier agente inteligente . Los accesorios procedimentales que proporcionan los marcos también permiten un grado de flexibilidad que permite una representación más realista y ofrece una ventaja natural para las aplicaciones de programación.

Ejemplo

Vale la pena destacar aquí el fácil razonamiento analógico (comparación) que se puede hacer entre un niño y un mono simplemente por tener ranuras con nombres similares.

Observe también que Alex, una instancia de un niño, hereda valores predeterminados como "Sexo" del objeto padre más general Niño, pero el niño también puede tener diferentes valores de instancia en forma de excepciones, como el número de piernas.

Lenguaje de marco

Un lenguaje de marco es una tecnología utilizada para la representación del conocimiento en la inteligencia artificial . Son similares a las jerarquías de clases en los lenguajes orientados a objetos, aunque sus objetivos de diseño fundamentales son diferentes.

Los marcos se centran en la representación explícita e intuitiva del conocimiento, mientras que los objetos se centran en la encapsulación y el ocultamiento de la información . Los marcos se originaron en la investigación de la IA y los objetos principalmente en la ingeniería de software .

Sin embargo, en la práctica, las técnicas y capacidades de los lenguajes orientados a objetos y de marco se superponen significativamente.

Ejemplo

Un ejemplo simple de conceptos modelados en un lenguaje de marco es la ontología Friend of A Friend (FOAF), definida como parte de la Web Semántica como base para redes sociales y sistemas de calendario.

El marco principal en este ejemplo sencillo es una Persona .

Algunos ejemplos de espacios son el correo electrónico de la persona , la página de inicio, el teléfono, etc.

Los intereses de cada persona pueden representarse mediante marcos adicionales que describan el espacio de los dominios de negocios y entretenimiento.

La ranura sabe vincular a cada persona con otras personas.

Los valores predeterminados para los intereses de una persona se pueden inferir a partir de la red de personas que la rodean. [1]

Implementaciones

Los primeros lenguajes basados ​​en marcos se desarrollaron a medida para proyectos de investigación específicos y no fueron empaquetados como herramientas para ser reutilizados por otros investigadores.

Al igual que con los motores de inferencia de sistemas expertos , los investigadores pronto se dieron cuenta de los beneficios de extraer parte de la infraestructura central y desarrollar lenguajes de marco de propósito general que no estuvieran acoplados a aplicaciones específicas.

Uno de los primeros lenguajes de marco de propósito general fue KRL. [2] Uno de los primeros lenguajes de marco más influyentes fue KL-ONE . [3] KL-ONE generó varios lenguajes de marco posteriores.

Uno de los sucesores más utilizados de KL-ONE fue el lenguaje Loom desarrollado por Robert MacGregor en el Instituto de Ciencias de la Información . [4]

En la década de 1980, la Inteligencia Artificial generó un gran interés en el mundo empresarial impulsado por los sistemas expertos . Esto llevó al desarrollo de muchos productos comerciales para el desarrollo de sistemas basados ​​en el conocimiento. Estos primeros productos generalmente se desarrollaron en Lisp e integraron construcciones como reglas IF-THEN para el razonamiento lógico con jerarquías de marcos para representar datos.

Una de las herramientas de base de conocimiento de Lisp más conocidas fue el Knowledge Engineering Environment (KEE) de Intellicorp . KEE proporcionaba un lenguaje Frame completo con herencia múltiple, ranuras, activadores, valores predeterminados y un motor de reglas que admitía encadenamiento hacia atrás y hacia adelante. Como la mayoría de las primeras versiones comerciales de software de IA, KEE se implementó originalmente en Lisp en plataformas de máquinas Lisp, pero finalmente se trasladó a PC y estaciones de trabajo Unix . [5]

La agenda de investigación de la Web Semántica generó un renovado interés en la clasificación automática y los lenguajes de marco. Un ejemplo es el estándar Web Ontology Language (OWL) para describir información en Internet. OWL es un estándar para proporcionar una capa semántica sobre Internet. El objetivo es que en lugar de organizar la web utilizando palabras clave como lo hacen hoy la mayoría de las aplicaciones (por ejemplo, Google), la web se pueda organizar por conceptos organizados en una ontología.

El nombre del lenguaje OWL es un buen ejemplo del valor de una Web Semántica. Si hoy en día se buscara "OWL" en Internet, la mayoría de las páginas que se obtendrían serían sobre el pájaro Owl en lugar del OWL estándar . Con una Web Semántica sería posible especificar el concepto "Web Ontology Language" y el usuario no tendría que preocuparse por los distintos acrónimos o sinónimos posibles como parte de la búsqueda. Del mismo modo, el usuario no tendría que preocuparse por los homónimos que abarrotan los resultados de la búsqueda con datos irrelevantes, como información sobre aves rapaces, como en este sencillo ejemplo.

Además de OWL, varios estándares y tecnologías que son relevantes para la Web Semántica y fueron influenciados por los lenguajes Frame incluyen OIL y DAML . La herramienta de software de código abierto Protege de la Universidad de Stanford proporciona una capacidad de edición de ontología que se basa en OWL y tiene todas las capacidades de un clasificador. Sin embargo, dejó de admitir marcos explícitamente a partir de la versión 3.5 (que se mantiene para aquellos que prefieren la orientación de marcos), siendo la versión actual en 2017 la 5. La justificación para pasar de los marcos explícitos es que el lenguaje Frame es más expresivo y "estándar de la industria". [6]

Comparación de marcos y objetos

Los lenguajes de marco tienen una superposición significativa con los lenguajes orientados a objetos . Las terminologías y los objetivos de las dos comunidades eran diferentes, pero a medida que pasaban del mundo académico y los laboratorios al mundo comercial, los desarrolladores tendían a no preocuparse por cuestiones filosóficas y se centraban principalmente en capacidades específicas, tomando lo mejor de cada bando independientemente de dónde surgiera la idea. Lo que ambos paradigmas tienen en común es el deseo de reducir la distancia entre los conceptos del mundo real y su implementación en el software. Como tal, ambos paradigmas llegaron a la idea de representar los objetos de software primarios en taxonomías comenzando con tipos muy generales y progresando hacia tipos más específicos.

La siguiente tabla ilustra la correlación entre la terminología estándar de las comunidades de lenguajes orientados a objetos y de lenguajes de marco:

La principal diferencia entre los dos paradigmas estaba en el grado en que la encapsulación se consideraba un requisito importante. Para el paradigma orientado a objetos, la encapsulación era uno de los requisitos más críticos, si no el más importante. El deseo de reducir las interacciones potenciales entre los componentes de software y, por lo tanto, gestionar sistemas grandes y complejos era un impulsor clave de la tecnología orientada a objetos. Para el campo de los lenguajes de marco, este requisito era menos crítico que el deseo de proporcionar una amplia gama de posibles herramientas para representar reglas, restricciones y lógica de programación. En el mundo orientado a objetos, todo está controlado por métodos y la visibilidad de los métodos. Por ejemplo, el acceso al valor de datos de una propiedad de objeto debe realizarse a través de un método de acceso. Este método controla cosas como la validación del tipo de datos y las restricciones sobre el valor que se recupera o se establece en la propiedad. En los lenguajes de marco, estos mismos tipos de restricciones se pueden manejar de múltiples maneras. Se pueden definir disparadores para que se activen antes o después de que se establezca o recupere un valor. Se pueden definir reglas que gestionen los mismos tipos de restricciones. Las ranuras en sí podrían ampliarse con información adicional (llamada "facetas" en algunos idiomas) nuevamente con el mismo tipo de información de restricción.

El otro diferenciador principal entre los lenguajes de marco y los orientados a objetos era la herencia múltiple (permitiendo que un marco o una clase tuvieran dos o más superclases). Para los lenguajes de marco, la herencia múltiple era un requisito. Esto se desprende del deseo de modelar el mundo de la forma en que lo hacen los humanos; las conceptualizaciones humanas del mundo rara vez caen en taxonomías rígidamente definidas y no superpuestas . Para muchos lenguajes orientados a objetos, especialmente en los últimos años de la OO, la herencia simple era muy deseada o requerida. La herencia múltiple se consideraba un paso posible en la fase de análisis para modelar un dominio, pero algo que debería eliminarse en las fases de diseño e implementación en nombre de mantener la encapsulación y la modularidad . [7]

Aunque los primeros lenguajes de marco como KRL no incluían el paso de mensajes , impulsados ​​por las demandas de los desarrolladores, la mayoría de los lenguajes de marco posteriores (por ejemplo, Loom, KEE) incluían la capacidad de definir mensajes en marcos. [8]

En el lado orientado a objetos, también han surgido estándares que proporcionan esencialmente la funcionalidad equivalente a la que proporcionaban los lenguajes de marcos, aunque en un formato diferente y todos estandarizados en bibliotecas de objetos. Por ejemplo, el Object Management Group ha estandarizado especificaciones para capacidades como la asociación de datos de prueba y restricciones con objetos (análogos a los usos comunes de las facetas en los marcos y a las restricciones en los lenguajes de marcos como Loom) y para la integración de motores de reglas. [9] [10]

Historia

Los primeros trabajos sobre Frames se inspiraron en investigaciones psicológicas que se remontan a la década de 1930 y que indicaban que las personas utilizan conocimientos estereotípicos almacenados para interpretar y actuar en nuevas situaciones cognitivas. [11] El término Frame fue utilizado por primera vez por Marvin Minsky como paradigma para comprender el razonamiento visual y el procesamiento del lenguaje natural. [12] En estos y muchos otros tipos de problemas, el espacio de solución potencial para incluso el problema más pequeño es enorme. Por ejemplo, extraer los fonemas de una secuencia de audio sin procesar o detectar los bordes de un objeto. Cosas que parecen triviales para los humanos son en realidad bastante complejas. De hecho, probablemente no se entendió por completo lo difíciles que eran hasta que los investigadores de IA comenzaron a investigar la complejidad de lograr que las computadoras las resolvieran.

La noción inicial de los Frames o Scripts, como también se los llamaba, es que establecerían el contexto para un problema y, al hacerlo, reducirían automáticamente el posible espacio de búsqueda de manera significativa. La idea también fue adoptada por Schank y Abelson, quienes la usaron para ilustrar cómo un sistema de IA podría procesar interacciones humanas comunes, como pedir una comida en un restaurante. [13] Estas interacciones se estandarizaron como Frames con ranuras que almacenaban información relevante sobre cada Frame. Las ranuras son análogas a las propiedades de los objetos en el modelado orientado a objetos y a las relaciones en los modelos de relación de entidades. Las ranuras a menudo tenían valores predeterminados, pero también requerían un mayor refinamiento como parte de la ejecución de cada instancia del escenario. Es decir, la ejecución de una tarea como pedir en un restaurante se controlaba comenzando con una instancia básica del Frame y luego instanciando y refinando varios valores según fuera apropiado. Esencialmente, el Frame abstracto representaba una clase de objeto y las instancias del frame una instancia de objeto. En este trabajo temprano, el énfasis estaba principalmente en las descripciones de datos estáticos del Frame. Se desarrollaron varios mecanismos para definir el rango de una ranura, los valores predeterminados, etc. Sin embargo, incluso en estos primeros sistemas existían capacidades procedimentales. Una técnica común era utilizar "disparadores" (similares al concepto de disparadores de la base de datos ) adjuntos a las ranuras. Un disparador es simplemente un código procedimental que se adjunta a una ranura. El disparador podría activarse antes y/o después de que se accediera o modificara un valor de ranura.

Al igual que con las clases de objetos, los marcos se organizaban en jerarquías de subsunción . Por ejemplo, un marco básico podría ser el de pedir comida en un restaurante. Una instancia de esto sería Joe va a Dairy Queen. Una especialización (esencialmente una subclase ) del marco de restaurante sería un marco para pedir comida en un restaurante elegante. El marco de restaurante elegante heredaría todos los valores predeterminados del marco de restaurante, pero también agregaría más espacios o cambiaría uno o más de los valores predeterminados (por ejemplo, rango de precios esperado) para el marco especializado. [14] [15]

Idiomas

Gran parte de las primeras investigaciones sobre el lenguaje Frame (por ejemplo, las de Schank y Abelson) se basaban en hallazgos de la psicología experimental y en intentos de diseñar herramientas de representación del conocimiento que correspondieran a los patrones que se pensaba que utilizaban los seres humanos para funcionar en las tareas cotidianas. Estos investigadores estaban menos interesados ​​en la formalidad matemática, ya que creían que dichos formalismos no eran necesariamente buenos modelos para la forma en que el ser humano medio conceptualiza el mundo. La forma en que los seres humanos utilizan el lenguaje, por ejemplo, a menudo dista mucho de ser verdaderamente lógica.

De manera similar, en lingüística, Charles J. Fillmore a mediados de la década de 1970 comenzó a trabajar en su teoría de la semántica de marcos , que más tarde conduciría a recursos computacionales como FrameNet . [16] La semántica de marcos estuvo motivada por reflexiones sobre el lenguaje humano y la cognición humana.

Por otro lado, investigadores como Ron Brachman querían dar a los investigadores de IA el formalismo matemático y el poder computacional que se asociaban con la lógica. Su objetivo era mapear las clases, ranuras, restricciones y reglas de Frame en un lenguaje de Frame para establecer la teoría y la lógica. Una de las ventajas de este enfoque es que la validación e incluso la creación de los modelos se podían automatizar utilizando demostradores de teoremas y otras capacidades de razonamiento automatizado. El inconveniente era que podía ser más difícil especificar inicialmente el modelo en un lenguaje con una semántica formal.

Esta evolución también ilustra una división clásica en la investigación de IA conocida como los " cleans vs. scruffies ". Los "cleans" eran investigadores que daban más valor a la precisión matemática y al formalismo que se podía lograr a través de la lógica de primer orden y la teoría de conjuntos . Los "scruffies" estaban más interesados ​​en modelar el conocimiento en representaciones que fueran intuitivas y psicológicamente significativas para los humanos. [17]

El más notable de los enfoques más formales fue el lenguaje KL-ONE . [18] KL-ONE luego generó varios lenguajes de marco posteriores. La semántica formal de lenguajes como KL-ONE le dio a estos lenguajes de marco un nuevo tipo de capacidad de razonamiento automatizado conocido como clasificador . El clasificador es un motor que analiza las diversas declaraciones en el lenguaje de marco: la definición de conjuntos, subconjuntos, relaciones, etc. El clasificador puede entonces deducir automáticamente varias relaciones adicionales y puede detectar cuando algunas partes de un modelo son inconsistentes entre sí. De esta manera, muchas de las tareas que normalmente se ejecutarían mediante encadenamiento hacia adelante o hacia atrás en un motor de inferencia pueden ser realizadas por el clasificador. [19]

Esta tecnología es especialmente valiosa para tratar con Internet. Es un resultado interesante que el formalismo de lenguajes como KL-ONE puede ser más útil para tratar con los datos altamente informales y no estructurados que se encuentran en Internet. En Internet simplemente no es factible exigir que todos los sistemas se estandaricen en un modelo de datos. Es inevitable que la terminología se use en múltiples formas inconsistentes. La capacidad de clasificación automática del motor clasificador proporciona a los desarrolladores de IA una poderosa caja de herramientas para ayudar a poner orden y consistencia a una colección muy inconsistente de datos (es decir, Internet). La visión de una Internet mejorada, donde las páginas se ordenan no solo por palabras clave de texto sino por clasificación de conceptos se conoce como la Web Semántica . La tecnología de clasificación desarrollada originalmente para lenguajes Frame es un habilitador clave de la Web Semántica. [20] [21] La división "neats vs. scruffies" también surgió en la investigación de la Web Semántica, que culminó en la creación de la comunidad Linking Open Data : su enfoque estaba en exponer datos en la Web en lugar de modelar.

Véase también

Referencias

  1. ^ "FOAF". semanticweb.org . Archivado desde el original el 10 de febrero de 2013 . Consultado el 7 de junio de 2014 .
  2. ^ Bobrow, DG; Terry Winograd (1977). "Una descripción general de KRL: un lenguaje de representación del conocimiento". Cognitive Science . 1 : 3–46. doi : 10.1207/s15516709cog0101_2 .
  3. ^ Brachman, Ron (1978). "Un paradigma estructural para representar el conocimiento". Informe técnico de Bolt, Beranek y Neumann (3605).}
  4. ^ MacGregor, Robert (junio de 1991). "Uso de un clasificador de descripción para mejorar la representación del conocimiento". IEEE Expert . 6 (3): 41–46. doi :10.1109/64.87683. S2CID  29575443.
  5. ^ Mettrey, William (1987). "Una evaluación de herramientas para construir grandes sistemas basados ​​en el conocimiento". AI Magazine . 8 (4). Archivado desde el original el 2013-11-10 . Consultado el 2013-12-09 .
  6. ^ Horridge, Mathew. "Tutorial de Protégé OWL. Una guía paso a paso para modelar en OWL utilizando las populares herramientas de Protégé OWL". Universidad de Manchester . Universidad de Manchester. Archivado desde el original el 13 de diciembre de 2013. Consultado el 9 de diciembre de 2013 .
  7. ^ "El lenguaje de modelado unificado". essentialstrategies.com . Essential Strategies Inc. 1999 . Consultado el 10 de diciembre de 2013 . Según la experiencia de su autor, casi todos los ejemplos que parecen requerir herencia múltiple o jerarquías de tipos múltiples se pueden resolver atacando el modelo desde una dirección diferente.
  8. ^ Mettrey, William (1987). "Una evaluación de herramientas para construir grandes sistemas basados ​​en el conocimiento". AI Magazine . 8 (4). Archivado desde el original el 2013-11-10 . Consultado el 2013-12-09 .
  9. ^ Macgregor, Robert (13 de agosto de 1999). "Retrospectiva sobre Loom". isi.edu . Instituto de Ciencias de la Información. Archivado desde el original el 25 de octubre de 2013 . Consultado el 10 de diciembre de 2013 .
  10. ^ "OMG Formal Specification". omg.org . Object Management Group . Consultado el 10 de diciembre de 2013 .
  11. ^ Bartlett, FC (1932). Recordando: un estudio sobre psicología experimental y social . Cambridge, Inglaterra: Cambridge University Press. doi :10.1086/399084. S2CID  7992164.
  12. ^ Minsky, Marvin (1975). "Un marco para representar el conocimiento" (PDF) . En Pat Winston (ed.). La psicología de la visión artificial . Nueva York: McGraw Hill. pp. 211–277.
  13. ^ Schank, Roger; RP Abelson (1977). Guiones, planes, objetivos y comprensión. Hillsdale, Nueva Jersey: Lawrence Erlbaum. doi :10.4324/9780203781036. ISBN 9781134919666.
  14. ^ Feigenbaum, Edward; Avron Barr (1 de septiembre de 1986). El manual de inteligencia artificial, volumen III. Addison-Wesley. págs. 216-222. ISBN 978-0201118117.
  15. ^ Bobrow, DG; Terry Winograd (1977). "Una descripción general de KRL: un lenguaje de representación del conocimiento". Cognitive Science . 1 : 3–46. doi : 10.1207/s15516709cog0101_2 .
  16. ^ Lakoff, George (18 de febrero de 2014). «Charles Fillmore, descubridor de la semántica de los marcos, muere en San Francisco a los 84 años: descubrió cómo funciona el encuadre». The Huffington Post . Consultado el 7 de marzo de 2014 .
  17. ^ Crevier, Daniel (1993). AI: The Tumultuous Search for Artificial Intelligence (AI: La tumultuosa búsqueda de la inteligencia artificial) . Nueva York: Basic Books. pág. 168. ISBN 978-0-465-02997-6.
  18. ^ Brachman, Ron (1978). "Un paradigma estructural para representar el conocimiento". Informe técnico de Bolt, Beranek y Neumann (3605).[ enlace muerto ]
  19. ^ MacGregor, Robert (junio de 1991). "Uso de un clasificador de descripción para mejorar la representación del conocimiento". IEEE Expert . 6 (3): 41–46. doi :10.1109/64.87683. S2CID  29575443.
  20. ^ Berners-Lee, Tim; James Hendler; Ora Lassila (17 de mayo de 2001). "La Web semántica Una nueva forma de contenido web que es significativo para las computadoras desatará una revolución de nuevas posibilidades". Scientific American . 284 (5): 34–43. doi :10.1038/scientificamerican0501-34. Archivado desde el original el 24 de abril de 2013.
  21. ^ Horridge, Mathew. "Tutorial de Protégé OWL. Una guía paso a paso para modelar en OWL utilizando las populares herramientas de Protégé OWL". Universidad de Manchester . Universidad de Manchester. Archivado desde el original el 13 de diciembre de 2013. Consultado el 9 de diciembre de 2013 .

Bibliografía

Enlaces externos