Representação de Conhecimento com
Formalismos Orientado a Objetos
Jacques Robin
Cin-UFPE
Roteiro
Histórico
Redes Semânticas
Frames
Lógicas Descritivas
Formalismos híbridos regras + objetos
Formalismos de representação do
conhecimento orientado a objetos
(FRCOO) : histórico
Redes semânticas aparecem no fim dos anos 70
Primeiro formalismo de IA estruturando o
conhecimento em uma hierarquia de conceitos (classes)
e instâncias (individuais, objetos) com herança de
propriedades
Contribui a gênese das linguagens de programação e
engenharia de software orientada a objeto
Em retrospecto, os diagramas mais utilizados de UML
(classes, objetos) definem uma redes semântica
Vinham com interpretadores o que os tornavam
linguagem de implementação e não apenas de
especificação
FRCOO: histórico (cont.)
Duas limitações principais das redes semânticas:
1. Computacionalmente incompletos para implementar a maioria
dos sistemas inteligentes
2. Sem semântica declarativa formal bem-definida (atalho entre
nível do conhecimento e nível da implementação sem lógica)
Frames são sucessores das redes semânticas visando a
superar a 1a limitação
Lógicas descritivas são sucessores das redes
semânticas visando a superar a 2a limitação
Atualmente:
Redes semânticas caíram em desuso para sua função inicial de
formalismo de implementação de BC
Redes semânticas mais usadas do nunca do que hoje em nova
função de especificação de BC e de software em geral (UML)!
Emergência proeminente dos FRC híbridos regras + objetos
Redes semânticas
Uma rede semântica é uma representação na qual
existem nós que representam entidades e links (predicados)
que representam relacionamentos entre essas entidades;
cada link conecta um nó origem até um nó destino;
normalmente, os nós e links denotam entidades de domínio
específico.
Exemplo:
Pessoa
Mobília
Ako
Cadeira
é-um
Ana
Dono
é-um
Tem-um
Cadeira-27
Cor
Preto
Couro
Estofamento
Assento
Redes Semânticas
Forma mais flexível e intuitiva de representar
conhecimento.
Suportam herança de propriedades.
Relações
Ako (a-kind-of): relações entre classes
é-um (is-a): relações entre classes e instâncias
uma entidade pertence a uma classe mais alta ou uma categoria de
objetos.
tem-um (has-a): identifica características ou atributos das
entidades
parte-de (part-of): identifica características ou atributos
das entidades
variados: identifica características gerais
Sistemas de Redes Semânticas
Base de conhecimento
nós e links da rede.
Máquina de inferência
busca e casamento de padrões
a busca se dá para frente e para trás através dos links.
A busca pode ser usada de várias maneiras para se
extrair informações
como uma ferramenta explicativa;
para explorar exaustivamente um tópico;
para encontrar o relacionamento entre dois objetos.
Redes semânticas: vantagens
Representação visual fácil de entender.
Flexibilidade na manipulação de nós e links
adição, exclusão, modificação
Economia
herança via relações “é-um” e “ako”.
Capta “senso-comum”
semelhante ao armazenamento de informações no cérebro.
Redes semânticas: limitações
Busca em redes semânticas grandes pode ser muito
ineficiente.
Não há homogeneidade na definição de nós e links.
Hereditariedade pode causar dificuldades no
tratamento de exceções.
Pode haver conflito entre características herdadas.
É difícil representar conhecimento procedimental
seqüenciamento e tempo não estão explícitos.
Menos expressiva que a Lógica de Primeira Ordem
não há quantificadores.
Frames
Um frame é identificado por um nome e descreve um
objeto complexo através de um conjunto de atributos
Um Sistema de Frames é um conjunto de frames
organizados hierarquicamente.
São uma evolução das Redes Semânticas:
nós são substituídos por frames
arcos são substituídos por atributos (slots)
procedimentos podem ser anexados a um frame
Frames: atributos (slots)
Frames
Possuem pelo menos dois atributos:
Nome
Ako ou is-a
A fim de melhorar a estruturação (hierarquia), privilegiam
dois tipos de relações:
ako: relação entre classe e sub-classe
is-a: relação entre classe e instância.
Cada atributo
aponta para um outro frame ou para um tipo primitivo, ex.
string;
consiste em um conjunto de facetas (atributos de
atributos).
Exemplo: Classes e Instâncias
Animal
faz comer
Pássaro
Ako
Babalu
é-um
Comer
Mamífero
Ako
tem
Cão
Ako
Comer
pêlos
Facetas
Descrevem conhecimento ou algum procedimento
relativo ao atributo.
Propriedades
Valor: especifica o único valor possível.
Valor default: especifica o valor assumido pelo atributo caso
não haja nenhuma informação a esse respeito.
Tipo: indica o tipo de dado do valor.
Domínio: descreve os valores possíveis para o atributo.
Procedimentos Demons
como os triggers nos bancos de dados
Uma Representação Abstrata
de um Frame
< Nome do Frame>
< atributo1 >
< faceta1 >: valor
< atributo2 >
< atributo3 >
< faceta1 >: valor
< faceta2 >: valor
< faceta3 >: valor
< faceta1 >: valor
< faceta2 >: valor
< faceta3 >: valor
Os frames integram conhecimento declarativo sobre objetos e
eventos e conhecimento procedimental sobre como recuperar
informações ou calcular valores.
Procedimentos Demons
Definição
São procedimentos anexados aos frames, disparados por
consultas ou atualizações.
Podem inferir valores para atributos a partir de valores de
outros atributos especificados anteriormente em qualquer
frame do sistema.
Procedimentos Demons:
when-requested
quando o valor é pedido mas não existe ainda
when-read
quando valor é lido
when-written
quando valor é modificado
Exemplo: Procedimentos Demons
Ako: Lugar-coberto
Cômodo
Atributo
Default
Tipo
Se-necessário
Nº de paredes
4
número
Formato
retangular símbolo
Altura
3
número
Área
número
número
Volume
Área * Altura
Ako
Sala
Ako: Cômodo
Atributo
Mobiliário
Finalidade
Área
Default
(sofá,mesa,cadeiras)
convivência
25
Tipo
lista de símbolos
símbolo
número
Exemplo de Sistema de Frames
Mobília
...
Cadeira
...
Ana é-um:
...
Pessoa
...
verde é-um:
String
...
Ako: Mobília
Cadeira-27
dono:
cor:
tem-um:
é-um: Cadeira
Assento
estofamento:
tamanho: ...
couro é-um:
Herança de Propriedades
Três tipos de informações podem ser de herdadas
valor (= POO)
procedimento (= POO)
valor default
Idéia: herdar das classes superiores
em caso de conflito, vale a informação mais específica
Existem dois tipos de herança:
Herança simples
existe uma única super-classe para cada classe
Herança múltipla
uma classe pode ter mais de uma super-classe, podendo
herdar propriedades ao longo de diversos caminhos
diferentes (= o caos)
Sistemas de frames: serviços
Reconhecer que uma dada situação pertence a uma
certa categoria (matching)
ex. reconhecimento visual de uma sala de aula
Interpretar a situação e/ou prever o que surgirá em
termos da categoria reconhecida (matching)
ex. pessoa com revolver (revolver arma -> perigo)
Capturar propriedades de senso comum sobre pessoas,
eventos e ações
foi a primeira tentativa de estruturar conhecimento
declarativo sem usar regras.
Deu origem ao que chamamos hoje de Ontologias!
Sistemas de frames: vantagens e
limitação
Permite capturar conhecimento terminológico e
procedimental
Computacionalmente completo via os procedimentos
(implementados em uma linguagem hospede, geralmente
funcional, as vezes imperativa)
Distingue entre vários tipos de conhecimento (exato,
default, declarativo, procedimental, etc.)
Demons podem ser usados para as funcionalidade de
interface aquisição de conhecimento e explicação de
raciocínio de um shell de sistemas especialistas
Sistemas de frames: limitações
Conhecimento comportamental não declarativo impede
codificação direita por especialista do domínio que não
é programador
Sem semântica formal
Implementação ad-hoc de dedução e adbução,
geralmente ineficientes
Não existe máquina de inferência indutivas para
aprendizagem
Não inclui noções de encapsulamento e componentes
das linguagens de programação OO modernas
Não escaláveis para grande bases de conhecimento
Lógicas Descritivas (LD): filosofia
Usar lógica para definir formalmente semântica de
formalismos de representação de conhecimento OO.
Estudar computabilidade e complexidade das
linguagens e serviços de inferência antes de
implementá-los.
Limitar expressividade para garantir esses serviços
sejam computacionalmente tratáveis.
SPIV invade a IA.
Lógicas descritivas: conceitos chaves
Formalismos lógicos para representação das informações sobre
classes de indivíduos e suas descrições.
Subconjunto da lógica de primeira ordem, trata de:
Relações unárias (conceitos)
Ex, Student = {x | Student(x)}
Relações binárias (papéis);
Ex, SUPERVISED = {(x,y) | SUPERVISED(x,y) }
Possui também:
Construtores sobre os conceitos (,, outros)
Ex, PdhStudent = Student SUPERVISED.AcademicStaff
= { x | Student(x) y.SUPERVISED(x,y) AcademicStaff(y) }
Indivíduos, e instâncias dos conceitos
franklin, jacques, thiago;
Student(thiago), PhdStudent(franklin), Researcher(jacques)
Trade-offs entre expressividade e complexidade computacional
conhecidos.
Lógicas
descritivas:
construtores
Lógicas descritivas: semântica formal
Baseada na teoria dos conjuntos;
Semântica definida por uma interpretação (I,I);
Conjunto não-vazio, domínio I;
Função de interpretação I que mapeia:
Todo conceito em um subconjunto de I;
Todo papel em um subconjunto de I x I;
Unicidade de nome
Se a b então aI bI
Um modelo para C é uma interpretação onde CI é nãovazio
Um conceito é satisfiable se ele possui pelo menos um modelo.
LD: semântica dos construtores
Lógicas descritivas:
bases de conhecimento
KB = Tbox + Abox
Tbox (Terminological part) = Descrições
Exemplos:
Student = Person STUDIESAT.University
PhdStudent Student Researcher
Abox (Assertional part) = Instâncias
Exemplos:
PdhStudent (franklin)
STUDIESAT (franklin,UFPE)
Lógicas descritivas:
serviços de inferência
Dada uma base de conhecimento = <Tbox,Abox>, dois
conceitos C e D, e um indivíduo a, chamamos:
Satisfiability: |= C
Verificar se há um modelo I de tal que CI
Exemplo: Student Person ?
Subsumption: |= C D
Verificar se C é subsumed por D. CI DI em todo modelo I de
Exemplo: Employee Person Student ?
Consistência: |=
Verificar se a própria base tem um modelo.
Exemplo: Student = Person ?
Classificação de instância: |= C(a)
Verificar se uma dada asserção é válida.
Exemplo: Person(franklin)
LD: raciocínio na Tbox
Tbox:
Syntax-based reasoning: Structural Comparison
Semantic-based reasoning: Constraint Systems
Expressividade Vs Complexidade
Expressividade é diretamente proporcional à complexidade computacional.
LD para o exemplo = <Tbox,Abox>
Tbox – Conceitos
Student Person
STUDIESAT Student University
Student =
Person STUDIESAT.University
Employee Person
AFILIATEDTO Employee Organization
Employee =
Person AFILIATEDTO.Organization
AcademicSaff Employee
SUPERVISES AcademicStaff PhdStudent
AcademicSaff =
Employee SUPERVISES.PdhStudent
Researcher AcademicStaff
PhdStudent Student Researcher
SUPERVISED PhdStudent AcademicStaff
PdhStudent =
Student SUPERVISED.AcademicStaff
Abox – Instâncias
Student(thiago)
STUDIESAT(thiago,UFPE)
PhdStudent(franklin)
STUDIESAT(franklin,UFPE)
Researcher(jacques)
SUPERVISED(franklin,jacques)
AFILIATEDTO(jacques,UFPE)
LD: exemplos de serviços de raciocínio
|= C
|= Student Person ?
Equivalente a:
Student Person = ?
Se já temos x Student(x) Person(x)
x Student(x) Person(x) x Person(x) Person(x) que é impossível.
Logo o conjunto formado pela conjunção Student Person é . Não satisfiable.
Person
e1
e2
Student
e5
...
en
e14
LD: exemplos de serviços de raciocínio
|= C D
|= AcademicStaff Researcher ?
AcademicStaff Researcher
Equivalente a: x Researcher(x) AcademicStaff(x)
O conjunto de indivíduos do tipo Researcher está
contido no do conjunto de AcademicStaff.
AcademicStaff
e1
e2
Research
e5
...
en
e14
LD: exemplos de serviços de raciocínio
|=
A base contém asserções/definições contraditórias?
Adicionando Person(franklin) mantém a base consistente ?
Raciocinando com as instâncias da Abox e conceitos da
Tbox, temos:
PhdStudent(franklin)
: Abox
Student(franklin) : Regra PhdStudent Student da Tbox
Person(franklin)
: Regra Person Student da Tbox
Ao término das expansões da Abox temos:
Abox = Abox0 , Student(franklin), Person(franklin)
Ao adicionarmos Person(franklin) teríamos uma KB com contradições,
isto é, inconsistente onde franklin é Student e franklin não é Student.
Conclusão:
Uma KB que possua a Tbox anterior, não pode ter Abox com asserções do tipo
PhdStudent(franklin) e Person(franklin) pois se torna uma base
inconsistente.
LD: exemplos de serviços de raciocínio
|= C(a)
|= Person(franklin) ?
Raciocínio sobre a hierarquia definida na Tbox, gera:
Student(franklin)
Person(franklin)
Assim, Person(franklin) pode ser deduzido como uma
instância válida dentro da KB.