Frame (inteligência artificial) - Frame (artificial intelligence)

Frames são uma estrutura de dados de inteligência artificial usada para dividir o conhecimento em subestruturas, representando " situações estereotipadas ". Eles foram propostos por Marvin Minsky em seu artigo de 1974 "A Framework for Representing Knowledge". Quadros são a estrutura de dados primária usada na linguagem de quadros de inteligência artificial ; eles são armazenados como ontologias de conjuntos .

Os quadros também são uma parte extensa da representação do conhecimento e dos esquemas de raciocínio . Eles foram originalmente derivados de redes semânticas e, portanto, fazem parte de representações de conhecimento baseadas em estrutura. De acordo com Russell e Norvig em "Artificial Intelligence: A Modern Approach", as representações estruturais reúnem [...] "fatos sobre objetos particulares e tipos de eventos e organizam os tipos em uma grande hierarquia taxonômica análoga a uma taxonomia biológica".

Quadro estrutural

O quadro contém informações sobre como usar o quadro, o que esperar em seguida e o que fazer quando essas expectativas não forem atendidas. Algumas informações no quadro geralmente permanecem inalteradas, enquanto outras informações, armazenadas em "terminais", geralmente mudam. Os terminais podem ser considerados como variáveis. Os frames de nível superior carregam informações, o que é sempre verdade sobre o problema em questão, no entanto, os terminais não precisam ser verdadeiros. Seu valor pode mudar com as novas informações encontradas. Quadros diferentes podem compartilhar os mesmos terminais.

Cada informação sobre um determinado quadro é mantida em um slot. As informações podem conter:

  • Fatos ou dados
    • Valores (chamados facetas)
  • Procedimentos (também chamados de anexos de procedimento)
    • SE NECESSÁRIO: avaliação adiada
    • SE-ADICIONADO: atualiza as informações vinculadas
  • Valores padrão
    • Para Dados
    • Para procedimentos
  • Outros quadros ou subframes

Características e vantagens

Os terminais de um quadro já estão preenchidos com valores padrão, que se baseiam em como a mente humana funciona. Por exemplo, quando se diz a uma pessoa "um menino chuta uma bola", a maioria das pessoas visualiza uma bola específica (como uma bola de futebol conhecida ) em vez de imaginar uma bola abstrata sem atributos.

Um ponto forte particular das representações de conhecimento baseadas em quadros é que, ao contrário das redes semânticas, elas permitem exceções em casos específicos. Isso dá aos quadros uma quantidade de flexibilidade que permite que representações de fenômenos do mundo real sejam refletidas com mais precisão.

Como as redes semânticas , os quadros podem ser consultados usando a ativação de propagação. Seguindo as regras de herança, qualquer valor dado a um slot que é herdado por subframes será atualizado (IF-ADDED) para os slots correspondentes nos subframes e quaisquer novas instâncias de um determinado quadro apresentarão esse novo valor como o padrão.

Como os quadros são baseados em estruturas, é possível gerar uma rede semântica a partir de um conjunto de quadros, mesmo que não haja arcos explícitos. A referência a Noam Chomsky e sua gramática generativa de 1950 geralmente está ausente nas publicações de Minsky . No entanto, a força semântica é originada por esse conceito.

As estruturas simplificadas de frames permitem um raciocínio analógico fácil, um recurso muito valorizado em qualquer agente inteligente. Os anexos de procedimento fornecidos por quadros também permitem um grau de flexibilidade que torna uma representação mais realista e oferece uma disponibilidade natural para aplicativos de programação.

Exemplo

Vale a pena notar aqui o raciocínio analógico fácil (comparação) que pode ser feito entre um menino e um macaco apenas por ter slots com nomes semelhantes.

Observe também que Alex, uma instância de um menino, herda valores padrão como "Sexo" do objeto pai mais geral Menino, mas o menino também pode ter diferentes valores de instância na forma de exceções, como o número de pernas.

Slot Valor Modelo
ALEX _ (Este quadro)
NOME Alex (valor chave)
É UM Garoto (quadro pai)
SEXO Masculino (valor de herança)
ERA SE NECESSÁRIO: Subtrair (atual, ANIVERSÁRIO); (anexo processual)
CASA 100 Main St. (valor da instância)
DATA DE NASCIMENTO 04/08/2000 (valor da instância)
COMIDA FAVORITA Espaguete (valor da instância)
CLIMBS Arvores (valor da instância)
TIPO DE CORPO Em corda (valor da instância)
NUM_LEGS 1 (exceção)
Slot Valor Modelo
GAROTO _ (Este quadro)
É UM Pessoa (quadro pai)
SEXO Masculino (valor da instância)
ERA Menos de 12 anos. (anexo procedural - define restrição)
CASA Um lugar (quadro)
NUM_LEGS Padrão = 2 (padrão, herdado do frame Person)
Slot Valor Modelo
MACACO _ (Este quadro)
É UM Primata (quadro pai)
SEXO OneOf (masculino, feminino) (anexo processual)
ERA um inteiro (anexo procedural - define restrição)
HABITAT Padrão = selva (predefinição)
COMIDA FAVORITA Padrão = Bananas (predefinição)
CLIMBS Arvores _
TIPO DE CORPO Padrão = Em corda (predefinição)
NUM_LEGS Padrão = 2 (predefinição)

Linguagem de quadro

A linguagem frame é uma tecnologia usada para representação do conhecimento em inteligência artificial . Eles são semelhantes às hierarquias de classes em linguagens orientadas a objetos, embora seus objetivos fundamentais de design sejam diferentes. Os frames são focados na representação explícita e intuitiva do conhecimento, enquanto os objetos focam no encapsulamento e ocultação de informações . Frames originados em pesquisas e objetos de IA, principalmente em engenharia de software . No entanto, na prática, as técnicas e recursos das linguagens orientadas a quadros e a objetos se sobrepõem significativamente.

Exemplo

Um exemplo simples de conceitos modelados em uma linguagem de quadro é a ontologia Friend of A Friend (FOAF) definida como parte da Web Semântica como base para redes sociais e sistemas de calendário. O quadro principal neste exemplo simples é uma pessoa . Os slots de exemplo são o e- mail da pessoa , a página inicial, o telefone, etc. Os interesses de cada pessoa podem ser representados por quadros adicionais que descrevem o espaço dos domínios de negócios e entretenimento. O slot sabe que liga cada pessoa a outras pessoas. Os valores padrão para os interesses de uma pessoa podem ser inferidos pela rede de pessoas das quais ela é amiga.

Implementações

As primeiras linguagens baseadas em Frame foram desenvolvidas de forma personalizada para projetos de pesquisa específicos e não foram empacotadas como ferramentas para serem reutilizadas por outros pesquisadores. Assim como com os mecanismos de inferência do sistema especialista , os pesquisadores logo perceberam os benefícios de extrair parte da infraestrutura central e desenvolver linguagens de quadro de propósito geral que não estavam acopladas a aplicativos específicos. Uma das primeiras linguagens de frame de propósito geral foi KRL. Uma das primeiras linguagens Frame mais influentes foi KL-ONE. KL-ONE gerou várias linguagens Frame subsequentes. Um dos sucessores mais usados ​​do KL-ONE foi a linguagem Loom desenvolvida por Robert MacGregor no Instituto de Ciências da Informação .

Na década de 1980, a Inteligência Artificial gerou um grande interesse no mundo dos negócios alimentado por sistemas especialistas. Isso levou ao desenvolvimento de muitos produtos comerciais para o desenvolvimento de sistemas baseados no conhecimento. Esses primeiros produtos eram geralmente desenvolvidos em Lisp e construções integradas, como regras IF-THEN para raciocínio lógico com hierarquias de quadros para representar dados. Uma das mais conhecidas dessas primeiras ferramentas de base de conhecimento Lisp foi o Knowledge Engineering Environment (KEE) da Intellicorp . O KEE forneceu uma linguagem Frame completa com herança múltipla, slots, gatilhos, valores padrão e um mecanismo de regras que suportava encadeamento para trás e para frente. Tal como acontece com a maioria das primeiras versões comerciais do software AI, KEE foi originalmente implantado em Lisp em plataformas de máquina Lisp , mas foi eventualmente portado para PCs e estações de trabalho Unix.

A agenda de pesquisa da Web Semântica gerou um interesse renovado em classificação automática e linguagens de quadro. Um exemplo é o padrão Web Ontology Language (OWL) para descrever informações na Internet. OWL é um padrão para fornecer uma camada semântica no topo da Internet. O objetivo é que, em vez de organizar a web usando palavras-chave como a maioria dos aplicativos (por exemplo, o Google) fazem hoje, a web pode ser organizada por conceitos organizados em uma ontologia.

O próprio nome da linguagem OWL fornece um bom exemplo do valor de uma Web Semântica. Se alguém fosse pesquisar "OWL" usando a Internet hoje, a maioria das páginas recuperadas estaria no pássaro Owl, em vez do OWL padrão . Com uma Web Semântica seria possível especificar o conceito "Web Ontology Language" e o usuário não precisaria se preocupar com as várias siglas ou sinônimos possíveis durante a busca. Da mesma forma, o usuário não precisaria se preocupar com homônimos enchendo os resultados da pesquisa com dados irrelevantes, como informações sobre aves de rapina, como neste exemplo simples.

Além de OWL, vários padrões e tecnologias que são relevantes para a Web Semântica e foram influenciados por linguagens Frame incluem OIL e DAML . A ferramenta de software Protege Open Source da Stanford University fornece um recurso de edição de ontologia que é construído em OWL e tem todos os recursos de um classificador. No entanto, deixou de suportar explicitamente frames a partir da versão 3.5 (que é mantida para aqueles que preferem a orientação de frames), sendo a versão atual em 2017 5. A justificativa para mudar de frames explícitos é que OWL DL é mais expressivo e "padrão da indústria".

Comparação de quadros e objetos

As linguagens de quadro têm uma sobreposição significativa com as linguagens orientadas a objetos . As terminologias e objetivos das duas comunidades eram diferentes, mas à medida que passavam do mundo acadêmico e laboratórios para o mundo comercial, os desenvolvedores tendiam a não se preocupar com questões filosóficas e focavam principalmente em capacidades específicas, tirando o melhor de cada campo, independentemente de onde a ideia fosse começou. O que os dois paradigmas têm em comum é o desejo de reduzir a distância entre os conceitos do mundo real e sua implementação em software. Como tal, ambos os paradigmas chegaram à ideia de representar os objetos de software primários em taxonomias começando com tipos muito gerais e progredindo para tipos mais específicos.

A tabela a seguir ilustra a correlação entre a terminologia padrão das comunidades orientada a objetos e linguagem de quadro:

Terminologia de quadro Terminologia OO
Quadro Classe de objeto
Slot Propriedade ou atributo do objeto
Desencadear Métodos acessadores e modificadores
Método (por exemplo, tear, KEE) Método

A principal diferença entre os dois paradigmas estava no grau em que o encapsulamento era considerado um requisito principal. Para o paradigma orientado a objetos, o encapsulamento era um dos requisitos, senão o mais crítico. O desejo de reduzir as potenciais interações entre os componentes de software e, portanto, gerenciar grandes sistemas complexos foi o principal motivador da tecnologia orientada a objetos. Para o campo da linguagem frame, esse requisito era menos crítico do que o desejo de fornecer uma vasta gama de ferramentas possíveis para representar regras, restrições e lógica de programação. No mundo orientado a objetos, tudo é controlado por métodos e pela visibilidade dos métodos. Assim, por exemplo, o acesso ao valor dos dados de uma propriedade do objeto deve ser feito por meio de um método acessador. Este método controla coisas como validação do tipo de dados e restrições no valor que está sendo recuperado ou definido na propriedade. Nas linguagens Frame, esses mesmos tipos de restrições podem ser tratados de várias maneiras. Os gatilhos podem ser definidos para disparar antes ou depois de um valor ser definido ou recuperado. Podem ser definidas regras que gerenciam os mesmos tipos de restrições. Os próprios slots podem ser aumentados com informações adicionais (chamadas de "facetas" em algumas linguagens) novamente com o mesmo tipo de informações de restrição.

O outro diferenciador principal entre as linguagens de quadro e OO era a herança múltipla (permitindo que um quadro ou classe tivesse duas ou mais superclasses). Para linguagens de quadro, herança múltipla era um requisito. Isso decorre do desejo de modelar o mundo da maneira como os humanos o fazem, as conceitualizações humanas do mundo raramente caem em taxonomias não sobrepostas rigidamente definidas. Para muitas linguagens OO, especialmente nos últimos anos de OO, a herança única era fortemente desejada ou exigida. A herança múltipla foi vista como uma etapa possível na fase de análise para modelar um domínio, mas algo que deve ser eliminado nas fases de design e implementação em nome da manutenção do encapsulamento e da modularidade.

Embora as primeiras linguagens de quadro, como KRL, não incluíssem a passagem de mensagens, impulsionadas pelas demandas dos desenvolvedores, a maioria das linguagens de quadro posteriores (por exemplo, Loom, KEE) incluía a capacidade de definir mensagens em quadros.

No lado orientado a objetos, também surgiram padrões que fornecem essencialmente a funcionalidade equivalente que as linguagens de quadro ofereciam, embora em um formato diferente e todos padronizados em bibliotecas de objetos. Por exemplo, o Object Management Group padronizou especificações para recursos como a associação de dados de teste e restrições a objetos (análogos aos usos comuns para facetas em Frames e a restrições em linguagens de Frame, como Loom) e para integração de mecanismos de regras.

História

Os primeiros trabalhos sobre Frames foram inspirados por pesquisas psicológicas que remontam à década de 1930, que indicavam que as pessoas usam o conhecimento estereotipado armazenado para interpretar e agir em novas situações cognitivas. O termo Frame foi usado pela primeira vez por Marvin Minsky como um paradigma para entender o raciocínio visual e o processamento da linguagem natural. Nesses e em muitos outros tipos de problemas, o espaço de solução potencial, mesmo para o menor problema, é enorme. Por exemplo, extrair os fonemas de um fluxo de áudio bruto ou detectar as bordas de um objeto. Coisas que parecem triviais para os humanos são, na verdade, bastante complexas. Na verdade, o quão difíceis eles realmente eram provavelmente não foi totalmente compreendido até que os pesquisadores de IA começaram a investigar a complexidade de fazer com que os computadores os resolvessem.

A noção inicial de Quadros ou Scripts, como também eram chamados, é que eles estabeleceriam o contexto para um problema e, ao fazer isso, reduziriam automaticamente o espaço de pesquisa possível de forma significativa. A ideia também foi adotada por Schank e Abelson, que a usaram para ilustrar como um sistema de IA poderia processar interações humanas comuns, como pedir uma refeição em um restaurante. Essas interações foram padronizadas como Frames com slots que armazenavam informações relevantes sobre cada Frame. Os slots são análogos às propriedades do objeto na modelagem orientada a objetos e às relações nos modelos de relação de entidade. Os slots geralmente tinham valores padrão, mas também exigiam mais refinamento como parte da execução de cada instância do cenário. Ou seja, a execução de uma tarefa, como fazer um pedido em um restaurante, foi controlada começando com uma instância básica do Frame e, em seguida, instanciando e refinando vários valores conforme apropriado. Essencialmente, o Frame abstrato representava uma classe de objeto e as instâncias de frame uma instância de objeto. Neste trabalho inicial, a ênfase era principalmente nas descrições de dados estáticos do Frame. Vários mecanismos foram desenvolvidos para definir o intervalo de um slot, valores padrão, etc. No entanto, mesmo nesses primeiros sistemas havia recursos procedimentais. Uma técnica comum era usar "gatilhos" (semelhante ao conceito de banco de dados de gatilhos ) anexados aos slots. Um gatilho é simplesmente um código de procedimento anexado a um slot. O acionador pode disparar antes e / ou depois que um valor de slot foi acessado ou modificado.

Assim como acontece com as classes de objetos, os Quadros foram organizados em hierarquias de subsunção . Por exemplo, um quadro básico pode ser um pedido em um restaurante. Um exemplo disso seria Joe frequentar o McDonald's. Uma especialização (essencialmente uma subclasse ) da estrutura do restaurante seria uma estrutura para fazer um pedido em um restaurante chique. A estrutura do restaurante chique herdaria todos os valores padrão da estrutura do restaurante, mas também adicionaria mais slots ou mudaria um ou mais dos valores padrão (por exemplo, faixa de preço esperada) para a estrutura especializada.

línguas

Muitas das primeiras pesquisas sobre a linguagem Frame (por exemplo, Schank e Abelson) foram conduzidas por descobertas da psicologia experimental e tentativas de projetar ferramentas de representação de conhecimento que correspondessem aos padrões que os humanos pensavam usar para funcionar em tarefas diárias. Esses pesquisadores estavam menos interessados ​​na formalidade matemática, pois acreditavam que tais formalismos não eram necessariamente bons modelos para a maneira como o ser humano médio conceitua o mundo. A maneira como os humanos usam a linguagem, por exemplo, muitas vezes está longe de ser verdadeiramente lógica.

Da mesma forma, em linguística, Charles J. Fillmore em meados da década de 1970 começou a trabalhar em sua teoria da semântica de quadros , que mais tarde levaria a recursos computacionais como FrameNet . A semântica do frame foi motivada por reflexões sobre a linguagem humana e a cognição humana.

Pesquisadores como Ron Brachman, por outro lado, queriam dar aos pesquisadores de IA o formalismo matemático e o poder computacional associados à lógica. Seu objetivo era mapear as classes, slots, restrições e regras Frame em uma linguagem Frame para definir a teoria e a lógica. Um dos benefícios dessa abordagem é que a validação e até mesmo a criação dos modelos podem ser automatizadas usando provadores de teoremas e outros recursos de raciocínio automatizados. A desvantagem é que pode ser mais difícil especificar inicialmente o modelo em uma linguagem com uma semântica formal.

Esta evolução também ilustra uma divisão clássica na pesquisa de IA conhecida como " neats vs. scruffies ". Os "neats" eram os pesquisadores que valorizavam mais a precisão matemática e o formalismo, o que poderia ser alcançado por meio da Lógica de Primeira Ordem e da Teoria dos Conjuntos . Os "desalinhados" estavam mais interessados ​​em modelar o conhecimento em representações intuitivas e psicologicamente significativas para os humanos.

A mais notável das abordagens mais formais foi a linguagem KL-ONE . KL-ONE mais tarde gerou várias linguagens Frame subsequentes. A semântica formal de linguagens como KL-ONE deu a essas linguagens de quadro um novo tipo de capacidade de raciocínio automatizado conhecido como classificador . O classificador é um motor que analisa as várias declarações na linguagem de quadros: a definição de conjuntos, subconjuntos, relações, etc. O classificador pode então deduzir automaticamente várias relações adicionais e pode detectar quando algumas partes de um modelo são inconsistentes umas com as outras. Desta forma, muitas das tarefas que normalmente seriam executadas por encadeamento progressivo ou regressivo em um mecanismo de inferência podem ser executadas pelo classificador.

Essa tecnologia é especialmente valiosa para lidar com a Internet. É um resultado interessante que o formalismo de linguagens como KL-ONE pode ser mais útil ao lidar com dados altamente informais e não estruturados encontrados na Internet. Na Internet, simplesmente não é viável exigir que todos os sistemas sejam padronizados em um modelo de dados. É inevitável que a terminologia seja usada de várias formas inconsistentes. A capacidade de classificação automática do mecanismo classificador fornece aos desenvolvedores de IA uma poderosa caixa de ferramentas para ajudar a trazer ordem e consistência para uma coleção de dados muito inconsistente (ou seja, a Internet). A visão de uma Internet aprimorada, onde as páginas são ordenadas não apenas por palavras-chave de texto, mas por classificação de conceitos, é conhecida como Web Semântica . A tecnologia de classificação desenvolvida originalmente para linguagens Frame é um habilitador chave da Web Semântica. A divisão "neats vs. scruffies" também emergiu na pesquisa da Web Semântica, culminando na criação da comunidade Linking Open Data - seu foco estava em expor dados na Web, em vez de modelar.

Veja também

Referências

Bibliografia

links externos