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 Sistemas Convencionais SBC Estruturas de Dados Representação do conhecimento Manipulam dados Manipulam conhecimento Algoritmos bem determinados Busca / Heurística Conhecimento embutido no código Conhecimento representado explicitamente e separado do programa que o manipula Difícil explicar o raciocínio Facilidade p/ explicar raciocínio Estrutura geral de um SBC Usuário IHM Motor de Inferência Memória de Trabalho ou Base de Fatos Base de Conhecimento Explicação do raciocínio Aquisição do conhecimento Especialista 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 forma de deslocamento das aves é voando. • Uma ave possui atividade diurna. • Um albatroz é uma ave. • Uma albatroz é preto e branco. • O tamanho médio do albatroz é 115 cm. • O Alberto é um albatroz. • O tamanho do Alberto é 120 cm. • Um pinguim é uma ave. • Um pinguim é branco e preto. • A forma de deslocamento dos pinguins é andando. • O Tweety é um pinguim. Exemplo de questões: – Qual forma de deslocamento de Alberto ? – Qual o forma de deslocamento de Tweety ? Representação por Redes Semânticas Exemplo • Uma ave é um animal. é um Ave Animal Representação por Redes Semânticas Exemplo • Uma ave é um animal. • A forma de deslocamento das aves é voando. é um Ave Animal deslocamento Voando Representação por Redes Semânticas Exemplo • Uma ave é um animal. • A forma de deslocamento das aves é voando. • Uma ave possui atividade diurna. Diurna atividade é um Ave Animal deslocamento Voando Representação por Redes Semânticas Exemplo • Uma ave é um animal. • A forma de deslocamento das aves é voando. • Uma ave possui atividade diurna. • Um albatroz é uma ave. Diurna atividade é um Ave é uma Albatroz Animal deslocamento Voando Representação por Redes Semânticas Andando Exemplo • Uma ave é um animal. deslocamento • A forma de deslocamento das aves é voando. é umdiurna. • Uma ave possui atividade Tweety Pinguim • Um albatroz é uma ave. • Uma albatroz é preto e branco. cor • O tamanho médio do albatroz é 115 cm. é uma • O Alberto é um albatroz. Preto e • O tamanho do Alberto é 120 cm. Branco • Um pinguim é uma ave. é uma • Um pinguim é branco e preto. cor é umdos pinguins é andando. • A forma de deslocamento Alberto Albatroz • O Tweety é um pinguim. tamanho tamanho Exemplo de questões: – Qual forma de deslocamento 120 cm 115 cmde Alberto ? – Qual o forma de deslocamento de Tweety ? Diurna atividade é um Ave Animal deslocamento Voando 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 a b c 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 com Regras Base de Conhecimento Regra 1: SE X está SOBRE Y ENTÃO X está ACIMA de Y Regra 2: SE Z está SOBRE Y E X está ACIMA de Z ENTÃO X está ACIMA de Y Exemplo: Blocos Representação com Regras Base de Fatos / Memória de Trabalho A está SOBRE B B está SOBRE C Exemplo: Blocos Executando o Sistema B está SOBRE C Regra 1 B está ACIMA de C (novo fato) A está SOBRE B Regra 1 A está ACIMA de B (novo fato) Exemplo: Blocos Executando o Sistema Base de Fatos / Memória de Trabalho A está SOBRE B B está SOBRE C B está ACIMA de C A está ACIMA de B Exemplo: Blocos Executando o Sistema B está SOBRE C E A está ACIMA de B Regra 2 A está ACIMA de C (novo fato) C onclusão: A está ACIMA de C Exemplo: Blocos Representação com Regras (Orientada a Objetos): 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 com Regras (Orientada a Objetos): 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 com Regras (Orientada a Objetos): LISP (defrule direta SE X está SOBRE Y (sobre ?X ?Y) ENTÃO X está ACIMA de Y => (assert (acima ?X ?Y)) (printout t (send ?X imprime) “acima de ” (send ?Y imprime)) ) (defrule indireta (sobre ?Z ?Y) SE Z está SOBRE Y E X está ACIMA de Z (acima ?X ?Z) ENTÃO X está ACIMA de Y => (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).