sistemas baseados em conhecimento prof. cláudio m. n. a. pereira
TRANSCRIPT
Sistemas Baseados em Conhecimento
Prof. Cláudio M. N. A. Pereira
Sumário
1. Introdução
2. Estrutura de um SBC
3. Representação do conhecimento
Introdução
Uma definição
SBC são sistemas computacionais que utilizam e manipulam o conhecimento representado de forma explícita visando resolver problemas em um dado domínio.
Introdução
DADO
x
INFORMAÇÃO
x
CONHECIMENTO
Introdução
DADO é a estrutura básica de um sistema de informação. É quantificável e não depende de uma interpretação. Podem ser selecionados, gravados e recuperados de uma base de dados, arquivo ou memória.
Ex:
preço = 10
quant = 70
Introdução
INFORMAÇÃO é criada a partir da análise e dos dados. Envolve a interpretação dos dados para um dado contexto.
Ex:
preço = 10; preço_mercado = 12 => BARATO
quant = 70; estoque_mínimo = 100 => ESTOQUE BAIXO
Introdução
CONHECIMENTO é a habilidade de criar um modelo que indique ações e decisões a serem tomadas.
Ex:
se CARO e ESTOQUE BAIXO então COMPRAR Qt_min
se CARO e ESTOQUE NORMAL então COMPRAR 0
se MUITO BARATO então COMPRAR Qt_max
Características de um SBC
• capacidade de questionar o usuário para obter informações de interesse;
• capacidade de desenvolver raciocínio a partir das informações e do conhecimento nele representado;
• capacidade de explicar o raciocínio (como chegou a uma certa conclusão).
Características de um SBC
• todo o conhecimento a respeito do domínio da utilização do SBC deve estar representado em sua Base de Conhecimento (BC);
• deve haver um mecanismo de inferência capaz de interpretar e utilizar o conhecimento contido na BC;
• resolve problemas para os quais não se conhece procedimento determinístico que garanta a solução
SBC x Sistemas Convencionais
Estruturas de Dados Representação do conhecimento
Sistemas Convencionais SBC
Manipulam conhecimentoManipulam dados
Busca / HeurísticaAlgoritmos bem determinados
Conhecimento representado explicitamente e separado do programa que o manipula
Conhecimento embutido no código
Explicam o raciocínioDifícil explicar o raciocínio
Estrutura geral de um SBC
Memória de Trabalho
Base de Conhecimento
Motor de Inferência Explicação do raciocínio
Aquisição do conhecimento
Usuário
Especialista
IHM
Estrutura geral de um SBC
• IHM - módulo que realiza toda a interação com o usuário, de forma a obter informações sobre o problema;
• Memória de trabalho - módulo que contêm:
– a descrição do problema (situação atual, os dados);
– possíveis ações a serem executadas;
– hipóteses e novos cenários que o sistema já tenha produzido;
Estrutura geral de um SBC
• Base de Conhecimento - módulo que contêm o conhecimento declarado.
– Utiliza alguma técnica de representação do conhecimento
• Módulo de aquisição do conhecimento - responsável por fazer a aquisição do conhecimento via interface com o especialista;
Estrutura geral de um SBC
• Explicação do raciocínio - módulo responsável por explicar como as conclusões ou respostas do SBC foram obtidas
• Motor de Inferência - módulo que gerencia e controla a utilização do conhecimento, estabelecendo critérios para identificação (matching), ativação e agendamento de regras, além de verificação de consistência e resolução de conflitos;
Representação do Conhecimento
A Representação do Conhecimento (RC) é uma forma sistemática de se estruturar e codificar o que se sabe sobre um dado domínio de aplicação.
Características de uma RC
• O conhecimento representado deve ser compreensível ao ser humano;
• Abstração dos detalhes internos de como funciona o seu interpretador (máquina de inferência)
• Ser robusta. Permitir funcionamento mesmo que não sejam abordadas todas as situações possíveis.
Algumas técnicas de RC
• Representação Lógica
• Representação por Regras
• Representação por Redes Semânticas
• Orientação a Objetos
• Entre outras
Representação Lógica
Inferências dedutivas Baseadas em lógica matemática Linguagem PROLOG
Exemplo: Lógica proposicional
“todos os seres vivos são mortais”
C [ser_vivo(C) mortal(C)]
Exemplo: Lógica de predicados
pai (joão) = antônio mãe (joana) = maria
amigos(pai (joão), mãe (joana)) = amigos (antônio, maria)
Representação por Regras
• Forma mais natural
SE (condições) ENTÃO (conclusões/ações)
Representação por Redes Semânticas
Grafo direcionado, que representa objetos (conceitos, situações, etc) e suas relações
Os nós representam objetos (físicos ou abstratos), as suas propriedades e valores
Os arcos representam relações entre os nós
Representação por Redes Semânticas
Exemplo• Uma ave é um animal.• A maneira normal de movimentação das aves é voar.• Uma ave está ativa durante o dia.• Um albatroz é uma ave.• Uma albatroz é preto e branco.• O tamanho normal do albatroz é 115 cm.• O Alberto é um albatroz.• O tamanho do Alberto é 120 cm.• Um pinguim é uma ave.• Um pinguim é branco e preto.• A maneira normal de movimentação dos pinguins é andar.• O Tweety é um pinguim.
Questões: – Qual o método de movimentação do Alberto ?– Qual o método de movimentação do Tweety ?
Representação por Redes Semânticas
IS-A
Albatroz
diurna
AnimalAvePreto eBranco
Pinguimtweety
Vôo
115 cm
Alberto IS-A
IS-A
IS-A
cor deslocação
tamanho
IS-A
actividade
120 cm
tamanho
cor
deslocação
andar
Orientação a Objetos
A estrutura hierárquica da Programação Orientada a Objetos, bem como o conceito de encapsulamento e mensagens entre objetos, permitem a Representação do Conhecimento de forma similar a das Redes Semânticas.
Linguagens de Programação
A rigor, qualquer linguagem pode ser utilizada para implementar conceitos da IA, entretanto, algumas possuem facilidades para serem utilizadas na implementação de sistemas de IA.
- LISP (LISt Processing)
- PROLOG (PROgramming in LOGic)
Exemplo: Blocos
c
b
a
Objetivo: Dados os fatos que configuram o cenário, deseja-se informar quais blocos estão acima de um outro. Consideraremos os seguintes fatos:- “a” está sobre “b” e- “b” está sobre “c”.
Exemplo: Blocos
Representação Orientada a Objetos com Regras: LISP
(defclass bloco (is-a USER) (role concrete) (slot nome (type STRING) (create-accessor read-write)) (slot cor (type STRING) (create-accessor read-write)) (slot tamanho (type STRING) (create-accessor read-write)))
(defmessage-handler bloco imprime() (printout t “Bloco “ ?self:nome “ (“ ?self:cor “ ,” ?self:tamanho “)”))
Exemplo: Blocos
Representação Orientada a Objetos com Regras: LISP
(definstances blocos (a of bloco (nome “a”) (cor “branco”) (tamanho “pequeno”) ) (b of bloco (nome “b”) (cor “verde”) (tamanho “medio”) )
(c of bloco (nome “c”) (cor “azul”) (tamanho “grande”) ))
(deffcats exemplo (sobre [a] [b]) (sobre [b] [c]))
Exemplo: Blocos
Representação Orientada a Objetos com Regras: LISP
(defrule direta (sobre ?X ?Y) => (assert (acima ?X ?Y)) (printout t (send ?X imprime) “acima de ” (send ?Y imprime)))
(defrule indireta (sobre ?Z ?Y) (sobre ?X ?Z) => (assert (acima ?X ?Y)) (printout t (send ?X imprime) “acima de ” (send ?Y imprime)))
Exemplo: Blocos
Execução do programa
1) Inicialmente o Motor de Inferência do LISP tenta casar pré-condição da regra direta com os fatos existentes;(Obs.: A verificação é feita na ordem inversa da declaração dos fatos)Logo, tem-se que o fato (sobre [b] [c]) dispara a regra direta
2) Com o disparo da regra direta, um novo fato (acima [b] [c]) é adicionado na Memória de Trabalho.
3) Um novo ciclo é iniciado e a regra direta é novamente disparada pela pré-condição (sobre [a] [b]), adicionando o fato (acima [a] [b]) na Memória de Trabalho.
4) Outro ciclo se inicia e as pré-condições (sobre [b] [c]) e (acima [a] [b]) disparam a regra indireta, gerando o fato (acima [a] [c])
Exemplo: Blocos
Representação Lógica: PROLOG
cor (a, branco).cor (b, verde).cor (c, azul).
tamanho (a, pequeno).tamanho (b, médio).tamanho (c, grande).
sobre (a, b).sobre (b, c).
acima (X, Y) :- sobre (X, Y).acima (X, Y) :- sobre (Z, Y), acima (X, Z).